@tocca-systems/twp-cli 0.72.0 → 0.74.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 (105) hide show
  1. package/CHANGELOG.public.md +22 -0
  2. package/README.md +53 -9
  3. package/dist/{agent-C37HJDJY.js → agent-6E62JWPN.js} +2 -2
  4. package/dist/{agent-loop-XFYCEK5S.js → agent-loop-UTS4MYW6.js} +2 -2
  5. package/dist/{ai-dispatch-GONY4JAY.js → ai-dispatch-OAT752RN.js} +1 -1
  6. package/dist/{analysis-THRX37XW.js → analysis-MVKADQHU.js} +2 -2
  7. package/dist/{announcement-4R7XFO5W.js → announcement-BFQAI6UE.js} +2 -2
  8. package/dist/{api-command-YMEYR2LG.js → api-command-46GLOIHL.js} +3 -3
  9. package/dist/{app-37IMKCQZ.js → app-SQZCZANA.js} +4 -4
  10. package/dist/{attendance-correct-Z5BGCSCL.js → attendance-correct-72KQR4UG.js} +2 -2
  11. package/dist/{attendance-lists-357A3O5Y.js → attendance-lists-6RP7UGA5.js} +1 -1
  12. package/dist/{backlog-KF63TCEG.js → backlog-22NXQQDL.js} +1 -1
  13. package/dist/budget-LJY3YFVB.js +4 -0
  14. package/dist/business-hours-I4X6YQS3.js +18 -0
  15. package/dist/{chunk-DAXVAUV4.js → chunk-2YVJ3QVJ.js} +1 -1
  16. package/dist/{chunk-DFHOCPA5.js → chunk-3QQF4MOB.js} +2 -2
  17. package/dist/{chunk-AGI5KT4C.js → chunk-3WFZOOXZ.js} +1 -1
  18. package/dist/{chunk-VEA72AKG.js → chunk-46Q7TUND.js} +1 -1
  19. package/dist/{chunk-MVZFZAT4.js → chunk-4B6GJBYP.js} +47 -44
  20. package/dist/{chunk-I4TR55UF.js → chunk-5KJ5OIKI.js} +1 -1
  21. package/dist/{chunk-K4JE26L6.js → chunk-5P22UEUF.js} +1 -1
  22. package/dist/{chunk-Z6T5M3NJ.js → chunk-5SPWQAUX.js} +2 -2
  23. package/dist/{chunk-ARB4QFWO.js → chunk-7SYIYLHX.js} +1 -1
  24. package/dist/{chunk-UXEYWMPO.js → chunk-BKE3BFIQ.js} +2 -2
  25. package/dist/{chunk-HPPIVCK3.js → chunk-C7MO3RHJ.js} +7 -4
  26. package/dist/{chunk-A3FJEUDB.js → chunk-D37WSWBT.js} +1 -1
  27. package/dist/chunk-DMXMQGGZ.js +11 -0
  28. package/dist/{chunk-VIWQMDGG.js → chunk-DYNNGNXR.js} +1 -1
  29. package/dist/{chunk-MP6YIILX.js → chunk-FHOJFKR3.js} +12 -11
  30. package/dist/{chunk-CCHPF23L.js → chunk-GAXJPIKO.js} +1 -1
  31. package/dist/{chunk-7PDUN5MS.js → chunk-GTRKN2YS.js} +1 -1
  32. package/dist/{chunk-WYYHMKF7.js → chunk-HOLKWMS2.js} +1 -1
  33. package/dist/{chunk-NBOA4T7F.js → chunk-J2NRDFCR.js} +1 -1
  34. package/dist/{chunk-UGDB4QTS.js → chunk-J3KV6LAX.js} +1 -1
  35. package/dist/{budget-W7JXDJ4J.js → chunk-JIOZ47AX.js} +2 -3
  36. package/dist/{chunk-UFGJSWKU.js → chunk-LDBYJPRD.js} +1 -1
  37. package/dist/{chunk-BBOWZVCC.js → chunk-MNJYY3PR.js} +1 -1
  38. package/dist/{chunk-QVID3GT4.js → chunk-MSVJ53VZ.js} +1 -1
  39. package/dist/{chunk-45OL54MY.js → chunk-OO7GDI2D.js} +1 -1
  40. package/dist/{chunk-YXVN6OCH.js → chunk-PO35MCYP.js} +1 -1
  41. package/dist/{chunk-T3C2BAVA.js → chunk-QQCWGMZN.js} +1 -1
  42. package/dist/{chunk-2CIQOXPK.js → chunk-R5UIH2SI.js} +1 -1
  43. package/dist/chunk-RCRFLVJ6.js +117 -0
  44. package/dist/{chunk-XF4DN44V.js → chunk-SCHQHPI2.js} +2 -2
  45. package/dist/chunk-W4E4F2ZA.js +4 -0
  46. package/dist/{chunk-IVKWLJCY.js → chunk-YA7W7OV4.js} +1 -1
  47. package/dist/cli.js +44 -8
  48. package/dist/{commands-GMUQCBFQ.js → commands-U52UBWSU.js} +2 -2
  49. package/dist/{commands-MYGPEYBE.js → commands-ZCXAJXHW.js} +40 -38
  50. package/dist/{company-W2OBOOKJ.js → company-UYDQAJ5O.js} +3 -3
  51. package/dist/{completion-EMY4WDII.js → completion-YBKZ3GXD.js} +1 -1
  52. package/dist/{contract-LTQVLI7A.js → contract-PJRMXIXY.js} +2 -2
  53. package/dist/{department-GZBKUFON.js → department-JFHUX32Y.js} +1 -1
  54. package/dist/{deposit-HCMV2MBU.js → deposit-YSCEG5QY.js} +2 -2
  55. package/dist/{domain-knowledge-32TTPFVY.js → domain-knowledge-HJHKFS3S.js} +1 -1
  56. package/dist/{estimate-ILUXZJG3.js → estimate-ZY3NFOY2.js} +3 -3
  57. package/dist/{evaluation-PE7QHATW.js → evaluation-MQ7USYDU.js} +1 -1
  58. package/dist/{expense-K2JPBP2M.js → expense-2EDPVAQL.js} +2 -2
  59. package/dist/{fiscal-year-XY4KA67D.js → fiscal-year-5S74MAHA.js} +1 -1
  60. package/dist/holiday-PFBME3RI.js +48 -0
  61. package/dist/{inquiry-FEQWFU7Z.js → inquiry-LVJE53LY.js} +1 -1
  62. package/dist/{invoice-WOQZUL66.js → invoice-JJ46ZXMJ.js} +2 -2
  63. package/dist/{job-title-CDAMB4Q2.js → job-title-PFLVTRNO.js} +1 -1
  64. package/dist/{knowledge-VM6P4XDQ.js → knowledge-43B64GGG.js} +99 -35
  65. package/dist/{leave-TEXQJURZ.js → leave-6L3CTABK.js} +2 -2
  66. package/dist/{license-ZSZM5OSK.js → license-HHAOMEWC.js} +2 -2
  67. package/dist/{logout-guard-3B767ADS.js → logout-guard-IWHF33DM.js} +1 -1
  68. package/dist/{media-TAS7FF5K.js → media-YEWKZ2QS.js} +3 -3
  69. package/dist/{notification-T46TUUMO.js → notification-LNRNOLVW.js} +1 -1
  70. package/dist/{oneshot-XRN744YK.js → oneshot-7H3SFK7Q.js} +1 -1
  71. package/dist/{outlook-KYTXHDAV.js → outlook-YG7GFF44.js} +1 -1
  72. package/dist/{plan-submit-YBTGYQD7.js → plan-submit-CZRVVZZB.js} +1 -1
  73. package/dist/{position-BKZQH6A3.js → position-YFC6XZQL.js} +1 -1
  74. package/dist/{project-KL4DH2XE.js → project-3RTD63II.js} +2 -2
  75. package/dist/{prospect-BEB5AXPM.js → prospect-5EXTP5D2.js} +2 -2
  76. package/dist/{purchase-P37K6MVO.js → purchase-KJ3XVCXG.js} +3 -3
  77. package/dist/{receivable-5N3KL3L4.js → receivable-LF3DYPOO.js} +2 -2
  78. package/dist/{redmine-K7A7AEUA.js → redmine-6FJPODIM.js} +1 -1
  79. package/dist/{registry-GGKX3MCP.js → registry-5IKYCMRP.js} +1 -1
  80. package/dist/{render-YD4B7OH5.js → render-4SBLHU4J.js} +1 -1
  81. package/dist/{report-PZ4GMMK2.js → report-TDPP7SF7.js} +1 -1
  82. package/dist/{run-65IJLMKQ.js → run-EQQOJ76O.js} +2 -2
  83. package/dist/{sales-ai-review-NBNSHUUP.js → sales-ai-review-WIVJOOFW.js} +2 -2
  84. package/dist/{sales-master-23PVQUTQ.js → sales-master-SJSFHAT6.js} +2 -2
  85. package/dist/{sales-numbering-FQ7YPQME.js → sales-numbering-EWYVI3RF.js} +2 -2
  86. package/dist/{search-NYY22NHK.js → search-FCXHO5NB.js} +1 -1
  87. package/dist/{segment-2C3MYZCV.js → segment-3Q64YOMR.js} +1 -1
  88. package/dist/{server-settings-ELHHMBBK.js → server-settings-WH4F2SLC.js} +1 -1
  89. package/dist/{setup-74LO2SXN.js → setup-H22WRMPN.js} +1 -1
  90. package/dist/skill-MWYX74XM.js +4 -0
  91. package/dist/{skill-check-2ILLHGDQ.js → skill-check-YVIMYT2H.js} +1 -1
  92. package/dist/{skill-manage-command-HPJQOTQK.js → skill-manage-command-QYJLCLDK.js} +2 -2
  93. package/dist/{supplier-payment-G2BGSGLA.js → supplier-payment-H4E65YFZ.js} +2 -2
  94. package/dist/{support-E3PBMVG4.js → support-CCE7DP2O.js} +2 -2
  95. package/dist/{task-N6OVWNAT.js → task-OA6YUFL3.js} +42 -24
  96. package/dist/{teams-QRVCFJS4.js → teams-AUFHZRDH.js} +1 -1
  97. package/dist/{user-VODWJQZI.js → user-KQX327AS.js} +3 -3
  98. package/dist/{user-contract-type-7AVII6SV.js → user-contract-type-KS3HMLHY.js} +1 -1
  99. package/dist/{worker-agent-KRMY2RKK.js → worker-agent-BEH65D3X.js} +1 -1
  100. package/dist/{workflow-GWEN7NSQ.js → workflow-EBAADQLR.js} +2 -2
  101. package/package.json +1 -1
  102. package/dist/chunk-35MQ27I6.js +0 -4
  103. package/dist/chunk-5VZ54H2J.js +0 -11
  104. package/dist/chunk-6UPLPTBP.js +0 -58
  105. package/dist/skill-RKCTUJHW.js +0 -4
@@ -11,6 +11,28 @@
11
11
  `CHANGELOG.md` に残してあります。顧客向けの履歴は public 公開以降を対象とします。
12
12
  -->
13
13
 
14
+ ## 0.74.0
15
+
16
+ `twp task-loop` がサーバへ書き戻す実行結果・計画の記録から、トークンやパスワードなどの秘密を伏字にしてから送るようになりました。
17
+
18
+ 組織設定「各種マスタ設定」の祝日・営業日を CLI から扱えるようになりました(`twp holiday` / `twp business-hours`)。祝日の CSV の書き出し・取り込みもでき、取り込みと営業日の変更は送る前に今の設定との差分を確認できます。祝日の登録・変更・削除と営業日の変更は管理者の権限が要ります。
19
+
20
+ `twp wiki get --path "親件名/子件名"` で、ページ ID を調べずに件名から wiki ページを開けるようになりました。
21
+
22
+ `twp wiki create` / `update` で `--content-format` を省いたとき、本文ファイルの拡張子(.md / .markdown / .html / .htm)から形式を決めるようになりました。`update` では本文の形式がページの形式と食い違うと、送る前に止まります。
23
+
24
+ `twp wiki update --if-version` が、更新の直前に他の人がページを変えていた場合も上書きせずに止まるようになりました(サーバ側の対応が反映された環境で有効です)。
25
+
26
+ ## 0.73.0
27
+
28
+ スキルマスタを CLI から管理できるようになりました。`twp skill create` / `update` / `delete` でスキルを、`twp skill category …` でスキルカテゴリを作成・変更・削除でき、`twp skill reorder` でカテゴリ内の並び順をまとめて変えられます(`--dry-run` で変更前後の並びを確認できます)。
29
+
30
+ タスクのステータス等に「設定時応答メッセージ」が設定されている場合、`twp task create` / `twp task update` でその値に変えると結果の先頭に案内が表示されるようになりました。ステータスの案内文は `twp task status update <ステータス> --response-message "<案内文>"` で設定できます。
31
+
32
+ `twp wiki get` に `--outline`(見出しの一覧)と `--section <見出し>`(その節だけ)を追加しました。長い wiki ページを全文読まずに、必要な節だけを確認できます。
33
+
34
+ `twp wiki digest` で、wiki のページの件名・冒頭の段落・タグ・更新日を索引として1回で読めるようになりました。`--max-chars` で出力量の上限を指定できます。
35
+
14
36
  ## 0.72.0
15
37
 
16
38
  `twp task-loop skill check` を追加しました。サーバに登録したスキル・憲章について、存在しないスキルへの参照・ループ設定や定期実行が呼ぶスキルの不在・古いファイルパスの残りを読み取りだけで検査し、問題があれば終了コード 1 で知らせます(`--output json` 対応)。
package/README.md CHANGED
@@ -21,8 +21,8 @@ TWP(Tocca Working Platform)を、ターミナルから使うための CLI
21
21
  | **できる** | AI との会話(ストリーミング表示)。手元のファイルの読み書き・検索、コマンド実行、git の読み取り——いずれも**実行前に確認**します |
22
22
  | **できる** | `twp project` / `twp task` によるプロジェクト・タスクの読み書き(一覧・取得・作成・更新・削除・コメント) |
23
23
  | **できる** | `twp user` によるテナントのユーザーの作成・更新・失効(退社)と招待(1件・CSV 一括・再送・取消)、ユーザーと所属(部署・役職)の参照(一覧・取得・所属の履歴)、所属の付け替え(異動)・作成・更新・終了・削除、在籍者の棚卸と人事台帳 CSV との突き合わせ。作成・更新・招待と取得、所属の書き込み、他人の所属の参照、棚卸は組織管理者の権限が要ります |
24
- | **できる** | `twp skill` / `twp qualification` によるスキルマスタ・資格マスタの一覧、スキルマップの表示(部署で絞り込める)とスキル保有者の横断検索(所属付き)、自分のスキルプロファイルへの自己評価の提出(`--yes` が要ります)、`twp user skills` / `qualifications` / `trainings` / `contracts` によるユーザーのスキル評価・保有資格・研修受講履歴・雇用契約の参照。スキルマップと横断検索は HR管理者、雇用契約は原価管理者か管理者、研修履歴は人事管理の権限が要ります |
25
- | **できる** | `twp department` / `twp position` / `twp job-title` / `twp segment` / `twp user-contract-type` / `twp fiscal-year` による組織マスタ(部署・役職・職位・セグメント・契約形態・事業年度設定)の一覧・取得・作成・更新・削除と、部署ツリー・部署の所属者の表示。作成・更新・削除は管理者の権限が要ります |
24
+ | **できる** | `twp skill` / `twp qualification` によるスキルマスタ・資格マスタの一覧、スキル・スキルカテゴリの作成・更新・削除とカテゴリ内の並び替え(管理者のみ)、スキルマップの表示(部署で絞り込める)とスキル保有者の横断検索(所属付き)、自分のスキルプロファイルへの自己評価の提出(`--yes` が要ります)、`twp user skills` / `qualifications` / `trainings` / `contracts` によるユーザーのスキル評価・保有資格・研修受講履歴・雇用契約の参照。スキルマップと横断検索は HR管理者、雇用契約は原価管理者か管理者、研修履歴は人事管理の権限が要ります |
25
+ | **できる** | `twp department` / `twp position` / `twp job-title` / `twp segment` / `twp user-contract-type` / `twp fiscal-year` による組織マスタ(部署・役職・職位・セグメント・契約形態・事業年度設定)の一覧・取得・作成・更新・削除、`twp holiday` / `twp business-hours` によるカレンダーマスタ(祝日・営業日)の読み書きと CSV の出し入れと、部署ツリー・部署の所属者の表示。作成・更新・削除は管理者の権限が要ります |
26
26
  | **できる** | `twp inquiry category` による問い合わせカテゴリの一覧・取得・作成・更新(通知先の設定・末尾への並べ替えを含む)。取得・作成・更新は問い合わせ機能の管理者の権限が要ります |
27
27
  | **できる** | `twp evaluation` / `twp goal-sheet` による人事評価と目標シートの読み取り(評価期間・見てよい範囲の評価と目標シートの一覧・部下の評価の状況・評価の詳細とプロジェクト別評価・自分の目標シート・受け取ったフィードバック)。書き込みはまだありません |
28
28
  | **できる** | `twp support` によるシステムサポートへの依頼(依頼者側)の一覧・詳細(コメントの経過を含む)・起票(添付3件まで)・コメント・完了・再問い合わせ・取り下げと、カテゴリの一覧。運営側(回答・ステータス変更)は扱いません |
@@ -68,7 +68,7 @@ TWP(Tocca Working Platform)を、ターミナルから使うための CLI
68
68
  | **できる** | `twp budget` による予実管理(年度の予実ダッシュボード・サマリー・部署行の内訳と未割当・CSV 出力、目標の一覧・JSON でのまとめ登録・前年度からのコピー・CSV の取り込みと雛形、プロジェクトの部署按分の参照と全件置換)。分析の権限と予実管理ページの閲覧対象への登録が要り、目標の書き込みは全体管理者か分析の権限が「管理者」の人です |
69
69
  | **できる** | `twp workflow` による、自分が申請できる申請書・申請書の定義(管理者)・自分の申請・承認履歴・自分の承認待ちの参照(申請書は名前でも指定できます)と、申請の起票・提出・更新・削除、承認・却下・差し戻し・取下げ、承認画面の AIチェックの結果の表示と承認者コメント |
70
70
  | **できる** | `twp report` による自分のレポート(日報)の一覧(フォーマット・状態・語で絞り込み)・詳細と、下書きの作成(フォーマットの入力項目から雛形を出せます)・更新・提出・AI アドバイス、使えるレポートフォーマットの一覧。確認者としての一覧(未読・書いた人・作成日で絞り込み)・既読・コメント・確認済み・確認の取り消し・差し戻し |
71
- | **できる** | `twp wiki` / `twp note` / `twp meeting` による、wiki ページ(親ページ直下の子の一覧を含む)・ノート・議事録(開催日の期間で絞り込み)の一覧と、本文を `--output text` で文書として読むこと。wiki ページの作成・更新・移動・削除と、親子構造・タグ・版の履歴と差分・被リンク・関連タスクの読み取り |
71
+ | **できる** | `twp wiki` / `twp note` / `twp meeting` による、wiki ページ(親ページ直下の子の一覧を含む)・ノート・議事録(開催日の期間で絞り込み)の一覧と、本文を `--output text` で文書として読むこと。wiki ページの作成・更新・移動・削除と、親子構造・タグ・版の履歴と差分・被リンク・関連タスクの読み取り、索引(`twp wiki digest`)の出力 |
72
72
  | **できる** | `twp knowledge` によるドメイン知識(社内 Wiki 相当のナレッジベース)の一覧・詳細・作成・設定変更・削除と、記事の一覧(ディレクトリ・深さで絞り込み)・本文(Markdown)を読む・作成・更新・移動・削除。KB は ID でも slug でも指定できます。KB の作成・設定変更・削除はドメイン知識の管理者だけです |
73
73
  | **できる** | `twp outlook` / `twp teams` / `twp onedrive` による Microsoft 365 の読み取り(メール・添付・予定、Teams のチーム・チャネル・チャット・メッセージ・スレッド返信・自分宛てメンション、OneDrive のファイルの一覧・情報・ダウンロード)。TWP に Microsoft アカウントでログインしたことがあるユーザーが対象です。書き込みはメールの送信・返信・全員返信・転送(`twp outlook mail send` / `reply` / `reply-all` / `forward`)、Teams のチャット送信・チャネル投稿・スレッド返信(`twp teams message send` / `reply send`)、予定の作成・更新・削除(`twp outlook event create` / `update` / `delete`)、共有リンクの作成(`twp onedrive link create`)ができ(いずれも `--yes` が必要)、OneDrive へのアップロード(`twp onedrive item upload`)もできます |
74
74
  | **できる** | `twp task-loop` による、TWP のタスクキューを手元の AI CLI に実行させる常駐ループ |
@@ -159,14 +159,15 @@ twp task milestone list [--project <コード>]
159
159
  twp task label list [--project <コード>]
160
160
 
161
161
  # ステータスを追加・変更・削除する(個人タスクの面にはありません)
162
- twp task status create --name <名前> [--color <色>] [--is-completed <true|false>] [--is-default <true|false>] [--sort-order <整数>] [--project <コード>]
163
- twp task status update <ステータス> [--name <名前>] [--color <色>] [--is-completed <true|false>] [--is-default <true|false>] [--sort-order <整数>] [--project <コード>]
162
+ twp task status create --name <名前> [--color <色>] [--is-completed <true|false>] [--is-default <true|false>] [--sort-order <整数>] [--response-message <案内文>] [--project <コード>]
163
+ twp task status update <ステータス> [--name <名前>] [--color <色>] [--is-completed <true|false>] [--is-default <true|false>] [--sort-order <整数>] [--response-message <案内文>] [--project <コード>]
164
164
  twp task status delete <ステータス> --yes [--project <コード>]
165
165
  ```
166
166
 
167
167
  - **個人タスク(プロジェクトに属さない自分だけのタスク)は `--project __private__` で操作します**(`twp task list --project __private__`)。キーは `PRIVATE-<番号>` です。担当者(`--assignee`)とコメント(`twp task comment`)は個人タスクにはありません
168
168
  - **`--status` / `--type` / `--assignee` は名前で指定できます**(`--assignee me` は自分)。候補が絞れないときは候補を出して止まります
169
169
  - **渡せる名前は `twp task status list` / `type list` / `category list` / `milestone list` / `label list` で確認できます**(`name` 列の値をそのまま `--status` 等へ渡せます)。`is_default` が立っているものが、`twp task create` で省略したときに使われる値です。結果は名前解決と同じキャッシュ(既定10分)から返るので続けて打っても往復は増えません(最新にするなら `--refresh`)。個人タスク(`--project __private__`)にマイルストーンはありません。ステータスを作成・更新・削除すると手元の一覧キャッシュを捨てます(サーバ側の反映に時間がかかり新しい名前が見つからないときは、少し置いて `--refresh`)。標準ステータス(`default:*`)と、タスクが使っているステータスは削除できません
170
+ - **設定時応答メッセージ**: ステータスに `--response-message "<案内文>"`(500字まで・`""` で解除)を設定すると、`twp task create` / `update` でタスクがそのステータスに変わったとき、結果の先頭に `⚠ 設定時メッセージ(status=<値>): <案内文>` が出ます(`--output json` ではキー `notices`)。種別・カテゴリ・マイルストーン・ラベルの案内文は TWP の画面のタスク設定から設定でき、設定されていれば同じように出ます
170
171
  - **`delete` には `--yes` が必要です。** 対話中でも確認プロンプトには落ちません(自動実行と手動実行で必要な引数を変えないため)
171
172
  - **本文は `--body-file` / `--description-file` を主経路にしてください**(`-` で標準入力)。引数に直接書くと改行と Markdown が壊れます
172
173
  - 一覧は `--limit <件数>` / `--all` / `--cursor` で辿れます(`task subtasks` と `project members` はページングがありません)
@@ -199,7 +200,7 @@ twp project update <ID|コード> [--name <名前>] [--code <コード>] [--end-
199
200
  - **ステータスは指定できません。** 終了日からサーバが決めます(過去日ならクローズ、今日以降か `none` ならアクティブ)
200
201
  - 値を外すときは、日付は `none`、ユーザー・部署・メモ・既定の期日は `--no-manager` / `--no-leader` / `--no-department` / `--no-memo` / `--no-default-due-days` です
201
202
  - タスクの既定の期日(`--default-due-days`)は作成時には指定できません。作成後に `update` で設定してください
202
- - Wiki の新規ページの既定の形式は `--wiki-default-format <html|markdown>` で設定します。`twp wiki create` で `--content-format` を省くとこの形式で作られます(未設定なら HTML。作成済みのページの形式は変わりません)
203
+ - Wiki の新規ページの既定の形式は `--wiki-default-format <html|markdown>` で設定します。`twp wiki create` で `--content-format` を省き、`--content-file` の拡張子からも形式が決まらないときにこの形式で作られます(未設定なら HTML。作成済みのページの形式は変わりません)
203
204
  - **`update --code` はそのプロジェクトのタスクキーを全件書き換えます。** 送る前に件数を表示し、タスクがあれば `--yes` が無い限り送りません(`--dry-run` で件数だけ確かめられます)
204
205
 
205
206
  ### プロジェクトメンバーをアサインする
@@ -415,6 +416,27 @@ twp fiscal-year delete <年度> --yes
415
416
  - **プロジェクトから参照されているセグメント、契約(終了済みの履歴を含む)から参照されている契約形態も削除できません。** サーバの理由に続けて無効化のコマンド(セグメントは `--status inactive`、契約形態は `--active false`)を案内します
416
417
  - ヘルプは `twp department help` / `twp position help` / `twp job-title help` / `twp segment help` / `twp user-contract-type help` / `twp fiscal-year help`
417
418
 
419
+ ### カレンダーマスタ(祝日・営業日)を扱う
420
+
421
+ ```bash
422
+ twp holiday list [--year <YYYY>]
423
+ twp holiday create <YYYY-MM-DD> --name <祝日名> --yes
424
+ twp holiday update <YYYY-MM-DD> --name <祝日名> --yes
425
+ twp holiday delete <YYYY-MM-DD> --yes
426
+ twp holiday business-days --from <YYYY-MM-DD> --to <YYYY-MM-DD>
427
+ twp holiday export --out <パス.csv> [--year <YYYY>] [--force]
428
+ twp holiday import --file <CSV> [--mode append|replace --year <YYYY>] --yes # --dry-run で差分だけ見る
429
+ twp business-hours get
430
+ twp business-hours set --day <曜日>=<HH:MM>-<HH:MM>|off [--day ...] --yes # --dry-run で差分だけ見る
431
+ ```
432
+
433
+ - **祝日・営業日は勤怠の集計(休日労働・所定日数)に効くので、書き込みはすべて `--yes` が要ります。** 締め済みの月の祝日を変えても、締めた集計は自動では直りません
434
+ - 祝日は日付(`YYYY-MM-DD`)で指定します。`update` で変えられるのは名前だけです。`list` と `business-days` は管理者でなくても使えます。それ以外は管理者だけです
435
+ - `export` は Shift_JIS の CSV(`date,name`)を書き出し、そのまま `import` に渡せます。`import` は送る前に CSV の行を検査し、対象年の今の祝日との差分(追加・名前の変更・消える・変化なし)を stderr に出します。`--mode replace --year <YYYY>` はその年の祝日を全部消してから取り込みます
436
+ - `business-days` は月〜金から祝日を除いた日数です(`business-hours` の曜日設定はこの計算に使われません)
437
+ - `business-hours set` は `--day` で指定した曜日だけを変え、他の曜日は今の値のまま送ります。曜日は `mon`〜`sun`・`月`〜`日`・`0`〜`6`(0=日曜)で指定します
438
+ - ヘルプは `twp holiday help` / `twp business-hours help`
439
+
418
440
  ### スキル・資格・研修履歴を見る
419
441
 
420
442
  ```
@@ -424,6 +446,18 @@ twp skill who --skill <スキル> [--min-level <1〜5>] [--fiscal-year <年度>]
424
446
  twp skill self-evaluate <プロファイルID> --content-file <JSON> --yes # 自分の自己評価を提出する
425
447
  twp qualification list [--keyword <語>] [--recommended] [--category <分類>] [--difficulty <難易度>]
426
448
 
449
+ # スキルマスタの管理(管理者のみ)
450
+ twp skill get <スキル>
451
+ twp skill create --category <カテゴリ> --name <スキル名> [--description …] [--skill-code …] [--sub-group-label …] [--sort-order <n>] [--active true|false]
452
+ twp skill update <スキル> [--category <カテゴリ>] [項目…]
453
+ twp skill delete <スキル> --yes
454
+ twp skill reorder --category <カテゴリ> --file <パス> # 並び順の一括変更(--dry-run で差分だけ見る)
455
+ twp skill category list [--active true|false] [--keyword <語>]
456
+ twp skill category get <カテゴリ>
457
+ twp skill category create --name <カテゴリ名> [--description …] [--sort-order <n>] [--active true|false] [--department-scope system|sales|admin] [--iso-standard ISO9001|ISO27001|both]
458
+ twp skill category update <カテゴリ> [項目…]
459
+ twp skill category delete <カテゴリ> --yes
460
+
427
461
  twp user skills <ユーザー> [--fiscal-year <年度>] # スキル評価(自己・一次・二次・確定レベル)
428
462
  twp user qualifications <ユーザー> # 保有資格
429
463
  twp user trainings <ユーザー> [--from <日付>] [--to <日付>] # 研修受講履歴
@@ -434,7 +468,10 @@ twp user contracts <ユーザー> # 雇用契約
434
468
  - `--department` は主所属の部署で絞ります(スキルマップの API に部署の絞り込みが無いため、ユーザー一覧を引いて絞ります。ユーザー一覧が引けなければ絞らずに出すことはせず止まります)
435
469
  - `twp skill who` の `--skill` は ID か名前です(完全一致 → 部分一致で1件に絞れたときだけ受け付け、複数に当たれば候補を出して止まります)。所属はユーザー一覧から足すので、引けない権限のときは空欄にして理由を stderr に出します
436
470
  - **`twp skill self-evaluate` は送信後に自分では直せず、上長へ通知が届きます**(`--yes` が要ります)。内容は `{"skills": [{"skill_id": "…", "self_level": 1〜5, "self_comment": "…"}], "skill_up_policy": "…"}` の JSON で、プロファイル ID と `skill_id` は `twp user skills me` で確認できます。プロファイルに無いスキルや知らないキーは送る前に止め、送らなかったスキルは stderr で挙げます
437
- - 一次・二次評価と確定(評価者の操作)、資格の保有者の横断検索(`twp qualification who`)はまだありません(`twp api` では届きます)
471
+ - 一次・二次評価と確定(評価者の操作)、資格の保有者の横断検索(`twp qualification who`)、資格マスタの作成・更新・削除・CSV 取り込みはまだありません(`twp api` では届きます)
472
+ - **`twp skill delete` は、各ユーザーのスキルプロファイルにあるそのスキルの評価(自己評価・一次・二次評価)も一緒に消します**(取り消せません・`--yes` が要ります)。今後使わないだけなら `twp skill update <スキル> --active false` で無効化してください
473
+ - `twp skill reorder` の `--file` は新しい並び順を先頭から1行1スキル(ID・スキルコード・名前。名前はそのカテゴリの中で照合します)で書いた CSV / テキスト、または JSON 配列です。カテゴリ内のスキル(無効化したものを含む)を過不足なく並べてください。送る前に今の並びとの差分を stderr に出し、過不足があれば送りません
474
+ - スキルが紐づいているスキルカテゴリは削除できません(サーバが断ります。スキルを別のカテゴリへ移すか削除してから実行します)
438
475
  - 権限が無いときは、誰の権限が要るかを先に案内します(終了コード 3)
439
476
  - ヘルプは `twp skill help` / `twp qualification help` / `twp user help`
440
477
 
@@ -1338,8 +1375,12 @@ twp wiki list [--project <コード|ID>] [--status <draft|published>] [--tag
1338
1375
  twp wiki list [--project <コード|ID>] --parent <ページID>|root # 親ページ直下の子(root で最上位)
1339
1376
  twp wiki list [--project <コード|ID>] --stale-days <日数> # N 日以上実測されていないページ(古い順)
1340
1377
  twp wiki get <ページID> [<ページID> ...] --output text # 複数並べると1件ずつ取得
1378
+ twp wiki get [--project <コード|ID>] --path <親件名/子件名> --output text # 件名の階層で引く
1379
+ twp wiki get <ページID> --outline # 見出しの一覧(階層・節の文字数・版)
1380
+ twp wiki get <ページID> --section <見出し> # その見出しの節だけ(版つき)
1341
1381
  twp wiki tree [--project <コード|ID>] # 親子構造(本文は出さない)
1342
1382
  twp wiki tags [--project <コード|ID>]
1383
+ twp wiki digest [--project <コード|ID>] [--parent <ページID>] [--tag <タグ>] [--max-chars <文字数>] --output text # 索引
1343
1384
  twp wiki versions <ページID> [--limit <件数>] # 版の履歴(新しい順・最大100件)
1344
1385
  twp wiki version <ページID> <版> --output text
1345
1386
  twp wiki diff <ページID> <版1> [<版2>] # 版2を省くといまのページと比べる
@@ -1358,13 +1399,16 @@ twp meeting get <議事録ID> --output text
1358
1399
  - `get --output text` は本文を読むための文書(見出し・メタ情報・本文)を出します。HTML と議事録エディタの内容は平文にし、見出し・箇条書き・リンクは Markdown 風に残します。サーバの原文は `--output json` で取れます
1359
1400
  - 議事録の文書にはアジェンダ・議事メモ・決定事項・アクションアイテム・AI 要約が入ります。文字起こしは長いので入れません(`--query transcript` で取れます)
1360
1401
  - wiki はプロジェクトごとです(`--project` を省くと既定のプロジェクト)。`--parent` は他の絞り込み・ページングと併用できません
1402
+ - `twp wiki get --path "親件名/子件名"` はページ ID の代わりに最上位からの件名の階層でページを指し、1コマンドで本文まで取ります。件名は前後の空白と大文字小文字だけを無視した完全一致で、件名の中の `/` は `\/` と書きます。同じ件名のページが複数あって1件に決まらないとき・見つからないときは候補を出して終了コード 2 です(見えない下書きは候補に出ません)
1403
+ - `wiki digest` は各ページの件名・ID・本文の冒頭の段落(200文字まで)・タグ・更新日・版を1回で出します。`--parent` はそのページの配下、`--tag` はそのタグのページだけです。`--max-chars` は `--output text` の出力全体の文字数の上限で、収まらないページは後ろから落とし「省略 N 件」と必ず出します(json は `omitted`)
1361
1404
  - `twp wiki get` に ID を複数並べると1件ずつ取得します。`--output json` はページの配列、`--output text` はページごとに `=== <n>/<件数> <件名>(ID: <ID>) ===` の区切り行を挟みます。見つからない・権限が無いページがあっても他のページは出し、取れなかった ID と理由を stderr に出して終了コード 3(サーバの 5xx が混じれば 4)で終わります(`--output json` では stderr のエラーに `target` として ID が入ります)。ログインの失効(401)と回数制限(429)のときは途中で止め、何も出しません
1405
+ - `wiki get --outline` / `--section`(ID は1つだけ、または `--path`)は長いページを全文読まずに済ませるための口です。見出しは HTML・Markdown・共同編集エディタの JSON のどれでも同じ規則で探し(完全一致・空白の違いと大文字小文字は無視)、見つからなければ候補の見出しを出して終了コード 2 で止まります。どの出力形式でも版を出すので、そのまま `wiki update --if-version` に渡せます
1362
1406
  - `wiki tree` は `--output json` でも本文を出しません(構造だけを1往復で読むため)。`wiki diff` は本文を平文にしてから行単位で比べるので、HTML のタグだけの違いは出ません。件名が変わっていれば件名の違いも出します
1363
1407
  - `twp meeting list` の `--from` / `--to` は開催日(日本時間の日付)の期間で、両端の日を含み、片方だけでも指定できます。`--keyword` はタイトルの語です
1364
1408
  - `twp note get` で開くと、画面で開いたときと同じくノートの閲覧数が1増えます
1365
- - wiki の本文は `--content-file` のファイル(`-` で標準入力)から読み、加工せずに送ります。Markdown で書いた本文は `--content-format markdown` を付けて作成してください(画面で Markdown として表示されます)。省くと HTML のページになり(そのことを stderr で知らせます)、Markdown を渡しても変換されず記号のまま表示されます。`create` で `--status` を省くと下書きになります
1409
+ - wiki の本文は `--content-file` のファイル(`-` で標準入力)から読み、加工せずに送ります。`--content-format` を省くと、ファイルの拡張子から形式を決めます(`.md` / `.markdown` は Markdown、`.html` / `.htm` は HTML。決めたことを stderr で知らせます)。拡張子で決まらない(標準入力・`.txt` 等)ときはプロジェクトの既定の形式(未設定なら HTML)になり、HTML のページに Markdown を渡しても変換されず記号のまま表示されます。`update` で拡張子から決めた形式がページの形式と違うときは、何も送らずに終了コード 3 で止まります(ページの形式は作成後に変えられません)。`create` で `--status` を省くと下書きになります
1366
1410
  - ページの形式(`html` / `markdown`)は作成後に変えられません。`update` で違う形式を指定するとサーバの拒否をそのまま出して終了コード 3 です。`twp wiki get` は形式を `content_format` 列(`--output text` では「形式:」)に出し、Markdown のページの本文は Markdown のまま出します
1367
- - `twp wiki update --if-version <版>` は送る直前にページの版(`twp wiki get` の `version`)を照合し、違えば何も送らずに終了コード 3 で止まります(照合と送信の間の他人の更新までは防げません)。`--tag` はタグを置き換え、`--clear-tags` で空にします
1411
+ - `twp wiki update --if-version <版>` は送る直前にページの版(`twp wiki get` の `version`)を照合し、違えば何も送らずに終了コード 3 で止まります。版照合に対応したサーバでは `expected_version` で書き込み時にも照合し、間に他の更新があれば 409(現在の版を表示)で終了コード 3 になります。対応前のサーバでは照合と送信の間の他人の更新までは防げません。`--tag` はタグを置き換え、`--clear-tags` で空にします
1368
1412
  - ナレッジの鮮度は `--verified-at`(最終実測日。`today` は日本時間の今日)・`--evidence-task`(根拠タスクのキー・複数回可・置き換え)・`--kind`(種別)でページに記録します。`twp wiki list --stale-days <N>` は最終実測日が N 日以上前のページと未設定のページを、実測日の古い順に出します(要約列は `status` / `verified_at` / `knowledge_kind` / `evidence_task_keys`)。サーバがこの属性を返さない古い版だと絞り込みが効かないので、そのときは stderr で知らせます
1369
1413
  - 編集・移動・削除できるのはページの作成者・wiki の管理者・組織の管理者です。権限が無ければサーバの文面をそのまま出して終了コード 3 です
1370
1414
  - ノート・議事録の書き込みはまだできません(`twp api /api/v2/notes/...`・`/api/v2/meetings/...` で到達できます)。ヘルプは `twp wiki help` / `twp note help` / `twp meeting help`
@@ -1,7 +1,7 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{SCHEDULE_HELP,parseSchedule}from"./chunk-QVID3GT4.js";import"./chunk-WVCEKC7V.js";import{LIST_FLAGS,LIST_PAGING_HELP,envelopePaging,nonEmpty,positiveInteger}from"./chunk-MI6HVYR2.js";import"./chunk-RX5HWI4L.js";import{charCount,readBody}from"./chunk-6LSQCOCJ.js";import{AGENT_REPOSITORIES_PATH,AGENT_SCHEDULES_PATH,AGENT_SESSIONS_PATH}from"./chunk-MVZFZAT4.js";import{isSafePathSegment}from"./chunk-HVZUXLQ4.js";import{ApiError}from"./chunk-JA5A6UJ2.js";
4
- import"./chunk-H4CDX4TX.js";import{requireResolved,withResolved}from"./chunk-PS5QFKHB.js";import"./chunk-II5RVJQN.js";import{isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiRejectedError,ApiResponseError,NetworkError,UsageError,WaitTimeoutError}from"./chunk-VFPY2A23.js";import{NotLoggedInError,SessionExpiredError}from"./chunk-XNLIEUAW.js";import"./chunk-J7QYPKVK.js";import"./chunk-4VZKNEVN.js";import"./chunk-RZVI6PMW.js";import"./chunk-QQRJLH6B.js";
3
+ import{SCHEDULE_HELP,parseSchedule}from"./chunk-MSVJ53VZ.js";import"./chunk-WVCEKC7V.js";import{LIST_FLAGS,LIST_PAGING_HELP,envelopePaging,nonEmpty,positiveInteger}from"./chunk-MI6HVYR2.js";import"./chunk-RX5HWI4L.js";import{charCount,readBody}from"./chunk-6LSQCOCJ.js";import{AGENT_REPOSITORIES_PATH,AGENT_SCHEDULES_PATH,AGENT_SESSIONS_PATH}from"./chunk-4B6GJBYP.js";import{isSafePathSegment}from"./chunk-HVZUXLQ4.js";import{ApiError}from"./chunk-JA5A6UJ2.js";
4
+ import"./chunk-H4CDX4TX.js";import"./chunk-II5RVJQN.js";import{requireResolved,withResolved}from"./chunk-PS5QFKHB.js";import{isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiRejectedError,ApiResponseError,NetworkError,UsageError,WaitTimeoutError}from"./chunk-VFPY2A23.js";import{NotLoggedInError,SessionExpiredError}from"./chunk-XNLIEUAW.js";import"./chunk-J7QYPKVK.js";import"./chunk-4VZKNEVN.js";import"./chunk-RZVI6PMW.js";import"./chunk-QQRJLH6B.js";
5
5
  import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var LABEL="\u5B9A\u671F\u5B9F\u884C";var LIST_COLUMNS=["schedule_id","name","enabled","schedule","repository_full_name","next_run_at","last_run_at","disabled_reason","owner_user_id"];var GET_COLUMNS=["schedule_id","name","enabled","schedule","repository_full_name","base_branch","ai_provider","ai_model","next_run_at","last_run_at","last_session_id","consecutive_failures","disabled_reason","owner_user_id","can_edit","can_disable","created_at","updated_at"];var RUN_COLUMNS=["run_id","created_at","t\
6
6
  rigger","result","skip_reason","session_id","pr_url","error_message"];var NAME_MAX_CHARS=100;var INSTRUCTION_MAX_CHARS=1e4;var RUNS_MAX_LIMIT=100;var FORBIDDEN="AI\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u6A5F\u80FD\u306E\u30E9\u30A4\u30BB\u30F3\u30B9\uFF08agent\uFF09\u304C\u3042\u306A\u305F\u306E\u30A2\u30AB\u30A6\u30F3\u30C8\u306B\u5272\u308A\u5F53\u3066\u3089\u308C\u3066\u3044\u306A\u3044\u304B\u3001\u4ED6\u30E6\u30FC\u30B6\u30FC\u306E\u5B9A\u671F\u5B9F\u884C\u3092\u5909\u66F4\u3057\u3088\u3046\u3068\u3057\u3066\u3044\u307E\u3059\u3002\u7DE8\u96C6\u30FB\u524A\u9664\u30FB\u6709\u52B9\u5316\u30FB\u4ECA\u3059\u3050\u5B9F\u884C\u306F\u30AA\u30FC\u30CA\u30FC\u672C\u4EBA\u3060\u3051\u3001\u7121\u52B9\u5316\u306F\u30AA\u30FC\u30CA\u30FC\u3068\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u7BA1\u7406\u8005\u304C\u3067\u304D\u307E\u3059\u3002";
7
7
  var SCHEDULE_REF_HELP="<\u5B9A\u671F\u5B9F\u884C> \u306F\u5B9A\u671F\u5B9F\u884C ID\uFF08twp agent schedule list \u306E schedule_id \u5217\uFF09\u3067\u3059\u3002";var CREDIT_CONFIRMATION="AI \u30AF\u30EC\u30B8\u30C3\u30C8\u3092\u6D88\u8CBB\u3059\u308B\u64CD\u4F5C";function usageOf(op){return`twp agent schedule ${op} help`}function noArgs(input,op){if(input.args.length>0)throw new UsageError(`schedule ${op} \u306F\u4F4D\u7F6E\u5F15\u6570\u3092\u53D6\u308A\u307E\u305B\u3093: ${input.args.join(" ")}`,
@@ -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-QS5VWTI3.js";import"./chunk-DXUFECE7.js";import{loadLocalConfig}from"./chunk-CCHPF23L.js";import{parseOperations}from"./chunk-XMPHGOW4.js";import"./chunk-VYDPW2YO.js";import"./chunk-TTST7UDR.js";import{loadAiConfig}from"./chunk-FABDZBDZ.js";import{SKILL_PREFIX_RE,setSkillPrefix}from"./chunk-6CS5L24D.js";import"./chunk-N2UVRM3Z.js";import"./chunk-5KAWCLYN.js";import"./chunk-GY7KI5E5.js";import{LIST_FLAGS,
4
- LIST_PAGING_HELP,envelopePaging,nonEmpty,positiveInteger}from"./chunk-MI6HVYR2.js";import{requireResolved,singleRef,withResolved}from"./chunk-PS5QFKHB.js";import"./chunk-II5RVJQN.js";import{acknowledgement,isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";import"./chunk-PMOUHEJQ.js";import"./chunk-J7QYPKVK.js";import"./chunk-5WGOHFAS.js";import"./chunk-RZVI6PMW.js";import"./chunk-NHYMHCAT.js";
3
+ import{stepToItem}from"./chunk-QS5VWTI3.js";import"./chunk-DXUFECE7.js";import{loadLocalConfig}from"./chunk-GAXJPIKO.js";import"./chunk-VYDPW2YO.js";import{loadAiConfig}from"./chunk-FABDZBDZ.js";import{parseOperations}from"./chunk-XMPHGOW4.js";import"./chunk-TTST7UDR.js";import{SKILL_PREFIX_RE,setSkillPrefix}from"./chunk-6CS5L24D.js";import"./chunk-N2UVRM3Z.js";import"./chunk-5KAWCLYN.js";import"./chunk-GY7KI5E5.js";import{LIST_FLAGS,
4
+ LIST_PAGING_HELP,envelopePaging,nonEmpty,positiveInteger}from"./chunk-MI6HVYR2.js";import"./chunk-II5RVJQN.js";import{requireResolved,singleRef,withResolved}from"./chunk-PS5QFKHB.js";import{acknowledgement,isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";import"./chunk-PMOUHEJQ.js";import"./chunk-J7QYPKVK.js";import"./chunk-5WGOHFAS.js";import"./chunk-RZVI6PMW.js";import"./chunk-NHYMHCAT.js";
5
5
  import"./chunk-VSJBJXZO.js";var LABEL="\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u30EB\u30FC\u30D7\u306E\u30A2\u30A4\u30C6\u30E0";var STATUSES=["pending","processing","completed","failed"];var AI_TYPES=["claude","gemini","codex","copilot"];var EFFORTS=["low","medium","high","xhigh","max"];var PRIORITIES=["P0","P1","P2","P3"];var LIST_COLUMNS=["item_id","status","task_key","label","ai_type","ai_effort","runner_id","created_at"];var GET_COLUMNS=["item_id","status","task_key","label","prompt","ai_type","ai_model","ai_effort","runn\
6
6
  er_id","attempt_count","reclaim_count","error_message","created_by_name","created_at","started_at","completed_at"];var HISTORY_COLUMNS=["item_id","status","task_key","skill","ai_type","runner_id","duration_ms","cost_usd","created_at"];var PLAN_RESULTS=["enqueued","empty","json_not_found","ai_failed","error","skipped","gated","locked","abandoned"];var PLAN_HISTORY_COLUMNS=["plan_run_id","result","runner_id","ai_type","duration_ms","cost_usd","step_count","started_at"];var PROJECT_FLAG={name:"--pr\
7
7
  oject",summary:"\u30AD\u30E5\u30FC\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\uFF08\u30B3\u30FC\u30C9\u307E\u305F\u306F ID\u3002\u7701\u7565\u6642\u306F TWP_PROJECT / .twp/config.json / ~/.twp/config.json\uFF09",takesValue:true,placeholder:"<\u30B3\u30FC\u30C9|ID>"};var ITEM_FLAG={name:"--item",summary:"\u30A2\u30A4\u30C6\u30E0\u306E ID\uFF08item_id\uFF09\u3002\u4F4D\u7F6E\u5F15\u6570\u3068\u540C\u3058\u610F\u5473\uFF08\u4E21\u65B9\u6307\u5B9A\u306F\u30A8\u30E9\u30FC\uFF09",takesValue:true,placeholder:"\
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{failureHint,isAuthError,isCliFatalText,isRateLimited,isServerAiType,isUntrusted,maxTurnsReached,rateLimitWaitSeconds,tailForScan}from"./chunk-ZOOEH7ZE.js";import{expandServerSkills,prepareSkillOverlay}from"./chunk-DPIJF3EN.js";import"./chunk-MYBIPHZ7.js";import"./chunk-A4LFG7MW.js";import{detectAiClis}from"./chunk-5SONMN6K.js";import"./chunk-VRBI2NPI.js";import{ClaudeStreamRenderer}from"./chunk-DXUFECE7.js";import{DEFAULT_CLAUDE_LAUNCHER,activeSlotPath,
3
+ import{failureHint,isAuthError,isCliFatalText,isRateLimited,isServerAiType,isUntrusted,maxTurnsReached,rateLimitWaitSeconds,tailForScan}from"./chunk-ZOOEH7ZE.js";import{detectAiClis}from"./chunk-5SONMN6K.js";import{expandServerSkills,prepareSkillOverlay}from"./chunk-DPIJF3EN.js";import"./chunk-MYBIPHZ7.js";import"./chunk-A4LFG7MW.js";import"./chunk-VRBI2NPI.js";import{ClaudeStreamRenderer}from"./chunk-DXUFECE7.js";import{DEFAULT_CLAUDE_LAUNCHER,activeSlotPath,
4
4
  detectClaudeAutoSwitch,isClaudeAi,isUsableModelId,modelFitsRoute,resolveSpawnTarget,usesBedrock,wrapWithAutoSwitch}from"./chunk-FABDZBDZ.js";import"./chunk-6CS5L24D.js";import{isForceOnly,killProcessTree,system32}from"./chunk-N2UVRM3Z.js";import"./chunk-5KAWCLYN.js";import"./chunk-GY7KI5E5.js";import"./chunk-VFPY2A23.js";import{findExecutable,isWindowsDriveAbsolute}from"./chunk-PMOUHEJQ.js";import"./chunk-J7QYPKVK.js";import"./chunk-5WGOHFAS.js";
5
5
  import{stripTerminalControls}from"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";import{spawnSync}from"child_process";import fs2 from"fs";import path2 from"path";import{spawn}from"child_process";import fs from"fs";import path from"path";var DEFAULT_AI_TIMING={abortGraceMs:5e3,abortReapMs:2e3,pollIntervalMs:5e3};function resolveTiming(over){return{abortGraceMs:over?.abortGraceMs??DEFAULT_AI_TIMING.abortGraceMs,abortReapMs:over?.abortReapMs??DEFAULT_AI_TIMING.abortReapMs,pollIntervalMs:over?.pollIntervalMs??DEFAULT_AI_TIMING.pollIntervalMs}}var MAX_RETAINED_BYTES=4*1024*1024;function closeStream(stream){return new Promise(resolve=>{if(stream===null)return resolve();stream.once("error",()=>resolve());stream.end(()=>resolve())})}function buildArgs(req,cfg,env,workspace){
6
6
  const warnings=[];const requested=(req.model??"").trim();const usable=requested!==""&&isUsableModelId(requested);if(requested!==""&&!usable){warnings.push(`ai_model '${requested}' \u306F\u4F7F\u3048\u306A\u3044\u5F62\u3067\u3059 \u2192 \u30AB\u30C6\u30B4\u30EA\u65E2\u5B9A\u306E\u30E2\u30C7\u30EB\u3092\u4F7F\u3044\u307E\u3059`)}const fitsRoute=!usable||!isClaudeAi(req.ai)||modelFitsRoute(requested,env);if(usable&&!fitsRoute){warnings.push(`ai_model '${requested}' \u306F\u73FE\u5728\u306E\u5B9F\u884C\u7D4C\u8DEF\u3067\u306F\u89E3\u6C7A\u3067\u304D\u307E\u305B\u3093\uFF08\u3053\u306E\u6A5F\u4F53\u306F ${usesBedrock(
@@ -1,5 +1,5 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{FROM_FLAG,MANHOUR_DESCRIPTION,MANHOUR_FROM_FLAG,MANHOUR_TO_FLAG,MONTH_FLAG,TO_FLAG,analysisDomain,analysisForbidden,currentMonth,dataOf,listIn,manhourNotes,manhourQuery,manhourRows,monthRange,monthsBetween,noArgs,profitRows,rangeNotes,recordOf,staffKpiRows,workloadDistributionNotes,workloadDistributionRows}from"./chunk-IVKWLJCY.js";import"./chunk-DAXVAUV4.js";import"./chunk-EXT4AIDF.js";import"./chunk-MP6YIILX.js";import"./chunk-JJSBBWJ5.js";import"./chunk-MI6HVYR2.js";
4
- import"./chunk-RX5HWI4L.js";import"./chunk-6LSQCOCJ.js";import"./chunk-MVZFZAT4.js";import"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";import"./chunk-PS5QFKHB.js";import"./chunk-II5RVJQN.js";import"./chunk-3ZRMMBP5.js";import"./chunk-VFPY2A23.js";import"./chunk-J7QYPKVK.js";import"./chunk-4VZKNEVN.js";import"./chunk-RZVI6PMW.js";import"./chunk-QQRJLH6B.js";import"./chunk-NHYMHCAT.js";
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-YA7W7OV4.js";import"./chunk-2YVJ3QVJ.js";import"./chunk-EXT4AIDF.js";import"./chunk-FHOJFKR3.js";import"./chunk-JJSBBWJ5.js";import"./chunk-MI6HVYR2.js";
4
+ import"./chunk-RX5HWI4L.js";import"./chunk-6LSQCOCJ.js";import"./chunk-4B6GJBYP.js";import"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";import"./chunk-II5RVJQN.js";import"./chunk-PS5QFKHB.js";import"./chunk-3ZRMMBP5.js";import"./chunk-VFPY2A23.js";import"./chunk-J7QYPKVK.js";import"./chunk-4VZKNEVN.js";import"./chunk-RZVI6PMW.js";import"./chunk-QQRJLH6B.js";import"./chunk-NHYMHCAT.js";
5
5
  import"./chunk-VSJBJXZO.js";export{FROM_FLAG,MANHOUR_DESCRIPTION,MANHOUR_FROM_FLAG,MANHOUR_TO_FLAG,MONTH_FLAG,TO_FLAG,analysisDomain,analysisForbidden,currentMonth,dataOf,listIn,manhourNotes,manhourQuery,manhourRows,monthRange,monthsBetween,noArgs,profitRows,rangeNotes,recordOf,staffKpiRows,workloadDistributionNotes,workloadDistributionRows};
@@ -1,7 +1,7 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{composeDocument,htmlToText,metaLine}from"./chunk-HPPIVCK3.js";import{boundedText}from"./chunk-JJSBBWJ5.js";import{LIST_FLAGS,LIST_PAGING_HELP,envelopePaging,positiveInteger}from"./chunk-MI6HVYR2.js";import{readBody}from"./chunk-6LSQCOCJ.js";import{ANNOUNCEMENTS_PATH}from"./chunk-MVZFZAT4.js";import{isSafePathSegment}from"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";import{requireResolved,withResolved}from"./chunk-PS5QFKHB.js";
4
- import"./chunk-II5RVJQN.js";import{isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";import"./chunk-J7QYPKVK.js";import"./chunk-4VZKNEVN.js";import"./chunk-RZVI6PMW.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var LABEL="\u304A\u77E5\u3089\u305B";var LIST_COLUMNS=["id","publish_start_at","sender_name","category_name","title","is_read","require_confirmation","is_confirmed"];var UNCONFIRMED_COLUMNS=["id","publish_start_at","publish_end_at","importance","title"];var GET_COLUMNS=["id","title","sender_name","category_name","importance_name","publish_start_at","publish_end_at","is_organization","is_read","require_confirmation","is_confirmed","allow_replies","link_url"];var REPLY_COLUMNS=["id","created_at","\
3
+ import{composeDocument,htmlToText,metaLine}from"./chunk-C7MO3RHJ.js";import{boundedText}from"./chunk-JJSBBWJ5.js";import{LIST_FLAGS,LIST_PAGING_HELP,envelopePaging,positiveInteger}from"./chunk-MI6HVYR2.js";import{readBody}from"./chunk-6LSQCOCJ.js";import{ANNOUNCEMENTS_PATH}from"./chunk-4B6GJBYP.js";import{isSafePathSegment}from"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";import"./chunk-II5RVJQN.js";import{requireResolved,
4
+ withResolved}from"./chunk-PS5QFKHB.js";import{isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";import"./chunk-J7QYPKVK.js";import"./chunk-4VZKNEVN.js";import"./chunk-RZVI6PMW.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var LABEL="\u304A\u77E5\u3089\u305B";var LIST_COLUMNS=["id","publish_start_at","sender_name","category_name","title","is_read","require_confirmation","is_confirmed"];var UNCONFIRMED_COLUMNS=["id","publish_start_at","publish_end_at","importance","title"];var GET_COLUMNS=["id","title","sender_name","category_name","importance_name","publish_start_at","publish_end_at","is_organization","is_read","require_confirmation","is_confirmed","allow_replies","link_url"];var REPLY_COLUMNS=["id","created_at","\
5
5
  user_name","is_mine","content"];var REPLY_MAX_CHARS=2e3;function noArgs(input,op){if(input.args.length>0){throw new UsageError(`${op} \u306F\u4F4D\u7F6E\u5F15\u6570\u3092\u53D6\u308A\u307E\u305B\u3093: ${input.args.join(" ")}`,`twp announcement ${op} help`)}}function checkId(raw,help){const id=raw.trim();if(id==="")throw new UsageError("\u304A\u77E5\u3089\u305B\u306E ID \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",help);if(!isSafePathSegment(id)){throw new UsageError(`\u304A\u77E5\u3089\u305B\u306E ID \u3068\u3057\u3066\u4F7F\u3048\u306A\u3044\
6
6
  \u5024\u3067\u3059: ${id}`,"\u304A\u77E5\u3089\u305B\u306E ID \u306F twp announcement list \u306E id \u5217\u3067\u78BA\u8A8D\u3067\u304D\u307E\u3059\u3002")}return id}function announcementId(input,op){const help=`twp announcement ${op} help`;const[raw,...rest]=input.args;if(rest.length>0)throw new UsageError(`${op} \u304C\u53D7\u3051\u53D6\u308C\u308B\u304A\u77E5\u3089\u305B ID \u306F1\u3064\u3060\u3051\u3067\u3059: ${rest.join(" ")}`,help);return checkId(raw??"",help)}function announcementIds(input){
7
7
  const help="twp announcement read help";if(input.args.length===0)throw new UsageError("\u304A\u77E5\u3089\u305B\u306E ID \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",help);return[...new Set(input.args.map(raw=>checkId(raw,help)))]}function itemPath(id,suffix=""){return`${ANNOUNCEMENTS_PATH}/${encodeURIComponent(id)}${suffix}`}function envelope(body,what){if(!isRecord(body)||body["result"]!==true){throw new ApiResponseError(`${what}\u306E\u5FDC\u7B54\u306E\u5F62\u304C\u60F3\u5B9A\u3068\u9055\u3044\u307E\u3059\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}
@@ -1,9 +1,9 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{CommandModelMissingError,MAX_REPORTED_VIOLATIONS,loadCommandModelDomain,loadCommandModelRoutes,validateBody,validateQuery}from"./chunk-NZ7WI4RZ.js";import{NO_REDACT_FLAG,NO_REDACT_NOTICE,exitCodeFor,fetchAllPages,reportError}from"./chunk-DFHOCPA5.js";import"./chunk-5VZ54H2J.js";import"./chunk-Q3B65OFC.js";import{evaluateQuery}from"./chunk-GFLGXGWE.js";import{renderOutput}from"./chunk-YXVN6OCH.js";import{redactSecretValues,redactSecrets,withDebug}from"./chunk-UFGJSWKU.js";
4
- import{describeWaitResult,parseWaitOptions,waitUntilTerminal}from"./chunk-WVCEKC7V.js";import{DEFAULT_MAX_ITEMS,DEFAULT_MAX_PAGES,envelopePaging,isPageNumberEnvelope,pageRangeNotes,positiveInteger,readEnvelopeCursor,readPageNumberCursor,shellQuote}from"./chunk-MI6HVYR2.js";import{parseOperationArgs,repeatedValues}from"./chunk-RX5HWI4L.js";import{readBody}from"./chunk-6LSQCOCJ.js";import"./chunk-MVZFZAT4.js";import"./chunk-HVZUXLQ4.js";import{ApiError,TwpApiClient,
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-3QQF4MOB.js";import"./chunk-DMXMQGGZ.js";import"./chunk-Q3B65OFC.js";import{evaluateQuery}from"./chunk-GFLGXGWE.js";import{renderOutput}from"./chunk-PO35MCYP.js";import{redactSecretValues,redactSecrets,withDebug}from"./chunk-LDBYJPRD.js";
4
+ import{describeWaitResult,parseWaitOptions,waitUntilTerminal}from"./chunk-WVCEKC7V.js";import{DEFAULT_MAX_ITEMS,DEFAULT_MAX_PAGES,envelopePaging,isPageNumberEnvelope,pageRangeNotes,positiveInteger,readEnvelopeCursor,readPageNumberCursor,shellQuote}from"./chunk-MI6HVYR2.js";import{parseOperationArgs,repeatedValues}from"./chunk-RX5HWI4L.js";import{readBody}from"./chunk-6LSQCOCJ.js";import"./chunk-4B6GJBYP.js";import"./chunk-HVZUXLQ4.js";import{ApiError,TwpApiClient,
5
5
  appendQuery}from"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";import"./chunk-II5RVJQN.js";import"./chunk-3ZRMMBP5.js";import{ApiResponseError,EXIT_OK,EXIT_WAIT_TIMEOUT,NetworkError,UsageError}from"./chunk-VFPY2A23.js";import{GLOBAL_OPTIONS_HELP}from"./chunk-PECIBNFD.js";import{AuthSession,NotLoggedInError,SessionExpiredError,loadCredentials}from"./chunk-XNLIEUAW.js";import{httpFetch}from"./chunk-J7QYPKVK.js";import{effectiveApiUrl,resolveConfiguredOutput,
6
- resolveProfile}from"./chunk-4VZKNEVN.js";import"./chunk-RZVI6PMW.js";import{HELP_TOKEN}from"./chunk-35MQ27I6.js";import"./chunk-QQRJLH6B.js";import{OUTPUT_FORMATS,resolveOutputFormat}from"./chunk-74BPZOKU.js";import"./chunk-UREA4ZIG.js";import{stripTerminalControls}from"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var MIN_SEGMENT_CHARS=3;var parsedCache=new WeakMap;function splitSegments(path){return path.split("/").filter(segment=>segment!=="")}function parseRoutes(routes){const cached=parsedCache.get(routes);if(cached!==void 0)return cached;const parsed=[];for(const[key,domain]of Object.entries(routes.routes)){const space=key.indexOf(" ");if(space<=0)continue;const template=key.slice(space+1);parsed.push({method:key.slice(0,space),template,domain,segments:splitSegments(template).map(segment=>/^\{[^/{}]+\}$/.
6
+ resolveProfile}from"./chunk-4VZKNEVN.js";import"./chunk-RZVI6PMW.js";import{HELP_TOKEN}from"./chunk-W4E4F2ZA.js";import"./chunk-QQRJLH6B.js";import{OUTPUT_FORMATS,resolveOutputFormat}from"./chunk-74BPZOKU.js";import"./chunk-UREA4ZIG.js";import{stripTerminalControls}from"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var MIN_SEGMENT_CHARS=3;var parsedCache=new WeakMap;function splitSegments(path){return path.split("/").filter(segment=>segment!=="")}function parseRoutes(routes){const cached=parsedCache.get(routes);if(cached!==void 0)return cached;const parsed=[];for(const[key,domain]of Object.entries(routes.routes)){const space=key.indexOf(" ");if(space<=0)continue;const template=key.slice(space+1);parsed.push({method:key.slice(0,space),template,domain,segments:splitSegments(template).map(segment=>/^\{[^/{}]+\}$/.
7
7
  test(segment)?null:segment)})}parsedCache.set(routes,parsed);return parsed}function matches(route,segments){if(route.segments.length!==segments.length)return false;return route.segments.every((literal,i)=>literal===null||literal===segments[i])}function compareSpecificity(a,b){const literals=route=>route.segments.filter(segment=>segment!==null).length;const diff=literals(b)-literals(a);if(diff!==0)return diff;for(let i=0;i<a.segments.length;i+=1){const aLiteral=a.segments[i]!==null;const bLiteral=b.
8
8
  segments[i]!==null;if(aLiteral!==bLiteral)return aLiteral?-1:1}return 0}function lookupRoute(routes,method,path){const segments=splitSegments(path);const hits=parseRoutes(routes).filter(route=>matches(route,segments));const sameMethod=hits.filter(route=>route.method===method).sort(compareSpecificity);const best=sameMethod[0];if(best!==void 0)return{kind:"matched",domain:best.domain,template:best.template};if(hits.length>0){const[top]=[...hits].sort(compareSpecificity);const template=top.template;
9
9
  const methods=[...new Set(hits.filter(route=>route.template===template).map(route=>route.method))].sort();return{kind:"method-mismatch",template,methods}}return{kind:"unknown"}}function pickOperation(operations,method,template){return operations.find(op=>op.method===method&&op.path===template)??null}async function suggestRoutes(routes,path,limit=5){const{default:fuzzysort}=await import("./fuzzysort-DFVKV4B4.js");const parsed=parseRoutes(routes);const templates=[...new Set(parsed.map(route=>route.
@@ -1,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-7PDUN5MS.js";import"./chunk-NZ7WI4RZ.js";import{buildDiffLines,
4
- diffStat}from"./chunk-VRBI2NPI.js";import"./chunk-UFGJSWKU.js";import"./chunk-N2UVRM3Z.js";import"./chunk-MVZFZAT4.js";import"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";import"./chunk-II5RVJQN.js";import"./chunk-VFPY2A23.js";import{RelayError,builtinCatalog,createRuntime,loadCachedCatalog,modelLabel,pickModel,toModelInfos}from"./chunk-5WTFZJT7.js";import"./chunk-D233KKXW.js";import"./chunk-PMOUHEJQ.js";
5
- import"./chunk-XNLIEUAW.js";import{proxyDiagnostics}from"./chunk-J7QYPKVK.js";import{checkMinSupportedVersion,isBelowMinSupported,minSupportedBlockMessage}from"./chunk-DXXFUNYN.js";import"./chunk-4VZKNEVN.js";import{configReadDirs,twpHomeDir}from"./chunk-RZVI6PMW.js";import{parseArgv}from"./chunk-T3C2BAVA.js";import{applyPermissionMode,checkPermission,describePermissionMode,getMode,isModeId,modeSource,nextMode}from"./chunk-2LOT54OO.js";import"./chunk-35MQ27I6.js";
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-GTRKN2YS.js";import"./chunk-NZ7WI4RZ.js";import{buildDiffLines,
4
+ diffStat}from"./chunk-VRBI2NPI.js";import"./chunk-LDBYJPRD.js";import"./chunk-N2UVRM3Z.js";import"./chunk-4B6GJBYP.js";import"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";import"./chunk-II5RVJQN.js";import"./chunk-VFPY2A23.js";import{RelayError,builtinCatalog,createRuntime,loadCachedCatalog,modelLabel,pickModel,toModelInfos}from"./chunk-5WTFZJT7.js";import"./chunk-D233KKXW.js";import"./chunk-PMOUHEJQ.js";
5
+ import"./chunk-XNLIEUAW.js";import{proxyDiagnostics}from"./chunk-J7QYPKVK.js";import{checkMinSupportedVersion,isBelowMinSupported,minSupportedBlockMessage}from"./chunk-DXXFUNYN.js";import"./chunk-4VZKNEVN.js";import{configReadDirs,twpHomeDir}from"./chunk-RZVI6PMW.js";import{parseArgv}from"./chunk-QQCWGMZN.js";import{applyPermissionMode,checkPermission,describePermissionMode,getMode,isModeId,modeSource,nextMode}from"./chunk-2LOT54OO.js";import"./chunk-W4E4F2ZA.js";
6
6
  import"./chunk-QQRJLH6B.js";import{isFullWidth,isWide,stringWidth,stripAnsi}from"./chunk-UREA4ZIG.js";import{stripTerminalControls}from"./chunk-NHYMHCAT.js";import{require_fuzzysort}from"./chunk-DIMZRTLE.js";import{__commonJS,__export,__require,__toESM}from"./chunk-VSJBJXZO.js";var require_react_production=__commonJS({"node_modules/react/cjs/react.production.js"(exports){"use strict";var REACT_ELEMENT_TYPE=Symbol.for("react.transitional.element");var REACT_PORTAL_TYPE=Symbol.for("react.portal");var REACT_FRAGMENT_TYPE=Symbol.for("react.fragment");var REACT_STRICT_MODE_TYPE=Symbol.for("react.strict_mode");var REACT_PROFILER_TYPE=Symbol.for("react.profiler");var REACT_CONSUMER_TYPE=Symbol.for("react.consumer");var REACT_CONTEXT_TYPE=Symbol.for("react.context");var REACT_FORWARD_REF_TYPE=Symbol.
7
7
  for("react.forward_ref");var REACT_SUSPENSE_TYPE=Symbol.for("react.suspense");var REACT_MEMO_TYPE=Symbol.for("react.memo");var REACT_LAZY_TYPE=Symbol.for("react.lazy");var REACT_ACTIVITY_TYPE=Symbol.for("react.activity");var REACT_VIEW_TRANSITION_TYPE=Symbol.for("react.view_transition");var MAYBE_ITERATOR_SYMBOL=Symbol.iterator;function getIteratorFn(maybeIterable){if(null===maybeIterable||"object"!==typeof maybeIterable)return null;maybeIterable=MAYBE_ITERATOR_SYMBOL&&maybeIterable[MAYBE_ITERATOR_SYMBOL]||
8
8
  maybeIterable["@@iterator"];return"function"===typeof maybeIterable?maybeIterable:null}var ReactNoopUpdateQueue={isMounted:function(){return false},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}};var assign=Object.assign;var emptyObject={};function Component(props,context,updater){this.props=props;this.context=context;this.refs=emptyObject;this.updater=updater||ReactNoopUpdateQueue}Component.prototype.isReactComponent={};Component.prototype.setState=
@@ -1212,7 +1212,7 @@ cwd()){const listed=await gitListFiles(cwd2);const raw=listed??await walkFiles(c
1212
1212
  1;const after=/^[^\s]*/.exec(text.slice(cursor))?.[0]??"";return{query,start,end:cursor+after.length}}var TWP_SLASH_ROUTES={"/tasks":{domain:"task",operation:"list"},"/task":{domain:"task",operation:"get"},"/projects":{domain:"project",operation:"list"}};function isTwpSlashCommand(name){return Object.hasOwn(TWP_SLASH_ROUTES,name)}async function runTwpSlashCommand(name,args,deps){const route=TWP_SLASH_ROUTES[name];if(!Object.hasOwn(TWP_SLASH_ROUTES,name)||route===void 0){return{code:2,out:"",err:`\u4E0D\u660E\u306A\u30B3\u30DE\u30F3\u30C9: ${name}
1213
1213
  `}}const parsed=parseArgv([route.domain,route.operation,...args]);if(parsed.command!=="domain"||parsed.domain!==route.domain){return{code:2,out:"",err:`${name}: \u3053\u306E\u5F15\u6570\u306F\u4F7F\u3048\u307E\u305B\u3093\uFF08${args.join(" ")}\uFF09
1214
1214
  `}}if(parsed.unknown.length>0){return{code:2,out:"",err:`\u4E0D\u660E\u306A\u5F15\u6570: ${parsed.unknown.join(" ")}
1215
- `}}let out="";let err="";const io={out:text=>void(out+=text),err:text=>void(err+=text),isTty:true};const globals={profile:parsed.profile??deps.profile,...parsed.output!==void 0?{output:parsed.output}:{},...parsed.query!==void 0?{query:parsed.query}:{},dryRun:parsed.dryRun,debug:parsed.debug,yes:parsed.yes,refresh:parsed.refresh};const{runDomain}=await import("./run-65IJLMKQ.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-EQQOJ76O.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-DAXVAUV4.js";import{dateFlag,monthFlag}from"./chunk-EXT4AIDF.js";import"./chunk-MP6YIILX.js";import"./chunk-JJSBBWJ5.js";import"./chunk-MI6HVYR2.js";import"./chunk-RX5HWI4L.js";import"./chunk-6LSQCOCJ.js";import"./chunk-MVZFZAT4.js";import{isSafePathSegment}from"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";import{requireResolved,withResolved}from"./chunk-PS5QFKHB.js";
4
- import"./chunk-II5RVJQN.js";import{isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiRejectedError,ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";import"./chunk-J7QYPKVK.js";import"./chunk-4VZKNEVN.js";import"./chunk-RZVI6PMW.js";import"./chunk-QQRJLH6B.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var CREATE_USAGE="twp attendance record create --date <YYYY-MM-DD> --time <HH:MM> --type <clock-in|clock-out|break-start|break-end|switch> [--project <\u30B3\u30FC\u30C9|ID>] [--task <\u30BF\u30B9\u30AFID>] [--memo <\u30E1\u30E2>]";var UPDATE_USAGE="twp attendance record update <\u8A18\u9332ID> --memo <\u30E1\u30E2> [--month <YYYY-MM>]";var DELETE_USAGE="twp attendance record delete <\u8A18\u9332ID> --reason <\u7406\u7531> --yes [--month <YYYY-MM>]";var MOVE_USAGE="twp attendance record move <\u8A18\u9332\
3
+ import{PUNCH_TYPES,assertMonthOpen,attendanceDomain}from"./chunk-2YVJ3QVJ.js";import{dateFlag,monthFlag}from"./chunk-EXT4AIDF.js";import"./chunk-FHOJFKR3.js";import"./chunk-JJSBBWJ5.js";import"./chunk-MI6HVYR2.js";import"./chunk-RX5HWI4L.js";import"./chunk-6LSQCOCJ.js";import"./chunk-4B6GJBYP.js";import{isSafePathSegment}from"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";import"./chunk-II5RVJQN.js";
4
+ import{requireResolved,withResolved}from"./chunk-PS5QFKHB.js";import{isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiRejectedError,ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";import"./chunk-J7QYPKVK.js";import"./chunk-4VZKNEVN.js";import"./chunk-RZVI6PMW.js";import"./chunk-QQRJLH6B.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var CREATE_USAGE="twp attendance record create --date <YYYY-MM-DD> --time <HH:MM> --type <clock-in|clock-out|break-start|break-end|switch> [--project <\u30B3\u30FC\u30C9|ID>] [--task <\u30BF\u30B9\u30AFID>] [--memo <\u30E1\u30E2>]";var UPDATE_USAGE="twp attendance record update <\u8A18\u9332ID> --memo <\u30E1\u30E2> [--month <YYYY-MM>]";var DELETE_USAGE="twp attendance record delete <\u8A18\u9332ID> --reason <\u7406\u7531> --yes [--month <YYYY-MM>]";var MOVE_USAGE="twp attendance record move <\u8A18\u9332\
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-DAXVAUV4.js";import{monthFlag}from"./chunk-EXT4AIDF.js";import"./chunk-MP6YIILX.js";import"./chunk-JJSBBWJ5.js";import"./chunk-MI6HVYR2.js";import"./chunk-RX5HWI4L.js";import"./chunk-6LSQCOCJ.js";import"./chunk-MVZFZAT4.js";import"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";import"./chunk-PS5QFKHB.js";import"./chunk-II5RVJQN.js";import{isRecord,pick}from"./chunk-3ZRMMBP5.js";
3
+ import{hoursMinutes}from"./chunk-2YVJ3QVJ.js";import{monthFlag}from"./chunk-EXT4AIDF.js";import"./chunk-FHOJFKR3.js";import"./chunk-JJSBBWJ5.js";import"./chunk-MI6HVYR2.js";import"./chunk-RX5HWI4L.js";import"./chunk-6LSQCOCJ.js";import"./chunk-4B6GJBYP.js";import"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";import"./chunk-II5RVJQN.js";import"./chunk-PS5QFKHB.js";import{isRecord,pick}from"./chunk-3ZRMMBP5.js";
4
4
  import{ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";import"./chunk-J7QYPKVK.js";import"./chunk-4VZKNEVN.js";import"./chunk-RZVI6PMW.js";import"./chunk-QQRJLH6B.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var MONTH_FLAG={name:"--month",summary:"\u5BFE\u8C61\u306E\u5E74\u6708\uFF08YYYY-MM\uFF09",takesValue:true,placeholder:"<YYYY-MM>"};var ME_FLAG={name:"--me",summary:"\u81EA\u5206\u306E\u5206\u3060\u3051\u3092\u8868\u793A\u3059\u308B\uFF08\u7121\u3051\u308C\u3070\u5168\u54E1\u5206\u30FB\u7BA1\u7406\u8005\uFF09",takesValue:false};var FORBIDDEN_ADMIN="\u6A29\u9650\u304C\u8DB3\u308A\u307E\u305B\u3093\u3002\u5168\u54E1\u5206\uFF08--me \u306A\u3057\uFF09\u306F\u52E4\u6020\u306E\u7BA1\u7406\u8005\u6A29\u9650\uFF08\u52E4\u6020: \u7BA1\u7406\u8005\uFF09\u3001\u81EA\u5206\u306E\u5206\uFF08--me\uFF09\u306F\u52E4\u6020\u306E\u5229\u7528\u6A29\u9650\u304C\u8981\u308A\u307E\u3059\u3002\u30C6\u30CA\u30F3\u30C8\u306E\u7BA1\u7406\u8005\u306B\u6A29\u9650\u306E\u4ED8\u4E0E\u3092\u4F9D\u983C\u3057\u3066\u304F\u3060\u3055\u3044";
5
5
  function listBody(spec,body){if(!isRecord(body)||!Array.isArray(body[spec.key])){throw new ApiResponseError(`${spec.label}\u306E\u5FDC\u7B54\u306B ${spec.key} \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}return body}function monthListOperation(spec){const usage=`twp ${spec.domain} list [--month <YYYY-MM>] [--me]`;return{name:"list",summary:`\u6708\u306E${spec.label}\u3092\u4E00\u89A7\u3059\u308B\uFF08--me \u3067\u81EA\u5206\u306E\u5206\u30FB\u7121\u3051\u308C\u3070\u5168\u54E1\u5206\uFF1D\u7BA1\u7406\u8005\uFF09`,
6
6
  usage,description:`GET ${spec.path} \u3092\u8868\u793A\u3057\u307E\u3059\uFF08\u5168\u54E1\u5206\u30FB\u52E4\u6020\u306E\u7BA1\u7406\u8005\u6A29\u9650\u304C\u5FC5\u8981\uFF09\u3002--me \u3092\u4ED8\u3051\u308B\u3068 GET ${spec.path}/me\uFF08\u81EA\u5206\u306E\u5206\uFF09\u3067\u3059\u3002
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{repeatedValues}from"./chunk-RX5HWI4L.js";import{readBody}from"./chunk-6LSQCOCJ.js";import{BACKLOG_BASE_PATH,BACKLOG_PROJECT_SCOPE_LABEL,BACKLOG_SCOPE_LABEL,backlogSpacePath,isExactNumericId,resolveNamed}from"./chunk-MVZFZAT4.js";import"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";import{requireResolved,singleRef,withResolved}from"./chunk-PS5QFKHB.js";import"./chunk-II5RVJQN.js";import{isRecord,pick}from"./chunk-3ZRMMBP5.js";
3
+ import{repeatedValues}from"./chunk-RX5HWI4L.js";import{readBody}from"./chunk-6LSQCOCJ.js";import{BACKLOG_BASE_PATH,BACKLOG_PROJECT_SCOPE_LABEL,BACKLOG_SCOPE_LABEL,backlogSpacePath,isExactNumericId,resolveNamed}from"./chunk-4B6GJBYP.js";import"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";import"./chunk-II5RVJQN.js";import{requireResolved,singleRef,withResolved}from"./chunk-PS5QFKHB.js";import{isRecord,pick}from"./chunk-3ZRMMBP5.js";
4
4
  import{ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";import"./chunk-J7QYPKVK.js";import"./chunk-4VZKNEVN.js";import"./chunk-RZVI6PMW.js";import"./chunk-QQRJLH6B.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var 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 ISSUE_JSON_SHAPE_HELP='--output json \u306E\u5F62\uFF08Backlog API \u306E\u5F62\u3067\u306F\u3042\u308A\u307E\u305B\u3093\uFF09:\n TWP \u30B5\u30FC\u30D0\u304C\u6574\u3048\u305F\u5F62\u3067\u8FD4\u308A\u307E\u3059\u3002Backlog API \u306E\u8AB2\u984C\u3092\u305D\u306E\u307E\u307E\u8AAD\u3080\u524D\u63D0\u3067\u66F8\u304F\u3068\u58CA\u308C\u307E\u3059\u3002\n - status / priority / resolution / issueType / assignee / createdUser / updatedUser \u306F\n \u540D\u524D\u306E\u6587\u5B57\u5217\u3067\u3059\uFF08{id, name} \u3067\u306F\u3042\u308A\u307E\u305B\u3093\uFF09\u3002ID \u306F statusId / issueTypeId /\n assigneeId \u2026 \u306E\u3088\u3046\u306B\u672B\u5C3E Id \u306E\u5225\u30AD\u30FC\u306B\u3042\u308A\u307E\u3059\u3002\u672A\u8A2D\u5B9A\u306A\u3089\u4E21\u65B9 null \u3067\u3059\u3002\n - category / versions / milestone \u306F {id, name} \u306E\u914D\u5217\u306E\u307E\u307E\u3067\u3059\uFF08\u8907\u6570\u4ED8\u3051\u3089\u308C\u308B\u305F\u3081\u3001\n \
6
6
  \u540D\u524D\u3068 ID \u3092\u5225\u30AD\u30FC\u3078\u5206\u3051\u308B\u3068\u5BFE\u5FDC\u304C\u5D29\u308C\u307E\u3059\uFF09\u3002customFields \u3082\u914D\u5217\u3067\u3059\u3002\n \u4F8B\uFF081\u4EF6\u30FB\u629C\u7C8B\uFF09:\n {"id": 1234, "issueKey": "PRJ-12", "summary": "\u2026",\n "statusId": 1, "status": "\u672A\u5BFE\u5FDC", "issueTypeId": 56, "issueType": "\u30BF\u30B9\u30AF",\n "assigneeId": 91, "assignee": "\u8C37 \u6A39",\n "category": [{"id": 7, "name": "\u8A2D\u8A08"}], "milestone": [], ...}\n --query \u3082\u3053\u306E\u5F62\u306B\u5F53\u305F\u308A\u307E\u3059\uFF08issue list \u306E\u4F8B: --query "[].{key: issueKey, type: issueType}"\uFF09\u3002';
@@ -0,0 +1,4 @@
1
+ import { createRequire as __twpCreateRequire } from 'node:module';
2
+ const require = __twpCreateRequire(import.meta.url);
3
+ import{breakdownRows,budgetDomain,dashboardRows,fiscalYear,importRejection,overwriteLines,parseAllocationRows,parseSplit,parseTargetRows,periodsLabel}from"./chunk-JIOZ47AX.js";import"./chunk-YA7W7OV4.js";import"./chunk-2YVJ3QVJ.js";import"./chunk-EXT4AIDF.js";import"./chunk-FHOJFKR3.js";import"./chunk-JJSBBWJ5.js";import"./chunk-MI6HVYR2.js";import"./chunk-RX5HWI4L.js";import"./chunk-6LSQCOCJ.js";import"./chunk-4B6GJBYP.js";import"./chunk-HVZUXLQ4.js";
4
+ import"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";import"./chunk-II5RVJQN.js";import"./chunk-PS5QFKHB.js";import"./chunk-3ZRMMBP5.js";import"./chunk-VFPY2A23.js";import"./chunk-J7QYPKVK.js";import"./chunk-4VZKNEVN.js";import"./chunk-RZVI6PMW.js";import"./chunk-QQRJLH6B.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";export{breakdownRows,budgetDomain,dashboardRows,fiscalYear,importRejection,overwriteLines,parseAllocationRows,parseSplit,parseTargetRows,periodsLabel};
@@ -0,0 +1,18 @@
1
+ import { createRequire as __twpCreateRequire } from 'node:module';
2
+ const require = __twpCreateRequire(import.meta.url);
3
+ import{repeatedValues}from"./chunk-RX5HWI4L.js";import{requireResolved,withResolved}from"./chunk-PS5QFKHB.js";import{isRecord}from"./chunk-3ZRMMBP5.js";import{ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";import"./chunk-QQRJLH6B.js";import"./chunk-VSJBJXZO.js";var NAME="business-hours";var LABEL="\u55B6\u696D\u65E5\u30FB\u55B6\u696D\u6642\u9593";var PATH="/api/v2/admin/tenant/business-hours";var FORBIDDEN=`\u7BA1\u7406\u8005\u306E\u6A29\u9650\u304C\u5FC5\u8981\u3067\u3059\u3002${LABEL}\u306F\u7BA1\u7406\u8005\u3060\u3051\u304C\u8AAD\u307F\u66F8\u304D\u3067\u304D\u307E\u3059`;var IMPACT="\u55B6\u696D\u65E5\u306E\u8A2D\u5B9A\u306F\u52E4\u6020\u306E\u96C6\u8A08\uFF08\u6240\u5B9A\u65E5\u6570\u30FB\u4F11\u65E5\u52B4\u50CD\uFF09\u306B\u52B9\u304D\u307E\u3059\u3002";
4
+ var DAY_LABELS=["\u65E5","\u6708","\u706B","\u6C34","\u6728","\u91D1","\u571F"];var DAY_ALIASES={sun:0,mon:1,tue:2,wed:3,thu:4,fri:5,sat:6,\u65E5:0,\u6708:1,\u706B:2,\u6C34:3,\u6728:4,\u91D1:5,\u571F:6,"0":0,"1":1,"2":2,"3":3,"4":4,"5":5,"6":6};var TIME_RE=/^([01]?[0-9]|2[0-3]):[0-5][0-9]$/;var DAY_FLAG={name:"--day",summary:"<\u66DC\u65E5>=<HH:MM>-<HH:MM>\uFF08\u55B6\u696D\u65E5\uFF09\u304B <\u66DC\u65E5>=off\uFF08\u975E\u55B6\u696D\u65E5\uFF09\u3002\u66DC\u65E5\u306F mon\u301Csun\u30FB\u6708\u301C\u65E5\u30FB0\u301C6\uFF080=\u65E5\u66DC\uFF09\u3002\u8907\u6570\u56DE\u6307\u5B9A\u53EF",
5
+ takesValue:true,placeholder:"<\u66DC\u65E5>=<\u5024>",repeatable:true};function envelope(body){if(!isRecord(body)||body["result"]!==true)throw new ApiResponseError(`${LABEL}\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`);return body}function readDays(body){const hours=envelope(body)["business_hours"];const days=isRecord(hours)?hours["days"]:void 0;const at=i=>Array.isArray(days)?days[i]:
6
+ isRecord(days)?days[String(i)]:void 0;return DAY_LABELS.map((_,i)=>{const day=at(i);if(!isRecord(day)||typeof day["is_business_day"]!=="boolean"){throw new ApiResponseError(`${LABEL}\u306E\u5FDC\u7B54\u306B\u66DC\u65E5 ${i} \u306E\u8A2D\u5B9A\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}return{is_business_day:day["is_business_day"],start_time:typeof day["start_time"]==="string"?day["start_time"]:null,end_time:typeof day["\
7
+ end_time"]==="string"?day["end_time"]:null}})}function describe(day){return day.is_business_day?`\u55B6\u696D ${day.start_time??"?"}-${day.end_time??"?"}`:"\u4F11\u307F"}function rowsOf(days){return days.map((day,i)=>({weekday:i,label:DAY_LABELS[i],...day}))}function parseDaySpecs(specs){const usage=`twp ${NAME} set help`;if(specs.length===0)throw new UsageError("--day <\u66DC\u65E5>=<HH:MM>-<HH:MM>|off \u30921\u3064\u4EE5\u4E0A\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",usage);const out=new Map;
8
+ for(const spec of specs){const eq=spec.indexOf("=");const key=(eq<0?spec:spec.slice(0,eq)).trim().toLowerCase();const value=eq<0?"":spec.slice(eq+1).trim();const index=Object.hasOwn(DAY_ALIASES,key)?DAY_ALIASES[key]:void 0;if(index===void 0)throw new UsageError(`--day \u306E\u66DC\u65E5\u304C\u8AAD\u3081\u307E\u305B\u3093: ${spec}\uFF08mon\u301Csun\u30FB\u6708\u301C\u65E5\u30FB0\u301C6\uFF09`,usage);if(out.has(index))throw new UsageError(`--day \u3067 ${DAY_LABELS[index]}\u66DC\u65E5\u304C2\u56DE\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u3059`,
9
+ usage);if(value.toLowerCase()==="off"){out.set(index,{is_business_day:false,start_time:null,end_time:null});continue}const[start,end,...rest]=value.split("-").map(s=>s.trim());if(start===void 0||end===void 0||rest.length>0||!TIME_RE.test(start)||!TIME_RE.test(end)){throw new UsageError(`--day \u306E\u5024\u306F <HH:MM>-<HH:MM> \u304B off \u3067\u3059: ${spec}`,usage)}const pad=t=>t.padStart(5,"0");if(pad(start)>=pad(end))throw new UsageError(`--day \u306E\u7D42\u4E86\u6642\u523B\u306F\u958B\u59CB\u6642\u523B\u3088\u308A\u5F8C\u306B\u3057\u3066\u304F\u3060\u3055\u3044: ${spec}`,
10
+ usage);out.set(index,{is_business_day:true,start_time:pad(start),end_time:pad(end)})}return out}function changeNotes(before,after){const lines=after.flatMap((day,i)=>{const old=before[i];return describe(old)===describe(day)?[]:[` ${DAY_LABELS[i]}: ${describe(old)} \u2192 ${describe(day)}`]});return lines.length===0?["\u4ECA\u306E\u8A2D\u5B9A\u3068\u540C\u3058\u3067\u3059\uFF08\u9001\u3063\u3066\u3082\u4F55\u3082\u5909\u308F\u308A\u307E\u305B\u3093\uFF09\u3002"]:[`\u5909\u308F\u308B\u66DC\u65E5 ${lines.
11
+ length} \u4EF6:`,...lines]}async function prepareSet(input,ctx){if(input.args.length>0)throw new UsageError(`set \u306F\u4F4D\u7F6E\u5F15\u6570\u3092\u53D6\u308A\u307E\u305B\u3093: ${input.args.join(" ")}`,`twp ${NAME} set help`);const changes=parseDaySpecs(repeatedValues(input,DAY_FLAG.name));const before=readDays(await ctx.resolver.salesJson(PATH,LABEL));const after=before.map((day,i)=>changes.get(i)??day);return withResolved(input,{days:JSON.stringify(after),notes:JSON.stringify([...changeNotes(
12
+ before,after),IMPACT])})}var businessHoursDomain={name:NAME,summary:`${LABEL}\uFF08\u66DC\u65E5\u3054\u3068\u306E\u55B6\u696D\u30FB\u975E\u55B6\u696D\u3068\u55B6\u696D\u6642\u9593\u306E\u8868\u793A\u30FB\u5909\u66F4\uFF09`,operations:[{name:"get",summary:`${LABEL}\u3092\u8868\u793A\u3059\u308B\uFF08\u7BA1\u7406\u8005\u306E\u307F\uFF09`,usage:`twp ${NAME} get`,description:`GET ${PATH}\u3002\u66DC\u65E5\uFF080=\u65E5\u66DC\u301C6=\u571F\u66DC\uFF09\u3054\u3068\u306B\u3001\u55B6\u696D\u65E5\u304B\u30FB\u958B\u59CB\u30FB\u7D42\u4E86\u6642\u523B\u3092\u51FA\u3057\u307E\u3059\u3002\u672A\u8A2D\u5B9A\u306E\u66DC\u65E5\u306F\u30B5\u30FC\u30D0\u306E\u65E2\u5B9A\uFF08\u6708\u301C\u91D1 9:00-18:00\uFF09\u3067\u3059\u3002`,
13
+ forbidden:FORBIDDEN,flags:[],plan(input){if(input.args.length>0)throw new UsageError(`get \u306F\u4F4D\u7F6E\u5F15\u6570\u3092\u53D6\u308A\u307E\u305B\u3093: ${input.args.join(" ")}`,`twp ${NAME} get help`);return{method:"GET",path:PATH}},summarize:body=>rowsOf(readDays(body)),raw:body=>({days:rowsOf(readDays(body)),updated_at:envelope(body)["business_hours"]["updated_at"]??null})},{name:"set",summary:`${LABEL}\u3092\u5909\u3048\u308B\uFF08\u7BA1\u7406\u8005\u306E\u307F\u30FB--yes \u304C\u8981\u308B\u30FB--dry-run \u3067\u5DEE\u5206\u3092\u898B\u3089\u308C\u308B\uFF09`,
14
+ usage:`twp ${NAME} set --day <\u66DC\u65E5>=<HH:MM>-<HH:MM>|off [--day ...] --yes`,description:`PUT ${PATH}\u3002--day \u3067\u6307\u5B9A\u3057\u305F\u66DC\u65E5\u3060\u3051\u3092\u5909\u3048\u3001\u4ED6\u306E\u66DC\u65E5\u306F\u4ECA\u306E\u5024\u306E\u307E\u307E\u9001\u308A\u307E\u3059\u3002
15
+ \u4F8B: twp business-hours set --day sat=10:00-15:00 --day mon=off --yes
16
+ \u9001\u308B\u524D\u306B\u4ECA\u306E\u5024\u3092\u8AAD\u307F\u3001\u5909\u308F\u308B\u66DC\u65E5\u3092 stderr \u306B\u51FA\u3057\u307E\u3059\uFF08--dry-run \u306F\u5DEE\u5206\u3092\u51FA\u3057\u3066\u6B62\u307E\u308A\u307E\u3059\uFF09\u3002
17
+ `+IMPACT,destructive:true,confirmation:"\u52E4\u6020\u306E\u96C6\u8A08\u306B\u52B9\u304F\u64CD\u4F5C\uFF08\u5DEE\u5206\u306F --dry-run \u3067\u898B\u3089\u308C\u307E\u3059\uFF09",forbidden:FORBIDDEN,flags:[DAY_FLAG],prepare:prepareSet,plan:input=>{const days=JSON.parse(requireResolved(input,"days"));return{method:"PUT",path:PATH,body:{days:Object.fromEntries(days.map((day,i)=>[String(i),day]))}}},plannedNotes:input=>JSON.parse(requireResolved(input,"notes")),summarize:body=>rowsOf(readDays(body)),
18
+ raw:body=>rowsOf(readDays(body))}]};export{businessHoursDomain,changeNotes,parseDaySpecs,readDays};
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{dateFlag,monthFlag}from"./chunk-EXT4AIDF.js";import{STATUS_VALUES,createFlags,fieldBody,hasAnyField,idSegment,masterItem,masterRows,targetId,truncationNotes,updateFlags}from"./chunk-MP6YIILX.js";import{nonEmpty,positiveInteger}from"./chunk-MI6HVYR2.js";import{repeatedValues}from"./chunk-RX5HWI4L.js";import{readBody}from"./chunk-6LSQCOCJ.js";import{ATTENDANCE_REPORTS_PATH,ATTENDANCE_REPORT_MASTER_LABELS,ATTENDANCE_REPORT_MASTER_PATHS,ORG_MASTER_LIMIT,resolveNamed}from"./chunk-MVZFZAT4.js";
3
+ import{dateFlag,monthFlag}from"./chunk-EXT4AIDF.js";import{STATUS_VALUES,createFlags,fieldBody,hasAnyField,idSegment,masterItem,masterRows,targetId,truncationNotes,updateFlags}from"./chunk-FHOJFKR3.js";import{nonEmpty,positiveInteger}from"./chunk-MI6HVYR2.js";import{repeatedValues}from"./chunk-RX5HWI4L.js";import{readBody}from"./chunk-6LSQCOCJ.js";import{ATTENDANCE_REPORTS_PATH,ATTENDANCE_REPORT_MASTER_LABELS,ATTENDANCE_REPORT_MASTER_PATHS,ORG_MASTER_LIMIT,resolveNamed}from"./chunk-4B6GJBYP.js";
4
4
  import{isSafePathSegment}from"./chunk-HVZUXLQ4.js";import{ApiError}from"./chunk-JA5A6UJ2.js";import{requireResolved,singleRef,withResolved}from"./chunk-PS5QFKHB.js";import{acknowledgement,isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiRejectedError,ApiResponseError,UsageError}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";
5
5
  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",
6
6
  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})}var COMMAND="twp attendance";function label(kind){return ATTENDANCE_REPORT_MASTER_LABELS[kind]}function commonFields(name){return[{kind:"text",flag:"--code",key:"code",label:`${name}\u30B3\u30FC\u30C9`,maxChars:50,summary:`${name}\u30B3\u30FC\u30C9\uFF08\u30C6\u30CA\u30F3\u30C8\u5185\u3067\u4E00\u610F\uFF09`},{kind:"text",flag:"--name",key:"name",label:`${name}\u540D`,maxChars:255,summary:`${name}\u540D`}]}function tailFields(){return[{kind:"integer",flag:"--sort",key:"sort",label:"\u8868\u793A\u9806",
@@ -1,8 +1,8 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{loadDomain}from"./chunk-5VZ54H2J.js";import{JsonBodyWithView}from"./chunk-Q3B65OFC.js";import{evaluateQuery}from"./chunk-GFLGXGWE.js";import{renderDocument,renderOutput}from"./chunk-YXVN6OCH.js";import{redactSecretValues,redactSecrets,withDebug}from"./chunk-UFGJSWKU.js";import{DEFAULT_MAX_ITEMS,DEFAULT_MAX_PAGES,nextPageNotes,positiveInteger,shellQuote}from"./chunk-MI6HVYR2.js";import{parseOperationArgs}from"./chunk-RX5HWI4L.js";import{Resolver,requireDefaultProject}from"./chunk-MVZFZAT4.js";
3
+ import{loadDomain}from"./chunk-DMXMQGGZ.js";import{JsonBodyWithView}from"./chunk-Q3B65OFC.js";import{evaluateQuery}from"./chunk-GFLGXGWE.js";import{renderDocument,renderOutput}from"./chunk-PO35MCYP.js";import{redactSecretValues,redactSecrets,withDebug}from"./chunk-LDBYJPRD.js";import{DEFAULT_MAX_ITEMS,DEFAULT_MAX_PAGES,nextPageNotes,positiveInteger,shellQuote}from"./chunk-MI6HVYR2.js";import{parseOperationArgs}from"./chunk-RX5HWI4L.js";import{Resolver,requireDefaultProject}from"./chunk-4B6GJBYP.js";
4
4
  import{ResolveError}from"./chunk-HVZUXLQ4.js";import{ApiError,MultipartBody,TwpApiClient,appendQuery}from"./chunk-JA5A6UJ2.js";import{isRecord}from"./chunk-3ZRMMBP5.js";import{ApiRejectedError,ApiResponseError,EXIT_API_CLIENT,EXIT_API_SERVER,EXIT_AUTH,EXIT_FAILURE,EXIT_OK,EXIT_USAGE,EXIT_WAIT_TIMEOUT,NetworkError,UsageError,WaitTimeoutError}from"./chunk-VFPY2A23.js";import{GLOBAL_OPTIONS_HELP}from"./chunk-PECIBNFD.js";import{AuthSession,NotLoggedInError,SessionExpiredError,
5
- loadCredentials}from"./chunk-XNLIEUAW.js";import{httpFetch}from"./chunk-J7QYPKVK.js";import{effectiveApiUrl,loadUserConfig,resolveConfiguredOutput,resolveProfile}from"./chunk-4VZKNEVN.js";import{HELP_TOKEN}from"./chunk-35MQ27I6.js";import{OUTPUT_FORMATS,resolveOutputFormat}from"./chunk-74BPZOKU.js";import{stringWidth}from"./chunk-UREA4ZIG.js";import{stripTerminalControls}from"./chunk-NHYMHCAT.js";import fs from"fs";import path from"path";var NO_REDACT_FLAG={name:"--no-redact",summary:"\u5FDC\u7B54\u306E\u4F0F\u5B57\u5316\u3092\u89E3\u9664\u3057\u3066\u751F\u306E\u5024\u3092\u51FA\u3059\uFF08\u9375\u306E\u53D7\u3051\u53D6\u308A\u7B49\uFF09",takesValue:false};var NO_REDACT_NOTICE="\u6CE8\u8A18: --no-redact \u306E\u305F\u3081\u51FA\u529B\u3092\u4F0F\u5B57\u5316\u3057\u307E\u305B\u3093\uFF08\u7AEF\u672B\u3068\u30ED\u30B0\u306B\u5E73\u6587\u3067\u6B8B\u308A\u307E\u3059\uFF09\u3002";function withCommonFlags(flags){return flags.some(flag=>flag.
5
+ loadCredentials}from"./chunk-XNLIEUAW.js";import{httpFetch}from"./chunk-J7QYPKVK.js";import{effectiveApiUrl,loadUserConfig,resolveConfiguredOutput,resolveProfile}from"./chunk-4VZKNEVN.js";import{HELP_TOKEN}from"./chunk-W4E4F2ZA.js";import{OUTPUT_FORMATS,resolveOutputFormat}from"./chunk-74BPZOKU.js";import{stringWidth}from"./chunk-UREA4ZIG.js";import{stripTerminalControls}from"./chunk-NHYMHCAT.js";import fs from"fs";import path from"path";var NO_REDACT_FLAG={name:"--no-redact",summary:"\u5FDC\u7B54\u306E\u4F0F\u5B57\u5316\u3092\u89E3\u9664\u3057\u3066\u751F\u306E\u5024\u3092\u51FA\u3059\uFF08\u9375\u306E\u53D7\u3051\u53D6\u308A\u7B49\uFF09",takesValue:false};var NO_REDACT_NOTICE="\u6CE8\u8A18: --no-redact \u306E\u305F\u3081\u51FA\u529B\u3092\u4F0F\u5B57\u5316\u3057\u307E\u305B\u3093\uFF08\u7AEF\u672B\u3068\u30ED\u30B0\u306B\u5E73\u6587\u3067\u6B8B\u308A\u307E\u3059\uFF09\u3002";function withCommonFlags(flags){return flags.some(flag=>flag.
6
6
  name===NO_REDACT_FLAG.name)?flags:[...flags,NO_REDACT_FLAG]}function alignedList(entries,indent=" "){const width=entries.reduce((max,[left])=>Math.max(max,stringWidth(left)),0);return entries.map(([left,right])=>`${indent}${left}${" ".repeat(Math.max(0,width-stringWidth(left)))} ${right}`).join("\n")}function subresourcesOf(resource){return resource.subresources??[]}function renderResourceHelp(resource,path2){const subresources=subresourcesOf(resource);const operationSection=resource.operations.length===0?"":`
7
7
  \u64CD\u4F5C:
8
8
  ${alignedList(resource.operations.map(op=>[op.name,op.summary]))}
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{emailText,ms365Forbidden,recipientsText,str}from"./chunk-DLD736A2.js";import{JsonBodyWithView}from"./chunk-Q3B65OFC.js";import{repeatedValues}from"./chunk-RX5HWI4L.js";import{readBody}from"./chunk-6LSQCOCJ.js";import{assertMs365PathSegment,ms365Path,ms365Segment}from"./chunk-H4CDX4TX.js";import{requireResolved,singleRef,withResolved}from"./chunk-PS5QFKHB.js";import{isRecord}from"./chunk-3ZRMMBP5.js";import{ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";import fs from"fs";import path from"path";var BODY_MAX_CHARS=1e5;var ATTACH_TOTAL_MAX_BYTES=3*1024*1024;var ADDRESS=/^[^\s@,;<>"]+@[^\s@,;<>"]+$/;var INVISIBLE=/[\p{Cc}\p{Cf}]/u;function oneLine(value){return value.replace(/[\r\n\t]+/g," ").replace(/[\p{Cc}\p{Cf}]/gu,"")}var TO_FLAG={name:"--to",summary:"\u5B9B\u5148\u306E\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\uFF08\u5FC5\u9808\u3002\u8907\u6570\u306A\u3089\u7E70\u308A\u8FD4\u3059\uFF09",takesValue:true,placeholder:"<\u30A2\u30C9\u30EC\u30B9>",repeatable:true};var CC_FLAG={name:"--c\
3
+ import{JsonBodyWithView}from"./chunk-Q3B65OFC.js";import{emailText,ms365Forbidden,recipientsText,str}from"./chunk-DLD736A2.js";import{repeatedValues}from"./chunk-RX5HWI4L.js";import{readBody}from"./chunk-6LSQCOCJ.js";import{assertMs365PathSegment,ms365Path,ms365Segment}from"./chunk-H4CDX4TX.js";import{requireResolved,singleRef,withResolved}from"./chunk-PS5QFKHB.js";import{isRecord}from"./chunk-3ZRMMBP5.js";import{ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";import fs from"fs";import path from"path";var BODY_MAX_CHARS=1e5;var ATTACH_TOTAL_MAX_BYTES=3*1024*1024;var ADDRESS=/^[^\s@,;<>"]+@[^\s@,;<>"]+$/;var INVISIBLE=/[\p{Cc}\p{Cf}]/u;function oneLine(value){return value.replace(/[\r\n\t]+/g," ").replace(/[\p{Cc}\p{Cf}]/gu,"")}var TO_FLAG={name:"--to",summary:"\u5B9B\u5148\u306E\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\uFF08\u5FC5\u9808\u3002\u8907\u6570\u306A\u3089\u7E70\u308A\u8FD4\u3059\uFF09",takesValue:true,placeholder:"<\u30A2\u30C9\u30EC\u30B9>",repeatable:true};var CC_FLAG={name:"--c\
4
4
  c",summary:"Cc \u306E\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\uFF08\u8907\u6570\u306A\u3089\u7E70\u308A\u8FD4\u3059\uFF09",takesValue:true,placeholder:"<\u30A2\u30C9\u30EC\u30B9>",repeatable:true};var BODY_FILE_FLAG={name:"--body-file",summary:"\u672C\u6587\u3092\u30D5\u30A1\u30A4\u30EB\u304B\u3089\u8AAD\u3080\uFF08- \u3067\u6A19\u6E96\u5165\u529B\uFF09",takesValue:true,placeholder:"<\u30D1\u30B9|->"};var BODY_FLAG={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",
5
5
  takesValue:true,placeholder:"<\u6587\u5B57\u5217>"};var HTML_FLAG={name:"--html",summary:"\u672C\u6587\u3092 HTML \u3068\u3057\u3066\u9001\u308B\uFF08\u65E2\u5B9A\u306F\u30C6\u30AD\u30B9\u30C8\uFF09",takesValue:false};var MESSAGE_FLAG={name:"--message",summary:"\u5143\u306E\u30E1\u30FC\u30EBID\uFF08\u4F4D\u7F6E\u5F15\u6570\u3068\u540C\u3058\u610F\u5473\uFF09",takesValue:true,placeholder:"<ID>"};var EXTERNAL_SEND_HELP="\u26A0 \u5916\u90E8\u3078\u51FA\u308B\u64CD\u4F5C\u3067\u3059\u3002\u5B9F\u884C\u3057\u305F\u77AC\u9593\u306B\u76F8\u624B\u306E\u53D7\u4FE1\u7BB1\u3078\u5C4A\u304D\u3001\u53D6\u308A\u6D88\u305B\u307E\u305B\u3093\u3002\n --yes \u304C\u7121\u3051\u308C\u3070\u5B9F\u884C\u3057\u307E\u305B\u3093\u3002--dry-run \u3067\u9001\u308B\u5185\u5BB9\uFF08\u5B9B\u5148\u30FB\u4EF6\
6
6
  \u540D\u30FB\u672C\u6587\u30FB\u6DFB\u4ED8\u306E\u540D\u524D\u3068\u5927\u304D\u3055\uFF09\u3092\u78BA\u304B\u3081\u3066\u304B\u3089\n --yes \u3092\u4ED8\u3051\u3066\u304F\u3060\u3055\u3044\uFF08--dry-run \u306F --yes \u3092\u8981\u308A\u307E\u305B\u3093\uFF09\u3002\n\u26A0 \u7D42\u4E86\u30B3\u30FC\u30C9 4\uFF08\u901A\u4FE1\u306E\u5931\u6557\u30FB\u30B5\u30FC\u30D0\u306E\u4E00\u6642\u30A8\u30E9\u30FC\uFF09\u3067\u3082\u3001Microsoft 365 \u5074\u3067\u306F\u9001\u4FE1\u6E08\u307F\u306E\u3053\u3068\u304C\u3042\u308A\u307E\u3059\u3002\n \u6253\u3061\u76F4\u3059\u524D\u306B twp outlook mail list --folder sentitems \u3067\u9001\u4FE1\u6E08\u307F\u30A2\u30A4\u30C6\u30E0\u3092\u78BA\u8A8D\u3057\u3066\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{CUSTOMER_FLAG,CUSTOMER_LICENSE,childForbidden,levelForbidden,prepareCustomerFlag}from"./chunk-45OL54MY.js";import{inspectLocalFile}from"./chunk-I4TR55UF.js";import{checkUploadQuota}from"./chunk-V64CGX7V.js";import{createFlags,fieldBody,hasAnyField,updateFlags}from"./chunk-MP6YIILX.js";import{booleanText}from"./chunk-JJSBBWJ5.js";import{nonEmpty}from"./chunk-MI6HVYR2.js";import{CUSTOMERS_PATH,isExactNumericId}from"./chunk-MVZFZAT4.js";import{isSafePathSegment}from"./chunk-HVZUXLQ4.js";
3
+ import{CUSTOMER_FLAG,CUSTOMER_LICENSE,childForbidden,levelForbidden,prepareCustomerFlag}from"./chunk-OO7GDI2D.js";import{inspectLocalFile}from"./chunk-5KJ5OIKI.js";import{checkUploadQuota}from"./chunk-V64CGX7V.js";import{createFlags,fieldBody,hasAnyField,updateFlags}from"./chunk-FHOJFKR3.js";import{booleanText}from"./chunk-JJSBBWJ5.js";import{nonEmpty}from"./chunk-MI6HVYR2.js";import{CUSTOMERS_PATH,isExactNumericId}from"./chunk-4B6GJBYP.js";import{isSafePathSegment}from"./chunk-HVZUXLQ4.js";
4
4
  import{ApiError}from"./chunk-JA5A6UJ2.js";import{requireResolved,withResolved}from"./chunk-PS5QFKHB.js";import{acknowledgement,isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";import{NotLoggedInError,SessionExpiredError}from"./chunk-XNLIEUAW.js";import fs from"fs";import path from"path";var CONTRACT_TYPES=["basic_contract","nda","other"];var CONTRACT_TYPE_HELP="basic_contract\uFF1D\u57FA\u672C\u5951\u7D04\u66F8 / nda\uFF1D\u6A5F\u5BC6\u4FDD\u6301\u5951\u7D04\u66F8 / other\uFF1D\u305D\u306E\u4ED6\u5951\u7D04\u66F8\u985E";var FILE_NAME_MAX_CHARS=255;var PDF_MAGIC="%PDF-";var CONTRACT_FIELDS=[{kind:"text",flag:"--name",key:"document_name",label:"\u66F8\u985E\u540D",maxChars:255,summary:"\u66F8\u985E\u540D\uFF08create \u3067\u306F\u5FC5\u9808\uFF09"},{kind:"enum",flag:"--type",key:"\
5
5
  document_type",values:CONTRACT_TYPES,summary:`\u66F8\u985E\u7A2E\u5225\uFF08${CONTRACT_TYPE_HELP}\u30FBcreate \u3067\u306F\u5FC5\u9808\uFF09`}];var CONTRACT_COLUMNS=["document_id","company_id","document_type","document_name","current_version","updated_by_name","updated_at"];var VERSION_COLUMNS=["version_number","file_name","file_size","is_current","created_by_name","created_at"];var CASE_COLUMNS=["document_id","document_type_label","document_name","estimate_no","estimate_title","project_name","c\
6
6
  urrent_version","updated_at"];var FILE_FLAG={name:"--file",summary:"\u30A2\u30C3\u30D7\u30ED\u30FC\u30C9\u3059\u308B PDF \u30D5\u30A1\u30A4\u30EB\u306E\u30D1\u30B9\uFF08\u5FC5\u9808\uFF09",takesValue:true,placeholder:"<\u30D1\u30B9.pdf>"};var OUT_FLAG={name:"--out",summary:"\u66F8\u304D\u51FA\u3057\u5148\u306E\u30D5\u30A1\u30A4\u30EB\u30D1\u30B9\uFF08\u5FC5\u9808\u3002\u6A19\u6E96\u51FA\u529B\u3078\u306F\u51FA\u3057\u307E\u305B\u3093\uFF09",takesValue:true,placeholder:"<\u30D1\u30B9>"};var FORCE_FLAG={