@tocca-systems/twp-cli 0.49.0 → 0.50.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 (101) hide show
  1. package/CHANGELOG.public.md +8 -0
  2. package/README.md +68 -2
  3. package/dist/{agent-loop-XKH5YE6A.js → agent-loop-EBIXJ4EH.js} +2 -2
  4. package/dist/{ai-dispatch-FGVNSM6L.js → ai-dispatch-2FL2AFL7.js} +2 -2
  5. package/dist/{analysis-NCD6YTJM.js → analysis-2SWIQ4AI.js} +2 -2
  6. package/dist/announcement-R76XDLW7.js +52 -0
  7. package/dist/{api-command-IBK6R4XU.js → api-command-VFFV7BD4.js} +5 -16
  8. package/dist/{app-7I767FND.js → app-PNDIA4NV.js} +4 -4
  9. package/dist/{attendance-correct-M6KD6PSN.js → attendance-correct-SN2KYGOE.js} +2 -2
  10. package/dist/{attendance-lists-3T7S7QF5.js → attendance-lists-6S62D2UV.js} +1 -1
  11. package/dist/{backlog-IXUASOE3.js → backlog-5XSCJGPJ.js} +2 -2
  12. package/dist/{budget-EJIZFFB7.js → budget-PIGBJ5N7.js} +1 -1
  13. package/dist/{charter-command-2RIS2VTQ.js → charter-command-LIX2JXRJ.js} +1 -1
  14. package/dist/{chunk-QHNZUMRK.js → chunk-342WUEV4.js} +1 -1
  15. package/dist/{chunk-IXFMXUNT.js → chunk-3YCVR7X4.js} +1 -1
  16. package/dist/{chunk-VTQAI52S.js → chunk-3ZRMMBP5.js} +1 -1
  17. package/dist/{chunk-HNUBM24L.js → chunk-4S7SNE2M.js} +1 -1
  18. package/dist/{chunk-QICH2OOI.js → chunk-5JL26BPU.js} +1 -1
  19. package/dist/{chunk-ORUDW52G.js → chunk-6LSQCOCJ.js} +1 -1
  20. package/dist/{chunk-F7K37QG6.js → chunk-7UB4I3JF.js} +1 -1
  21. package/dist/{chunk-AJO4O5ZF.js → chunk-A4LFG7MW.js} +1 -1
  22. package/dist/{chunk-VWNFYFLA.js → chunk-BVXUORXE.js} +1 -1
  23. package/dist/{chunk-QYWYZG73.js → chunk-CF3ZZKCZ.js} +2 -2
  24. package/dist/{chunk-74SXPFUT.js → chunk-CUPPIHSJ.js} +1 -1
  25. package/dist/{chunk-BSEPVMVA.js → chunk-DQCHLRSB.js} +2 -2
  26. package/dist/{chunk-AC6G5UPA.js → chunk-ELEOYXLD.js} +2 -2
  27. package/dist/{chunk-4B3T4UE7.js → chunk-EXT4AIDF.js} +1 -1
  28. package/dist/{chunk-SPGS7DHD.js → chunk-FANDYQCM.js} +1 -1
  29. package/dist/{chunk-5ALOH2TR.js → chunk-FMJUPLDG.js} +1 -1
  30. package/dist/{chunk-ATYA6DG5.js → chunk-GFLGXGWE.js} +1 -1
  31. package/dist/chunk-GXZOFRZH.js +9 -0
  32. package/dist/{chunk-4QKACT6A.js → chunk-IRHKFHJZ.js} +2 -2
  33. package/dist/{chunk-QOUDJ7XO.js → chunk-IU5P6MY5.js} +1 -1
  34. package/dist/{chunk-IOGMOXYF.js → chunk-MI6HVYR2.js} +1 -1
  35. package/dist/{chunk-HJPIGVGD.js → chunk-NK53AFVE.js} +1 -1
  36. package/dist/{chunk-6KB2R3S2.js → chunk-NN6LAZRA.js} +2 -2
  37. package/dist/{chunk-3AD2T6L2.js → chunk-ONAMXPTE.js} +1 -1
  38. package/dist/{chunk-XDHLO54T.js → chunk-OTIR4GES.js} +1 -1
  39. package/dist/{chunk-LXIAOCUW.js → chunk-PS5QFKHB.js} +1 -1
  40. package/dist/chunk-Q2KIETMB.js +132 -0
  41. package/dist/{chunk-3HH5IYNO.js → chunk-QBGEYQ2I.js} +1 -1
  42. package/dist/{chunk-OHXZO5WK.js → chunk-QLENN5DD.js} +1 -1
  43. package/dist/chunk-QSXS5SB2.js +33 -0
  44. package/dist/{chunk-FC2SFCKD.js → chunk-S3A24B2C.js} +6 -6
  45. package/dist/{chunk-6WNPHORR.js → chunk-SECVO7RQ.js} +2 -2
  46. package/dist/{chunk-TKGVAWGU.js → chunk-TVODNAPX.js} +1 -1
  47. package/dist/{chunk-5YXEGJU7.js → chunk-V2BB5EWS.js} +2 -2
  48. package/dist/{chunk-2YNZ4MRT.js → chunk-V64CGX7V.js} +1 -1
  49. package/dist/{chunk-UFND7FBC.js → chunk-VFPY2A23.js} +2 -2
  50. package/dist/chunk-WVCEKC7V.js +14 -0
  51. package/dist/{chunk-H3WYVFTS.js → chunk-YJZT3UD3.js} +1 -1
  52. package/dist/chunk-ZGHEF45T.js +4 -0
  53. package/dist/{chunk-36TEJJ5S.js → chunk-ZY6LEKWR.js} +2 -2
  54. package/dist/cli.js +49 -9
  55. package/dist/{commands-DJIQE34F.js → commands-CA22R7VD.js} +7 -7
  56. package/dist/{commands-UMKI65IW.js → commands-ZZGY6P3B.js} +2 -2
  57. package/dist/{company-VCPUUYVV.js → company-CQYSBKTQ.js} +4 -3
  58. package/dist/{completion-XFXG7RPT.js → completion-3F2GJNGC.js} +1 -1
  59. package/dist/{contract-SMIPLH7R.js → contract-A2FGGVOR.js} +2 -2
  60. package/dist/{department-4RCU4E27.js → department-6BILJZG7.js} +2 -2
  61. package/dist/{deposit-UF7OKRG2.js → deposit-OAGRJMZ4.js} +2 -2
  62. package/dist/{estimate-HE5H6XXY.js → estimate-5PSXHHNT.js} +4 -4
  63. package/dist/{inquiry-SCPVERFM.js → inquiry-NMOT4JSX.js} +2 -2
  64. package/dist/{invoice-CF2TPYSA.js → invoice-TXEJT6I6.js} +3 -3
  65. package/dist/{job-title-W2EKNKTY.js → job-title-NSYPQMEX.js} +1 -1
  66. package/dist/{knowledge-ZZEHU744.js → knowledge-5DX6EMHZ.js} +2 -32
  67. package/dist/{leave-5VY2IK7K.js → leave-DEGAZKVH.js} +2 -2
  68. package/dist/{media-4MASY32I.js → media-RJCTHFK6.js} +2 -2
  69. package/dist/{notification-AOSKQX3Z.js → notification-NG4J6N2D.js} +2 -2
  70. package/dist/{onedrive-3OBI4B5Z.js → onedrive-YPJCILR2.js} +1 -1
  71. package/dist/{oneshot-Y4A2ZC3E.js → oneshot-RA65DTXP.js} +2 -2
  72. package/dist/{outlook-LY6WBXIJ.js → outlook-MNOVX6QS.js} +2 -2
  73. package/dist/{position-TPKLP2SP.js → position-OZBQYKZS.js} +1 -1
  74. package/dist/{project-JFZCKGYY.js → project-5YFBRM32.js} +2 -2
  75. package/dist/{prospect-3ALNTGPY.js → prospect-TQ2FFWEZ.js} +3 -3
  76. package/dist/{purchase-SEHUEXE5.js → purchase-WOUWIZHO.js} +4 -4
  77. package/dist/query-XEOVFI4D.js +3 -0
  78. package/dist/receivable-RFZT6PY3.js +4 -0
  79. package/dist/{registry-BA7RGQ2R.js → registry-H4NP4HUQ.js} +1 -1
  80. package/dist/{report-RV7DOZFB.js → report-EFE43ZVI.js} +2 -2
  81. package/dist/{run-ZXMGPUUK.js → run-TNFPATQF.js} +2 -2
  82. package/dist/{sales-ai-review-AXZKRXKB.js → sales-ai-review-FSA4J2J2.js} +2 -2
  83. package/dist/{sales-master-RC77V74V.js → sales-master-Q5BJ7RNG.js} +3 -3
  84. package/dist/{sales-numbering-WU5FAPCO.js → sales-numbering-ITDBMODV.js} +2 -2
  85. package/dist/{server-skills-Z5DGCJQ7.js → server-skills-IXIOOOC2.js} +1 -1
  86. package/dist/{skill-command-74MCUHFJ.js → skill-command-NXHTJXYY.js} +1 -1
  87. package/dist/{storage-KLLBENBY.js → storage-AQDCEBDJ.js} +1 -1
  88. package/dist/{supplier-payment-OCAK6N3S.js → supplier-payment-FWGQR3Z3.js} +3 -3
  89. package/dist/support-TVTQJFRE.js +53 -0
  90. package/dist/{task-7QESG57Q.js → task-IDQKPRYS.js} +3 -3
  91. package/dist/{teams-DRHXPLWN.js → teams-IO6UQNYP.js} +2 -2
  92. package/dist/{user-67X5FJTN.js → user-B6KW6HA2.js} +3 -3
  93. package/dist/worker-agent-PEFBLL56.js +150 -0
  94. package/dist/{workflow-KHNGCPQB.js → workflow-SYWZKWWB.js} +1 -1
  95. package/package.json +1 -1
  96. package/dist/chunk-67JAB5QG.js +0 -4
  97. package/dist/chunk-BS2ACFJA.js +0 -129
  98. package/dist/chunk-ZVJXYKRY.js +0 -9
  99. package/dist/query-3ZQP4DCN.js +0 -3
  100. package/dist/receivable-QYSSI7TB.js +0 -4
  101. package/dist/worker-agent-MKXRTVBM.js +0 -81
@@ -11,6 +11,14 @@
11
11
  `CHANGELOG.md` に残してあります。顧客向けの履歴は public 公開以降を対象とします。
12
12
  -->
13
13
 
14
+ ## 0.50.0
15
+
16
+ `twp announcement` で、自分に届いているお知らせの一覧(未読・確認待ち・語で絞り込み)・本文と返信の表示・未読件数の確認ができるようになりました。`read` / `read-all` で既読に、`confirm` で「確認しました」を記録でき、`reply list` / `reply create` で返信を読み書きできます。まとめての既読化と確認は取り消せないため `--yes` が必要です。
17
+
18
+ システムサポートへの依頼を CLI から出し(スクリーンショット等の添付つき)、返答の確認・コメント・完了・再問い合わせ・取り下げができるようになりました(`twp support`)。
19
+
20
+ ワーカーエージェント(AIエージェント)を CLI から作成・更新・削除し、スケジュール(〇分ごと・毎日・毎週・毎月)を設定して有効化できるようになりました。`twp worker-agent run start --wait` で今すぐ実行して結果(最終要約)を受け取れます。
21
+
14
22
  ## 0.49.0
15
23
 
16
24
  メディアライブラリのファイルを1件ずつ CLI で管理できるようになりました。詳細の確認(`twp media get`)、名前・説明・タグの変更(`twp media update`)、移動(`twp media move`)、公開・非公開・アーカイブ(`twp media publish` / `unpublish` / `archive`)、日時を決めた予約公開(`twp media schedule`)、ゴミ箱からの復元(`twp media restore`)と完全削除(`twp media delete --permanent`)に対応しています。あわせて、ゴミ箱の一覧と空にする操作(`twp media trash`)、タグの一覧・登録・統合・削除(`twp media tag`)、最近閲覧したファイル(`twp media recent list`)も使えます。
package/README.md CHANGED
@@ -23,8 +23,10 @@ TWP(Tocca Working Platform)を、ターミナルから使うための CLI
23
23
  | **できる** | `twp user` によるテナントのユーザーの作成・更新・失効(退社)と招待(1件・CSV 一括・再送・取消)、ユーザーと所属(部署・役職)の参照(一覧・取得・所属の履歴)、所属の付け替え(異動)・作成・更新・終了・削除、在籍者の棚卸と人事台帳 CSV との突き合わせ。作成・更新・招待と取得、所属の書き込み、他人の所属の参照、棚卸は組織管理者の権限が要ります |
24
24
  | **できる** | `twp department` / `twp position` / `twp job-title` による組織マスタ(部署・役職・職位)の一覧・取得・作成・更新・削除と、部署ツリー・部署の所属者の表示。作成・更新・削除は管理者の権限が要ります |
25
25
  | **できる** | `twp inquiry category` による問い合わせカテゴリの一覧・取得・作成・更新(通知先の設定・末尾への並べ替えを含む)。取得・作成・更新は問い合わせ機能の管理者の権限が要ります |
26
+ | **できる** | `twp support` によるシステムサポートへの依頼(依頼者側)の一覧・詳細(コメントの経過を含む)・起票(添付3件まで)・コメント・完了・再問い合わせ・取り下げと、カテゴリの一覧。運営側(回答・ステータス変更)は扱いません |
26
27
  | **できる** | `twp notification` による自分宛ての通知の一覧(未読・カテゴリ・語で絞り込み)・詳細・未読件数・カテゴリ一覧と、1件ずつ・まとめての既読化 |
27
- | **できる** | `twp worker-agent` によるワーカーエージェント(AIエージェント)の参照(一覧・詳細・スケジュールと次回実行予定・許可できるツールのカタログ・実行回数の上限と今日の使用数)と、実行履歴・実行結果(最終要約を先頭に)・ステップログ・ステップの集計の読み取り。作成・更新・実行はまだありません |
28
+ | **できる** | `twp worker-agent` によるワーカーエージェント(AIエージェント)の参照(一覧・詳細・スケジュールと次回実行予定・許可できるツールのカタログ・実行回数の上限と今日の使用数)と、実行履歴・実行結果(最終要約を先頭に)・ステップログ・ステップの集計の読み取りと、作成・更新(スケジュール指定込み)・削除・有効化/無効化・今すぐ実行(`--wait` で終わるまで待つ)・実行の取消 |
29
+ | **できる** | `twp announcement` による自分に届いているお知らせ(運営・組織)の一覧(未読・確認待ち・語で絞り込み)・本文と返信の表示・未読件数、既読化(1件ずつ・まとめて)・「確認しました」の記録・返信の一覧と投稿 |
28
30
  | **できる** | `twp estimate` / `twp invoice` による販売管理の見積・請求の一覧(語・ステータス・取引先・プロジェクト・担当者・日付・回収状況で絞り込み)と詳細、`twp estimate` による見積の作成・更新・削除・社内共有メモ・既存の請求の紐づけ・関連入金・部署按分・案件書類(注文書・個別契約書など)の登録・版の差替え・ダウンロードと、注文書からの注文書番号の読み取り・見積書/注文書/注文請書の PDF の書き出し、`twp invoice` による請求の作成・更新・削除・取消と取消解除・統合請求書の作成・社内共有メモ・CSV/MF 会計仕訳の書き出し・請求書メールの送信・支払いリンクの作成・請求書/納品書/検収書の PDF の書き出し、`twp contract` による取引契約(見積から作る販売管理の契約)の一覧・詳細・作成・更新・削除、`twp invoice auto-template` による自動請求テンプレートの一覧・詳細・作成・更新・削除と発行履歴の参照(販売管理の管理者)、`twp deposit` による入金の一覧・詳細・登録・更新・削除・CSV 書き出し、請求への引当(CSV での一括を含む)・解除・手数料分の引き上げ、入金予定からの入金と引当のまとめ登録、`twp receivable` による売掛金残高の表示と CSV 書き出し・月次の締めと締めの解除(どちらも販売管理の管理者)、`twp purchase` による仕入(注文書)の一覧・詳細・作成・更新・削除・複製・一覧のメモ・注文書/注文請書の PDF の書き出しと、添付書類(見積書・注文書・注文請書)の登録・版の差替え・ダウンロード、添付した見積書からの AI 読み取り(候補を出すだけで仕入は変えません)、`twp supplier-payment` による支払(仕入先へ払うお金の台帳)の一覧・詳細・登録・更新・削除・ID を並べたファイルでのステータスの一括変更と、毎月の支払を生成する支払先マスタの一覧・詳細・登録・更新・削除(どちらも販売管理の管理者)、`twp business-place` / `twp payee` / `twp seal-impression` による帳票に載る自社の事業所・振込先・印影(画像の登録を含む)の一覧・詳細・登録・更新・削除(書き込みは販売管理の管理者。振込先の一覧は口座番号を伏字にします)、`twp purchase ai-mapping` による見積書 AI 読み取りのマッピング表の一覧・詳細・登録・更新・削除と反映先の選択肢、`twp estimate no-rule` / `twp invoice no-rule` / `twp purchase no-rule` による見積・請求・仕入の番号ルールの一覧(次に発行される番号つき)・詳細・登録・更新・削除と、`twp estimate format` による見積フォーマット(書類を作るときの既定値の組)の一覧・詳細・作成・更新・削除、`twp rounding-setting` による端数処理(金額の丸め方)の表示と変更(番号ルールと端数処理の変更は `--yes` が要り、変更前・変更後を出します)、`twp company` / `twp customer` による取引先企業・顧客の一覧と詳細(名前でも指定できます)、`twp customer` による顧客の登録・更新・削除(担当者・対応履歴ごと。ID を並べたファイルでの一括削除を含む)と担当者・対応履歴の一覧・詳細・登録・更新・削除、全顧客の最近の対応、名刺画像の登録・裏面メモ・削除、企業をまたいだ人物の一覧・詳細・CSV 書き出し、登録前の類似企業検索、`twp company` による取引先企業(仕入先を含む)の登録・更新・削除、`twp prospect` によるアプローチ先(見込客)の一覧・登録・更新・削除・CSV での一括登録と書き出し・重複確認・顧客への昇格と対応履歴の記録、`twp estimate|invoice|contract ai-review` による申請前AIチェックの実行(`--wait` で完了まで待つ)・結果の表示・指摘への確認済みの理由の登録と取消、`twp ai-review-reason` による理由の横断一覧・社内ナレッジへの追記文案の生成と追記PRの作成(販売管理の管理者)。販売管理・顧客管理の権限が要ります |
29
31
  | **できる** | `twp media` によるメディアライブラリのファイルのアップロード・一覧・ダウンロード・詳細・名前/説明/タグの変更・移動・公開・非公開・アーカイブ・予約公開・削除(ゴミ箱へ移す・`--permanent` で完全削除)・復元・一括操作(公開・非公開・アーカイブ・移動・削除・復元・ZIP ダウンロード)、`twp media folder` によるフォルダの一覧・ツリー表示・作成・名前変更・移動・削除・ゴミ箱からの復元と完全削除(`--folder` はフォルダID のほか「親/子」形式のパスでも指定可)、`twp media trash` によるゴミ箱の一覧と空にする操作、`twp media tag` によるタグの一覧・登録・統合・削除(統合と削除は管理者)、`twp media recent list` による最近閲覧したファイル、`twp storage get` によるストレージ使用量の確認(管理者) |
30
32
  | **できる** | `twp attendance` による自分の勤怠の参照(いまの打刻状態・打刻の履歴・月の勤怠表)と打刻・打刻修正(過去の時刻での打刻・メモの変更・取り消し・プロジェクトの付け替え)、管理者向けの残業サマリ(36協定を含む)・締め状況の参照 |
@@ -355,6 +357,29 @@ twp inquiry category update <カテゴリ> [--title <名前>] [--sort <整数|la
355
357
  - 削除はまだありません(`twp api /api/v2/inquiries/categories/<ID> --method DELETE --yes` で行えます)
356
358
  - ヘルプは `twp inquiry category help`
357
359
 
360
+ ### システムサポートへ依頼する
361
+
362
+ ```
363
+ twp support category list
364
+ twp support list [--status <状態>]
365
+ twp support get <ID>
366
+ twp support create --category <名前|ID> --subject <件名> (--body <本文> | --body-file <パス>) [--attach <パス>]…
367
+ twp support comment create <ID> (--body <本文> | --body-file <パス>) [--attach <パス>]…
368
+ twp support close <ID> --yes
369
+ twp support reinquire <ID> --yes
370
+ twp support withdraw <ID> --yes
371
+ ```
372
+
373
+ - `list` は自分が出した依頼を返します(テナントのサポート管理者はテナントの全件)。`--status` は `new` / `in_progress` / `waiting`(回答済み)/ `re_inquiry` / `closed` / `withdrawn`
374
+ - 返答が来たかは `twp support get <ID> --output text` で確かめます。依頼の本文・状態の履歴・コメントを時系列で出し、運営の返答は「サポート(氏名)」と表示します
375
+ - `--attach` はローカルファイルで、3件まで指定できます(各ファイルを容量検査 → アップロードしてから依頼・コメントを送ります)。`--dry-run` は最初に送るリクエストと、依頼の本体(件名・本文・カテゴリ)を表示します
376
+ - 件名は255文字、依頼の本文は10,000文字、コメントは5,000文字まで。`--body-file -` で標準入力から読みます
377
+ - `close`(完了)・`reinquire`(回答済みの依頼を再問い合わせ)・`withdraw`(取り下げ)は `--yes` が要ります。状態が合わないときはサーバが断ります(終了コード 3)
378
+ - 他の人の依頼と存在しない依頼は、どちらも「見つかりません」になります
379
+ - 添付のダウンロードはまだありません(`get` は添付 ID を出します。`twp api /api/v2/attachments/<添付ID>/download` で取得できます)
380
+ - 運営(マスターテナント)側の操作はありません
381
+ - ヘルプは `twp support help`
382
+
358
383
  ### 自分宛ての通知を扱う
359
384
 
360
385
  ```
@@ -697,6 +722,27 @@ twp prospect interaction list|create|update|delete [<対応履歴ID>] --prospect
697
722
  - 権限(顧客管理): 閲覧は「閲覧者」以上、登録・更新・`import` は「編集者」以上、削除・`export`・`promote`・対応履歴の削除は「管理者」
698
723
  - ヘルプは `twp prospect help` / `twp prospect import help` / `twp prospect promote help` / `twp prospect interaction help`
699
724
 
725
+ ### お知らせを読む・確認する・返信する
726
+
727
+ ```
728
+ twp announcement list [--unread | --needs-confirm] [--keyword <語>] [--all]
729
+ twp announcement get <お知らせID> [--output text]
730
+ twp announcement counts
731
+ twp announcement read <お知らせID>...
732
+ twp announcement read-all --yes
733
+ twp announcement confirm <お知らせID> --yes
734
+ twp announcement reply list <お知らせID>
735
+ twp announcement reply create <お知らせID> --body-file <ファイル|->
736
+ ```
737
+
738
+ - 運営からのお知らせと組織のお知らせを混ぜて扱います。掲載中のものだけです。`get` で見ただけでは既読になりません
739
+ - `--needs-confirm` は「確認が要るのにまだ確認していない」お知らせだけを出します
740
+ - **確認が要るお知らせは、既読にしても「確認しました」を押すまで未読のままです**(画面と同じ)。確認を記録するのは `confirm` だけで、発信者が見る記録として残り取り消せないので `--yes` が要ります
741
+ - `read-all` は既読を未読へ戻せないので `--yes` が要ります。送る前に未読件数を stderr に出し、`--dry-run` なら件数を出すだけで既読にしません
742
+ - `get --output text` は本文を読める形(タイトル・発信者・本文・返信)で出します。返信は自分に見える範囲だけです
743
+ - 返信は返信を受け付けていて掲載中の組織のお知らせにだけ送れます(2,000 文字まで・作成者へ通知が届きます)。返信の削除・お知らせの作成と配信はまだありません(`twp api` で到達できます)
744
+ - ヘルプは `twp announcement help`
745
+
700
746
  ### メディアライブラリのファイルを扱う
701
747
 
702
748
  ```bash
@@ -896,7 +942,27 @@ twp worker-agent run stats <エージェント> <実行ID>
896
942
  - `run steps --type` は `thinking` / `tool_call` / `tool_result` / `error` / `budget_warning` / `final_summary`(カンマ区切りで複数)。ステップの保持期間は90日で、それより古い実行ではステップが0件です
897
943
  - トークン数(`*_tokens`)はキー名が秘密の伏字化に当たるため `***(伏字)` で出ます。見るときは `--no-redact` を付けてください
898
944
  - AIエージェント機能のライセンスが無いアカウントでは、どの操作も権限の案内を出して終了コード 3 になります
899
- - 作成・更新・有効化・今すぐ実行・キャンセルはまだありません(`twp api /api/v2/worker-agents/...` で到達できます)
945
+
946
+ ### ワーカーエージェントを作る・動かす
947
+
948
+ ```
949
+ twp worker-agent create --name <名前> --instructions-file <パス> --tool <ツール名>... --schedule <スケジュール> [--write-enabled --yes] [--enable]
950
+ twp worker-agent update <エージェント> [--schedule <スケジュール>] [--instructions-file <パス>] [--tool <ツール名>...] [--write-enabled --yes | --read-only]
951
+ twp worker-agent enable <エージェント>
952
+ twp worker-agent disable <エージェント>
953
+ twp worker-agent delete <エージェント> --yes
954
+ twp worker-agent run start <エージェント> [--simulate] [--wait] --yes
955
+ twp worker-agent run cancel <エージェント> <実行ID>
956
+ ```
957
+
958
+ - **`--schedule` は `interval:30m` / `daily:09:00` / `weekly:mon,fri@09:00` / `monthly:1,15@09:00`(`last` で月末)。** 時刻は Asia/Tokyo。間隔は15〜1440分・5分刻みで、外れた値は送る前に止めます
959
+ - 指示文は `--instructions-file` で渡してください(引数では改行・引用符が壊れます)。`--cli-input-json` で API の本文をまとめて渡すこともできます
960
+ - 作成直後は無効です(`--enable` か `twp worker-agent enable` で定期実行が始まります)。`update --tool` は許可ツールを丸ごと置き換えます
961
+ - **書き込み系ツールを許可する作成・更新(`--write-enabled`)・削除・今すぐ実行は `--yes` が要ります。** 今すぐ実行は AI のクレジットを消費します
962
+ - `run start --simulate` は書き込み系ツールを実際には書き込まずに記録だけします(twp 共通の `--dry-run` は「何も送らずに送る内容を表示する」で別物です)
963
+ - **`run start --wait` は終わるまで待って最終要約を先頭に出します。** 終了コードは 0=succeeded・3=failed / cancelled / 見送り・6=上限(既定300秒・`--wait-timeout` で最大480秒)まで終わらなかった(未完了。実行は続いているので、打ち直さず `run get` で確かめてください。打ち直すと二重に実行されます)
964
+ - 編集・削除・有効化・今すぐ実行はオーナーだけができます(管理者でも他人のエージェントは不可)。無効化と取消は管理者もできます
965
+ - CLI から作ったエージェントは画面から作ったものと同じ扱い(`created_via: ui`)で記録されます
900
966
 
901
967
  ### ワークフロー(申請)を見る・出す・承認する
902
968
 
@@ -1,7 +1,7 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{stepToItem}from"./chunk-LUQ2KE6Y.js";import{loadLocalConfig}from"./chunk-QVPU4HHG.js";import"./chunk-N2UVRM3Z.js";import{loadAiConfig}from"./chunk-AEJHDFXB.js";import"./chunk-JTJWDV5U.js";import"./chunk-GY7KI5E5.js";import"./chunk-II5RVJQN.js";import{LIST_FLAGS,LIST_PAGING_HELP,envelopePaging,nonEmpty,positiveInteger}from"./chunk-IOGMOXYF.js";import{requireResolved,singleRef,withResolved}from"./chunk-LXIAOCUW.js";import{acknowledgement,
4
- isRecord,pick}from"./chunk-VTQAI52S.js";import{ApiResponseError,UsageError}from"./chunk-UFND7FBC.js";import"./chunk-PMOUHEJQ.js";import"./chunk-J7QYPKVK.js";import"./chunk-5WGOHFAS.js";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\
3
+ import{stepToItem}from"./chunk-LUQ2KE6Y.js";import{loadLocalConfig}from"./chunk-QVPU4HHG.js";import"./chunk-N2UVRM3Z.js";import{loadAiConfig}from"./chunk-AEJHDFXB.js";import"./chunk-JTJWDV5U.js";import"./chunk-GY7KI5E5.js";import"./chunk-II5RVJQN.js";import{LIST_FLAGS,LIST_PAGING_HELP,envelopePaging,nonEmpty,positiveInteger}from"./chunk-MI6HVYR2.js";import{requireResolved,singleRef,withResolved}from"./chunk-PS5QFKHB.js";import{acknowledgement,
4
+ 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";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\
5
5
  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 PROJECT_FLAG={name:"--project",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:"\
6
6
  <\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:"<\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";
7
7
  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=`\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`+
@@ -1,7 +1,7 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{failureHint,isAuthError,isCliFatalText,isRateLimited,isServerAiType,isUntrusted,maxTurnsReached,rateLimitWaitSeconds,tailForScan}from"./chunk-ZOOEH7ZE.js";import{detectAiClis}from"./chunk-T4QZO6RQ.js";import{expandServerSkills,prepareSkillOverlay}from"./chunk-TKGVAWGU.js";import"./chunk-H3WYVFTS.js";import"./chunk-AJO4O5ZF.js";import"./chunk-VRBI2NPI.js";import{isForceOnly,killProcessTree,system32}from"./chunk-N2UVRM3Z.js";import{DEFAULT_CLAUDE_LAUNCHER,
4
- activeSlotPath,detectClaudeAutoSwitch,isClaudeAi,isUsableModelId,modelFitsRoute,resolveSpawnTarget,usesBedrock,wrapWithAutoSwitch}from"./chunk-AEJHDFXB.js";import"./chunk-JTJWDV5U.js";import"./chunk-GY7KI5E5.js";import"./chunk-UFND7FBC.js";import{findExecutable,isWindowsDriveAbsolute}from"./chunk-PMOUHEJQ.js";import"./chunk-J7QYPKVK.js";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 FINAL_REPORT_BEGIN="<<<AI_FINAL_REPORT>>>";var FINAL_REPORT_END="<<<END_AI_FINAL_REPORT>>>";var ClaudeStreamRenderer=class{constructor(now=()=>new Date){this.now=now}now;toolNames=new Map;toolCount=0;result={subtype:null,isError:null,numTurns:null,costUsd:null,durationMs:null,tokensIn:null,tokensOut:null,rateLimited:false,resetsAt:null,finalText:""};push(line){const trimmed=line.trim();if(trimmed==="")return[];let event;try{const parsed=JSON.parse(trimmed);if(parsed===null||typeof parsed!=="\
3
+ import{failureHint,isAuthError,isCliFatalText,isRateLimited,isServerAiType,isUntrusted,maxTurnsReached,rateLimitWaitSeconds,tailForScan}from"./chunk-ZOOEH7ZE.js";import{expandServerSkills,prepareSkillOverlay}from"./chunk-TVODNAPX.js";import"./chunk-YJZT3UD3.js";import{detectAiClis}from"./chunk-T4QZO6RQ.js";import"./chunk-A4LFG7MW.js";import"./chunk-VRBI2NPI.js";import{isForceOnly,killProcessTree,system32}from"./chunk-N2UVRM3Z.js";import{DEFAULT_CLAUDE_LAUNCHER,
4
+ activeSlotPath,detectClaudeAutoSwitch,isClaudeAi,isUsableModelId,modelFitsRoute,resolveSpawnTarget,usesBedrock,wrapWithAutoSwitch}from"./chunk-AEJHDFXB.js";import"./chunk-JTJWDV5U.js";import"./chunk-GY7KI5E5.js";import"./chunk-VFPY2A23.js";import{findExecutable,isWindowsDriveAbsolute}from"./chunk-PMOUHEJQ.js";import"./chunk-J7QYPKVK.js";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 FINAL_REPORT_BEGIN="<<<AI_FINAL_REPORT>>>";var FINAL_REPORT_END="<<<END_AI_FINAL_REPORT>>>";var ClaudeStreamRenderer=class{constructor(now=()=>new Date){this.now=now}now;toolNames=new Map;toolCount=0;result={subtype:null,isError:null,numTurns:null,costUsd:null,durationMs:null,tokensIn:null,tokensOut:null,rateLimited:false,resetsAt:null,finalText:""};push(line){const trimmed=line.trim();if(trimmed==="")return[];let event;try{const parsed=JSON.parse(trimmed);if(parsed===null||typeof parsed!=="\
5
5
  object"||Array.isArray(parsed)){return[line]}event=parsed}catch{return[line]}switch(event["type"]){case"rate_limit_event":return this.onRateLimit(event);case"assistant":return this.onAssistant(event);case"user":return this.onUser(event);case"result":return this.onResult(event);default:return event["type"]==="system"?[]:[line]}}sawRateLimit(){return this.result.rateLimited}lastRateLimitNote="";onRateLimit(event){const info=event["rate_limit_info"];if(info===null||typeof info!=="object")return[];const rec=info;
6
6
  const status=typeof rec["status"]==="string"?rec["status"]:"";const resets=typeof rec["resetsAt"]==="number"?rec["resetsAt"]:null;if(status==="")return[];const at=isSaneEpochSec(resets)?` resets=${new Date(resets*1e3).toISOString()}`:"";if(status.startsWith("allowed")){if(status==="allowed")return[];const seen=`${status}|${resets??""}`;if(seen===this.lastRateLimitNote)return[];this.lastRateLimitNote=seen;return[this.line(`\u2139\uFE0F \u4E0A\u9650\u306B\u63A5\u8FD1\uFF08status=${status}${at}\uFF09\u2014 \u5B9F\
7
7
  \u884C\u306F\u7D99\u7D9A\u3057\u307E\u3059`)]}if(resets!==null)this.result.resetsAt=resets;this.result.rateLimited=true;return[this.line(`\u26A0\uFE0F \u30EC\u30FC\u30C8\u30EA\u30DF\u30C3\u30C8\u901A\u77E5: status=${status}${at}`)]}onAssistant(event){const out=[];for(const block of contentBlocks(event)){if(block.type==="tool_use"){const name=typeof block.name==="string"?block.name:"tool";if(typeof block.id==="string")this.toolNames.set(block.id,name);this.toolCount+=1;out.push(this.line(`>> ${name}${toolDetail(
@@ -1,4 +1,4 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{FROM_FLAG,MANHOUR_DESCRIPTION,MANHOUR_FROM_FLAG,MANHOUR_TO_FLAG,MONTH_FLAG,TO_FLAG,analysisDomain,analysisForbidden,currentMonth,dataOf,listIn,manhourNotes,manhourQuery,manhourRows,monthRange,monthsBetween,noArgs,profitRows,rangeNotes,recordOf,staffKpiRows,workloadDistributionNotes,workloadDistributionRows}from"./chunk-74SXPFUT.js";import"./chunk-QOUDJ7XO.js";import"./chunk-4B3T4UE7.js";import"./chunk-F7K37QG6.js";import"./chunk-QQRJLH6B.js";import"./chunk-LXIAOCUW.js";
4
- import"./chunk-VTQAI52S.js";import"./chunk-UFND7FBC.js";import"./chunk-VSJBJXZO.js";export{FROM_FLAG,MANHOUR_DESCRIPTION,MANHOUR_FROM_FLAG,MANHOUR_TO_FLAG,MONTH_FLAG,TO_FLAG,analysisDomain,analysisForbidden,currentMonth,dataOf,listIn,manhourNotes,manhourQuery,manhourRows,monthRange,monthsBetween,noArgs,profitRows,rangeNotes,recordOf,staffKpiRows,workloadDistributionNotes,workloadDistributionRows};
3
+ import{FROM_FLAG,MANHOUR_DESCRIPTION,MANHOUR_FROM_FLAG,MANHOUR_TO_FLAG,MONTH_FLAG,TO_FLAG,analysisDomain,analysisForbidden,currentMonth,dataOf,listIn,manhourNotes,manhourQuery,manhourRows,monthRange,monthsBetween,noArgs,profitRows,rangeNotes,recordOf,staffKpiRows,workloadDistributionNotes,workloadDistributionRows}from"./chunk-CUPPIHSJ.js";import"./chunk-7UB4I3JF.js";import"./chunk-IU5P6MY5.js";import"./chunk-EXT4AIDF.js";import"./chunk-QQRJLH6B.js";import"./chunk-PS5QFKHB.js";
4
+ import"./chunk-3ZRMMBP5.js";import"./chunk-VFPY2A23.js";import"./chunk-VSJBJXZO.js";export{FROM_FLAG,MANHOUR_DESCRIPTION,MANHOUR_FROM_FLAG,MANHOUR_TO_FLAG,MONTH_FLAG,TO_FLAG,analysisDomain,analysisForbidden,currentMonth,dataOf,listIn,manhourNotes,manhourQuery,manhourRows,monthRange,monthsBetween,noArgs,profitRows,rangeNotes,recordOf,staffKpiRows,workloadDistributionNotes,workloadDistributionRows};
@@ -0,0 +1,52 @@
1
+ import { createRequire as __twpCreateRequire } from 'node:module';
2
+ const require = __twpCreateRequire(import.meta.url);
3
+ import{composeDocument,htmlToText,metaLine}from"./chunk-QSXS5SB2.js";import{boundedText}from"./chunk-OTIR4GES.js";import{readBody}from"./chunk-6LSQCOCJ.js";import{ANNOUNCEMENTS_PATH}from"./chunk-Q2KIETMB.js";import{isSafePathSegment}from"./chunk-GMBJTG6A.js";import"./chunk-QBGEYQ2I.js";import"./chunk-IF2K4PM5.js";import"./chunk-4VZKNEVN.js";import"./chunk-II5RVJQN.js";import{LIST_FLAGS,LIST_PAGING_HELP,envelopePaging,positiveInteger}from"./chunk-MI6HVYR2.js";
4
+ import{requireResolved,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-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
+ 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
+ \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
+ 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`)}
8
+ return body}function readAnnouncementCursor(body){const record=isRecord(body)?body:{};if(!("page"in record)&&!("total_pages"in record))return{hasMore:void 0,cursor:void 0};const page=record["page"];const totalPages=record["total_pages"];if(!Number.isInteger(page)||!Number.isInteger(totalPages)){return{hasMore:`page=${JSON.stringify(page)??"undefined"} / total_pages=${JSON.stringify(totalPages)??"undefined"}`,cursor:void 0}}return page<totalPages?{hasMore:true,cursor:String(page+1)}:{hasMore:false,
9
+ cursor:null}}var listPaging=envelopePaging({label:`${LABEL}\u4E00\u89A7`,itemsKey:"announcements",cursorParam:"page",readCursor:readAnnouncementCursor});function listRows(body){envelope(body,`${LABEL}\u4E00\u89A7`);return listPaging.items(body)}function detail(body){const row=envelope(body,LABEL)["announcement"];if(!isRecord(row)||typeof row["id"]!=="string"){throw new ApiResponseError(`${LABEL}\u306E\u5FDC\u7B54\u306B announcement \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}
10
+ const replies=body["replies"];return replies===void 0?row:{...row,replies}}function replyList(body){const list=envelope(body,"\u8FD4\u4FE1\u4E00\u89A7")["replies"];if(!Array.isArray(list))throw new ApiResponseError("\u8FD4\u4FE1\u4E00\u89A7\u306E\u5FDC\u7B54\u306B replies \u914D\u5217\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002");return list}function withoutResult(row){return Object.fromEntries(Object.entries(row).filter(
11
+ ([key])=>key!=="result"))}function textOf(value){if(typeof value!=="string")return"";return/<[a-z][^>]*>/i.test(value)?htmlToText(value):value.trim()}function announcementDocument(body){const row=detail(body);const confirm=row["require_confirmation"]===true?row["is_confirmed"]===true?"\u78BA\u8A8D\u6E08\u307F":"\u672A\u78BA\u8A8D\uFF08twp announcement confirm \u3067\u78BA\u8A8D\u3092\u8A18\u9332\u3057\u307E\u3059\uFF09":void 0;const replies=Array.isArray(row["replies"])?row["replies"]:[];const replyText=replies.
12
+ filter(isRecord).map(r=>`- ${String(r["user_name"]??r["user_id"]??"(\u4E0D\u660E)")}\uFF08${String(r["created_at"]??"")}\uFF09
13
+ ${textOf(r["content"]).split("\n").join("\n ")}`).join("\n");return composeDocument(row["title"],[...metaLine("ID",row["id"]),...metaLine("\u767A\u4FE1\u8005",row["sender_name"]),...metaLine("\u30AB\u30C6\u30B4\u30EA",row["category_name"]),...metaLine("\u91CD\u8981\u5EA6",row["importance_name"]),...metaLine("\u63B2\u8F09\u958B\u59CB",row["publish_start_at"]),...metaLine("\u63B2\u8F09\u7D42\u4E86",row["publish_end_at"]),...metaLine("\u65E2\u8AAD",row["is_read"]===true?"\u65E2\u8AAD":"\u672A\u8AAD"),
14
+ ...metaLine("\u78BA\u8A8D",confirm),...metaLine("\u30EA\u30F3\u30AF",row["link_url"])],[{body:textOf(row["content"])},{heading:`\u8FD4\u4FE1\uFF08${replies.length} \u4EF6\uFF09`,body:replyText}])}var NEEDS_CONFIRM_EXCLUSIVE=["--unread","--keyword","--cursor","--limit"];var listOperation={name:"list",summary:`\u81EA\u5206\u306B\u5C4A\u3044\u3066\u3044\u308B${LABEL}\u3092\u4E00\u89A7\u3059\u308B\uFF08\u30D4\u30F3\u7559\u3081\u304C\u5148\u982D\u30FB\u65E2\u5B9A\u306F\u65B0\u3057\u3044\u9806\uFF09`,
15
+ usage:"twp announcement list [--unread | --needs-confirm] [--keyword <\u8A9E>] [--all] [--limit <\u4EF6\u6570>] [--cursor <\u30DA\u30FC\u30B8\u756A\u53F7>]",description:`\u904B\u55B6\u304B\u3089\u306E\u304A\u77E5\u3089\u305B\u3068\u7D44\u7E54\u306E\u304A\u77E5\u3089\u305B\u3092\u6DF7\u305C\u3066\u8FD4\u3057\u307E\u3059\uFF08is_organization \u3067\u898B\u5206\u3051\u3089\u308C\u307E\u3059\uFF09\u3002\u63B2\u8F09\u4E2D\u306E\u3082\u306E\u3060\u3051\u3067\u3059\u3002
16
+ --unread \u3067\u672A\u8AAD\u3060\u3051\u306B\u7D5E\u308A\u307E\u3059\u3002\u78BA\u8A8D\u304C\u8981\u308B\u304A\u77E5\u3089\u305B\u306F\u300C\u78BA\u8A8D\u3057\u307E\u3057\u305F\u300D\u3092\u62BC\u3059\u307E\u3067\u672A\u8AAD\u306E\u307E\u307E\u3067\u3059\u3002
17
+ --needs-confirm \u306F\u300C\u78BA\u8A8D\u304C\u8981\u308B\u306E\u306B\u307E\u3060\u78BA\u8A8D\u3057\u3066\u3044\u306A\u3044\u300D\u304A\u77E5\u3089\u305B\u3060\u3051\u3092\u51FA\u3057\u307E\u3059\uFF08\u5225\u306E API \u3092\u53E9\u304F\u306E\u3067 --unread / --keyword / --cursor / --limit \u3068\u306F\u4F75\u7528\u3067\u304D\u307E\u305B\u3093\uFF09\u3002
18
+
19
+ --output json \u306F API \u304C\u8FD4\u3059\u5168\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u51FA\u3057\u307E\u3059\u3002
20
+ --output table / text / tsv \u306F\u8981\u7D04\u5217\uFF08${LIST_COLUMNS.join(" / ")}\u3002--needs-confirm \u306E\u3068\u304D\u306F ${UNCONFIRMED_COLUMNS.join(" / ")}\uFF09\u3067\u3059\u3002
21
+
22
+ `+LIST_PAGING_HELP+"\n \u26A0 \u3053\u306E\u4E00\u89A7\u306F\u30DA\u30FC\u30B8\u756A\u53F7\u3067\u4F4D\u7F6E\u3092\u6307\u5B9A\u3057\u307E\u3059\uFF08--cursor \u306F\u30DA\u30FC\u30B8\u756A\u53F7\u3067\u3059\u30FB1\u59CB\u307E\u308A\uFF09\u3002",flags:[...LIST_FLAGS.map(spec=>spec.name==="--cursor"?{...spec,summary:"\u7D9A\u304D\u3092\u53D6\u5F97\u3059\u308B\u30DA\u30FC\u30B8\u756A\u53F7\uFF081\u59CB\u307E\u308A\uFF09",placeholder:"<\u30DA\u30FC\u30B8\u756A\u53F7>"}:spec),{name:"--unread",summary:"\
23
+ \u672A\u8AAD\u3060\u3051\u306B\u7D5E\u308A\u8FBC\u3080",takesValue:false},{name:"--needs-confirm",summary:"\u78BA\u8A8D\u304C\u8981\u308B\u306E\u306B\u672A\u78BA\u8A8D\u306E\u3082\u306E\u3060\u3051\u3092\u51FA\u3059",takesValue:false},{name:"--keyword",summary:"\u30BF\u30A4\u30C8\u30EB\u30FB\u672C\u6587\u306E\u8A9E\u3067\u7D5E\u308A\u8FBC\u3080",takesValue:true,placeholder:"<\u8A9E>"}],paging:listPaging,plan(input){noArgs(input,"list");if(input.flags.has("--needs-confirm")){const clash=NEEDS_CONFIRM_EXCLUSIVE.
24
+ filter(name=>input.flags.has(name));if(clash.length>0){throw new UsageError(`--needs-confirm \u306F ${clash.join(" / ")} \u3068\u4F75\u7528\u3067\u304D\u307E\u305B\u3093`,"twp announcement list help")}return{method:"GET",path:`${ANNOUNCEMENTS_PATH}/unconfirmed`}}return{method:"GET",path:ANNOUNCEMENTS_PATH,query:listQuery(input)}},summarize:body=>{const columns=isRecord(body)&&"total_pages"in body?LIST_COLUMNS:UNCONFIRMED_COLUMNS;return listRows(body).map(row=>pick(row,columns))},raw:body=>listRows(
25
+ body)};function listQuery(input){const keyword=boundedText(input,"--keyword",{maxChars:255,label:"\u691C\u7D22\u8A9E"});const limit=positiveInteger(input.flags,"--limit");const page=positiveInteger(input.flags,"--cursor");return{badges:input.flags.has("--unread")?"unread":void 0,keyword,limit,page:page===void 0?void 0:String(page)}}var getOperation={name:"get",summary:`${LABEL}1\u4EF6\u306E\u672C\u6587\u3068\u8FD4\u4FE1\u3092\u8868\u793A\u3059\u308B`,usage:"twp announcement get <\u304A\u77E5\u3089\u305BID>",
26
+ description:"\u898B\u308B\u3060\u3051\u3067\u306F\u65E2\u8AAD\u306B\u306A\u308A\u307E\u305B\u3093\uFF08\u65E2\u8AAD\u306B\u3059\u308B\u306E\u306F twp announcement read\uFF09\u3002\n\u8FD4\u4FE1\u3092\u53D7\u3051\u4ED8\u3051\u3066\u3044\u308B\u7D44\u7E54\u306E\u304A\u77E5\u3089\u305B\u306F\u3001\u7D9A\u3051\u3066\u8FD4\u4FE1\u4E00\u89A7\u3082\u53D6\u5F97\u3057\u3066 replies \u306B\u5165\u308C\u307E\u3059\uFF08\u81EA\u5206\u306B\u898B\u3048\u308B\u7BC4\u56F2\u3060\u3051\uFF09\u3002\n\n--output text \u3067\u672C\u6587\u3092\u8AAD\u3081\u308B\u5F62\uFF08\u30BF\u30A4\u30C8\u30EB\u30FB\u767A\u4FE1\u8005\u30FB\u672C\u6587\u30FB\u8FD4\u4FE1\uFF09\u3067\u51FA\u3057\u307E\u3059\u3002--output json \u306F\u304A\u77E5\u3089\u305B\u306E\u5168\u30D5\u30A3\u30FC\u30EB\u30C9\u306B replies \u3092\u8DB3\u3057\u305F\u3082\u306E\u3067\u3059\u3002",
27
+ flags:[],plan:input=>({method:"GET",path:itemPath(announcementId(input,"get"))}),plannedNotes:()=>["\u8FD4\u4FE1\u3092\u53D7\u3051\u4ED8\u3051\u3066\u3044\u308B\u7D44\u7E54\u306E\u304A\u77E5\u3089\u305B\u306A\u3089\u3001\u7D9A\u3051\u3066\u8FD4\u4FE1\u4E00\u89A7\uFF08GET \u2026/replies\uFF09\u3082\u53D6\u5F97\u3057\u307E\u3059\u3002"],async execute(input,ctx){const id=announcementId(input,"get");const body=await ctx.send({method:"GET",path:itemPath(id)});const row=envelope(body,LABEL)["announcem\
28
+ ent"];if(!isRecord(row)||row["is_organization"]!==true||row["allow_replies"]!==true){return{...body,replies:[]}}return{...body,replies:replyList(await ctx.send({method:"GET",path:itemPath(id,"/replies")}))}},summarize:body=>pick(detail(body),GET_COLUMNS),raw:detail,document:announcementDocument};var countsOperation={name:"counts",summary:`\u81EA\u5206\u306E\u672A\u8AAD\u306E${LABEL}\u4EF6\u6570\u3092\u8868\u793A\u3059\u308B`,usage:"twp announcement counts",description:"\u78BA\u8A8D\u304C\u8981\u308B\u304A\u77E5\u3089\u305B\u306F\u300C\u78BA\u8A8D\u3057\u307E\u3057\u305F\u300D\u3092\u62BC\u3059\u307E\u3067\u672A\u8AAD\u306B\
29
+ \u6570\u3048\u3089\u308C\u307E\u3059\u3002",flags:[],plan(input){noArgs(input,"counts");return{method:"GET",path:`${ANNOUNCEMENTS_PATH}/counts`}},summarize:counts,raw:counts};function counts(body){const row=envelope(body,"\u304A\u77E5\u3089\u305B\u4EF6\u6570");if(typeof row["unread_count"]!=="number")throw new ApiResponseError("\u304A\u77E5\u3089\u305B\u4EF6\u6570\u306E\u5FDC\u7B54\u306B unread_count \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002");
30
+ return withoutResult(row)}var CONFIRM_STAYS_UNREAD="\u78BA\u8A8D\u304C\u8981\u308B\u304A\u77E5\u3089\u305B\u306F\u3001\u65E2\u8AAD\u306B\u3057\u3066\u3082\u300C\u78BA\u8A8D\u3057\u307E\u3057\u305F\u300D\u3092\u62BC\u3059\u307E\u3067\u672A\u8AAD\u306E\u307E\u307E\u3067\u3059\uFF08twp announcement confirm\uFF09\u3002";var readOperation={name:"read",summary:`${LABEL}\u3092\u65E2\u8AAD\u306B\u3059\u308B\uFF08ID \u3092\u8907\u6570\u4E26\u3079\u3089\u308C\u308B\uFF09`,usage:"twp announcement read <\u304A\u77E5\u3089\
31
+ \u305BID>...",description:`1\u4EF6\u305A\u3064\u65E2\u8AAD\u306B\u3057\u307E\u3059\uFF081\u4EF61\u5F80\u5FA9\uFF09\u3002\u65E2\u306B\u65E2\u8AAD\u306E\u3082\u306E\u306B\u6253\u3063\u3066\u3082\u5909\u308F\u308A\u307E\u305B\u3093\u3002
32
+ ${CONFIRM_STAYS_UNREAD}
33
+ \u9014\u4E2D\u3067\u5931\u6557\u3057\u305F\u3089\u3001\u305D\u3053\u3067\u6B62\u3081\u3066\u65E2\u8AAD\u306B\u3067\u304D\u305F ID \u3092 stderr \u306B\u51FA\u3057\u307E\u3059\u3002`,flags:[],plan:input=>({method:"POST",path:itemPath(announcementIds(input)[0],"/read")}),plannedNotes(input){const ids=announcementIds(input);return ids.length>1?[`\u3053\u306E\u3042\u3068\u6B8B\u308A ${ids.length-1} \u4EF6\u306B\u3082\u540C\u3058 POST \u2026/read \u30921\u4EF6\u305A\u3064\u9001\u308A\u307E\u3059\u3002`]:
34
+ []},async execute(input,ctx){const done=[];for(const id of announcementIds(input)){try{envelope(await ctx.send({method:"POST",path:itemPath(id,"/read")}),"\u65E2\u8AAD\u5316")}catch(error){if(done.length>0)ctx.warn(`\u65E2\u8AAD\u306B\u3067\u304D\u305F\u306E\u306F ${done.length} \u4EF6\u3067\u3059: ${done.join(" ")}\uFF08${id} \u3067\u5931\u6557\u3057\u305F\u305F\u3081\u6B8B\u308A\u306F\u9001\u3063\u3066\u3044\u307E\u305B\u3093\uFF09`);throw error}done.push(id)}return{result:true,read:done}},summarize:readResult,
35
+ raw:readResult,notes:()=>[CONFIRM_STAYS_UNREAD]};function readResult(body){const read=envelope(body,"\u65E2\u8AAD\u5316")["read"];if(!Array.isArray(read))throw new Error("\u5185\u90E8\u30A8\u30E9\u30FC: \u65E2\u8AAD\u5316\u306E\u7D50\u679C\u304C\u7D44\u307F\u7ACB\u3066\u3089\u308C\u3066\u3044\u307E\u305B\u3093");return{read_count:read.length,read}}var readAllOperation={name:"read-all",summary:`\u81EA\u5206\u306B\u5C4A\u3044\u3066\u3044\u308B${LABEL}\u3092\u307E\u3068\u3081\u3066\u65E2\u8AAD\u306B\u3059\u308B\uFF08--yes \u304C\u8981\u308B\uFF09`,
36
+ usage:"twp announcement read-all --yes",description:`\u63B2\u8F09\u4E2D\u306E\u304A\u77E5\u3089\u305B\u3092\u307E\u3068\u3081\u3066\u65E2\u8AAD\u306B\u3057\u307E\u3059\u3002\u65E2\u8AAD\u3092\u672A\u8AAD\u3078\u623B\u3059\u624B\u6BB5\u306F\u7121\u3044\u306E\u3067 --yes \u304C\u8981\u308A\u307E\u3059\u3002
37
+ \u9001\u308B\u524D\u306B\u672A\u8AAD\u4EF6\u6570\u3092\u6570\u3048\u3066 stderr \u306B\u51FA\u3057\u307E\u3059\u3002--dry-run \u306A\u3089\u4EF6\u6570\u3092\u51FA\u3059\u3060\u3051\u3067\u65E2\u8AAD\u306B\u3057\u307E\u305B\u3093\u3002
38
+ ${CONFIRM_STAYS_UNREAD}
39
+ read_count \u306F\u30B5\u30FC\u30D0\u304C\u65E2\u8AAD\u306E\u8A18\u9332\u3092\u4ED8\u3051\u305F\u4EF6\u6570\u3067\u3059\uFF08\u65E2\u306B\u65E2\u8AAD\u3060\u3063\u305F\u3082\u306E\u3092\u542B\u3080\u3053\u3068\u304C\u3042\u308A\u307E\u3059\uFF09\u3002`,destructive:true,confirmation:"\u65E2\u8AAD\u3092\u672A\u8AAD\u3078\u623B\u305B\u306A\u3044\u64CD\u4F5C",flags:[],async prepare(input,ctx){noArgs(input,"read-all");return withResolved(input,{unreadCount:String(await ctx.resolver.announcementUnreadCount())})},
40
+ plan:()=>({method:"POST",path:`${ANNOUNCEMENTS_PATH}/read-all`,body:{}}),plannedNotes:input=>[`\u65E2\u8AAD\u306B\u3059\u308B\u5BFE\u8C61: \u672A\u8AAD ${requireResolved(input,"unreadCount")} \u4EF6\uFF08\u9001\u308B\u76F4\u524D\u306B\u6570\u3048\u305F\u4EF6\u6570\u3067\u3059\uFF09\u3002${CONFIRM_STAYS_UNREAD}`],summarize:readAllResult,raw:readAllResult};function readAllResult(body){const count=envelope(body,"\u4E00\u62EC\u65E2\u8AAD\u5316")["read_count"];if(typeof count!=="number")throw new ApiResponseError(
41
+ "\u4E00\u62EC\u65E2\u8AAD\u5316\u306E\u5FDC\u7B54\u306B read_count \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002");return{read_count:count}}var confirmOperation={name:"confirm",summary:`${LABEL}\u3092\u300C\u78BA\u8A8D\u3057\u307E\u3057\u305F\u300D\u306B\u3059\u308B\uFF08--yes \u304C\u8981\u308B\uFF09`,usage:"twp announcement confirm <\u304A\u77E5\u3089\u305BID> --yes",description:"\u753B\u9762\u306E\u300C\u78BA\u8A8D\u3057\u307E\u3057\u305F\u300D\u30DC\u30BF\u30F3\u3068\u540C\u3058\u3067\u3059\u3002\u78BA\u8A8D\u3057\u305F\u4E8B\u5B9F\u306F\u767A\u4FE1\u8005\u304C\u898B\u308B\u8A18\u9332\u3068\u3057\u3066\u6B8B\u308A\
42
+ \u3001\u53D6\u308A\u6D88\u305B\u306A\u3044\u306E\u3067 --yes \u304C\u8981\u308A\u307E\u3059\u3002\n\u78BA\u8A8D\u304C\u8981\u308B\u304A\u77E5\u3089\u305B\uFF08require_confirmation \u304C true\uFF09\u3060\u3051\u304C\u5BFE\u8C61\u3067\u3001\u305D\u308C\u4EE5\u5916\u306F\u30B5\u30FC\u30D0\u304C\u65AD\u308A\u307E\u3059\u3002\n\u78BA\u8A8D\u3059\u308B\u3068\u65E2\u8AAD\u306B\u3082\u306A\u308A\u307E\u3059\u3002\u78BA\u8A8D\u304C\u8981\u308B\u304A\u77E5\u3089\u305B\u306F twp announcement list --needs-confirm \u3067\u4E00\u89A7\u3067\u304D\u307E\u3059\u3002",
43
+ destructive:true,confirmation:"\u78BA\u8A8D\u306E\u8A18\u9332\u304C\u6B8B\u308A\u3001\u53D6\u308A\u6D88\u305B\u306A\u3044\u64CD\u4F5C",flags:[],plan:input=>({method:"POST",path:itemPath(announcementId(input,"confirm"),"/confirm"),body:{}}),summarize:confirmResult,raw:confirmResult};function confirmResult(body){const row=envelope(body,"\u78BA\u8A8D");if(typeof row["confirmed_at"]!=="string")throw new ApiResponseError("\u78BA\u8A8D\u306E\u5FDC\u7B54\u306B confirmed_at \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002");
44
+ return{confirmed_at:row["confirmed_at"]}}var replyListOperation={name:"list",summary:`${LABEL}\u3078\u306E\u8FD4\u4FE1\u3092\u4E00\u89A7\u3059\u308B\uFF08\u81EA\u5206\u306B\u898B\u3048\u308B\u7BC4\u56F2\uFF09`,usage:"twp announcement reply list <\u304A\u77E5\u3089\u305BID>",description:"\u8FD4\u4FE1\u306E\u516C\u958B\u7BC4\u56F2\u304C\u300C\u4F5C\u6210\u8005\u306E\u307F\u300D\u306E\u304A\u77E5\u3089\u305B\u3067\u306F\u3001\u4F5C\u6210\u8005\u30FB\u767A\u4FE1\u90E8\u7F72\u30FB\u7BA1\u7406\u8005\u4EE5\u5916\u306B\u306F\u81EA\u5206\u306E\u8FD4\u4FE1\u3060\u3051\u304C\u8FD4\u308A\u307E\u3059\u3002\n\u8FD4\u4FE1\u3092\u53D7\u3051\u4ED8\u3051\u3066\u3044\u306A\u3044\u304A\u77E5\u3089\u305B\u306F0\u4EF6\u3067\u8FD4\u308A\u3001\u305D\u306E\u65E8\u3092 stderr \u306B\u51FA\u3057\u307E\u3059\u3002",
45
+ flags:[],plan:input=>({method:"GET",path:itemPath(announcementId(input,"reply list"),"/replies")}),summarize:body=>replyList(body).map(row=>pick(row,REPLY_COLUMNS)),raw:replyList,notes:body=>isRecord(body)&&body["allow_replies"]===false?["\u3053\u306E\u304A\u77E5\u3089\u305B\u306F\u8FD4\u4FE1\u3092\u53D7\u3051\u4ED8\u3051\u3066\u3044\u307E\u305B\u3093\uFF080\u4EF6\u306F\u305D\u306E\u305F\u3081\u3067\u3059\uFF09\u3002"]:[]};var REPLY_CREATE_USAGE="twp announcement reply create <\u304A\u77E5\u3089\u305BID> --body-fil\
46
+ e <\u30D5\u30A1\u30A4\u30EB|->";var replyCreateOperation={name:"create",summary:`${LABEL}\u3078\u8FD4\u4FE1\u3059\u308B`,usage:REPLY_CREATE_USAGE,description:`\u672C\u6587\u306F --body-file\uFF08- \u3067\u6A19\u6E96\u5165\u529B\uFF09\u304B --body \u3067\u6E21\u3057\u307E\u3059\uFF08${REPLY_MAX_CHARS} \u6587\u5B57\u307E\u3067\uFF09\u3002
47
+ \u8FD4\u4FE1\u3092\u53D7\u3051\u4ED8\u3051\u3066\u3044\u3066\u63B2\u8F09\u4E2D\u306E\u7D44\u7E54\u306E\u304A\u77E5\u3089\u305B\u3060\u3051\u306B\u9001\u308C\u307E\u3059\uFF08\u305D\u308C\u4EE5\u5916\u306F\u30B5\u30FC\u30D0\u304C\u65AD\u308A\u307E\u3059\uFF09\u3002
48
+ \u304A\u77E5\u3089\u305B\u306E\u4F5C\u6210\u8005\u3078\u901A\u77E5\u304C\u5C4A\u304D\u307E\u3059\u3002`,flags:[{name:"--body-file",summary:"\u8FD4\u4FE1\u672C\u6587\u3092\u8AAD\u3080\u30D5\u30A1\u30A4\u30EB\uFF08- \u3067\u6A19\u6E96\u5165\u529B\uFF09",takesValue:true,placeholder:"<\u30D5\u30A1\u30A4\u30EB|->"},{name:"--body",summary:"\u8FD4\u4FE1\u672C\u6587\uFF08\u77ED\u3044\u3068\u304D\u3060\u3051\u3002\u6539\u884C\u3084\u8A18\u53F7\u3092\u542B\u3080\u306A\u3089 --body-file\uFF09",takesValue:true,
49
+ placeholder:"<\u672C\u6587>"}],async prepare(input){announcementId(input,"reply create");const content=await readBody(input,{flag:"--body",fileFlag:"--body-file",label:"\u8FD4\u4FE1\u672C\u6587",maxChars:REPLY_MAX_CHARS,usage:REPLY_CREATE_USAGE});if(content===void 0)throw new UsageError("\u8FD4\u4FE1\u672C\u6587\u3092 --body-file \u304B --body \u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",REPLY_CREATE_USAGE);return withResolved(input,{content})},plan:input=>({method:"POST",path:itemPath(
50
+ announcementId(input,"reply create"),"/replies"),body:{content:requireResolved(input,"content")}}),summarize:replyCreated,raw:replyCreated};function replyCreated(body){const reply=envelope(body,"\u8FD4\u4FE1")["reply"];if(!isRecord(reply)||typeof reply["id"]!=="string")throw new ApiResponseError("\u8FD4\u4FE1\u306E\u5FDC\u7B54\u306B reply \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002");return reply}var replyResource={name:"\
51
+ reply",summary:`${LABEL}\u3078\u306E\u8FD4\u4FE1\uFF08\u4E00\u89A7\u30FB\u4F5C\u6210\uFF09`,operations:[replyListOperation,replyCreateOperation]};var announcementDomain={name:"announcement",summary:"\u30C6\u30CA\u30F3\u30C8\u30FB\u7D44\u7E54\u306E\u304A\u77E5\u3089\u305B\uFF08\u4E00\u89A7\u30FB\u672C\u6587\u30FB\u4EF6\u6570\u30FB\u65E2\u8AAD\u5316\u30FB\u78BA\u8A8D\u30FB\u8FD4\u4FE1\uFF09",operations:[listOperation,getOperation,countsOperation,readOperation,readAllOperation,confirmOperation],subresources:[
52
+ replyResource]};export{announcementDomain};
@@ -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-FC2SFCKD.js";import{renderOutput}from"./chunk-MXKAEPXA.js";import{redactSecretValues,redactSecrets,withDebug}from"./chunk-AUAZP2G7.js";import"./chunk-ZVJXYKRY.js";import{evaluateQuery}from"./chunk-ATYA6DG5.js";import"./chunk-Q3B65OFC.js";
4
- import{readBody}from"./chunk-ORUDW52G.js";import"./chunk-BS2ACFJA.js";import"./chunk-GMBJTG6A.js";import"./chunk-3HH5IYNO.js";import{parseOperationArgs,repeatedValues}from"./chunk-F7K37QG6.js";import{ApiError,TwpApiClient,appendQuery}from"./chunk-IF2K4PM5.js";import{GLOBAL_OPTIONS_HELP}from"./chunk-YLM54X35.js";import{AuthSession,NotLoggedInError,SessionExpiredError,loadCredentials}from"./chunk-XNLIEUAW.js";import{effectiveApiUrl,resolveConfiguredOutput,
5
- resolveProfile}from"./chunk-4VZKNEVN.js";import{HELP_TOKEN}from"./chunk-67JAB5QG.js";import"./chunk-QQRJLH6B.js";import{OUTPUT_FORMATS,resolveOutputFormat}from"./chunk-K2ONOH3L.js";import"./chunk-WVS4W5FY.js";import"./chunk-II5RVJQN.js";import{DEFAULT_MAX_ITEMS,DEFAULT_MAX_PAGES,envelopePaging,isPageNumberEnvelope,pageRangeNotes,positiveInteger,readEnvelopeCursor,readPageNumberCursor,shellQuote}from"./chunk-IOGMOXYF.js";import"./chunk-VTQAI52S.js";
6
- import{ApiRejectedError,ApiResponseError,EXIT_OK,EXIT_WAIT_TIMEOUT,NetworkError,UsageError}from"./chunk-UFND7FBC.js";import{httpFetch}from"./chunk-J7QYPKVK.js";import"./chunk-RZVI6PMW.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-S3A24B2C.js";import{evaluateQuery}from"./chunk-GFLGXGWE.js";import{renderOutput}from"./chunk-MXKAEPXA.js";import{redactSecretValues,redactSecrets,withDebug}from"./chunk-AUAZP2G7.js";import{describeWaitResult,parseWaitOptions,
4
+ waitUntilTerminal}from"./chunk-WVCEKC7V.js";import"./chunk-GXZOFRZH.js";import"./chunk-Q3B65OFC.js";import{readBody}from"./chunk-6LSQCOCJ.js";import"./chunk-Q2KIETMB.js";import"./chunk-GMBJTG6A.js";import"./chunk-QBGEYQ2I.js";import{parseOperationArgs,repeatedValues}from"./chunk-7UB4I3JF.js";import{ApiError,TwpApiClient,appendQuery}from"./chunk-IF2K4PM5.js";import{GLOBAL_OPTIONS_HELP}from"./chunk-YLM54X35.js";import{AuthSession,NotLoggedInError,
5
+ SessionExpiredError,loadCredentials}from"./chunk-XNLIEUAW.js";import{effectiveApiUrl,resolveConfiguredOutput,resolveProfile}from"./chunk-4VZKNEVN.js";import{HELP_TOKEN}from"./chunk-ZGHEF45T.js";import"./chunk-QQRJLH6B.js";import{OUTPUT_FORMATS,resolveOutputFormat}from"./chunk-K2ONOH3L.js";import"./chunk-WVS4W5FY.js";import"./chunk-II5RVJQN.js";import{DEFAULT_MAX_ITEMS,DEFAULT_MAX_PAGES,envelopePaging,isPageNumberEnvelope,pageRangeNotes,positiveInteger,readEnvelopeCursor,
6
+ readPageNumberCursor,shellQuote}from"./chunk-MI6HVYR2.js";import"./chunk-3ZRMMBP5.js";import{ApiResponseError,EXIT_OK,EXIT_WAIT_TIMEOUT,NetworkError,UsageError}from"./chunk-VFPY2A23.js";import{httpFetch}from"./chunk-J7QYPKVK.js";import"./chunk-RZVI6PMW.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.
@@ -87,18 +87,7 @@ map(result=>result.target)}}return[]}var API_COMMAND_HELP=`twp api \u2014 API \u
87
87
  \u8FD1\u3044\u30D1\u30B9\u304C\u3042\u308C\u3070\u4E26\u3079\u307E\u3059\u3002\u4E00\u89A7\u306E\u7D9A\u304D\u306F\u5FDC\u7B54\u306E next_cursor \u3092 --starting-token \u306B\u6E21\u3057\u3066\u8FBF\u3063\u3066\u304F\u3060\u3055\u3044\u3002
88
88
 
89
89
  ${GLOBAL_OPTIONS_HELP}
90
- `;var TERMINAL_OK="completed";var TERMINAL_FAILED=["failed","cancelled"];var PENDING_STATUSES=["pending","processing"];var DEFAULT_WAIT_TIMEOUT_SECONDS=300;var MAX_WAIT_TIMEOUT_SECONDS=480;var DEFAULT_WAIT_INTERVAL_SECONDS=5;var MIN_WAIT_INTERVAL_SECONDS=1;function parseWaitOptions(flags){const wait=flags.has("--wait");const rawTimeout=flags.get("--wait-timeout");const rawInterval=flags.get("--wait-interval");if(!wait){if(rawTimeout!==void 0||rawInterval!==void 0){throw new UsageError("--wait-time\
91
- out / --wait-interval \u306F --wait \u3068\u4E00\u7DD2\u306B\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044","\u4F8B: twp api /v2/media/files/generate/video/<task_id> --wait --wait-timeout 300")}return null}const timeoutSeconds=seconds("--wait-timeout",rawTimeout,DEFAULT_WAIT_TIMEOUT_SECONDS,1,MAX_WAIT_TIMEOUT_SECONDS);const intervalSeconds=seconds("--wait-interval",rawInterval,Math.min(DEFAULT_WAIT_INTERVAL_SECONDS,timeoutSeconds),MIN_WAIT_INTERVAL_SECONDS,timeoutSeconds);return{timeoutSeconds,
92
- intervalSeconds}}function seconds(flag,raw,fallback,min,max){if(raw===void 0)return fallback;const text=raw.trim();if(!/^\d+$/.test(text))throw new UsageError(`${flag} \u306B\u306F\u79D2\u6570\uFF08\u6574\u6570\uFF09\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044: ${raw}`);const value=Number(text);if(value<min||value>max){throw new UsageError(`${flag} \u306F ${min}\u301C${max} \u79D2\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u6307\u5B9A: ${value}\uFF09`,flag==="--wait-ti\
93
- meout"?`\u4E0A\u9650 ${MAX_WAIT_TIMEOUT_SECONDS} \u79D2\u306F AI CLI \u306E Bash \u30C4\u30FC\u30EB\u306E\u4E0A\u9650\uFF08600\u79D2\uFF09\u306B\u53CE\u3081\u308B\u305F\u3081\u3067\u3059\u3002\u9577\u3044\u51E6\u7406\u306F\u9593\u3092\u7F6E\u3044\u3066\u6253\u3061\u76F4\u3057\u3066\u304F\u3060\u3055\u3044\u3002`:void 0)}return value}function readWaitStatus(body){const status=pickStatus(body);if(status===void 0){throw new UsageError("--wait \u306F status \u3092\u8FD4\u3059\u5FDC\u7B54\u306B\u3057\u304B\u4F7F\u3048\u307E\u305B\u3093\uFF08\u5FDC\u7B54\u306B data.status / status \u304C\u3042\u308A\u307E\u305B\u3093\uFF09",
94
- "\u975E\u540C\u671F\u51E6\u7406\u306E\u72B6\u614B\u306E\u30D1\u30B9\uFF08\u4F8B: /v2/media/files/generate/video/<task_id>\uFF09\u306B\u4ED8\u3051\u3066\u304F\u3060\u3055\u3044\u3002")}if(status===TERMINAL_OK)return{kind:"completed",status};if(TERMINAL_FAILED.includes(status))return{kind:"failed",status};if(PENDING_STATUSES.includes(status))return{kind:"pending",status};throw new ApiResponseError(`--wait \u304C\u77E5\u3089\u306A\u3044 status \u3067\u3059: ${status}\uFF08\u5F85\u3064\u306E\u306F ${PENDING_STATUSES.
95
- join(" / ")}\u3001\u7D42\u308F\u308A\u306F ${[TERMINAL_OK,...TERMINAL_FAILED].join(" / ")}\uFF09`)}function pickStatus(body){if(!isRecord(body))return void 0;const data=body["data"];if(isRecord(data)&&typeof data["status"]==="string")return data["status"];if(typeof body["status"]==="string")return body["status"];return void 0}function isRecord(value){return value!==null&&typeof value==="object"&&!Array.isArray(value)}async function waitUntilTerminal(firstBody,options,deps){const startedAt=deps.startedAt??
96
- deps.now();const deadline=startedAt+options.timeoutSeconds*1e3;let body=firstBody;let state=readWaitStatus(body);let polls=1;while(state.kind==="pending"){if(deps.now()+options.intervalSeconds*1e3>deadline){return{body,state,polls,elapsedSeconds:elapsed(deps.now(),startedAt),timedOut:true}}await deps.sleep(options.intervalSeconds*1e3);let next;try{next=await deps.fetchAgain()}catch(pollError){return{body,state,polls,elapsedSeconds:elapsed(deps.now(),startedAt),timedOut:false,pollError}}let nextState;
97
- try{nextState=readWaitStatus(next)}catch(statusError){const pollError=statusError instanceof UsageError?new ApiResponseError("\u53D6\u308A\u76F4\u3057\u305F\u5FDC\u7B54\u306B status \u304C\u3042\u308A\u307E\u305B\u3093\uFF08\u6700\u521D\u306E\u5FDC\u7B54\u306B\u306F\u3042\u308A\u307E\u3057\u305F\uFF09"):statusError;return{body,state,polls,elapsedSeconds:elapsed(deps.now(),startedAt),timedOut:false,pollError}}body=next;state=nextState;polls+=1}return{body,state,polls,elapsedSeconds:elapsed(deps.now(),
98
- startedAt),timedOut:false}}function elapsed(now,startedAt){return Math.round((now-startedAt)/1e3)}function describeWaitResult(result){const head=`\u5F85\u6A5F: ${result.polls} \u56DE\u53D6\u5F97\u30FB${result.elapsedSeconds} \u79D2`;if(result.pollError!==void 0){const reason=result.pollError instanceof Error?result.pollError.message:String(result.pollError);return{note:`${head}\u3002\u53D6\u308A\u76F4\u3057\u306B\u5931\u6557\u3057\u305F\u305F\u3081\u6253\u3061\u5207\u308A\u307E\u3057\u305F\uFF08${reason}\
99
- \uFF09\u3002\u6700\u5F8C\u306B\u53D6\u308C\u305F\u5FDC\u7B54\uFF08status=${result.state.status}\u30FB**\u672A\u5B8C\u4E86**\uFF09\u3092 stdout \u306B\u51FA\u3057\u3066\u3044\u307E\u3059\u3002\u51E6\u7406\u306F\u30B5\u30FC\u30D0\u3067\u7D9A\u3044\u3066\u3044\u308B\u53EF\u80FD\u6027\u304C\u3042\u308B\u306E\u3067\u3001\u958B\u59CB\u304B\u3089\u6253\u3061\u76F4\u3055\u305A\u540C\u3058\u30B3\u30DE\u30F3\u30C9\u3092\u6253\u3061\u76F4\u3057\u3066\u304F\u3060\u3055\u3044\u3002`,error:result.pollError instanceof
100
- Error?result.pollError:new Error(reason)}}if(result.timedOut){return{note:`${head}\u3002\u6B21\u306E\u53D6\u5F97\u304C\u4E0A\u9650\u3092\u8D8A\u3048\u308B\u305F\u3081\u6253\u3061\u5207\u308A\u307E\u3057\u305F\u3002status=${result.state.status} \u306E\u307E\u307E**\u672A\u5B8C\u4E86**\u3067\u3059\uFF08\u7D42\u4E86\u30B3\u30FC\u30C9 6\uFF09\u3002\u540C\u3058\u30B3\u30DE\u30F3\u30C9\u3092\u6253\u3061\u76F4\u3059\u3068\u7D9A\u304D\u3092\u5F85\u3066\u307E\u3059\u3002`,error:null}}if(result.state.kind===
101
- "failed"){return{note:`${head}\u3002status=${result.state.status} \u3067\u7D42\u308F\u308A\u307E\u3057\u305F\u3002`,error:new ApiRejectedError(`\u975E\u540C\u671F\u51E6\u7406\u304C ${result.state.status} \u3067\u7D42\u308F\u308A\u307E\u3057\u305F\uFF08\u5FDC\u7B54\u306F stdout \u306B\u51FA\u3057\u3066\u3044\u307E\u3059\uFF09`)}}return{note:`${head}\u3002status=${result.state.status} \u3067\u7D42\u308F\u308A\u307E\u3057\u305F\u3002`,error:null}}var writeOut=text=>void process.stdout.write(text);var writeErr=text=>void process.stderr.write(text);function line(text){return text===""?"":text.endsWith("\n")?text:`${text}
90
+ `;var writeOut=text=>void process.stdout.write(text);var writeErr=text=>void process.stderr.write(text);function line(text){return text===""?"":text.endsWith("\n")?text:`${text}
102
91
  `}var API_METHODS=["GET","POST","PUT","PATCH","DELETE"];var API_FLAGS=[{name:"--method",summary:`HTTP \u30E1\u30BD\u30C3\u30C9\uFF08${API_METHODS.join(" / ")}\u30FB\u65E2\u5B9A GET\uFF09`,takesValue:true,placeholder:"<\u30E1\u30BD\u30C3\u30C9>"},{name:"--body-file",summary:"\u30EA\u30AF\u30A8\u30B9\u30C8\u30DC\u30C7\u30A3\u306E JSON \u30D5\u30A1\u30A4\u30EB\uFF08- \u3067\u6A19\u6E96\u5165\u529B\uFF09",takesValue:true,placeholder:"<\u30D1\u30B9>"},{name:"--cli-input-json",summary:"\u5168\u5F15\u6570\u3092 JSON \u3067\u6E21\u3059\uFF08-\
103
92
  \u3067\u6A19\u6E96\u5165\u529B\uFF09",takesValue:true,placeholder:"<\u30D1\u30B9>"},{name:"--generate-cli-skeleton",summary:"--cli-input-json \u3078\u6E21\u3059\u5165\u529B\u3072\u306A\u5F62\u3092\u51FA\u529B\u3057\u3066\u7D42\u4E86\u3059\u308B",takesValue:false},{name:"--query-param",summary:"\u30AF\u30A8\u30EA\u5F15\u6570\uFF08k=v\u30FB\u8907\u6570\u6307\u5B9A\u53EF\uFF09",takesValue:true,placeholder:"<k=v>",repeatable:true},NO_REDACT_FLAG,{name:"--max-items",summary:`\u81EA\u52D5\u30DA\u30FC\u30B8\u30F3\u30B0\u306E\u4E0A\u9650\u4EF6\u6570\uFF08\u65E2\u5B9A ${DEFAULT_MAX_ITEMS}\
104
93
  \u30FB\u8D85\u3048\u305F\u3089\u5168\u4EF6\u3067\u306F\u306A\u3044\u3068\u660E\u793A\u3057\u3066\u6B62\u307E\u308B\uFF09`,takesValue:true,placeholder:"<\u4EF6\u6570>"},{name:"--starting-token",summary:"\u3053\u306E\u30AB\u30FC\u30BD\u30EB\uFF08\u524D\u56DE\u306E next_cursor\uFF09\u304B\u3089\u53D6\u5F97\u3092\u59CB\u3081\u308B",takesValue:true,placeholder:"<\u30AB\u30FC\u30BD\u30EB>"},{name:"--no-paginate",summary:"\u81EA\u52D5\u30DA\u30FC\u30B8\u30F3\u30B0\u3092\u305B\u305A1\u30DA\u30FC\u30B8\u3060\u3051\u53D6\u5F97\u3059\u308B",
@@ -1,8 +1,8 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{RESIDENT_TOKEN_CAP,activateModeFiles,activatePermissionSettings,buildResidentSet,buildSystemPrompt,createAuditLogger,createTwpToolkit,currentBranch,describeAuditLog,describeToolCatalog,displayCwd,executeTool,findProjectTwpSubdir,localTools,lstatOrNull,parseFrontMatter,parseRule,persistProjectAllow,projectPermissionsPath,projectRootFor,readFileTool,residentInputs,resolveGitExecutable,runTurn,secretReason}from"./chunk-LKS7GANP.js";import"./chunk-NZ7WI4RZ.js";import"./chunk-AUAZP2G7.js";
4
- import{buildDiffLines,diffStat}from"./chunk-VRBI2NPI.js";import{require_fuzzysort}from"./chunk-DIMZRTLE.js";import"./chunk-BS2ACFJA.js";import"./chunk-GMBJTG6A.js";import"./chunk-3HH5IYNO.js";import"./chunk-IF2K4PM5.js";import{RelayError,builtinCatalog,createRuntime,loadCachedCatalog,modelLabel,pickModel,toModelInfos}from"./chunk-6QOT7CHX.js";import"./chunk-D233KKXW.js";import"./chunk-XNLIEUAW.js";import{checkMinSupportedVersion,isBelowMinSupported,
5
- minSupportedBlockMessage}from"./chunk-DXXFUNYN.js";import"./chunk-4VZKNEVN.js";import{parseArgv}from"./chunk-5ALOH2TR.js";import{applyPermissionMode,checkPermission,describePermissionMode,getMode,isModeId,modeSource,nextMode}from"./chunk-NAUH75MM.js";import"./chunk-67JAB5QG.js";import"./chunk-QQRJLH6B.js";import{isFullWidth,isWide,stringWidth,stripAnsi}from"./chunk-WVS4W5FY.js";import"./chunk-N2UVRM3Z.js";import"./chunk-II5RVJQN.js";import"./chunk-UFND7FBC.js";
3
+ import{buildDiffLines,diffStat}from"./chunk-VRBI2NPI.js";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-LKS7GANP.js";
4
+ import"./chunk-NZ7WI4RZ.js";import"./chunk-AUAZP2G7.js";import{require_fuzzysort}from"./chunk-DIMZRTLE.js";import"./chunk-Q2KIETMB.js";import"./chunk-GMBJTG6A.js";import"./chunk-QBGEYQ2I.js";import"./chunk-IF2K4PM5.js";import{RelayError,builtinCatalog,createRuntime,loadCachedCatalog,modelLabel,pickModel,toModelInfos}from"./chunk-6QOT7CHX.js";import"./chunk-D233KKXW.js";import"./chunk-XNLIEUAW.js";import{checkMinSupportedVersion,isBelowMinSupported,
5
+ minSupportedBlockMessage}from"./chunk-DXXFUNYN.js";import"./chunk-4VZKNEVN.js";import{parseArgv}from"./chunk-FMJUPLDG.js";import{applyPermissionMode,checkPermission,describePermissionMode,getMode,isModeId,modeSource,nextMode}from"./chunk-NAUH75MM.js";import"./chunk-ZGHEF45T.js";import"./chunk-QQRJLH6B.js";import{isFullWidth,isWide,stringWidth,stripAnsi}from"./chunk-WVS4W5FY.js";import"./chunk-N2UVRM3Z.js";import"./chunk-II5RVJQN.js";import"./chunk-VFPY2A23.js";
6
6
  import"./chunk-PMOUHEJQ.js";import{proxyDiagnostics}from"./chunk-J7QYPKVK.js";import{configReadDirs,twpHomeDir}from"./chunk-RZVI6PMW.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=
@@ -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-ZXMGPUUK.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-TNFPATQF.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-QOUDJ7XO.js";import{dateFlag,monthFlag}from"./chunk-4B3T4UE7.js";import"./chunk-BS2ACFJA.js";import{isSafePathSegment}from"./chunk-GMBJTG6A.js";import"./chunk-3HH5IYNO.js";import"./chunk-IF2K4PM5.js";import"./chunk-4VZKNEVN.js";import"./chunk-II5RVJQN.js";import{requireResolved,withResolved}from"./chunk-LXIAOCUW.js";import{isRecord,pick}from"./chunk-VTQAI52S.js";import{ApiRejectedError,
4
- ApiResponseError,UsageError}from"./chunk-UFND7FBC.js";import"./chunk-J7QYPKVK.js";import"./chunk-RZVI6PMW.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"./chunk-Q2KIETMB.js";import{isSafePathSegment}from"./chunk-GMBJTG6A.js";import"./chunk-QBGEYQ2I.js";import{PUNCH_TYPES,assertMonthOpen,attendanceDomain}from"./chunk-IU5P6MY5.js";import{dateFlag,monthFlag}from"./chunk-EXT4AIDF.js";import"./chunk-IF2K4PM5.js";import"./chunk-4VZKNEVN.js";import"./chunk-II5RVJQN.js";import{requireResolved,withResolved}from"./chunk-PS5QFKHB.js";import{isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiRejectedError,
4
+ ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";import"./chunk-J7QYPKVK.js";import"./chunk-RZVI6PMW.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,6 +1,6 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{hoursMinutes}from"./chunk-QOUDJ7XO.js";import{monthFlag}from"./chunk-4B3T4UE7.js";import"./chunk-LXIAOCUW.js";import{isRecord,pick}from"./chunk-VTQAI52S.js";import{ApiResponseError,UsageError}from"./chunk-UFND7FBC.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-IU5P6MY5.js";import{monthFlag}from"./chunk-EXT4AIDF.js";import"./chunk-PS5QFKHB.js";import{isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiResponseError,UsageError}from"./chunk-VFPY2A23.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";
4
4
  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`,
5
5
  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
6
6
  --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,7 +1,7 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{readBody}from"./chunk-ORUDW52G.js";import{BACKLOG_BASE_PATH,BACKLOG_PROJECT_SCOPE_LABEL,BACKLOG_SCOPE_LABEL,backlogSpacePath,isExactNumericId,resolveNamed}from"./chunk-BS2ACFJA.js";import"./chunk-GMBJTG6A.js";import"./chunk-3HH5IYNO.js";import"./chunk-IF2K4PM5.js";import"./chunk-4VZKNEVN.js";import"./chunk-II5RVJQN.js";import{requireResolved,singleRef,withResolved}from"./chunk-LXIAOCUW.js";import{isRecord,pick}from"./chunk-VTQAI52S.js";
4
- import{ApiResponseError,UsageError}from"./chunk-UFND7FBC.js";import"./chunk-J7QYPKVK.js";import"./chunk-RZVI6PMW.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var DEFAULT_COUNT=20;var MAX_COUNT=100;var NUMERIC=/^[0-9]+$/;var ISSUE_REF=/^(?:[A-Za-z0-9_]+-[0-9]+|[0-9]+)$/;var DATE=/^[0-9]{4}-[0-9]{2}-[0-9]{2}$/;var SPACE_COLUMNS=["id","space_url"];var PROJECT_COLUMNS=["id","projectKey","name"];var ISSUE_LIST_COLUMNS=["issueKey","summary","status","assignee","priority","dueDate","updated","descriptionTruncated"];var ISSUE_GET_COLUMNS=["id","issueKey","projectId","summary","description","descriptionTruncated","status","issueType","priority","assignee","cr\
3
+ import{readBody}from"./chunk-6LSQCOCJ.js";import{BACKLOG_BASE_PATH,BACKLOG_PROJECT_SCOPE_LABEL,BACKLOG_SCOPE_LABEL,backlogSpacePath,isExactNumericId,resolveNamed}from"./chunk-Q2KIETMB.js";import"./chunk-GMBJTG6A.js";import"./chunk-QBGEYQ2I.js";import"./chunk-IF2K4PM5.js";import"./chunk-4VZKNEVN.js";import"./chunk-II5RVJQN.js";import{requireResolved,singleRef,withResolved}from"./chunk-PS5QFKHB.js";import{isRecord,pick}from"./chunk-3ZRMMBP5.js";
4
+ import{ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";import"./chunk-J7QYPKVK.js";import"./chunk-RZVI6PMW.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var DEFAULT_COUNT=20;var MAX_COUNT=100;var NUMERIC=/^[0-9]+$/;var ISSUE_REF=/^(?:[A-Za-z0-9_]+-[0-9]+|[0-9]+)$/;var DATE=/^[0-9]{4}-[0-9]{2}-[0-9]{2}$/;var SPACE_COLUMNS=["id","space_url"];var PROJECT_COLUMNS=["id","projectKey","name"];var ISSUE_LIST_COLUMNS=["issueKey","summary","status","assignee","priority","dueDate","updated","descriptionTruncated"];var ISSUE_GET_COLUMNS=["id","issueKey","projectId","summary","description","descriptionTruncated","status","issueType","priority","assignee","cr\
5
5
  eatedUser","parentIssueId","startDate","dueDate","estimatedHours","actualHours","created","updated"];var COMMENT_COLUMNS=["id","created","createdUserId","createdUser","content","changeLog"];function commentRow(row){const source=isRecord(row)?row:{};const user=isRecord(source["createdUser"])?source["createdUser"]:{};return pick({...source,createdUserId:user["id"]??null,createdUser:user["name"]??null},COMMENT_COLUMNS)}var ATTACHMENT_COLUMNS=["id","name","size","contentType","createdUserId","create\
6
6
  dUser","created"];var STATUS_COLUMNS=["id","name","color"];var USER_COLUMNS=["id","userId","name","mailAddress","roleType"];var SPACE_FLAG={name:"--space",summary:"Backlog \u30B9\u30DA\u30FC\u30B9\uFF08ID / \u30B9\u30DA\u30FC\u30B9URL / \u30B5\u30D6\u30C9\u30E1\u30A4\u30F3\uFF09\u3002\u767B\u9332\u304C1\u4EF6\u306A\u3089\u7701\u7565\u3067\u304D\u307E\u3059",takesValue:true,placeholder:"<ID|URL>"};var BODY_MAX_CHARS=1e5;var BODY_FLAGS=[{name:"--body-file",summary:"\u672C\u6587\u3092\u30D5\u30A1\u30A4\u30EB\u304B\u3089\u8AAD\u3080\uFF08- \u3067\u6A19\u6E96\u5165\u529B\uFF09\u3002\u6539\u884C\u30FBMarkdown\
7
7
  \u3092\u58CA\u3055\u306A\u3044\u4E3B\u7D4C\u8DEF",takesValue:true,placeholder:"<\u30D1\u30B9|->"},{name:"--body",summary:"\u672C\u6587\u3092\u76F4\u63A5\u6307\u5B9A\u3059\u308B\uFF08\u4E00\u884C\u5411\u3051\u3002--body-file \u3068\u306E\u4F75\u7528\u306F\u30A8\u30E9\u30FC\uFF09",takesValue:true,placeholder:"<\u6587\u5B57\u5217>"}];function bodyHelp(fileFlag,inlineFlag){return`\u672C\u6587\u306F ${fileFlag} \u3092\u4E3B\u7D4C\u8DEF\u306B\u3057\u3066\u304F\u3060\u3055\u3044\u3002\u30B7\u30A7\u30EB\u306E\u5F15\u6570\u306B\u8F09\u305B\u308B\u3068\u6539\u884C\u30FBMarkdown \u306E\u898B\u51FA\u3057\uFF08#\uFF09\u30FB
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{analysisForbidden}from"./chunk-74SXPFUT.js";import"./chunk-QOUDJ7XO.js";import"./chunk-4B3T4UE7.js";import{repeatedValues}from"./chunk-F7K37QG6.js";import{ApiError,MultipartBody}from"./chunk-IF2K4PM5.js";import"./chunk-QQRJLH6B.js";import{nonEmpty}from"./chunk-IOGMOXYF.js";import{requireResolved,withResolved}from"./chunk-LXIAOCUW.js";import{isRecord,pick}from"./chunk-VTQAI52S.js";import{ApiRejectedError,ApiResponseError,UsageError}from"./chunk-UFND7FBC.js";
3
+ import{analysisForbidden}from"./chunk-CUPPIHSJ.js";import{repeatedValues}from"./chunk-7UB4I3JF.js";import"./chunk-IU5P6MY5.js";import"./chunk-EXT4AIDF.js";import{ApiError,MultipartBody}from"./chunk-IF2K4PM5.js";import"./chunk-QQRJLH6B.js";import{nonEmpty}from"./chunk-MI6HVYR2.js";import{requireResolved,withResolved}from"./chunk-PS5QFKHB.js";import{isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiRejectedError,ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";
4
4
  import"./chunk-J7QYPKVK.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";import fs from"fs";import path from"path";var PATH="/api/v2/budget";var ANALYSIS_FORBIDDEN=analysisForbidden("");function budgetForbidden(body){if(body?.error==="forbidden")return"\u3053\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3092\u95B2\u89A7\u3067\u304D\u307E\u305B\u3093\uFF08\u30E1\u30F3\u30D0\u30FC\u3067\u306A\u3044\u304B\u3001\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u6A29\u9650\u304C\u8DB3\u308A\u307E\u305B\u3093\uFF09\u3002\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u7BA1\u7406\u8005\u306B\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002";
5
5
  return ANALYSIS_FORBIDDEN(body)}var FORBIDDEN=budgetForbidden;var EDIT_HINT="\u76EE\u6A19\u306E\u8A2D\u5B9A\u30FB\u30B3\u30D4\u30FC\u30FB\u53D6\u308A\u8FBC\u307F\u306F\u3001\u5168\u4F53\u7BA1\u7406\u8005\u304B\u5206\u6790\u306E\u6A29\u9650\u304C\u300C\u7BA1\u7406\u8005\u300D\u306E\u4EBA\u3060\u3051\u304C\u3067\u304D\u307E\u3059\u3002\u6309\u5206\u306F\u305D\u308C\u306B\u52A0\u3048\u3066\u3001\u305D\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u7BA1\u7406\u8005\u3082\u3067\u304D\u307E\u3059\n\uFF08\u3069\u3061\u3089\u3082\u5206\u6790\u306E\u6A29\u9650\u304C\u300C\u306A\u3057\u300D\u3067\u306F\u4F7F\u3048\u307E\u305B\u3093\uFF09\u3002";
6
6
  var YEAR_MIN=2e3;var YEAR_MAX=2100;var IMPORT_MAX_BYTES=2048*1024;var SET_FILE_MAX_BYTES=4*1024*1024;var AMOUNT_MAX=999999999999;var SHOWN_OVERWRITES=24;var BOM=new RegExp(`^${String.fromCharCode(65279)}`);function usageOf(op){return`twp budget ${op} help`}function text(value){return typeof value==="string"||typeof value==="number"?String(value):""}function yen(value){return typeof value==="number"?`${value.toLocaleString("ja-JP")} \u5186`:"\uFF08\u306A\u3057\uFF09"}function noArgs(input,op){if(input.
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{apiExit,currentRevisionOf,errorDetail,pickNumber,printDiff,readUtf8Strict,shellQuote}from"./chunk-AJO4O5ZF.js";import"./chunk-VRBI2NPI.js";import{EXIT_API_SERVER,EXIT_FAILURE,EXIT_OK,EXIT_USAGE}from"./chunk-UFND7FBC.js";import{stripTerminalControls}from"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";import*as fs from"fs";var DEFAULT_CHARTER_FILE="CONSTITUTION.md";async function runCharterCommand(deps,opts){const out=deps.out??(t=>void process.stdout.write(stripTerminalControls(t)));const err=deps.err??(t=>void process.stderr.write(stripTerminalControls(t)));const readFile=deps.readFile??readUtf8Strict;const writeFile=deps.writeFile??((p,c)=>fs.writeFileSync(p,c,"utf8"));const exists=deps.exists??(p=>fs.existsSync(p));return opts.op==="push"?push(deps.api,opts,{out,err,readFile}):pull(deps.api,opts,{out,err,readFile,
3
+ import{apiExit,currentRevisionOf,errorDetail,pickNumber,printDiff,readUtf8Strict,shellQuote}from"./chunk-A4LFG7MW.js";import"./chunk-VRBI2NPI.js";import{EXIT_API_SERVER,EXIT_FAILURE,EXIT_OK,EXIT_USAGE}from"./chunk-VFPY2A23.js";import{stripTerminalControls}from"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";import*as fs from"fs";var DEFAULT_CHARTER_FILE="CONSTITUTION.md";async function runCharterCommand(deps,opts){const out=deps.out??(t=>void process.stdout.write(stripTerminalControls(t)));const err=deps.err??(t=>void process.stderr.write(stripTerminalControls(t)));const readFile=deps.readFile??readUtf8Strict;const writeFile=deps.writeFile??((p,c)=>fs.writeFileSync(p,c,"utf8"));const exists=deps.exists??(p=>fs.existsSync(p));return opts.op==="push"?push(deps.api,opts,{out,err,readFile}):pull(deps.api,opts,{out,err,readFile,
4
4
  writeFile,exists})}async function push(api,opts,io){if(opts.file===void 0){io.err("--file <\u30D1\u30B9> \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u4F8B: --file CONSTITUTION.md\uFF09\n");return EXIT_USAGE}let expected;if(opts.revision!==void 0){if(!/^\d+$/.test(opts.revision)){io.err(`--revision \u306F0\u4EE5\u4E0A\u306E\u6574\u6570\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044: ${opts.revision}
5
5
  `);return EXIT_USAGE}if(!opts.yes){io.err("--revision \u306F --yes \u3068\u4E00\u7DD2\u306B\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08--yes \u306A\u3057\u3067\u306F\u767B\u9332\u3057\u307E\u305B\u3093\uFF09\n");return EXIT_USAGE}expected=Number(opts.revision)}let local;try{local=io.readFile(opts.file)}catch(e){io.err(`\u30D5\u30A1\u30A4\u30EB\u3092\u8AAD\u3081\u307E\u305B\u3093: ${opts.file}\uFF08${e.message}\uFF09
6
6
  `);return EXIT_USAGE}const current=await fetchState(api,io.err);if(typeof current==="number")return current;const before=current.charter??"";if(current.charter!==null&&current.charter===local){io.out(`\u5DEE\u5206\u306F\u3042\u308A\u307E\u305B\u3093\uFF08revision ${current.revision}\uFF09\u3002\u767B\u9332\u3057\u307E\u305B\u3093\u3067\u3057\u305F\u3002
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{readBody}from"./chunk-ORUDW52G.js";import{WORKFLOWS_PATH}from"./chunk-BS2ACFJA.js";import{UUID_RE,isSafePathSegment}from"./chunk-GMBJTG6A.js";import{LIST_FLAGS,LIST_PAGING_HELP,envelopePaging,nonEmpty,positiveInteger}from"./chunk-IOGMOXYF.js";import{requireResolved,singleRef,withResolved}from"./chunk-LXIAOCUW.js";import{acknowledgement,isRecord,pick}from"./chunk-VTQAI52S.js";import{ApiResponseError,UsageError}from"./chunk-UFND7FBC.js";var WORKFLOW_FLAG={name:"--workflow",summary:"\u7533\u8ACB\u66F8\uFF08\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\uFF09\u306E\u540D\u524D\u304B ID \u3067\u7D5E\u308A\u8FBC\u3080",takesValue:true,placeholder:"<\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC>"};var CATEGORIES={undefined:"\u6C4E\u7528",paid_holiday:"\u6709\u7D66\u4F11\u6687",substitute_holiday:"\u632F\u66FF\u4F11\u6687",comp_holiday:"\u4EE3\u4F11",absence:"\u6B20\u52E4",special_holiday:"\u7279\u5225\u4F11\u6687",other_leave:"\u305D\u306E\u4ED6\u4F11\u6687\u30FB\u6B20\u52E4",
3
+ import{readBody}from"./chunk-6LSQCOCJ.js";import{WORKFLOWS_PATH}from"./chunk-Q2KIETMB.js";import{UUID_RE,isSafePathSegment}from"./chunk-GMBJTG6A.js";import{LIST_FLAGS,LIST_PAGING_HELP,envelopePaging,nonEmpty,positiveInteger}from"./chunk-MI6HVYR2.js";import{requireResolved,singleRef,withResolved}from"./chunk-PS5QFKHB.js";import{acknowledgement,isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";var WORKFLOW_FLAG={name:"--workflow",summary:"\u7533\u8ACB\u66F8\uFF08\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\uFF09\u306E\u540D\u524D\u304B ID \u3067\u7D5E\u308A\u8FBC\u3080",takesValue:true,placeholder:"<\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC>"};var CATEGORIES={undefined:"\u6C4E\u7528",paid_holiday:"\u6709\u7D66\u4F11\u6687",substitute_holiday:"\u632F\u66FF\u4F11\u6687",comp_holiday:"\u4EE3\u4F11",absence:"\u6B20\u52E4",special_holiday:"\u7279\u5225\u4F11\u6687",other_leave:"\u305D\u306E\u4ED6\u4F11\u6687\u30FB\u6B20\u52E4",
4
4
  sales:"\u53D6\u5F15",commuting_expenses:"\u901A\u52E4\u4EA4\u901A\u8CBB",cms_publish:"\u30B3\u30F3\u30C6\u30F3\u30C4\u516C\u958B",equipment_lending:"\u5099\u54C1\u8CB8\u51FA",ai_tool_license:"AI\u30C4\u30FC\u30EB\u30E9\u30A4\u30BB\u30F3\u30B9",qualification_bonus:"\u5408\u683C\u304A\u795D\u3044\u91D1"};var CATEGORY_HELP=`\u30AB\u30C6\u30B4\u30EA: ${Object.entries(CATEGORIES).map(([key,label])=>`${key}\uFF08${label}\uFF09`).join(" / ")}`;var WORKFLOW_STATUSES=["active","inactive","draft"];var INSTANCE_STATUSES=[
5
5
  "new","in_progress","approved","rejected","canceled","sent_back"];var INSTANCE_STATUS_HELP="\u72B6\u614B: new\uFF08\u4E0B\u66F8\u304D\uFF09/ in_progress\uFF08\u627F\u8A8D\u5F85\u3061\uFF09/ approved\uFF08\u627F\u8A8D\u6E08\u307F\uFF09/ rejected\uFF08\u5374\u4E0B\uFF09/ canceled\uFF08\u53D6\u6D88\uFF09/ sent_back\uFF08\u5DEE\u3057\u623B\u3057\uFF09";var WORKFLOW_COLUMNS=["id","name","defined_category","status","is_hidden","valid_from","valid_to"];var WORKFLOW_ADMIN_COLUMNS=[...WORKFLOW_COLUMNS,"s\
6
6
  tep_count"];var WORKFLOW_GET_COLUMNS=["id","name","defined_category","status","is_hidden","valid_from","valid_to","description"];var INSTANCE_COLUMNS=["id","title","workflow_name","status","current_step_no","applicant_name","applied_at","completed_at"];var INSTANCE_GET_COLUMNS=["id","title","workflow_id","workflow_name","status","current_step_no","applicant_name","applied_at","completed_at","can_approve","is_editable","is_cancelable"];var PENDING_COLUMNS=["id","title","workflow_name","applicant_\
@@ -1,5 +1,5 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{isSafePathSegment}from"./chunk-GMBJTG6A.js";import{requireResolved,singleRef,withResolved}from"./chunk-LXIAOCUW.js";import{ApiResponseError}from"./chunk-UFND7FBC.js";var USER_REF_HELP="<\u30E6\u30FC\u30B6\u30FC> \u306F ID\u30FB\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\u30FB\u793E\u54E1\u756A\u53F7\u30FB\u6C0F\u540D\u30FBme\uFF08\u81EA\u5206\uFF09\u306E\u3069\u308C\u3067\u3082\u6307\u5B9A\u3067\u304D\u307E\u3059\u3002\n\u6C0F\u540D\u306F\u5B8C\u5168\u4E00\u81F4\u30671\u4EBA\u306B\u7D5E\u308C\u305F\u3068\u304D\u3060\u3051\u53D7\u3051\u4ED8\u3051\u307E\u3059\uFF08\u540C\u59D3\u540C\u540D\u306A\u3089\u5019\u88DC\u3092\u51FA\u3057\u3066\u6B62\u307E\u308B\u306E\u3067\u3001\n\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\u304B\u793E\u54E1\u756A\u53F7\u3067\u6307\u5B9A\u3057\u76F4\u3057\u3066\u304F\u3060\u3055\u3044\uFF09\u3002ID \u4EE5\u5916\u306F\u3001\u30C6\u30CA\u30F3\u30C8\u306E\u30E6\u30FC\u30B6\u30FC\u4E00\u89A7\n\uFF08\u65E2\u5B9A10\u5206\u30AD\u30E3\u30C3\u30B7\u30E5\u30FB--refresh \u3067\u53D6\u308A\u76F4\u3057\uFF09\u3068\u7167\u5408\u3057\u307E\u3059\u3002\n\u8868\u793A\u30D5\u30E9\u30B0\u3092\u5916\u3057\u305F\u30E6\u30FC\u30B6\u30FC\u306F\u793E\u54E1\u756A\u53F7\u3067\u306F\u5F15\u3051\u307E\u305B\u3093\u3002\u7D44\u7E54\u7BA1\u7406\u8005\u3067\u306A\u3044\u5834\u5408\u306F ID \u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002";
3
+ import{isSafePathSegment}from"./chunk-GMBJTG6A.js";import{requireResolved,singleRef,withResolved}from"./chunk-PS5QFKHB.js";import{ApiResponseError}from"./chunk-VFPY2A23.js";var USER_REF_HELP="<\u30E6\u30FC\u30B6\u30FC> \u306F ID\u30FB\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\u30FB\u793E\u54E1\u756A\u53F7\u30FB\u6C0F\u540D\u30FBme\uFF08\u81EA\u5206\uFF09\u306E\u3069\u308C\u3067\u3082\u6307\u5B9A\u3067\u304D\u307E\u3059\u3002\n\u6C0F\u540D\u306F\u5B8C\u5168\u4E00\u81F4\u30671\u4EBA\u306B\u7D5E\u308C\u305F\u3068\u304D\u3060\u3051\u53D7\u3051\u4ED8\u3051\u307E\u3059\uFF08\u540C\u59D3\u540C\u540D\u306A\u3089\u5019\u88DC\u3092\u51FA\u3057\u3066\u6B62\u307E\u308B\u306E\u3067\u3001\n\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\u304B\u793E\u54E1\u756A\u53F7\u3067\u6307\u5B9A\u3057\u76F4\u3057\u3066\u304F\u3060\u3055\u3044\uFF09\u3002ID \u4EE5\u5916\u306F\u3001\u30C6\u30CA\u30F3\u30C8\u306E\u30E6\u30FC\u30B6\u30FC\u4E00\u89A7\n\uFF08\u65E2\u5B9A10\u5206\u30AD\u30E3\u30C3\u30B7\u30E5\u30FB--refresh \u3067\u53D6\u308A\u76F4\u3057\uFF09\u3068\u7167\u5408\u3057\u307E\u3059\u3002\n\u8868\u793A\u30D5\u30E9\u30B0\u3092\u5916\u3057\u305F\u30E6\u30FC\u30B6\u30FC\u306F\u793E\u54E1\u756A\u53F7\u3067\u306F\u5F15\u3051\u307E\u305B\u3093\u3002\u7D44\u7E54\u7BA1\u7406\u8005\u3067\u306A\u3044\u5834\u5408\u306F ID \u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002";
4
4
  function userPath(input,suffix=""){const userId=requireResolved(input,"userId");if(!isSafePathSegment(userId)){throw new ApiResponseError(`\u30B5\u30FC\u30D0\u304C\u8FD4\u3057\u305F\u30E6\u30FC\u30B6\u30FC ID \u3092\u30D1\u30B9\u306B\u4F7F\u3048\u307E\u305B\u3093: ${userId}\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}return`${encodeURIComponent(userId)}${suffix}`}var USER_REF_FLAG={name:"--user",summary:"\u5BFE\u8C61\u306E\u30E6\u30FC\u30B6\u30FC\uFF08\u4F4D\u7F6E\u5F15\u6570\u306E\u4EE3\u308F\u308A\u306B\u4F7F\u3048\u308B\uFF09",
5
5
  takesValue:true,placeholder:"<\u30E6\u30FC\u30B6\u30FC>"};async function prepareUser(input,ctx,usage){const ref=singleRef(input,{flag:"--user",label:"\u30E6\u30FC\u30B6\u30FC",usage});const user=await ctx.resolver.user(ref);return withResolved(input,{userId:user.id})}export{USER_REF_HELP,userPath,USER_REF_FLAG,prepareUser};
@@ -1,4 +1,4 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{ApiResponseError}from"./chunk-UFND7FBC.js";function isRecord(value){return typeof value==="object"&&value!==null&&!Array.isArray(value)}function pick(row,columns){const source=isRecord(row)?row:{};const out={};for(const column of columns)out[column]=source[column]??null;return out}function acknowledgement(body,label){if(!isRecord(body)||body["result"]!==true){throw new ApiResponseError(`${label}\u306E\u5FDC\u7B54\u304C\u60F3\u5B9A\u306E\u5F62\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}
3
+ import{ApiResponseError}from"./chunk-VFPY2A23.js";function isRecord(value){return typeof value==="object"&&value!==null&&!Array.isArray(value)}function pick(row,columns){const source=isRecord(row)?row:{};const out={};for(const column of columns)out[column]=source[column]??null;return out}function acknowledgement(body,label){if(!isRecord(body)||body["result"]!==true){throw new ApiResponseError(`${label}\u306E\u5FDC\u7B54\u304C\u60F3\u5B9A\u306E\u5F62\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}
4
4
  return{result:true,message:body["message"]??null}}export{isRecord,pick,acknowledgement};
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{checkUploadQuota}from"./chunk-2YNZ4MRT.js";import{isSafePathSegment,safeProjectIdPolicy}from"./chunk-GMBJTG6A.js";import{PRIVATE_PROJECT_REF,isPrivateProjectRef}from"./chunk-GY7KI5E5.js";import{PRIVATE_TASK_KEY_PREFIX,isPrivateTaskKey,isTaskKey}from"./chunk-II5RVJQN.js";import{requireResolved,singleRef,withResolved}from"./chunk-LXIAOCUW.js";import{isRecord,pick}from"./chunk-VTQAI52S.js";import{ApiResponseError,UsageError}from"./chunk-UFND7FBC.js";function classifyTaskRef(ref){const value=ref.trim();if(safeProjectIdPolicy.isDirectId(value))return{kind:"id",value};if(isTaskKey(value))return{kind:"key",value};return{kind:"unknown",value}}function wantsPrivateSurface(input){const project=input.flags.get("--project");return project!==void 0&&isPrivateProjectRef(project)}function taskSurface(input,ref){const project=input.flags.get("--project");const{kind,value}=classifyTaskRef(ref);if(project!==void 0&&isPrivateProjectRef(project)){if(kind===
3
+ import{isSafePathSegment,safeProjectIdPolicy}from"./chunk-GMBJTG6A.js";import{checkUploadQuota}from"./chunk-V64CGX7V.js";import{PRIVATE_PROJECT_REF,isPrivateProjectRef}from"./chunk-GY7KI5E5.js";import{PRIVATE_TASK_KEY_PREFIX,isPrivateTaskKey,isTaskKey}from"./chunk-II5RVJQN.js";import{requireResolved,singleRef,withResolved}from"./chunk-PS5QFKHB.js";import{isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";function classifyTaskRef(ref){const value=ref.trim();if(safeProjectIdPolicy.isDirectId(value))return{kind:"id",value};if(isTaskKey(value))return{kind:"key",value};return{kind:"unknown",value}}function wantsPrivateSurface(input){const project=input.flags.get("--project");return project!==void 0&&isPrivateProjectRef(project)}function taskSurface(input,ref){const project=input.flags.get("--project");const{kind,value}=classifyTaskRef(ref);if(project!==void 0&&isPrivateProjectRef(project)){if(kind===
4
4
  "key"&&!isPrivateTaskKey(value)){throw new UsageError(`--project ${PRIVATE_PROJECT_REF}\uFF08\u500B\u4EBA\u30BF\u30B9\u30AF\uFF09\u306B ${value} \u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093`,`\u500B\u4EBA\u30BF\u30B9\u30AF\u306E\u30AD\u30FC\u306F ${PRIVATE_TASK_KEY_PREFIX}-<\u756A\u53F7> \u306E\u5F62\u3067\u3059\u3002ID\uFF08UUID / ULID\uFF09\u3067\u3082\u6307\u5B9A\u3067\u304D\u307E\u3059\u3002
5
5
  \u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u30BF\u30B9\u30AF\u3092\u6307\u3059\u306A\u3089 --project ${PRIVATE_PROJECT_REF} \u3092\u5916\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}return"private"}if(kind==="key"&&isPrivateTaskKey(value)&&project===void 0){throw new UsageError(`${value} \u306F\u500B\u4EBA\u30BF\u30B9\u30AF\u306E\u30AD\u30FC\u306B\u3082\u3001\u30B3\u30FC\u30C9 ${PRIVATE_TASK_KEY_PREFIX} \u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u30BF\u30B9\u30AF\u30AD\u30FC\u306B\u3082\u8AAD\u3081\u307E\u3059`,
6
6
  `\u3069\u3061\u3089\u3092\u6307\u3059\u304B --project \u3067\u9078\u3093\u3067\u304F\u3060\u3055\u3044\u3002
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{graphNextCursor,ms365NotConnectedGuidance}from"./chunk-3HH5IYNO.js";import{LIST_FLAGS}from"./chunk-IOGMOXYF.js";import{isRecord}from"./chunk-VTQAI52S.js";import{ApiResponseError,UsageError}from"./chunk-UFND7FBC.js";function graphData(body,label){const data=isRecord(body)?body["data"]:void 0;if(!isRecord(data)){throw new ApiResponseError(`${label}\u306E\u5FDC\u7B54\u306B data \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}return data}function graphValue(body,label){const value=graphData(body,label)["value"];if(!Array.isArray(value)){throw new ApiResponseError(`${label}\u306E\u5FDC\u7B54\u306B data.value \u914D\u5217\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}
3
+ import{graphNextCursor,ms365NotConnectedGuidance}from"./chunk-QBGEYQ2I.js";import{LIST_FLAGS}from"./chunk-MI6HVYR2.js";import{isRecord}from"./chunk-3ZRMMBP5.js";import{ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";function graphData(body,label){const data=isRecord(body)?body["data"]:void 0;if(!isRecord(data)){throw new ApiResponseError(`${label}\u306E\u5FDC\u7B54\u306B data \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}return data}function graphValue(body,label){const value=graphData(body,label)["value"];if(!Array.isArray(value)){throw new ApiResponseError(`${label}\u306E\u5FDC\u7B54\u306B data.value \u914D\u5217\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}
4
4
  return value}function readGraphCursor(body,label,kind){const next=graphData(body,label)["@odata.nextLink"];if(next===void 0||next===null)return{hasMore:false,cursor:null};const parsed=typeof next==="string"?graphNextCursor(next):null;if(parsed===null||kind!=="either"&&parsed.kind!==kind){return{hasMore:"@odata.nextLink \u304B\u3089\u7D9A\u304D\u306E\u5024\u3092\u53D6\u308A\u51FA\u305B\u307E\u305B\u3093",cursor:void 0}}return{hasMore:true,cursor:parsed.value}}function graphPaging(options){const{label,
5
5
  kind}=options;return{cursorParam:kind==="either"?"skiptoken":kind,...options.cursorParamFor!==void 0?{cursorParamFor:options.cursorParamFor}:{},items:body=>graphValue(body,label),readCursor:body=>readGraphCursor(body,label,kind),nextCursor(body){const{hasMore,cursor}=readGraphCursor(body,label,kind);if(hasMore===false)return null;if(hasMore!==true||typeof cursor!=="string"||cursor===""){throw new ApiResponseError(`${label}\u306E\u5FDC\u7B54\u306B\u7D9A\u304D\uFF08@odata.nextLink\uFF09\u304C\u3042\u308A\u307E\u3059\u304C\u3001\u7D9A\u304D\u306E\u5024\u3092\u8AAD\u3081\u307E\u305B\u3093\u3002\u5168\u4EF6\u3092\u53D6\u5F97\u3067\u304D\u306A\u3044\u305F\u3081\u4E2D\u65AD\u3057\u307E\u3057\u305F\u3002`)}
6
6
  return cursor},withItems(body,merged){const data=graphData(body,label);graphValue(body,label);const seen=new Set;const unique=merged.filter(row=>{const id=isRecord(row)?row["id"]:void 0;if(typeof id!=="string")return true;if(seen.has(id))return false;seen.add(id);return true});return{...body,data:{...data,value:unique,[DUPLICATES_KEY]:merged.length-unique.length}}}}}var DUPLICATES_KEY="@twp.duplicatesRemoved";function graphPagingNotes(body,label){const removed=graphData(body,label)[DUPLICATES_KEY];
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{UsageError}from"./chunk-UFND7FBC.js";import fs from"fs";var BOM="\uFEFF";async function readStdin(spec){if(process.stdin.isTTY===true){throw new UsageError(`${spec.fileFlag} - \u306F\u6A19\u6E96\u5165\u529B\u304B\u3089\u8AAD\u307F\u307E\u3059\u304C\u3001\u7AEF\u672B\u304C\u7E4B\u304C\u3063\u3066\u3044\u307E\u3059`,`\u30D1\u30A4\u30D7\u304B\u30EA\u30C0\u30A4\u30EC\u30AF\u30C8\u3067\u6E21\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u4F8B: cat review.md | twp \u2026 ${spec.fileFlag} -\uFF09\u3002`)}const chunks=[];for await(const chunk of process.stdin)chunks.
3
+ import{UsageError}from"./chunk-VFPY2A23.js";import fs from"fs";var BOM="\uFEFF";async function readStdin(spec){if(process.stdin.isTTY===true){throw new UsageError(`${spec.fileFlag} - \u306F\u6A19\u6E96\u5165\u529B\u304B\u3089\u8AAD\u307F\u307E\u3059\u304C\u3001\u7AEF\u672B\u304C\u7E4B\u304C\u3063\u3066\u3044\u307E\u3059`,`\u30D1\u30A4\u30D7\u304B\u30EA\u30C0\u30A4\u30EC\u30AF\u30C8\u3067\u6E21\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u4F8B: cat review.md | twp \u2026 ${spec.fileFlag} -\uFF09\u3002`)}const chunks=[];for await(const chunk of process.stdin)chunks.
4
4
  push(Buffer.from(chunk));return Buffer.concat(chunks).toString("utf8")}function charCount(text){return[...text].length}async function readBody(input,spec){const inline=input.flags.get(spec.flag);const file=input.flags.get(spec.fileFlag);if(inline!==void 0&&file!==void 0){throw new UsageError(`${spec.label}\u304C ${spec.flag} \u3068 ${spec.fileFlag} \u306E\u4E21\u65B9\u3067\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u3059`,`\u3069\u3061\u3089\u304B\u4E00\u65B9\u3060\u3051\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08${spec.
5
5
  fileFlag} - \u3067\u6A19\u6E96\u5165\u529B\u304B\u3089\u8AAD\u3081\u307E\u3059\uFF09\u3002`)}if(inline===void 0&&file===void 0)return void 0;const text=inline??await readFrom(file,spec);const stripped=text.startsWith(BOM)?text.slice(BOM.length):text;if(stripped.trim()===""){throw new UsageError(`${spec.label}\u304C\u7A7A\u3067\u3059\uFF08${inline!==void 0?spec.flag:`${spec.fileFlag} ${file}`}\uFF09`,spec.usage)}const count=charCount(stripped);if(count>spec.maxChars){throw new UsageError(`${spec.
6
6
  label}\u304C\u9577\u3059\u304E\u307E\u3059\uFF08${count} \u6587\u5B57\u30FB\u4E0A\u9650 ${spec.maxChars} \u6587\u5B57\uFF09`,"\u5206\u5272\u3057\u3066\u6295\u7A3F\u3059\u308B\u304B\u3001\u8A73\u7D30\u306F\u6DFB\u4ED8\u30D5\u30A1\u30A4\u30EB\u306B\u3057\u3066\u304F\u3060\u3055\u3044\u3002")}return stripped}async function readFrom(file,spec){if(file==="-")return readStdin(spec);try{const stat=fs.statSync(file);if(!stat.isFile()){throw new UsageError(`${spec.label}\u306B\u901A\u5E38\u306E\u30D5\u30A1\u30A4\u30EB\u4EE5\u5916\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093: ${file}`,
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{splitFlagToken}from"./chunk-QQRJLH6B.js";import{UsageError}from"./chunk-UFND7FBC.js";function parseOperationArgs(argv,specs){const byName=new Map(specs.map(spec=>[spec.name,spec]));const args=[];const flags=new Map;const repeated=new Map;let positionalOnly=false;for(let i=0;i<argv.length;i+=1){const arg=argv[i];if(arg===void 0)continue;if(!positionalOnly&&arg==="--"){positionalOnly=true;continue}if(positionalOnly||!arg.startsWith("-")||arg==="-"){args.push(arg);continue}const{name,value:inline}=splitFlagToken(arg);const spec=byName.get(name);if(spec===void 0){const shortEquals=!arg.
3
+ import{splitFlagToken}from"./chunk-QQRJLH6B.js";import{UsageError}from"./chunk-VFPY2A23.js";function parseOperationArgs(argv,specs){const byName=new Map(specs.map(spec=>[spec.name,spec]));const args=[];const flags=new Map;const repeated=new Map;let positionalOnly=false;for(let i=0;i<argv.length;i+=1){const arg=argv[i];if(arg===void 0)continue;if(!positionalOnly&&arg==="--"){positionalOnly=true;continue}if(positionalOnly||!arg.startsWith("-")||arg==="-"){args.push(arg);continue}const{name,value:inline}=splitFlagToken(arg);const spec=byName.get(name);if(spec===void 0){const shortEquals=!arg.
4
4
  startsWith("--")&&arg.includes("=");throw new UsageError(`\u4E0D\u660E\u306A\u30AA\u30D7\u30B7\u30E7\u30F3: ${arg}`,shortEquals?`\u77ED\u3044\u30D5\u30E9\u30B0\u306B = \u306F\u4F7F\u3048\u307E\u305B\u3093\u3002\u7A7A\u767D\u3067\u533A\u5207\u3063\u3066\u304F\u3060\u3055\u3044: ${arg.replace("="," ")}`:void 0)}if(spec.repeatable!==true&&flags.has(name)){throw new UsageError(`${name} \u304C\u8907\u6570\u56DE\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u3059`)}if(!spec.takesValue){if(inline!==void 0){
5
5
  throw new UsageError(`${name} \u306F\u5024\u3092\u53D6\u308A\u307E\u305B\u3093`,`${name} \u306F\u6307\u5B9A\u306E\u6709\u7121\u3060\u3051\u304C\u610F\u5473\u3092\u6301\u3061\u307E\u3059\u3002`)}flags.set(name,"");continue}if(inline!==void 0){addValue(flags,repeated,spec,name,inline);continue}const next=argv[i+1];if(next===void 0||next.startsWith("-")&&next!=="-"){throw new UsageError(`${name} \u306B\u306F\u5024\u304C\u5FC5\u8981\u3067\u3059`,`\`-\` \u3067\u59CB\u307E\u308B\u5024\u306F ${name}=\u5024 \
6
6
  \u306E\u5F62\u3067\u6E21\u305B\u307E\u3059\u3002`)}addValue(flags,repeated,spec,name,next);i+=1}return repeated.size>0?{args,flags,repeated}:{args,flags}}function addValue(flags,repeated,spec,name,value){if(spec.repeatable!==true){flags.set(name,value);return}const bucket=repeated.get(name);if(bucket===void 0)repeated.set(name,[value]);else bucket.push(value)}function repeatedValues(input,name){return input.repeated?.get(name)??[]}export{parseOperationArgs,repeatedValues};