@tocca-systems/twp-cli 0.77.2 → 0.79.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.
Files changed (118) hide show
  1. package/CHANGELOG.public.md +14 -0
  2. package/README.md +56 -15
  3. package/dist/{agent-76W4NFZE.js → agent-WTDLGRNM.js} +3 -3
  4. package/dist/{agent-loop-6Q5QQC5H.js → agent-loop-ZGHJGHFQ.js} +32 -32
  5. package/dist/{ai-dispatch-U2MEAOHY.js → ai-dispatch-DJ5JT5BE.js} +1 -1
  6. package/dist/analysis-H52FJIFO.js +5 -0
  7. package/dist/{announcement-HYMSN6ZR.js → announcement-RTTVGW4K.js} +2 -2
  8. package/dist/{api-command-D3H2QWSH.js → api-command-Y6J7EAOT.js} +4 -4
  9. package/dist/{app-LH2Z63XY.js → app-YVRIMXZY.js} +5 -5
  10. package/dist/{attendance-correct-7IKTSZ6I.js → attendance-correct-OLWRCDP4.js} +2 -2
  11. package/dist/{attendance-lists-7SOG6G4N.js → attendance-lists-TBUZCRKK.js} +2 -2
  12. package/dist/{auto-update-YMI3F44R.js → auto-update-FXXQHBV5.js} +1 -1
  13. package/dist/{auto-update-worker-VG77U4UA.js → auto-update-worker-6K24JYLQ.js} +2 -2
  14. package/dist/{backlog-IJTBHL3Z.js → backlog-HDDV2NTC.js} +37 -31
  15. package/dist/{budget-ZWB346BP.js → budget-T246BG2P.js} +2 -2
  16. package/dist/{chunk-MZVXEYOV.js → chunk-22CRY6JR.js} +1 -1
  17. package/dist/{chunk-DLDDMXZT.js → chunk-4RNL462J.js} +1 -1
  18. package/dist/{chunk-47C3XM23.js → chunk-5YJAT7HE.js} +1 -1
  19. package/dist/chunk-64VHXDB6.js +11 -0
  20. package/dist/{chunk-436IBRP4.js → chunk-6JAOPRD5.js} +1 -1
  21. package/dist/{chunk-DYNNGNXR.js → chunk-7PTFN3H7.js} +1 -1
  22. package/dist/{chunk-AITUAHWK.js → chunk-CADCERVL.js} +1 -1
  23. package/dist/{chunk-NWI2TBO6.js → chunk-CH6QU76P.js} +1 -1
  24. package/dist/{chunk-MTUOPTBS.js → chunk-CZVQS3WP.js} +2 -2
  25. package/dist/{chunk-H7MIIYRN.js → chunk-DELIIGWE.js} +1 -1
  26. package/dist/{chunk-R4Y3OLFY.js → chunk-DJ5OD2HW.js} +18 -18
  27. package/dist/{chunk-4VAWX7TW.js → chunk-DLJQE2B5.js} +1 -1
  28. package/dist/{chunk-4VZKNEVN.js → chunk-EDF4U5BT.js} +2 -1
  29. package/dist/{chunk-XG2JN66A.js → chunk-HKEW6XIC.js} +2 -2
  30. package/dist/{chunk-AVFQ2LM5.js → chunk-HYBXFEHH.js} +1 -1
  31. package/dist/chunk-IVFSEXD3.js +48 -0
  32. package/dist/{chunk-5WTFZJT7.js → chunk-JQBXLZTJ.js} +1 -1
  33. package/dist/{chunk-RQEX2WC5.js → chunk-KZQGIM2C.js} +1 -1
  34. package/dist/{chunk-W4E4F2ZA.js → chunk-MLRBDF44.js} +1 -1
  35. package/dist/{chunk-3WFZOOXZ.js → chunk-MO2UEAWW.js} +1 -1
  36. package/dist/{chunk-SAH5WS3K.js → chunk-MPX2Q3BJ.js} +1 -1
  37. package/dist/{chunk-L7T2CQ3M.js → chunk-NLCJXS5S.js} +2 -2
  38. package/dist/{chunk-GYXKBPEN.js → chunk-NTT2QG3J.js} +2 -2
  39. package/dist/{chunk-DLD736A2.js → chunk-OW23MAVO.js} +1 -1
  40. package/dist/{chunk-3WPHZXST.js → chunk-QXYY7DUV.js} +2 -2
  41. package/dist/{chunk-6SAHK3OR.js → chunk-RCUI6WWU.js} +1 -1
  42. package/dist/{chunk-GHE6X45G.js → chunk-RSSPNFSK.js} +7 -7
  43. package/dist/{chunk-AM7Y4QRF.js → chunk-U5EYLW6X.js} +2 -2
  44. package/dist/{chunk-4OJD5FKD.js → chunk-UZLHJ2RF.js} +2 -2
  45. package/dist/{chunk-GQEXST5N.js → chunk-V3RZ4RFP.js} +1 -1
  46. package/dist/chunk-VERYHAWV.js +13 -0
  47. package/dist/{chunk-YM4U6A4Y.js → chunk-VLCR2U77.js} +1 -1
  48. package/dist/{chunk-4H3ECPJF.js → chunk-VYIYENEU.js} +1 -1
  49. package/dist/{chunk-HZYP3BMS.js → chunk-X2WD2H3B.js} +2 -2
  50. package/dist/chunk-XNYQH5JI.js +44 -0
  51. package/dist/{chunk-RMOBVFPJ.js → chunk-YV65V2F6.js} +1 -1
  52. package/dist/cli.js +65 -25
  53. package/dist/{commands-445XWMKY.js → commands-UDG7E3X3.js} +20 -20
  54. package/dist/{commands-YJU4HHPP.js → commands-ZIRZVBH6.js} +2 -2
  55. package/dist/{company-NXL4WVLD.js → company-2CRWKBJL.js} +3 -3
  56. package/dist/{completion-RL6VCPB5.js → completion-C6ZQCDT2.js} +8 -7
  57. package/dist/config-XYWRBIC6.js +3 -0
  58. package/dist/{configure-3H3CGGBI.js → configure-3JID6MQ5.js} +7 -3
  59. package/dist/{contract-MC6HSQER.js → contract-73RVPBYM.js} +2 -2
  60. package/dist/{department-3YEKQJ6I.js → department-GPVHVFFP.js} +2 -2
  61. package/dist/{deposit-RFTXWS5D.js → deposit-3I3NV556.js} +2 -2
  62. package/dist/dispatch-HHWTJ3P4.js +3 -0
  63. package/dist/{domain-knowledge-EXMD2NMI.js → domain-knowledge-5SCZLCPF.js} +2 -2
  64. package/dist/{estimate-RIJRRKZZ.js → estimate-NLKTWCYI.js} +4 -4
  65. package/dist/{evaluation-ESIPIC3K.js → evaluation-VP7OFTBS.js} +1 -1
  66. package/dist/{expense-ISK4RPCY.js → expense-O2O4623X.js} +2 -2
  67. package/dist/{fiscal-year-F2DVA2GB.js → fiscal-year-ZTCSF46U.js} +2 -2
  68. package/dist/{holiday-5ZAH6U6Z.js → holiday-WDI4CSNL.js} +2 -2
  69. package/dist/{inquiry-3KEU4MAN.js → inquiry-4Q4BRYM3.js} +2 -2
  70. package/dist/{invoice-BTVMPVKS.js → invoice-BXSI6SMA.js} +3 -3
  71. package/dist/{job-title-NO5VRM5J.js → job-title-NCFHCA4M.js} +1 -1
  72. package/dist/{knowledge-TXUSVHRG.js → knowledge-TCADQEPU.js} +2 -2
  73. package/dist/{leave-VZCKDT73.js → leave-W4GHXMSE.js} +3 -3
  74. package/dist/{license-JVYLYTSV.js → license-XSWDXSJE.js} +2 -2
  75. package/dist/{logout-guard-T3IAROLQ.js → logout-guard-57LHDX6L.js} +1 -1
  76. package/dist/{media-AQID56Z4.js → media-D7BZTPXD.js} +3 -3
  77. package/dist/{notification-TSLB2ZHF.js → notification-WP7CH734.js} +2 -2
  78. package/dist/{onedrive-ZY3GTU26.js → onedrive-KWVOUGG6.js} +1 -1
  79. package/dist/{oneshot-GF6TO7AH.js → oneshot-EAXT2LLB.js} +2 -2
  80. package/dist/{outlook-YG7GFF44.js → outlook-GYRF5TXA.js} +1 -1
  81. package/dist/{plan-submit-7KDB74QH.js → plan-submit-ELEIJM6I.js} +1 -1
  82. package/dist/{position-IREP6O4N.js → position-H3NSDVKQ.js} +1 -1
  83. package/dist/{project-XIBLUUAR.js → project-HGUUMTEE.js} +2 -2
  84. package/dist/{prospect-UZLWLOAI.js → prospect-QY3NYP2A.js} +3 -3
  85. package/dist/{purchase-OLJD37QK.js → purchase-7XCGCQ2G.js} +4 -4
  86. package/dist/receivable-GW5WCVJ7.js +4 -0
  87. package/dist/{redmine-WOVVB7SU.js → redmine-644RTL42.js} +2 -2
  88. package/dist/{registry-GUS42T5G.js → registry-TFHSCQK3.js} +1 -1
  89. package/dist/{report-52ZHE57K.js → report-P74LSHTE.js} +2 -2
  90. package/dist/{run-DKDJACXL.js → run-EO7J3QYK.js} +2 -2
  91. package/dist/runner-command-SRPMAC5S.js +3 -0
  92. package/dist/{sales-ai-review-JBDTSY67.js → sales-ai-review-L5VW3DU3.js} +2 -2
  93. package/dist/{sales-master-KL5XHTVS.js → sales-master-BQML5IJT.js} +3 -3
  94. package/dist/{sales-numbering-NZW2RNOS.js → sales-numbering-OW4O6WH6.js} +2 -2
  95. package/dist/{search-FOUZEY5X.js → search-BLMSVPIL.js} +2 -2
  96. package/dist/{segment-3CMYFOFP.js → segment-G4IPD43F.js} +1 -1
  97. package/dist/{server-settings-CRH7UU45.js → server-settings-OB7JF757.js} +1 -1
  98. package/dist/{setup-VPHP4HDM.js → setup-FMSAHRGZ.js} +1 -1
  99. package/dist/{skill-U6757V7A.js → skill-4TSTVUXY.js} +2 -2
  100. package/dist/staffing-board-MQREMSVJ.js +110 -0
  101. package/dist/status-command-C42CVQ3Q.js +17 -0
  102. package/dist/{supplier-payment-NG3PYZAH.js → supplier-payment-KRLYWEKY.js} +3 -3
  103. package/dist/{support-JBL45TWL.js → support-ITRXFVMK.js} +2 -2
  104. package/dist/{task-OR5JLUKO.js → task-AGNMPS4F.js} +5 -4
  105. package/dist/{teams-RLMFGND2.js → teams-MZR3256V.js} +1 -1
  106. package/dist/{update-NCAVUXSX.js → update-7GYGZEK3.js} +1 -1
  107. package/dist/{user-4BL2ILYK.js → user-U4VHKBLE.js} +3 -3
  108. package/dist/{user-contract-type-XHCKC6T7.js → user-contract-type-HDA5TITL.js} +2 -2
  109. package/dist/{worker-agent-XTDV36WT.js → worker-agent-52PXQO4N.js} +2 -2
  110. package/dist/{workflow-Q7XCMDRH.js → workflow-4NC2C4TX.js} +2 -2
  111. package/package.json +1 -1
  112. package/dist/analysis-7PNFFLPQ.js +0 -5
  113. package/dist/chunk-6C75QARV.js +0 -49
  114. package/dist/chunk-BMJMOUBS.js +0 -11
  115. package/dist/config-3CNEQ7KN.js +0 -3
  116. package/dist/receivable-JNXWOLJN.js +0 -4
  117. package/dist/status-command-3GA23BGD.js +0 -17
  118. /package/dist/{skill-manage-command-QYJLCLDK.js → skill-manage-command-UOWZCF6R.js} +0 -0
@@ -11,6 +11,20 @@
11
11
  `CHANGELOG.md` に残してあります。顧客向けの履歴は public 公開以降を対象とします。
12
12
  -->
13
13
 
14
+ ## 0.79.0
15
+
16
+ 要員調整ボードを CLI から参照・更新できるようになりました(`twp staffing-board`)。表の表示、工数の更新、仮アサイン・メモの登録、時点スナップショットの保存と前回との差分の確認ができます。
17
+
18
+ `twp task link create` のヘルプに、`--satisfied-status` を省略したときの既定条件の説明を追記しました。
19
+
20
+ **破壊的変更:** `twp agent-loop` を `twp task-loop` に統合しました。キューの操作は `twp task-loop item list` / `get` / `create` / `update` / `move` / `delete`、実行履歴は `twp task-loop history list`、計画の実行記録は `twp task-loop plan-history list` で行います(フラグと出力は従来と同じです)。`twp agent-loop` を打つと、移行先のコマンドを案内して終了します。スクリプトで `twp agent-loop` を使っている場合は書き換えてください。
21
+
22
+ ## 0.78.0
23
+
24
+ `twp task-loop runner list` / `twp task-loop runner remove` を追加しました。置き換え・廃止した実行機のランナー登録を、一覧から外せます(稼働中の登録は外せません)。`twp task-loop status` も外し方を案内します。
25
+
26
+ `twp configure` で既定の Backlog スペースを設定できるようになりました。複数のスペースを連携していても、毎回 `--space` を付ける必要がなくなります。また `twp backlog comment list` で `--limit` と `--all`(全件取得)が使えるようになりました。
27
+
14
28
  ## 0.77.2
15
29
 
16
30
  個人タスク(`--project __private__`)でも `twp task comment` でコメントの一覧・投稿・更新・削除ができるようになりました。質問(`--ask-question`)と回答(`--answer-to` / `--select`)も使えます。
package/README.md CHANGED
@@ -73,8 +73,8 @@ TWP(Tocca Working Platform)を、ターミナルから使うための CLI
73
73
  | **できる** | `twp knowledge` によるドメイン知識(社内 Wiki 相当のナレッジベース)の一覧・詳細・作成・設定変更・削除と、記事の一覧(ディレクトリ・深さで絞り込み)・本文(Markdown)を読む・作成・更新・移動・削除。KB は ID でも slug でも指定できます。KB の作成・設定変更・削除はドメイン知識の管理者だけです |
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
- | **できる** | `twp agent-loop` による、エージェントループのキューの一覧・投入・更新・先頭への移動・削除と、期間を指定した実行履歴の参照。更新・移動・削除はテナントの管理者の権限が要ります |
77
- | **できる** | `twp completion bash` / `zsh` / `fish` / `powershell` によるシェル補完(コマンド名・操作名・フラグ名。プロジェクトやステータスの値は補完しません)と、`twp configure` による既定のプロジェクト・出力形式・既定プロファイルの対話設定 |
76
+ | **できる** | `twp task-loop item` / `history` による、エージェントループのキューの一覧・投入・更新・先頭への移動・削除と、期間を指定した実行履歴の参照。更新・移動・削除はテナントの管理者の権限が要ります |
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` と書いて添付できます |
@@ -1203,6 +1203,28 @@ twp project process create [<コード>] --process <工程マスタ> [--descript
1203
1203
  - `project process create` は `--process` に工程マスタの名前・コード・ID を渡します。工程の並び替え・更新・削除、人材KPIの設定・目標の登録は CLI では行えません
1204
1204
  - 標準勤務時間の変更・負荷判定の再実行・ページの閲覧対象の設定は CLI では行えません(画面か `twp api` を使ってください)
1205
1205
 
1206
+ ### 要員調整ボードを見る・更新する
1207
+
1208
+ ```bash
1209
+ twp staffing-board show [--month <YYYY-MM> | --from <YYYY-MM> --to <YYYY-MM>] [--unit hours|fte|percent] [--by-project] [--include-tentative] [--user <ユーザー>] [--department <部署>]
1210
+ twp staffing-board cell set --project <コード> --user <ユーザー> --month <YYYY-MM> --hours <時間>
1211
+ twp staffing-board cell history --project <コード> --user <ユーザー> [--limit <件数>]
1212
+ twp staffing-board tentative list [--from <YYYY-MM> --to <YYYY-MM>] [--user <ユーザー>]
1213
+ twp staffing-board tentative create --user <ユーザー> (--project <コード> | --project-name <案件名>) --probability confirmed|likely|pre|on_hold (--hours <YYYY-MM=時間> ... | --no-hours) [--memo <文字列>]
1214
+ twp staffing-board tentative update <ID> [同じフラグ]
1215
+ twp staffing-board tentative delete <ID> --yes
1216
+ twp staffing-board tentative promote <ID> [--project <コード>] [--role <役割>] --yes
1217
+ twp staffing-board note list [--scope cell|member|meeting] [--user <ユーザー>]
1218
+ twp staffing-board note set --scope cell|member|meeting [--user <ユーザー>] [--month <YYYY-MM>] [--meeting-date <YYYY-MM-DD>] (--content <文字列> | --content-file <パス>) [--expected-updated-at <値|none>]
1219
+ twp staffing-board note delete <ID> --yes
1220
+ twp staffing-board snapshot list | get <ID> | diff <ID> [--base <ID>] | create [期間] [--meeting-date <YYYY-MM-DD>] | delete <ID> --yes
1221
+ ```
1222
+
1223
+ - `show` は画面の表と同じ値です(正式アサインの合計から「集計対象外」のプロジェクトを引き、`--include-tentative` で仮アサインを足す)。期間を省くと画面の初期表示と同じ**翌月から4か月**です
1224
+ - `cell set` は画面のセル編集と同じ1か月単位の更新です(ボードの「編集可」とプロジェクト管理者の権限が要る)。期間をまとめて変えるなら `twp project member update --period-file` です
1225
+ - `tentative update` の `--hours` は月の集合を丸ごと置き換えます。`note set` は対象ごとに1件で上書きします(`--expected-updated-at` で他の人の保存を上書きしない)
1226
+ - 閲覧・編集できるかはサーバが決めます。閲覧のみの人が更新系を打つと 403 で、「編集可」への変更を依頼する案内が出ます
1227
+
1206
1228
  ### 予実を見る・目標を入れる
1207
1229
 
1208
1230
  ```bash
@@ -1513,7 +1535,7 @@ twp backlog issue list [--project <キー>] [--status <名前>] [--assignee <
1513
1535
  [--count <件数>] [--offset <件数>]
1514
1536
  [--sort <項目>] [--order <asc|desc>] [--description-max <文字数>]
1515
1537
  twp backlog issue get <課題キー> # 例: twp backlog issue get ACME-123
1516
- twp backlog comment list <課題キー>
1538
+ twp backlog comment list <課題キー> [--limit <件数>] [--all] [--order <asc|desc>]
1517
1539
 
1518
1540
  twp backlog attachment list <課題キー> # id / name / size / contentType
1519
1541
  twp backlog attachment download <課題キー> <添付ID> --out <パス> # 実体をファイルへ書き出す
@@ -1523,13 +1545,14 @@ twp backlog issue update <課題キー> [--assignee <名前|ID>] [--status <
1523
1545
  [--comment-file <パス>] [--project <キー|名称|ID>] --yes
1524
1546
  ```
1525
1547
 
1526
- - **Backlog スペースの登録が1件だけなら `--space` は省略できます**(そのとき、どのスペースを使ったかを必ず表示します)。2件以上なら `--space` で指定してください
1548
+ - **`--space` を省略すると、`twp configure` で設定した既定の Backlog スペース、無ければ登録が1件だけのときのそのスペースを使います**(どちらの場合も、どのスペースを使ったかを必ず表示します)。登録が2件以上で既定も無ければ `--space` で指定してください。設定した既定が登録に見つからないときは、別のスペースへ落とさずに止まります
1527
1549
  - `--space` には ID のほか、スペースURL(`https://example.backlog.jp`)とサブドメイン(`example`)が使えます
1528
1550
  - **`--project` / `--status` / `--assignee` / `--created-user` は名前でも数値 ID でも指定できます。** 複数指定はカンマ区切りです(`--status 未対応,処理中`)。名前で指定するときは、候補が Backlog プロジェクト配下にしかないため `--project` が要ります
1529
1551
  - ⚠ **`twp backlog issue list` の本文は既定で 1000 文字に切られます**(切られた課題には `descriptionTruncated: true` が付き、何件切られたかを実行のたびにお知らせします)。全文が要るときは `--description-max 0` か `twp backlog issue get`(常に全文)を使ってください
1530
1552
  - `twp backlog comment list` の出力には担当・ステータスの変更履歴(`changeLog`)が含まれます
1531
1553
  - `twp backlog attachment download` は **`--out` のパスへ実体をそのまま書き出します**(標準出力には書いた場所・バイト数・種別だけが出ます)。既存ファイルは上書きしません(`--force` を付けたときだけ上書きします)。書き出し先のディレクトリは自動で作りません。添付ID は `twp backlog attachment list` の `id` で、ファイル名では指定できません。落とす前の大きさは同じ一覧の `size` で分かります
1532
- - **この API はカーソルを返さないため `--all` / `--cursor` はありません。** 続きは `--offset`(課題)/ `--min-id` / `--max-id`(コメント)で取得します。`--count` の上限は 100 です
1554
+ - **この API はカーソルを返さないため `--cursor` はありません。** 課題の続きは `--offset` で取得します(`--all` もありません)。`--count` の上限は 100 です
1555
+ - `twp backlog comment list` は `--limit`(`--count` と同じ意味・上限 100)と `--all`(コメント ID を辿って全件)が使えます。途中から辿るときは `--min-id` / `--max-id` を使います
1533
1556
  - `--parent` には親課題の**数値 ID** を渡します(課題キーは使えません)。`--sort` の既定は `updated`、`--order` の既定は `desc` です
1534
1557
  - `twp backlog status list` / `user list` の `--project` は **プロジェクトキー**(`ACME`)か数値 ID です(プロジェクト名では引けません)
1535
1558
 
@@ -1650,20 +1673,21 @@ twp task-loop stop
1650
1673
 
1651
1674
  実行前に「[⚠️ 実行する前に理解しておくこと(信頼境界)](#️-実行する前に理解しておくこと信頼境界)」を必ずお読みください。
1652
1675
 
1653
- キューに並ぶアイテムそのものは `twp agent-loop` で扱います(`twp task-loop` は実行機を動かすコマンドで、別物です)。
1676
+ キューに並ぶアイテムと実行履歴も `twp task-loop` の下で扱います(`item` / `history` / `plan-history`)。以前の `twp agent-loop` は廃止しました(打つと移行先を案内して終了コード 2)。
1654
1677
 
1655
1678
  ```
1656
- twp agent-loop list [--status pending|processing|completed|failed] [--all]
1657
- twp agent-loop get <アイテムID>
1658
- twp agent-loop create --prompt "/twp-fix-bug ABC-123" [--priority P1] [--label "<ラベル>"] [--ai-effort high]
1659
- twp agent-loop update <アイテムID> [--label "<ラベル>"] [--ai-effort low|none] [--ai-type claude|none]
1660
- twp agent-loop move <アイテムID> --yes # キューの先頭へ(pending だけ)
1661
- twp agent-loop delete <アイテムID> --yes
1662
- twp agent-loop history list --since 2026-09-01 [--until <日付>] [--task-key ABC-123] [--full]
1679
+ twp task-loop item list [--status pending|processing|completed|failed] [--all]
1680
+ twp task-loop item get <アイテムID>
1681
+ twp task-loop item create --prompt "/twp-fix-bug ABC-123" [--priority P1] [--label "<ラベル>"] [--ai-effort high]
1682
+ twp task-loop item update <アイテムID> [--label "<ラベル>"] [--ai-effort low|none] [--ai-type claude|none]
1683
+ twp task-loop item move <アイテムID> --yes # キューの先頭へ(pending だけ)
1684
+ twp task-loop item delete <アイテムID> --yes
1685
+ twp task-loop history list --since 2026-09-01 [--until <日付>] [--task-key ABC-123] [--full]
1686
+ twp task-loop plan-history list --since 2026-09-01
1663
1687
  ```
1664
1688
 
1665
1689
  - `create` のラベル(`[<優先度>] <ラベル> #ai:<カテゴリ>`)とカテゴリ・1番手の AI は、ループが計画から投入するときと同じ規則で、この端末のループ設定(`twp task-loop setup` が作る `~/.twp/loops/<プロジェクトID>.json`)から決まります。設定が無い端末では既定のカテゴリになり、その旨を表示します
1666
- - `create` は同じタスクのアイテムが既に並んでいても弾きません。確かめるには `twp agent-loop list --status pending --query "[?task_key=='ABC-123']"`
1690
+ - `create` は同じタスクのアイテムが既に並んでいても弾きません。確かめるには `twp task-loop item list --status pending --query "[?task_key=='ABC-123']"`
1667
1691
  - `update` / `move` / `delete` はテナントの管理者だけが行えます(実行記録は監査の正本のため)。`create` はプロジェクトのメンバーなら行えます
1668
1692
 
1669
1693
  **モデル取次には `cli` 権限付きトークンが必要。** `twp login`(ブラウザ委譲)と `twp login --password` が発行する。`twp login --token` で保存した通常トークンは TWP API には使えるが会話は 401 になる。
@@ -1756,7 +1780,7 @@ source <(twp completion zsh) # zsh: ~/.zshrc の compinit より後に
1756
1780
  twp completion fish > ~/.config/fish/completions/twp.fish
1757
1781
  twp completion powershell | Out-String | Invoke-Expression # PowerShell: $PROFILE に書く
1758
1782
 
1759
- # 既定のプロジェクト・出力形式・既定プロファイルを対話で設定する(~/.twp/config.json に保存)
1783
+ # 既定のプロジェクト・出力形式・Backlog スペース・既定プロファイルを対話で設定する(~/.twp/config.json に保存)
1760
1784
  twp configure # いま解決されるプロファイルを設定
1761
1785
  twp configure --profile dev # プロファイルを指定して設定
1762
1786
  ```
@@ -2123,6 +2147,23 @@ twp task-loop plan submit --file plan.json --check # 検査だけ(提出し
2123
2147
  - **提出しただけではキューに積まれません。** 計画AIの終了後にループが一度に登録します(計画AIが走る間に状態が変わるので、上の検査はこのとき改めて行います)。提出が無いときは、従来どおり応答の文章から計画を取り出します
2124
2148
  - 計画1回ごとに、ループのログと計画のログ(`plan-<時刻>-<サイクル>.log`)の末尾へ `PLAN_RESULT: {...}` の1行を残します。`source`(`submit`=提出 / `text`=文章から取り出し / `none`)・`planned`・`enqueued`・`dropped`(積まなかった step とその理由)・`unchecked`(提出時に効いていなかった検査)・`rejected_submissions`(`plan submit` で棄却された提出と理由。新しい順に最大5件)が読めます。計画AIが失敗した・中断したサイクルには出ません
2125
2149
 
2150
+ ### 置換・廃止した機のランナー登録を一覧から外す(`runner list` / `runner remove`)
2151
+
2152
+ 実行機を置き換える・廃止すると、新しい機は別の runner_id で登録され、古い機の登録は `stale` のまま一覧に残ります(応答が途絶えてから一定日数で自動的に非表示になります)。日数を待たずに外すときに使います。
2153
+
2154
+ ```bash
2155
+ twp task-loop runner list --project <キー|UUID> [--output json|table|tsv] [--query <式>]
2156
+ twp task-loop runner remove --project <キー|UUID> <runner_id> [--output json]
2157
+ ```
2158
+
2159
+ - **list** は登録ごとの状態(ループ実行機は `live` / `stale`、枠報告専用機は `reporting` / `stale`)・ホスト名・最終応答・版と、一覧から外れている台数(応答なしで自動的に非表示になった台数/手動で外した台数)を表示します。`--output json` は台数の内訳ごと1つのオブジェクトで出します
2160
+ - **remove は `--yes` なしでは外しません。** 対象(runner_id・ホスト名・最終応答)を表示し、確定用のコマンド(`--yes`)を案内します
2161
+ - **稼働中(`live`)の登録と、報告が続いている枠報告専用機は外せません**(サーバが拒否します)。機体を止め、応答が途絶えて `stale` になってから実行してください。強制的に外す手段はありません
2162
+ - 外した登録は削除されず非表示になるだけです。同じ runner_id が再び応答すれば一覧に戻ります
2163
+ - プロジェクトのキューで外すにはプロジェクトの管理者権限が必要です(個人タスクのキュー `--project __private__` は本人が外せます)
2164
+ - `twp task-loop status` も `stale` の登録があるときにこのコマンドを案内します
2165
+ - 終了コード: `0` 表示した/外した / `1` 対象が一覧に無い・`live` のため外せない(`--yes` なしの表示時) / `2` 引数の誤り・`--yes` なし / `3` サーバが 4xx を返した(`live` の 409・権限不足の 403 等) / `4` 5xx・通信失敗 / `5` 認証失敗
2166
+
2126
2167
  ### ループを回さない機から枠情報だけを送る(`capacity report`)
2127
2168
 
2128
2169
  ```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-436IBRP4.js";import"./chunk-WVCEKC7V.js";import{LIST_FLAGS,LIST_PAGING_HELP,envelopePaging,nonEmpty,positiveInteger}from"./chunk-MI6HVYR2.js";import"./chunk-RX5HWI4L.js";import{charCount,readBody}from"./chunk-6LSQCOCJ.js";import{AGENT_REPOSITORIES_PATH,AGENT_SCHEDULES_PATH,AGENT_SESSIONS_PATH}from"./chunk-GHE6X45G.js";import{isSafePathSegment}from"./chunk-HVZUXLQ4.js";import{ApiError}from"./chunk-JA5A6UJ2.js";
4
- import"./chunk-H4CDX4TX.js";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-4VZKNEVN.js";import"./chunk-RZVI6PMW.js";import"./chunk-QQRJLH6B.js";
5
- import"./chunk-NHYMHCAT.js";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\
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,24 +1,24 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
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,
3
+ import{stepToItem}from"./chunk-QGJYT4NH.js";import"./chunk-JUJSF5ZG.js";import{loadLocalConfig}from"./chunk-RCUI6WWU.js";import{parseOperations}from"./chunk-XMPHGOW4.js";import"./chunk-VYDPW2YO.js";import"./chunk-TTST7UDR.js";import{loadAiConfig}from"./chunk-FABDZBDZ.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
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
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
- <\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=`\
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 task-loop item 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=`\
9
9
  \u30AD\u30E5\u30FC\u306E\u30A2\u30A4\u30C6\u30E0\u306E\u66F4\u65B0\u306B\u306F${FORBIDDEN_CORE}\u3002\u5B9F\u884C\u4E2D\u306E\u30A2\u30A4\u30C6\u30E0\u3078\u306E\u66F8\u304D\u623B\u3057\u3060\u3051\u306F\u3001\u305D\u306E\u30A2\u30A4\u30C6\u30E0\u3092 claim \u3057\u305F\u30EB\u30FC\u30D7\u81EA\u8EAB\u304C run_id \u3092\u6DFB\u3048\u3066\u884C\u3048\u307E\u3059\u3002`+CREATE_HINT;var FORBIDDEN_MOVE=`\u30AD\u30E5\u30FC\u306E\u4E26\u3073\u66FF\u3048\u306B\u306F${FORBIDDEN_CORE}\u3002${CREATE_HINT}`;
10
10
  var FORBIDDEN_DELETE=`\u30AD\u30E5\u30FC\u306E\u30A2\u30A4\u30C6\u30E0\u306E\u524A\u9664\u306B\u306F${FORBIDDEN_CORE}\u3002${CREATE_HINT}`;var PROJECT_HELP="\u30AD\u30E5\u30FC\u306F\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3054\u3068\u306B\u3042\u308A\u307E\u3059\u3002--project \u3092\u7701\u304F\u3068\u65E2\u5B9A\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\uFF08TWP_PROJECT / .twp/config.json / ~/.twp/config.json\uFF09\u306E\u30AD\u30E5\u30FC\u3092\u64CD\u4F5C\u3057\u307E\u3059\u3002";function basePath(input){
11
11
  return`/api/v2/projects/${encodeURIComponent(requireResolved(input,"projectId"))}/agent-loop`}function itemPath(input){return`${basePath(input)}/${encodeURIComponent(requireResolved(input,"itemId"))}`}async function prepareProject(input,ctx){return withResolved(input,{projectId:await ctx.projectId(input.flags.get("--project"))})}async function prepareItem(input,ctx,usage){const itemId=singleRef(input,{flag:ITEM_FLAG.name,label:"\u30A2\u30A4\u30C6\u30E0",usage});return withResolved(await prepareProject(
12
- input,ctx),{itemId})}function rejectArgs(input,operation){if(input.args.length>0){throw new UsageError(`${operation} \u306F\u4F4D\u7F6E\u5F15\u6570\u3092\u53D6\u308A\u307E\u305B\u3093: ${input.args.join(" ")}`,`twp agent-loop ${operation} help`)}}function oneOf(flags,name,values){const raw=nonEmpty(flags,name);if(raw===void 0)return void 0;if(!values.includes(raw)){throw new UsageError(`${name} \u306B\u306F ${values.join(" / ")} \u306E\u3044\u305A\u308C\u304B\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u53D7\u3051\u53D6\u3063\u305F\u5024: ${raw}\
12
+ input,ctx),{itemId})}function rejectArgs(input,operation){if(input.args.length>0){throw new UsageError(`${operation} \u306F\u4F4D\u7F6E\u5F15\u6570\u3092\u53D6\u308A\u307E\u305B\u3093: ${input.args.join(" ")}`,`twp task-loop item ${operation} help`)}}function oneOf(flags,name,values){const raw=nonEmpty(flags,name);if(raw===void 0)return void 0;if(!values.includes(raw)){throw new UsageError(`${name} \u306B\u306F ${values.join(" / ")} \u306E\u3044\u305A\u308C\u304B\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u53D7\u3051\u53D6\u3063\u305F\u5024: ${raw}\
13
13
  \uFF09`)}return raw}function oneOfOrNone(flags,name,values){if(flags.get(name)?.trim()==="none")return null;return oneOf(flags,name,values)}function itemObject(body){const item=isRecord(body)?body["item"]:void 0;if(!isRecord(item)){throw new ApiResponseError(`${LABEL}\u306E\u5FDC\u7B54\u306B item \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}return item}var listPaging=envelopePaging({label:`${LABEL}\u4E00\u89A7`});var historyPaging=envelopePaging(
14
- {label:"\u5B9F\u884C\u5C65\u6B74"});var planHistoryPaging=envelopePaging({label:"\u8A08\u753B\u306E\u5B9F\u884C\u8A18\u9332"});function parseSkillPrompt(prompt,prefix=""){const m=/^\/([a-z0-9][a-z0-9-]*)(?:\s+([\s\S]*))?$/.exec(prompt.trim());if(!m){throw new UsageError(`--prompt \u306F /${prefix}<\u30B9\u30AD\u30EB\u540D> \u3067\u59CB\u3081\u3066\u304F\u3060\u3055\u3044\uFF08\u53D7\u3051\u53D6\u3063\u305F\u5024: ${prompt}\uFF09`,`\u4F8B: twp agent-loop create --prompt "/${prefix}fix-bug ABC-123\
15
- "`)}const name=m[1]??"";if(prefix!==""&&(!name.startsWith(prefix)||name.length===prefix.length)){throw new UsageError(`\u3053\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u30B9\u30AD\u30EB\u63A5\u982D\u8F9E\u306F '/${prefix}' \u3067\u3059\u3002--prompt \u306F /${prefix}<\u30B9\u30AD\u30EB\u540D> \u3067\u59CB\u3081\u3066\u304F\u3060\u3055\u3044\uFF08\u53D7\u3051\u53D6\u3063\u305F\u5024: ${prompt}\uFF09`,`\u4F8B: twp agent-loop create --prompt "/${prefix}fix-bug ABC-123"`)}return{skill:name.slice(
16
- prefix.length),args:(m[2]??"").trim()}}function skillPrefixFromLocalConfig(projectId){const local=loadLocalConfig(projectId);if(local.operations===void 0||local.operations===null)return"";const prefix=parseOperations(local.operations).operations.skillPrefix;setSkillPrefix(prefix);return prefix}function resolvedPrefix(input){const p=input.resolved?.["skillPrefix"]??"";return SKILL_PREFIX_RE.test(p)?p:""}function fixedAssignment(category,primary){return{categoryForSkill:()=>category,selectPrimary:()=>primary}}
14
+ {label:"\u5B9F\u884C\u5C65\u6B74"});var planHistoryPaging=envelopePaging({label:"\u8A08\u753B\u306E\u5B9F\u884C\u8A18\u9332"});function parseSkillPrompt(prompt,prefix=""){const m=/^\/([a-z0-9][a-z0-9-]*)(?:\s+([\s\S]*))?$/.exec(prompt.trim());if(!m){throw new UsageError(`--prompt \u306F /${prefix}<\u30B9\u30AD\u30EB\u540D> \u3067\u59CB\u3081\u3066\u304F\u3060\u3055\u3044\uFF08\u53D7\u3051\u53D6\u3063\u305F\u5024: ${prompt}\uFF09`,`\u4F8B: twp task-loop item create --prompt "/${prefix}fix-bug ABC\
15
+ -123"`)}const name=m[1]??"";if(prefix!==""&&(!name.startsWith(prefix)||name.length===prefix.length)){throw new UsageError(`\u3053\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u30B9\u30AD\u30EB\u63A5\u982D\u8F9E\u306F '/${prefix}' \u3067\u3059\u3002--prompt \u306F /${prefix}<\u30B9\u30AD\u30EB\u540D> \u3067\u59CB\u3081\u3066\u304F\u3060\u3055\u3044\uFF08\u53D7\u3051\u53D6\u3063\u305F\u5024: ${prompt}\uFF09`,`\u4F8B: twp task-loop item create --prompt "/${prefix}fix-bug ABC-123"`)}return{skill:name.
16
+ slice(prefix.length),args:(m[2]??"").trim()}}function skillPrefixFromLocalConfig(projectId){const local=loadLocalConfig(projectId);if(local.operations===void 0||local.operations===null)return"";const prefix=parseOperations(local.operations).operations.skillPrefix;setSkillPrefix(prefix);return prefix}function resolvedPrefix(input){const p=input.resolved?.["skillPrefix"]??"";return SKILL_PREFIX_RE.test(p)?p:""}function fixedAssignment(category,primary){return{categoryForSkill:()=>category,selectPrimary:()=>primary}}
17
17
  function assignFromLocalConfig(projectId,step,prefix){const local=loadLocalConfig(projectId);const configured=local.ai!==void 0||(local.ai_config_file??"").trim()!=="";const{config,warnings}=loadAiConfig(local.ai,local.ai_config_file,local.workspace??process.cwd());const category=config.categoryForSkill(step.skill);const item=stepToItem(step,{categoryForSkill:()=>category,selectPrimary:(c,s,p,display)=>config.selectPrimary(c,s,p,display)},prefix);return{category,primary:item?.ai_type??"",configured,
18
- warnings}}function createStep(input,prefix=resolvedPrefix(input)){const prompt=nonEmpty(input.flags,"--prompt");if(prompt===void 0){throw new UsageError("--prompt \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",'twp agent-loop create --prompt "/<\u30B9\u30AD\u30EB\u540D> <\u5F15\u6570>"')}const{skill,args}=parseSkillPrompt(prompt,prefix);return{skill,args,priority:oneOf(input.flags,"--priority",PRIORITIES)??"P2",label:nonEmpty(input.flags,"--label")??""}}function createBody(input){const step=createStep(
18
+ warnings}}function createStep(input,prefix=resolvedPrefix(input)){const prompt=nonEmpty(input.flags,"--prompt");if(prompt===void 0){throw new UsageError("--prompt \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",'twp task-loop item create --prompt "/<\u30B9\u30AD\u30EB\u540D> <\u5F15\u6570>"')}const{skill,args}=parseSkillPrompt(prompt,prefix);return{skill,args,priority:oneOf(input.flags,"--priority",PRIORITIES)??"P2",label:nonEmpty(input.flags,"--label")??""}}function createBody(input){const step=createStep(
19
19
  input);const category=requireResolved(input,"category");const primary=input.resolved?.["primary"]??"";const item=stepToItem(step,fixedAssignment(category,primary),resolvedPrefix(input));if(item===null)throw new Error("\u5185\u90E8\u30A8\u30E9\u30FC: \u30B9\u30AD\u30EB\u540D\u304C\u7A7A\u306E\u307E\u307E stepToItem \u306B\u6E21\u308A\u307E\u3057\u305F");const body={label:item.label,prompt:item.prompt};if(item.task_key!=="")body["task_key"]=item.task_key;if(item.ai_type!==void 0)body["ai_type"]=item.
20
- ai_type;const effort=oneOf(input.flags,"--ai-effort",EFFORTS);if(effort!==void 0)body["ai_effort"]=effort;return body}var createOperation={name:"create",summary:"\u30AD\u30E5\u30FC\u306B\u30A2\u30A4\u30C6\u30E0\u3092\u6295\u5165\u3059\u308B",usage:'twp agent-loop create --prompt "/<\u63A5\u982D\u8F9E><\u30B9\u30AD\u30EB\u540D> <\u5F15\u6570>" [--priority P2] [--label <\u30E9\u30D9\u30EB>] [--ai-effort <effort>] [--project <\u30B3\u30FC\u30C9|ID>]',description:`\u30EB\u30FC\u30D7\u306E\u8A08\u753B\u6295\u5165\u3068\u540C\u3058\u898F\u5247\u3067\u30A2\u30A4\u30C6\u30E0\u3092\u4F5C\u308A\u307E\u3059\uFF08\u30E9\u30D9\u30EB\u66F8\u5F0F\u30FBtask_\
21
- key \u306E\u62BD\u51FA\u306F\u8A08\u753B\u6295\u5165\u3068\u5171\u901A\uFF09:
20
+ ai_type;const effort=oneOf(input.flags,"--ai-effort",EFFORTS);if(effort!==void 0)body["ai_effort"]=effort;return body}var createOperation={name:"create",summary:"\u30AD\u30E5\u30FC\u306B\u30A2\u30A4\u30C6\u30E0\u3092\u6295\u5165\u3059\u308B",usage:'twp task-loop item create --prompt "/<\u63A5\u982D\u8F9E><\u30B9\u30AD\u30EB\u540D> <\u5F15\u6570>" [--priority P2] [--label <\u30E9\u30D9\u30EB>] [--ai-effort <effort>] [--project <\u30B3\u30FC\u30C9|ID>]',description:`\u30EB\u30FC\u30D7\u306E\u8A08\u753B\u6295\u5165\u3068\u540C\u3058\u898F\u5247\u3067\u30A2\u30A4\u30C6\u30E0\u3092\u4F5C\u308A\u307E\u3059\uFF08\u30E9\u30D9\u30EB\u66F8\u5F0F\u30FBt\
21
+ ask_key \u306E\u62BD\u51FA\u306F\u8A08\u753B\u6295\u5165\u3068\u5171\u901A\uFF09:
22
22
  \u30E9\u30D9\u30EB [<\u512A\u5148\u5EA6>] <\u30BF\u30B9\u30AF\u30AD\u30FC> <\u30E9\u30D9\u30EB> #ai:<\u30AB\u30C6\u30B4\u30EA>\uFF08200\u5B57\u3067\u5207\u308B\u3002--label \u7701\u7565\u6642\u306F\u30D7\u30ED\u30F3\u30D7\u30C8\uFF09
23
23
  task_key \u30D7\u30ED\u30F3\u30D7\u30C8\u306E\u5F15\u6570\u306E\u5148\u982D\u306B\u3042\u308B\u30BF\u30B9\u30AF\u30AD\u30FC\uFF08\u4F8B ABC-123\uFF09
24
24
  1\u756A\u624B \u3053\u306E\u6A5F\u4F53\u306E\u30EB\u30FC\u30D7\u8A2D\u5B9A\uFF08~/.twp/loops/<\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8ID>.json\uFF09\u306E\u30AB\u30C6\u30B4\u30EA\u8868\u3068 primary_rotation \u3067\u6C7A\u3081\u308B
@@ -27,7 +27,7 @@ key \u306E\u62BD\u51FA\u306F\u8A08\u753B\u6295\u5165\u3068\u5171\u901A\uFF09:
27
27
  \u63A5\u982D\u8F9E \u3053\u306E\u6A5F\u4F53\u306E\u30EB\u30FC\u30D7\u8A2D\u5B9A\u306E operations.skill_prefix\uFF08\u65E2\u5B9A twp-\uFF09\u3002\u904B\u7528\u8A2D\u5B9A\u304C\u7121\u3051\u308C\u3070 /<\u540D\u524D> \u3092\u305D\u306E\u307E\u307E\u7A4D\u307F\u307E\u3059
28
28
 
29
29
  \u540C\u3058\u30BF\u30B9\u30AF\u306E\u30A2\u30A4\u30C6\u30E0\u304C\u65E2\u306B\u4E26\u3093\u3067\u3044\u3066\u3082\u5F3E\u304D\u307E\u305B\u3093\u3002\u78BA\u304B\u3081\u308B\u306B\u306F:
30
- twp agent-loop list --status pending --query "[?task_key=='ABC-123']"
30
+ twp task-loop item list --status pending --query "[?task_key=='ABC-123']"
31
31
 
32
32
  ${PROJECT_HELP}`,flags:[{name:"--prompt",summary:"\u5B9F\u884C\u3059\u308B\u30B9\u30AD\u30EB\u3068\u5F15\u6570\uFF08/<\u63A5\u982D\u8F9E><\u30B9\u30AD\u30EB\u540D> \u3067\u59CB\u3081\u308B\uFF09",takesValue:true,placeholder:'"/<\u63A5\u982D\u8F9E><\u30B9\u30AD\u30EB\u540D> <\u5F15\u6570>"'},{name:"--priority",summary:`\u512A\u5148\u5EA6\uFF08${PRIORITIES.join(" / ")}\u3002\u65E2\u5B9A P2\uFF09\u3002\u30E9\u30D9\u30EB\u306E\u5148\u982D\u306B\u5165\u308B`,takesValue:true,placeholder:"<P0-P3>"},{name:"\
33
33
  --label",summary:"\u30E9\u30D9\u30EB\u306E\u672C\u6587\uFF08\u7701\u7565\u6642\u306F\u30D7\u30ED\u30F3\u30D7\u30C8\uFF09",takesValue:true,placeholder:"<\u30E9\u30D9\u30EB>"},{name:"--ai-effort",summary:`\u3053\u306E\u30A2\u30A4\u30C6\u30E0\u306E effort\uFF08${EFFORTS.join(" / ")}\uFF09\u3002\u30AB\u30C6\u30B4\u30EA\u65E2\u5B9A\u3088\u308A\u512A\u5148\u3059\u308B`,takesValue:true,placeholder:"<effort>"},PROJECT_FLAG],async prepare(input,ctx){rejectArgs(input,"create");createStep(input,"");const projectId=await ctx.
@@ -35,34 +35,34 @@ projectId(input.flags.get("--project"));const skillPrefix=skillPrefixFromLocalCo
35
35
  resolved?.["aiWarnings"]??"";if(warnings!=="")notes.push(`\u30EB\u30FC\u30D7\u8A2D\u5B9A\u306E\u8AAD\u307F\u8FBC\u307F\u3067\u554F\u984C\u304C\u3042\u308A\u307E\u3057\u305F: ${warnings}`);if(input.resolved?.["aiConfigured"]==="no"){notes.push(`\u3053\u306E\u6A5F\u4F53\u306B\u30EB\u30FC\u30D7\u8A2D\u5B9A\uFF08ai / ai_config_file\uFF09\u304C\u7121\u3044\u305F\u3081\u3001\u30AB\u30C6\u30B4\u30EA\u306F\u7D44\u307F\u8FBC\u307F\u65E2\u5B9A\uFF08${input.resolved?.["category"]??"?"}\uFF09\u3067\u6C7A\u3081\u307E\u3057\u305F\u3002\u5B9F\u884C\u6A5F\u306F claim \u6642\u306B\
36
36
  \u81EA\u5206\u306E\u8A2D\u5B9A\u3067\u30AB\u30C6\u30B4\u30EA\u3092\u5F15\u304D\u76F4\u3057\u307E\u3059\u304C\u3001\u30E9\u30D9\u30EB\u306E #ai: \u30BF\u30B0\u306F\u6295\u5165\u6642\u306E\u5024\u306E\u307E\u307E\u3067\u3059\u3002`)}return notes},summarize:body=>pick(itemObject(body),GET_COLUMNS),raw:itemObject};function updateBody(input){const body={};const label=nonEmpty(input.flags,"--label");if(label!==void 0)body["label"]=label;const prompt=nonEmpty(input.flags,"--prompt");if(prompt!==void 0){
37
37
  parseSkillPrompt(prompt);body["prompt"]=prompt.trim()}const taskKey=input.flags.get("--task-key");if(taskKey!==void 0)body["task_key"]=taskKey.trim()==="none"?null:nonEmpty(input.flags,"--task-key");const aiType=oneOfOrNone(input.flags,"--ai-type",AI_TYPES);if(aiType!==void 0)body["ai_type"]=aiType;const effort=oneOfOrNone(input.flags,"--ai-effort",EFFORTS);if(effort!==void 0)body["ai_effort"]=effort;if(Object.keys(body).length===0){throw new UsageError("\u66F4\u65B0\u3059\u308B\u9805\u76EE\u304C\u3042\u308A\u307E\u305B\u3093\uFF08--label / --prompt / --task-\
38
- key / --ai-type / --ai-effort \u306E\u3044\u305A\u308C\u304B\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF09","twp agent-loop update help")}return body}var updateOperation={name:"update",summary:"\u30A2\u30A4\u30C6\u30E0\u306E\u30E9\u30D9\u30EB\u30FB\u30D7\u30ED\u30F3\u30D7\u30C8\u30FBAI \u6307\u5B9A\u3092\u66F4\u65B0\u3059\u308B\uFF08\u7BA1\u7406\u8005\u306E\u307F\uFF09",usage:"twp agent-loop update <\u30A2\u30A4\u30C6\u30E0ID> [--label <\u30E9\u30D9\u30EB>] [--prompt <\u30D7\u30ED\u30F3\u30D7\u30C8>] [--task-key <\u30AD\u30FC|none>] [--ai-type <AI|no\
39
- ne>] [--ai-effort <effort|none>]",description:`\u6307\u5B9A\u3057\u305F\u9805\u76EE\u3060\u3051\u3092\u9001\u308A\u307E\u3059\u3002none \u3092\u6E21\u3059\u3068\u305D\u306E\u9805\u76EE\u3092\u6D88\u3057\u307E\u3059\uFF08--task-key / --ai-type / --ai-effort\uFF09\u3002
38
+ key / --ai-type / --ai-effort \u306E\u3044\u305A\u308C\u304B\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF09","twp task-loop item update help")}return body}var updateOperation={name:"update",summary:"\u30A2\u30A4\u30C6\u30E0\u306E\u30E9\u30D9\u30EB\u30FB\u30D7\u30ED\u30F3\u30D7\u30C8\u30FBAI \u6307\u5B9A\u3092\u66F4\u65B0\u3059\u308B\uFF08\u7BA1\u7406\u8005\u306E\u307F\uFF09",usage:"twp task-loop item update <\u30A2\u30A4\u30C6\u30E0ID> [--label <\u30E9\u30D9\u30EB>] [--prompt <\u30D7\u30ED\u30F3\u30D7\u30C8>] [--task-key <\u30AD\u30FC|none>] [--ai-typ\
39
+ e <AI|none>] [--ai-effort <effort|none>]",description:`\u6307\u5B9A\u3057\u305F\u9805\u76EE\u3060\u3051\u3092\u9001\u308A\u307E\u3059\u3002none \u3092\u6E21\u3059\u3068\u305D\u306E\u9805\u76EE\u3092\u6D88\u3057\u307E\u3059\uFF08--task-key / --ai-type / --ai-effort\uFF09\u3002
40
40
  --label \u306F\u66F8\u5F0F\u3092\u7D44\u307F\u7ACB\u3066\u76F4\u3055\u305A\u3001\u6E21\u3057\u305F\u6587\u5B57\u5217\u3092\u305D\u306E\u307E\u307E\u4FDD\u5B58\u3057\u307E\u3059\uFF08#ai: \u30BF\u30B0\u3082\u81EA\u5206\u3067\u66F8\u3044\u3066\u304F\u3060\u3055\u3044\uFF09\u3002
41
41
 
42
42
  \u66F4\u65B0\u306B\u306F\u66F8\u304D\u8FBC\u307F\u30B2\u30FC\u30C8\u304C\u639B\u304B\u308A\u307E\u3059: ${FORBIDDEN_UPDATE}\u3002
43
43
 
44
44
  `+PROJECT_HELP,forbidden:FORBIDDEN_UPDATE,flags:[ITEM_FLAG,{name:"--label",summary:"\u30E9\u30D9\u30EB\uFF08\u305D\u306E\u307E\u307E\u4FDD\u5B58\u3059\u308B\uFF09",takesValue:true,placeholder:"<\u30E9\u30D9\u30EB>"},{name:"--prompt",summary:"\u30D7\u30ED\u30F3\u30D7\u30C8\uFF08/<\u63A5\u982D\u8F9E><\u30B9\u30AD\u30EB\u540D> \u3067\u59CB\u3081\u308B\uFF09",takesValue:true,placeholder:'"/<\u63A5\u982D\u8F9E><\u30B9\u30AD\u30EB\u540D> <\u5F15\u6570>"'},{name:"--task-key",summary:"\u30BF\u30B9\u30AF\u30AD\u30FC\uFF08none \u3067\u6D88\u3059\uFF09",
45
- takesValue:true,placeholder:"<\u30AD\u30FC|none>"},{name:"--ai-type",summary:`1\u756A\u624B\u306E AI\uFF08${AI_TYPES.join(" / ")}\u3002none \u3067\u6D88\u3059\uFF09`,takesValue:true,placeholder:"<AI|none>"},{name:"--ai-effort",summary:`effort\uFF08${EFFORTS.join(" / ")}\u3002none \u3067\u6D88\u3059\uFF09`,takesValue:true,placeholder:"<effort|none>"},PROJECT_FLAG],async prepare(input,ctx){updateBody(input);return prepareItem(input,ctx,"twp agent-loop update help")},plan:input=>({method:"PUT",path:itemPath(
46
- input),body:updateBody(input)}),summarize:body=>pick(itemObject(body),GET_COLUMNS),raw:itemObject};function movedItems(body){const items=isRecord(body)?body["items"]:void 0;if(!Array.isArray(items)){throw new ApiResponseError("\u4E26\u3073\u66FF\u3048\u306E\u5FDC\u7B54\u306B items \u914D\u5217\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002")}return items}var moveOperation={name:"move",summary:"\u30A2\u30A4\u30C6\u30E0\u3092\u30AD\u30E5\u30FC\u306E\u5148\u982D\u3078\u79FB\u3059\uFF08--yes \u304C\u8981\u308B\u30FB\u7BA1\u7406\u8005\u306E\u307F\
47
- \uFF09",usage:"twp agent-loop move <\u30A2\u30A4\u30C6\u30E0ID> --yes [--project <\u30B3\u30FC\u30C9|ID>]",description:`\u6B21\u306B claim \u3055\u308C\u308B\u306E\u304C\u3053\u306E\u30A2\u30A4\u30C6\u30E0\u306B\u306A\u308A\u307E\u3059\uFF08\u7A3C\u50CD\u4E2D\u306E\u30EB\u30FC\u30D7\u306E\u5B9F\u884C\u9806\u304C\u5909\u308F\u308B\u306E\u3067 --yes \u304C\u8981\u308A\u307E\u3059\uFF09\u3002
45
+ takesValue:true,placeholder:"<\u30AD\u30FC|none>"},{name:"--ai-type",summary:`1\u756A\u624B\u306E AI\uFF08${AI_TYPES.join(" / ")}\u3002none \u3067\u6D88\u3059\uFF09`,takesValue:true,placeholder:"<AI|none>"},{name:"--ai-effort",summary:`effort\uFF08${EFFORTS.join(" / ")}\u3002none \u3067\u6D88\u3059\uFF09`,takesValue:true,placeholder:"<effort|none>"},PROJECT_FLAG],async prepare(input,ctx){updateBody(input);return prepareItem(input,ctx,"twp task-loop item update help")},plan:input=>({method:"PUT",
46
+ path:itemPath(input),body:updateBody(input)}),summarize:body=>pick(itemObject(body),GET_COLUMNS),raw:itemObject};function movedItems(body){const items=isRecord(body)?body["items"]:void 0;if(!Array.isArray(items)){throw new ApiResponseError("\u4E26\u3073\u66FF\u3048\u306E\u5FDC\u7B54\u306B items \u914D\u5217\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002")}return items}var moveOperation={name:"move",summary:"\u30A2\u30A4\u30C6\u30E0\u3092\u30AD\u30E5\u30FC\u306E\u5148\u982D\u3078\u79FB\u3059\uFF08-\
47
+ -yes \u304C\u8981\u308B\u30FB\u7BA1\u7406\u8005\u306E\u307F\uFF09",usage:"twp task-loop item move <\u30A2\u30A4\u30C6\u30E0ID> --yes [--project <\u30B3\u30FC\u30C9|ID>]",description:`\u6B21\u306B claim \u3055\u308C\u308B\u306E\u304C\u3053\u306E\u30A2\u30A4\u30C6\u30E0\u306B\u306A\u308A\u307E\u3059\uFF08\u7A3C\u50CD\u4E2D\u306E\u30EB\u30FC\u30D7\u306E\u5B9F\u884C\u9806\u304C\u5909\u308F\u308B\u306E\u3067 --yes \u304C\u8981\u308A\u307E\u3059\uFF09\u3002
48
48
  \u52D5\u304B\u305B\u308B\u306E\u306F pending \u306E\u30A2\u30A4\u30C6\u30E0\u3060\u3051\u3067\u3059\u3002processing / completed / failed \u306E\u30A2\u30A4\u30C6\u30E0\u306F\u4F4D\u7F6E\u304C\u5909\u308F\u308A\u307E\u305B\u3093
49
49
  \uFF08\u305D\u306E\u5834\u5408\u306F stderr \u3067\u305D\u3046\u4F1D\u3048\u307E\u3059\uFF09\u3002
50
50
 
51
51
  \u4E26\u3073\u66FF\u3048\u306B\u306F\u66F8\u304D\u8FBC\u307F\u30B2\u30FC\u30C8\u304C\u639B\u304B\u308A\u307E\u3059: ${FORBIDDEN_MOVE}\u3002
52
52
 
53
- `+PROJECT_HELP,destructive:true,forbidden:FORBIDDEN_MOVE,flags:[ITEM_FLAG,PROJECT_FLAG],prepare:(input,ctx)=>prepareItem(input,ctx,"twp agent-loop move help"),plan:input=>({method:"PUT",path:`${basePath(input)}/reorder`,body:{item_ids:[requireResolved(input,"itemId")]}}),summarize:body=>movedItems(body).map(row=>pick(row,LIST_COLUMNS)),raw:movedItems,notes(body){return movedItems(body).filter(row=>isRecord(row)&&row["status"]!=="pending").map(row=>{const r=row;return`\u30A2\u30A4\u30C6\u30E0 ${String(
54
- r["item_id"])} \u306F ${String(r["status"])} \u306E\u305F\u3081\u3001\u4E26\u3073\u306F\u5909\u308F\u3063\u3066\u3044\u307E\u305B\u3093\uFF08\u5148\u982D\u3078\u79FB\u305B\u308B\u306E\u306F pending \u3060\u3051\u3067\u3059\uFF09\u3002`})}};var deleteOperation={name:"delete",summary:"\u30A2\u30A4\u30C6\u30E0\u3092\u30AD\u30E5\u30FC\u304B\u3089\u524A\u9664\u3059\u308B\uFF08--yes \u304C\u8981\u308B\u30FB\u7BA1\u7406\u8005\u306E\u307F\uFF09",usage:"twp agent-loop delete <\u30A2\u30A4\u30C6\u30E0ID> --yes [--project <\u30B3\u30FC\
55
- \u30C9|ID>]",description:`\u524A\u9664\u306F\u53D6\u308A\u6D88\u305B\u307E\u305B\u3093\u3002\u30A2\u30A4\u30C6\u30E0\u306F\u5B9F\u884C\u8A18\u9332\uFF08\u53F0\u5E33\uFF09\u3067\u3082\u3042\u308B\u306E\u3067\u3001\u7D42\u308F\u3063\u305F\u30A2\u30A4\u30C6\u30E0\u306F\u6D88\u3055\u305A\u306B\u6B8B\u3059\u306E\u304C\u65E2\u5B9A\u3067\u3059\u3002
53
+ `+PROJECT_HELP,destructive:true,forbidden:FORBIDDEN_MOVE,flags:[ITEM_FLAG,PROJECT_FLAG],prepare:(input,ctx)=>prepareItem(input,ctx,"twp task-loop item move help"),plan:input=>({method:"PUT",path:`${basePath(input)}/reorder`,body:{item_ids:[requireResolved(input,"itemId")]}}),summarize:body=>movedItems(body).map(row=>pick(row,LIST_COLUMNS)),raw:movedItems,notes(body){return movedItems(body).filter(row=>isRecord(row)&&row["status"]!=="pending").map(row=>{const r=row;return`\u30A2\u30A4\u30C6\u30E0 ${String(
54
+ r["item_id"])} \u306F ${String(r["status"])} \u306E\u305F\u3081\u3001\u4E26\u3073\u306F\u5909\u308F\u3063\u3066\u3044\u307E\u305B\u3093\uFF08\u5148\u982D\u3078\u79FB\u305B\u308B\u306E\u306F pending \u3060\u3051\u3067\u3059\uFF09\u3002`})}};var deleteOperation={name:"delete",summary:"\u30A2\u30A4\u30C6\u30E0\u3092\u30AD\u30E5\u30FC\u304B\u3089\u524A\u9664\u3059\u308B\uFF08--yes \u304C\u8981\u308B\u30FB\u7BA1\u7406\u8005\u306E\u307F\uFF09",usage:"twp task-loop item delete <\u30A2\u30A4\u30C6\u30E0ID> --yes [--project\
55
+ <\u30B3\u30FC\u30C9|ID>]",description:`\u524A\u9664\u306F\u53D6\u308A\u6D88\u305B\u307E\u305B\u3093\u3002\u30A2\u30A4\u30C6\u30E0\u306F\u5B9F\u884C\u8A18\u9332\uFF08\u53F0\u5E33\uFF09\u3067\u3082\u3042\u308B\u306E\u3067\u3001\u7D42\u308F\u3063\u305F\u30A2\u30A4\u30C6\u30E0\u306F\u6D88\u3055\u305A\u306B\u6B8B\u3059\u306E\u304C\u65E2\u5B9A\u3067\u3059\u3002
56
56
  \u5B9A\u671F\u67A0\u306B\u7D10\u3065\u304F\u30A2\u30A4\u30C6\u30E0\u3092\u6D88\u3059\u3068\u3001\u30B5\u30FC\u30D0\u304C\u305D\u306E\u67A0\u3092\u89E3\u653E\u3057\u307E\u3059\uFF08\u5FDC\u7B54\u306E schedule_window_released\uFF09\u3002
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})};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}
60
+ `+PROJECT_HELP,destructive:true,forbidden:FORBIDDEN_DELETE,flags:[ITEM_FLAG,PROJECT_FLAG],prepare:(input,ctx)=>prepareItem(input,ctx,"twp task-loop item 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/pr\
61
+ ivate/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
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
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
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",commandPath:"task-loop 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 task-loop history list --since <\
65
+ \u65E5\u4ED8|\u65E5\u6642> [--until <\u65E5\u4ED8|\u65E5\u6642>] [--status <\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
66
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
67
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
68
68
 
@@ -70,10 +70,10 @@ ${HISTORY_PROJECT_HELP}
70
70
 
71
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.
72
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,
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
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 task-loop history list --since 2026-09-01")}oneOf(input.
74
+ 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.flags,
75
+ "--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",commandPath:"task-loop 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\
76
+ \u9332\u3092\u4E00\u89A7\u3059\u308B",usage:"twp task-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
77
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
78
78
  --result \u306F ${PLAN_RESULTS.join(" / ")} \u306E\u3044\u305A\u308C\u304B\u3002
79
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
@@ -83,14 +83,14 @@ ${HISTORY_PROJECT_HELP}
83
83
 
84
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.
85
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",
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
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
86
+ --since \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044","twp task-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",commandPath:"task-loop item",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",
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 task-loop item 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
89
+ \u671F\u9593\u3067\u5207\u3063\u305F\u5B9F\u884C\u5C65\u6B74\u306F twp task-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
90
90
 
91
91
  ${PROJECT_HELP}
92
92
 
93
93
  `+LIST_PAGING_HELP,flags:[...LIST_FLAGS,{name:"--status",summary:`\u72B6\u614B\u3067\u7D5E\u308A\u8FBC\u3080\uFF08${STATUSES.join(" / ")}\uFF09`,takesValue:true,placeholder:"<\u72B6\u614B>"},PROJECT_FLAG],paging:listPaging,async prepare(input,ctx){rejectArgs(input,"list");oneOf(input.flags,"--status",STATUSES);return prepareProject(input,ctx)},plan(input){const status=oneOf(input.flags,"--status",STATUSES);return{method:"GET",path:basePath(input),query:{status,paginated:status===void 0?"1":void 0,
94
- limit:positiveInteger(input.flags,"--limit"),cursor:nonEmpty(input.flags,"--cursor")}}},summarize:body=>listPaging.items(body).map(row=>pick(row,LIST_COLUMNS)),raw:body=>listPaging.items(body)},{name:"get",summary:"\u30A2\u30A4\u30C6\u30E01\u4EF6\u306E\u8A73\u7D30\u3092\u8868\u793A\u3059\u308B",usage:"twp agent-loop get <\u30A2\u30A4\u30C6\u30E0ID> [--project <\u30B3\u30FC\u30C9|ID>]",description:`\u30B9\u30C6\u30C3\u30D7\u30ED\u30B0\u5168\u6587\uFF08result\uFF09\u306F --output json \u304B --query result \u3067\u8AAD\u3081\u307E\u3059\u3002
94
+ limit:positiveInteger(input.flags,"--limit"),cursor:nonEmpty(input.flags,"--cursor")}}},summarize:body=>listPaging.items(body).map(row=>pick(row,LIST_COLUMNS)),raw:body=>listPaging.items(body)},{name:"get",summary:"\u30A2\u30A4\u30C6\u30E01\u4EF6\u306E\u8A73\u7D30\u3092\u8868\u793A\u3059\u308B",usage:"twp task-loop item get <\u30A2\u30A4\u30C6\u30E0ID> [--project <\u30B3\u30FC\u30C9|ID>]",description:`\u30B9\u30C6\u30C3\u30D7\u30ED\u30B0\u5168\u6587\uFF08result\uFF09\u306F --output json \u304B --query result \u3067\u8AAD\u3081\u307E\u3059\u3002
95
95
 
96
- ${PROJECT_HELP}`,flags:[ITEM_FLAG,PROJECT_FLAG],prepare:(input,ctx)=>prepareItem(input,ctx,"twp agent-loop get help"),plan:input=>({method:"GET",path:itemPath(input)}),summarize:body=>pick(itemObject(body),GET_COLUMNS),raw:itemObject},createOperation,updateOperation,moveOperation,deleteOperation],subresources:[historyResource,planHistoryResource]};export{agentLoopDomain,createBody,historyResource,parseSkillPrompt,planHistoryResource,updateBody};
96
+ ${PROJECT_HELP}`,flags:[ITEM_FLAG,PROJECT_FLAG],prepare:(input,ctx)=>prepareItem(input,ctx,"twp task-loop item get help"),plan:input=>({method:"GET",path:itemPath(input)}),summarize:body=>pick(itemObject(body),GET_COLUMNS),raw:itemObject},createOperation,updateOperation,moveOperation,deleteOperation],subresources:[historyResource,planHistoryResource]};export{agentLoopDomain,createBody,historyResource,parseSkillPrompt,planHistoryResource,updateBody};
@@ -1,6 +1,6 @@
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-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,
3
+ import{failureHint,isAuthError,isCliFatalText,isRateLimited,isServerAiType,isUntrusted,maxTurnsReached,rateLimitWaitSeconds,tailForScan}from"./chunk-ZOOEH7ZE.js";import{expandServerSkills,prepareSkillOverlay}from"./chunk-QGRBZ2C2.js";import{detectAiClis}from"./chunk-5SONMN6K.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
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(
@@ -0,0 +1,5 @@
1
+ import { createRequire as __twpCreateRequire } from 'node:module';
2
+ const require = __twpCreateRequire(import.meta.url);
3
+ import{DEPARTMENT_FLAG,FROM_FLAG,MANHOUR_DESCRIPTION,MANHOUR_FROM_FLAG,MANHOUR_TO_FLAG,MONTH_FLAG,TO_FLAG,USER_FLAG,analysisDomain,analysisForbidden,currentMonth,dataOf,levelGuidance,listIn,manhourNotes,manhourQuery,manhourRows,monthColumns,monthRange,monthsBetween,noArgs,periodNote,profitRows,rangeNotes,recordOf,resolveFilters,resolvedOrUndefined,responseMonths,staffKpiRows,workloadDistributionNotes,workloadDistributionRows}from"./chunk-QXYY7DUV.js";import"./chunk-HKEW6XIC.js";import"./chunk-EXT4AIDF.js";
4
+ import"./chunk-CADCERVL.js";import"./chunk-RX5HWI4L.js";import"./chunk-JJSBBWJ5.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"./chunk-3ZRMMBP5.js";import"./chunk-VFPY2A23.js";import"./chunk-J7QYPKVK.js";import"./chunk-EDF4U5BT.js";
5
+ import"./chunk-RZVI6PMW.js";import"./chunk-QQRJLH6B.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";export{DEPARTMENT_FLAG,FROM_FLAG,MANHOUR_DESCRIPTION,MANHOUR_FROM_FLAG,MANHOUR_TO_FLAG,MONTH_FLAG,TO_FLAG,USER_FLAG,analysisDomain,analysisForbidden,currentMonth,dataOf,levelGuidance,listIn,manhourNotes,manhourQuery,manhourRows,monthColumns,monthRange,monthsBetween,noArgs,periodNote,profitRows,rangeNotes,recordOf,resolveFilters,resolvedOrUndefined,responseMonths,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{LIST_FLAGS,LIST_PAGING_HELP,envelopePaging,positiveInteger}from"./chunk-MI6HVYR2.js";import{readBody}from"./chunk-6LSQCOCJ.js";import{ANNOUNCEMENTS_PATH}from"./chunk-GHE6X45G.js";import{isSafePathSegment}from"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.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-4VZKNEVN.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","\
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,9 +1,9 @@
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-R4Y3OLFY.js";import"./chunk-BMJMOUBS.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{DEFAULT_MAX_ITEMS,DEFAULT_MAX_PAGES,envelopePaging,isPageNumberEnvelope,pageRangeNotes,positiveInteger,readEnvelopeCursor,readPageNumberCursor,shellQuote}from"./chunk-MI6HVYR2.js";import{parseOperationArgs,repeatedValues}from"./chunk-RX5HWI4L.js";import{readBody}from"./chunk-6LSQCOCJ.js";import"./chunk-GHE6X45G.js";import"./chunk-HVZUXLQ4.js";import{ApiError,TwpApiClient,appendQuery}from"./chunk-JA5A6UJ2.js";
5
- import"./chunk-H4CDX4TX.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-4VZKNEVN.js";
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=>/^\{[^/{}]+\}$/.
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-DJ5OD2HW.js";import"./chunk-64VHXDB6.js";import{renderOutput}from"./chunk-PO35MCYP.js";import"./chunk-Q3B65OFC.js";import{evaluateQuery}from"./chunk-GFLGXGWE.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
+ import"./chunk-RZVI6PMW.js";import{HELP_TOKEN}from"./chunk-MLRBDF44.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;
9
9
  const methods=[...new Set(hits.filter(route=>route.template===template).map(route=>route.method))].sort();return{kind:"method-mismatch",template,methods}}return{kind:"unknown"}}function pickOperation(operations,method,template){return operations.find(op=>op.method===method&&op.path===template)??null}async function suggestRoutes(routes,path,limit=5){const{default:fuzzysort}=await import("./fuzzysort-DFVKV4B4.js");const parsed=parseRoutes(routes);const templates=[...new Set(parsed.map(route=>route.
@@ -1,9 +1,9 @@
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-4VAWX7TW.js";import"./chunk-NZ7WI4RZ.js";import{buildDiffLines,
4
- diffStat}from"./chunk-VRBI2NPI.js";import"./chunk-N2UVRM3Z.js";import"./chunk-LDBYJPRD.js";import"./chunk-GHE6X45G.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-5WTFZJT7.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-4VZKNEVN.js";import{configReadDirs,twpHomeDir}from"./chunk-RZVI6PMW.js";import{parseArgv}from"./chunk-6C75QARV.js";import{applyPermissionMode,checkPermission,describePermissionMode,getMode,isModeId,modeSource,nextMode}from"./chunk-2LOT54OO.js";import"./chunk-W4E4F2ZA.js";
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.
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{require_fuzzysort}from"./chunk-DIMZRTLE.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";
5
+ import"./chunk-D233KKXW.js";import"./chunk-PMOUHEJQ.js";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-IVFSEXD3.js";import{applyPermissionMode,checkPermission,describePermissionMode,getMode,isModeId,modeSource,
6
+ nextMode}from"./chunk-2LOT54OO.js";import"./chunk-MLRBDF44.js";import"./chunk-VERYHAWV.js";import"./chunk-QQRJLH6B.js";import{isFullWidth,isWide,stringWidth,stripAnsi}from"./chunk-UREA4ZIG.js";import{stripTerminalControls}from"./chunk-NHYMHCAT.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=
9
9
  function(partialState,callback){if("object"!==typeof partialState&&"function"!==typeof partialState&&null!=partialState)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,partialState,callback,"setState")};Component.prototype.forceUpdate=function(callback){this.updater.enqueueForceUpdate(this,callback,"forceUpdate")};function ComponentDummy(){}ComponentDummy.prototype=Component.prototype;function PureComponent2(props,context,updater){
@@ -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-DKDJACXL.js");try{const code=await runDomain({domain:route.domain,...parsed.operation!==void 0?{operation:parsed.operation}:
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-EO7J3QYK.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-XG2JN66A.js";import{dateFlag,monthFlag}from"./chunk-EXT4AIDF.js";import"./chunk-AITUAHWK.js";import"./chunk-JJSBBWJ5.js";import"./chunk-MI6HVYR2.js";import"./chunk-RX5HWI4L.js";import"./chunk-6LSQCOCJ.js";import"./chunk-GHE6X45G.js";import{isSafePathSegment}from"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.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-4VZKNEVN.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\
3
+ import{PUNCH_TYPES,assertMonthOpen,attendanceDomain}from"./chunk-HKEW6XIC.js";import{dateFlag,monthFlag}from"./chunk-EXT4AIDF.js";import"./chunk-CADCERVL.js";import"./chunk-RX5HWI4L.js";import"./chunk-JJSBBWJ5.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-XG2JN66A.js";import{monthFlag}from"./chunk-EXT4AIDF.js";import"./chunk-AITUAHWK.js";import"./chunk-JJSBBWJ5.js";import"./chunk-MI6HVYR2.js";import"./chunk-RX5HWI4L.js";import"./chunk-6LSQCOCJ.js";import"./chunk-GHE6X45G.js";import"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.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-4VZKNEVN.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";
3
+ import{hoursMinutes}from"./chunk-HKEW6XIC.js";import{monthFlag}from"./chunk-EXT4AIDF.js";import"./chunk-CADCERVL.js";import"./chunk-RX5HWI4L.js";import"./chunk-JJSBBWJ5.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-NWI2TBO6.js";import"./chunk-DXXFUNYN.js";import"./chunk-5WGOHFAS.js";import"./chunk-4VZKNEVN.js";import"./chunk-RZVI6PMW.js";import"./chunk-NHYMHCAT.js";
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};