@tocca-systems/twp-cli 0.88.0 → 0.89.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 (98) hide show
  1. package/CHANGELOG.public.md +12 -0
  2. package/README.md +41 -3
  3. package/dist/{agent-SFDNPV24.js → agent-76ZH3E67.js} +1 -1
  4. package/dist/analysis-CUXB6NQF.js +5 -0
  5. package/dist/{announcement-XAIC4CNE.js → announcement-4YNKKG5V.js} +1 -1
  6. package/dist/{api-command-XFQUUFDV.js → api-command-QS6VCLTX.js} +3 -3
  7. package/dist/{app-M56CCOE7.js → app-GWNEJ24L.js} +4 -4
  8. package/dist/{attendance-correct-CJ3FJSVI.js → attendance-correct-KOTYM2DS.js} +2 -2
  9. package/dist/{attendance-lists-RRGFCDZR.js → attendance-lists-QUSNJQV2.js} +2 -2
  10. package/dist/{backlog-L5VRYZGM.js → backlog-CNTVVRZ6.js} +22 -20
  11. package/dist/budget-X3OMSO3F.js +4 -0
  12. package/dist/{chunk-LGJPXLMC.js → chunk-2L2EGIWR.js} +1 -1
  13. package/dist/{chunk-2AVQILQQ.js → chunk-2T23XGJF.js} +2 -2
  14. package/dist/chunk-34TCAKT5.js +88 -0
  15. package/dist/{chunk-QLDKF6GK.js → chunk-5PBNMFNO.js} +1 -1
  16. package/dist/{chunk-NMYHFVDR.js → chunk-6FGQNFUV.js} +1 -1
  17. package/dist/{chunk-FJEGS55N.js → chunk-733XATRJ.js} +1 -1
  18. package/dist/{chunk-FBVSHQST.js → chunk-7KD24ABA.js} +1 -1
  19. package/dist/{chunk-QUMDKN3U.js → chunk-7KD5RWFY.js} +1 -1
  20. package/dist/{chunk-WWDNWWPJ.js → chunk-DADDMUI5.js} +1 -1
  21. package/dist/chunk-DG7JPFYK.js +12 -0
  22. package/dist/{chunk-AV7L2IEN.js → chunk-E3UET43F.js} +1 -1
  23. package/dist/{chunk-E4FUHYC6.js → chunk-EGFVST6P.js} +1 -1
  24. package/dist/{chunk-RMU72S3D.js → chunk-FM3RHTEQ.js} +1 -1
  25. package/dist/{chunk-TJNM7PHZ.js → chunk-JA7DLMKJ.js} +4 -4
  26. package/dist/{chunk-MLRBDF44.js → chunk-JF2GCXNQ.js} +1 -1
  27. package/dist/{chunk-WDQMYRPE.js → chunk-KW37N7IO.js} +1 -1
  28. package/dist/{chunk-RTYJWZRA.js → chunk-LS7DFMG6.js} +1 -1
  29. package/dist/{chunk-OW23MAVO.js → chunk-M37IYSEG.js} +1 -1
  30. package/dist/{chunk-H4CDX4TX.js → chunk-MMVXE2CJ.js} +4 -3
  31. package/dist/{chunk-M7UEPYUQ.js → chunk-NLDVB4PZ.js} +1 -1
  32. package/dist/{chunk-XJ5EKWQY.js → chunk-OP5WINVG.js} +1 -1
  33. package/dist/{chunk-Y7QW7MHQ.js → chunk-PWKWXZDZ.js} +1 -1
  34. package/dist/chunk-RACLI3FA.js +8 -0
  35. package/dist/{chunk-VRJF6JLR.js → chunk-RIEBWMKF.js} +1 -1
  36. package/dist/{chunk-GO4KFSBE.js → chunk-TVISFCQN.js} +5 -4
  37. package/dist/chunk-UVCJXHWN.js +5 -0
  38. package/dist/{chunk-4VBSSXGA.js → chunk-WGAEYNZQ.js} +1 -1
  39. package/dist/{chunk-KPCVSILY.js → chunk-WJJW7VX7.js} +1 -1
  40. package/dist/{chunk-MUIN7OUW.js → chunk-Y7GYWZLW.js} +3 -5
  41. package/dist/cli.js +49 -12
  42. package/dist/{commands-2GRO356U.js → commands-3B5GGPY7.js} +32 -32
  43. package/dist/{commands-V7ZBTH7I.js → commands-RBN5WGWJ.js} +1 -1
  44. package/dist/{company-TF76Z3U5.js → company-3227PJ3Q.js} +2 -2
  45. package/dist/{completion-G54M3EFF.js → completion-32FJZVQR.js} +1 -1
  46. package/dist/{configure-3JID6MQ5.js → configure-DONZ3M6N.js} +3 -3
  47. package/dist/{contract-CFLPFV4I.js → contract-H5QWWRB3.js} +2 -2
  48. package/dist/{department-T22PBYMP.js → department-NIUPNDHH.js} +1 -1
  49. package/dist/{deposit-PLQ7WHOX.js → deposit-HUFSDRRK.js} +1 -1
  50. package/dist/{domain-knowledge-YFY5H6UB.js → domain-knowledge-M4Y7744J.js} +1 -1
  51. package/dist/{estimate-DYPQ27KU.js → estimate-BIGMD2NU.js} +3 -3
  52. package/dist/evaluation-L4L23IY2.js +122 -0
  53. package/dist/{expense-EA77QGLW.js → expense-JKENK2W2.js} +1 -1
  54. package/dist/{fiscal-year-YSFASZEW.js → fiscal-year-G45WHCZC.js} +1 -1
  55. package/dist/{holiday-E5WEZU6J.js → holiday-EW62DVPW.js} +3 -3
  56. package/dist/{inquiry-LEYPOQWZ.js → inquiry-QGUOVO77.js} +1 -1
  57. package/dist/{invoice-CAYBEW65.js → invoice-ZWUU3FSZ.js} +2 -2
  58. package/dist/{job-title-RSDAHHVJ.js → job-title-CXCW7BAP.js} +1 -1
  59. package/dist/{knowledge-GYLFDEXS.js → knowledge-PBFDM5WJ.js} +2 -2
  60. package/dist/{leave-IG7SWPPB.js → leave-CXTBZFIC.js} +3 -3
  61. package/dist/{license-I2SL53UI.js → license-7WE7UPVX.js} +1 -1
  62. package/dist/{media-TKP7ONY4.js → media-FM53QOC2.js} +3 -3
  63. package/dist/{notification-IEANIYPD.js → notification-Z2VMBWO3.js} +1 -1
  64. package/dist/{onedrive-KWVOUGG6.js → onedrive-Z43D26SJ.js} +1 -1
  65. package/dist/{oneshot-3N2W247J.js → oneshot-YDTQT2T3.js} +1 -1
  66. package/dist/{outlook-FQYNTXOB.js → outlook-ILJN562M.js} +1 -1
  67. package/dist/{position-CRVEGXPL.js → position-CLQVRA7Y.js} +1 -1
  68. package/dist/project-OTJCVFOW.js +4 -0
  69. package/dist/{prospect-A2YNQ4DE.js → prospect-3EHNELGI.js} +2 -2
  70. package/dist/{purchase-F3HUNCJE.js → purchase-MMUXAEER.js} +3 -3
  71. package/dist/{receivable-K4UKS46G.js → receivable-E52RNQTW.js} +1 -1
  72. package/dist/{redmine-MC3RIB7W.js → redmine-CKXEOH7Q.js} +1 -1
  73. package/dist/{registry-FAISFFZY.js → registry-A7OXOQPI.js} +1 -1
  74. package/dist/{report-HUP2TXTK.js → report-UTVGNCLP.js} +1 -1
  75. package/dist/{run-UH7QKMO3.js → run-VNV2AVDI.js} +2 -2
  76. package/dist/{sales-ai-review-5BJ3HNP5.js → sales-ai-review-XFMAKAOH.js} +2 -2
  77. package/dist/{sales-master-DUTB2DUX.js → sales-master-I6X4WFV3.js} +2 -2
  78. package/dist/{sales-numbering-WTEFGPOV.js → sales-numbering-P3JG4UPD.js} +1 -1
  79. package/dist/{search-3ZPF7X5S.js → search-KFMYAVLM.js} +1 -1
  80. package/dist/{segment-ZKJYMOKV.js → segment-LCZFL6QE.js} +1 -1
  81. package/dist/{setup-2KAICJYN.js → setup-ICJPTYKW.js} +1 -1
  82. package/dist/{skill-5NCDQFDN.js → skill-GK2WADKA.js} +2 -2
  83. package/dist/{staffing-board-NWZLXYXJ.js → staffing-board-5YHU7V6Z.js} +3 -3
  84. package/dist/{supplier-payment-QKWONHRH.js → supplier-payment-V4KRH7VA.js} +2 -2
  85. package/dist/{support-MLNODDQT.js → support-FU5M5LM3.js} +2 -2
  86. package/dist/{task-7RLVDTK2.js → task-PFSBL4A3.js} +4 -4
  87. package/dist/{teams-X5WBB5YH.js → teams-43CJTQHL.js} +1 -1
  88. package/dist/{user-FA2FIC47.js → user-5KHSDIVN.js} +4 -4
  89. package/dist/{user-contract-type-RELV4BV7.js → user-contract-type-4JXN7B7J.js} +1 -1
  90. package/dist/{worker-agent-IPOLSJEA.js → worker-agent-4TVU6AES.js} +1 -1
  91. package/dist/{workflow-VJL4FV3U.js → workflow-U5YJ2I6L.js} +1 -1
  92. package/package.json +1 -1
  93. package/dist/analysis-DPQN4BFG.js +0 -5
  94. package/dist/budget-T5YJTALN.js +0 -4
  95. package/dist/chunk-GYB2R6BV.js +0 -11
  96. package/dist/chunk-L37NS5L2.js +0 -8
  97. package/dist/evaluation-NG4DIIJM.js +0 -61
  98. package/dist/project-JICUCXI5.js +0 -4
@@ -11,6 +11,18 @@
11
11
  `CHANGELOG.md` に残してあります。顧客向けの履歴は public 公開以降を対象とします。
12
12
  -->
13
13
 
14
+ ## 0.89.0
15
+
16
+ 評価期間の作成・変更・削除・締め・締め解除、評価基準(A〜E の説明)の表示・置き換え、役割テンプレートの一覧・作成・変更・削除を CLI から行えるようになりました。
17
+
18
+ `twp goal-sheet update` / `submit`・`twp evaluation step update`・`twp evaluation feedback save` / `send` / `publish`・`twp project evaluation create` で、目標シートの書き換えと提出、評価段の入力、フィードバックの下書き保存と公開、プロジェクトでの要員評価の作成をコマンドから行えるようになりました。フィードバックの公開は評価対象者に通知されるため `--yes` が必要です。
19
+
20
+ Microsoft 365 連携がデバイスポリシーで拒否されたときの案内を、原因に応じた解消手順(PC のブラウザからログインし直す等)を示すように直しました。
21
+
22
+ `twp backlog comment list --all` と `twp configure` の細かな不具合を修正しました(設定した既定の Backlog スペースが見つからないときの案内、ヘルプの誤った説明、端末で中断したときに設定が保存されてしまう問題など)。
23
+
24
+ ループがAIを1つも使えない状態になったとき、その機体をエージェントループ画面のランナー一覧で「AI使用不可」と確認できるようになりました(再ログインが必要な枠も表示されます)。
25
+
14
26
  ## 0.88.0
15
27
 
16
28
  ループが状態ディレクトリへ実行結果のローカルファイルを書かなくなりました。実行結果の履歴はサーバ側で全機体ぶんをまとめて参照できます。
package/README.md CHANGED
@@ -24,7 +24,7 @@ TWP(Tocca Working Platform)を、ターミナルから使うための CLI
24
24
  | **できる** | `twp skill` / `twp qualification` によるスキルマスタ・資格マスタの一覧、スキル・スキルカテゴリの作成・更新・削除とカテゴリ内の並び替え、資格マスタの作成・更新・削除と CSV 一括登録・資格制度の説明文の更新(いずれも管理者のみ)、スキルマップの表示(部署で絞り込める)とスキル保有者の横断検索(所属付き)、自分のスキルプロファイルへの自己評価の提出(`--yes` が要ります)、`twp user skills` / `qualifications` / `trainings` / `contracts` によるユーザーのスキル評価・保有資格・研修受講履歴・雇用契約の参照。スキルマップと横断検索は HR管理者、雇用契約は原価管理者か管理者、研修履歴は人事管理の権限が要ります |
25
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
- | **できる** | `twp evaluation` / `twp goal-sheet` による人事評価と目標シートの読み取り(評価期間・見てよい範囲の評価と目標シートの一覧・部下の評価の状況・評価の詳細とプロジェクト別評価・自分の目標シート・受け取ったフィードバック)。書き込みはまだありません |
27
+ | **できる** | `twp evaluation` / `twp goal-sheet` による人事評価と目標シートの読み取り(評価期間・見てよい範囲の評価と目標シートの一覧・部下の評価の状況・評価の詳細とプロジェクト別評価・自分の目標シート・受け取ったフィードバック)と書き込み(目標シートの書き換え・提出、評価段の入力、フィードバックの下書き保存・送信・公開、`twp project evaluation create` によるプロジェクトでの要員評価の作成)、評価期間の作成・変更・削除・締め・締め解除、評価基準(A〜E の説明)の表示・置き換え、`twp role-template` による役割テンプレートの一覧・作成・変更・削除。評価期間・評価基準・役割テンプレートの書き込みは管理者の権限が要ります |
28
28
  | **できる** | `twp support` によるシステムサポートへの依頼(依頼者側)の一覧・詳細(コメントの経過を含む)・起票(添付3件まで)・コメント・完了・再問い合わせ・取り下げと、カテゴリの一覧。運営側(回答・ステータス変更)は扱いません |
29
29
  | **できる** | `twp notification` による自分宛ての通知の一覧(未読・カテゴリ・語で絞り込み)・詳細・未読件数・カテゴリ一覧と、1件ずつ・まとめての既読化 |
30
30
  | **できる** | `twp worker-agent` によるワーカーエージェント(AIエージェント)の参照(一覧・詳細・スケジュールと次回実行予定・許可できるツールのカタログ・実行回数の上限と今日の使用数)と、実行履歴・実行結果(最終要約を先頭に)・ステップログ・ステップの集計の読み取りと、作成・更新(スケジュール指定込み)・削除・有効化/無効化・今すぐ実行(`--wait` で終わるまで待つ)・実行の取消 |
@@ -545,7 +545,7 @@ twp inquiry category update <カテゴリ> [--title <名前>] [--sort <整数|la
545
545
  - 削除はまだありません(`twp api /api/v2/inquiries/categories/<ID> --method DELETE --yes` で行えます)
546
546
  - ヘルプは `twp inquiry category help`
547
547
 
548
- ### 人事評価・目標シートを読む
548
+ ### 人事評価・目標シートを読む・書く
549
549
 
550
550
  ```
551
551
  twp evaluation period list
@@ -557,6 +557,15 @@ twp evaluation feedback mine
557
557
  twp goal-sheet list [--period <評価期間ID>] [--status draft|submitted|approved] [--all]
558
558
  twp goal-sheet mine
559
559
  twp goal-sheet get <目標シートID>
560
+
561
+ # 書き込み
562
+ twp goal-sheet update <目標シートID> (--content-file <パス> | --generate-cli-skeleton)
563
+ twp goal-sheet submit <目標シートID> --yes
564
+ twp evaluation step update <評価ID> --step <n> (--content-file <パス> | --generate-cli-skeleton) [--draft]
565
+ twp evaluation feedback save <評価ID> --body-file <パス>
566
+ twp evaluation feedback send <評価ID> --body-file <パス> --yes
567
+ twp evaluation feedback publish <評価ID> --yes
568
+ twp project evaluation create <コード|ID> --user <ユーザー> --period <評価期間ID> [--content-file <パス> | --generate-cli-skeleton]
560
569
  ```
561
570
 
562
571
  - 一覧に出るのは**見てよい分だけ**です(人事管理の管理者は全員分、それ以外は評価期間時点の部下の分)。権限が無い人の分は 403 ではなく「出てこない」ので、0件でも「その人の分が無い」とは限りません
@@ -564,9 +573,38 @@ twp goal-sheet get <目標シートID>
564
573
  - `evaluation get` はプロジェクト別評価(`project_evaluations`)も続けて読みます。評価対象者本人が読むと評価段は空で返ります(フィードバックは `twp evaluation feedback mine`)
565
574
  - `goal-sheet mine` は今期のシートが無くても作りません。目標の中身は `sections` にあるので `--output json` か `--query sections` で読んでください
566
575
  - サーバに人で絞る条件はありません。特定の人だけを見るなら `--query "[?user_id=='<ユーザーID>']"` を使ってください
567
- - 書き込み(目標シートの更新・提出、評価段の入力、フィードバックの保存・送信・公開、プロジェクト評価の作成)はまだありません
576
+ - `goal-sheet update` の `sections` は**丸ごと置き換わります**。`--generate-cli-skeleton` で今の `sections` を出し、直して送ってください。承認済みのシートは書き換えられません
577
+ - `evaluation step update` は `--draft` を付けないと**段を確定し、次の評価者へ進めます**。評語(`level` / `position_level` / `bonus_level`)は `A`〜`E` か `null` です
578
+ - `feedback save` は下書きで、評価対象者には届きません。`feedback send`(保存+公開)と `feedback publish`(保存済みを公開)は**本人へ通知され取り消せない**ので `--yes` が要ります。`--dry-run --no-redact` で送る本文と相手を確かめられます
579
+ - 送る前に、誰の評価・目標シートかを stderr に出します(`--dry-run` でも出ます)
580
+ - 代理入力・評価者の付け替え・差し戻し、評価通知 PDF はありません
568
581
  - ヘルプは `twp evaluation help` / `twp goal-sheet help`
569
582
 
583
+ ### 評価期間・評価基準・役割テンプレートを管理する(管理者)
584
+
585
+ ```
586
+ twp evaluation period get <評価期間ID>
587
+ twp evaluation period create --name <名前> --start <YYYYMM> --end <YYYYMM> [--description <説明>] [--config-file <JSON>]
588
+ twp evaluation period update <評価期間ID> [--name <名前>] [--start <YYYYMM>] [--end <YYYYMM>] [--description <説明>] [--config-file <JSON>]
589
+ twp evaluation period delete <評価期間ID> --yes
590
+ twp evaluation period close <評価期間ID> --yes
591
+ twp evaluation period reopen <評価期間ID> --yes
592
+ twp evaluation criteria get
593
+ twp evaluation criteria set --file <JSON> --yes
594
+ twp role-template list [--active true|false] [--keyword <語>]
595
+ twp role-template create --name <名前> --required-skill <スキル> [--required-skill ...] [--optional-skill <スキル> ...]
596
+ twp role-template update <ID> [--name <名前>] [--required-skill <スキル> ...] [--optional-skill <スキル> ... | --clear-optional-skills] [--active true|false]
597
+ twp role-template delete <ID> --yes
598
+ ```
599
+
600
+ - 締めると、その期間の目標シート・評価の入力が全従業員で止まります。`close` / `reopen` は `--yes` が要り、`--dry-run` で対象の期間と状態を見られます
601
+ - 締め済みの期間は変更・削除できません(送る前に CLI が止めます。先に `reopen` してください)
602
+ - `--config-file` は `period get --output json` の `sheet_config` / `evaluation_config` を持つ JSON です。書いたキーを丸ごと置き換えます
603
+ - `criteria set` はファイルの内容で評価基準を**丸ごと置き換えます**(書かなかった評価項目は消えます)。ファイルは `criteria get --output json` の出力をそのまま編集できます。`--dry-run` で変わる行を見られます
604
+ - 役割テンプレートのスキルは名前・コード・ID で指定できます(`twp skill list`)。`update` の `--required-skill` / `--optional-skill` は一覧を丸ごと置き換えます
605
+ - 評価で使われている役割テンプレートは削除できません(使わなくするなら `update --active false`)
606
+ - ヘルプは `twp evaluation period help` / `twp evaluation criteria help` / `twp role-template help`
607
+
570
608
  ### システムサポートへ依頼する
571
609
 
572
610
  ```
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{SCHEDULE_HELP,parseSchedule}from"./chunk-WWDNWWPJ.js";import"./chunk-WVCEKC7V.js";import"./chunk-RX5HWI4L.js";import{charCount,readBody}from"./chunk-IWYJSQ5I.js";import"./chunk-W4NLJ2YK.js";import{AGENT_REPOSITORIES_PATH,AGENT_SCHEDULES_PATH,AGENT_SESSIONS_PATH}from"./chunk-2AVQILQQ.js";import{isSafePathSegment}from"./chunk-HVZUXLQ4.js";import{ApiError}from"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";import"./chunk-IXT2X5BZ.js";
3
+ import{SCHEDULE_HELP,parseSchedule}from"./chunk-DADDMUI5.js";import"./chunk-WVCEKC7V.js";import"./chunk-RX5HWI4L.js";import{charCount,readBody}from"./chunk-IWYJSQ5I.js";import"./chunk-W4NLJ2YK.js";import{AGENT_REPOSITORIES_PATH,AGENT_SCHEDULES_PATH,AGENT_SESSIONS_PATH}from"./chunk-2T23XGJF.js";import{isSafePathSegment}from"./chunk-HVZUXLQ4.js";import{ApiError}from"./chunk-JA5A6UJ2.js";import"./chunk-MMVXE2CJ.js";import"./chunk-IXT2X5BZ.js";
4
4
  import{LIST_FLAGS,LIST_PAGING_HELP,envelopePaging,nonEmpty,positiveInteger}from"./chunk-MI6HVYR2.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-EDF4U5BT.js";
5
5
  import"./chunk-RZVI6PMW.js";import"./chunk-QQRJLH6B.js";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";
@@ -0,0 +1,5 @@
1
+ import { createRequire as __twpCreateRequire } from 'node:module';
2
+ const require = __twpCreateRequire(import.meta.url);
3
+ import{DEPARTMENT_FLAG,FROM_FLAG,MANHOUR_DESCRIPTION,MANHOUR_FROM_FLAG,MANHOUR_TO_FLAG,MONTH_FLAG,TO_FLAG,USER_FLAG,analysisDomain,analysisForbidden,currentMonth,dataOf,levelGuidance,listIn,manhourNotes,manhourQuery,manhourRows,monthColumns,monthRange,monthsBetween,noArgs,periodNote,profitRows,rangeNotes,recordOf,resolveFilters,resolvedOrUndefined,responseMonths,staffKpiRows,workloadDistributionNotes,workloadDistributionRows}from"./chunk-NLDVB4PZ.js";import"./chunk-Y7GYWZLW.js";import"./chunk-UVCJXHWN.js";
4
+ import"./chunk-EXT4AIDF.js";import"./chunk-KW37N7IO.js";import"./chunk-RX5HWI4L.js";import"./chunk-JJSBBWJ5.js";import"./chunk-IWYJSQ5I.js";import"./chunk-W4NLJ2YK.js";import"./chunk-2T23XGJF.js";import"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";import"./chunk-MMVXE2CJ.js";import"./chunk-IXT2X5BZ.js";import"./chunk-MI6HVYR2.js";import"./chunk-II5RVJQN.js";import"./chunk-PS5QFKHB.js";import"./chunk-3ZRMMBP5.js";
5
+ import"./chunk-VFPY2A23.js";import"./chunk-J7QYPKVK.js";import"./chunk-EDF4U5BT.js";import"./chunk-RZVI6PMW.js";import"./chunk-QQRJLH6B.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";export{DEPARTMENT_FLAG,FROM_FLAG,MANHOUR_DESCRIPTION,MANHOUR_FROM_FLAG,MANHOUR_TO_FLAG,MONTH_FLAG,TO_FLAG,USER_FLAG,analysisDomain,analysisForbidden,currentMonth,dataOf,levelGuidance,listIn,manhourNotes,manhourQuery,manhourRows,monthColumns,monthRange,monthsBetween,noArgs,periodNote,profitRows,rangeNotes,recordOf,resolveFilters,resolvedOrUndefined,responseMonths,staffKpiRows,workloadDistributionNotes,workloadDistributionRows};
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{composeDocument,htmlToText,metaLine}from"./chunk-C7MO3RHJ.js";import{boundedText}from"./chunk-JJSBBWJ5.js";import{readBody}from"./chunk-IWYJSQ5I.js";import"./chunk-W4NLJ2YK.js";import{ANNOUNCEMENTS_PATH}from"./chunk-2AVQILQQ.js";import{isSafePathSegment}from"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";import"./chunk-IXT2X5BZ.js";import{LIST_FLAGS,LIST_PAGING_HELP,envelopePaging,positiveInteger}from"./chunk-MI6HVYR2.js";
3
+ import{composeDocument,htmlToText,metaLine}from"./chunk-C7MO3RHJ.js";import{boundedText}from"./chunk-JJSBBWJ5.js";import{readBody}from"./chunk-IWYJSQ5I.js";import"./chunk-W4NLJ2YK.js";import{ANNOUNCEMENTS_PATH}from"./chunk-2T23XGJF.js";import{isSafePathSegment}from"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";import"./chunk-MMVXE2CJ.js";import"./chunk-IXT2X5BZ.js";import{LIST_FLAGS,LIST_PAGING_HELP,envelopePaging,positiveInteger}from"./chunk-MI6HVYR2.js";
4
4
  import"./chunk-II5RVJQN.js";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-EDF4U5BT.js";import"./chunk-RZVI6PMW.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var LABEL="\u304A\u77E5\u3089\u305B";var LIST_COLUMNS=["id","publish_start_at","sender_name","category_name","title","is_read","require_confirmation","is_confirmed"];var UNCONFIRMED_COLUMNS=["id","publish_start_at","publish_end_at","importance","title"];var GET_COLUMNS=["id","title","sender_name","category_name","importance_name","publish_start_at","publish_end_at","is_organization","is_read","require_confirmation","is_confirmed","allow_replies","link_url"];var REPLY_COLUMNS=["id","created_at","\
5
5
  user_name","is_mine","content"];var REPLY_MAX_CHARS=2e3;function noArgs(input,op){if(input.args.length>0){throw new UsageError(`${op} \u306F\u4F4D\u7F6E\u5F15\u6570\u3092\u53D6\u308A\u307E\u305B\u3093: ${input.args.join(" ")}`,`twp announcement ${op} help`)}}function checkId(raw,help){const id=raw.trim();if(id==="")throw new UsageError("\u304A\u77E5\u3089\u305B\u306E ID \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",help);if(!isSafePathSegment(id)){throw new UsageError(`\u304A\u77E5\u3089\u305B\u306E ID \u3068\u3057\u3066\u4F7F\u3048\u306A\u3044\
6
6
  \u5024\u3067\u3059: ${id}`,"\u304A\u77E5\u3089\u305B\u306E ID \u306F twp announcement list \u306E id \u5217\u3067\u78BA\u8A8D\u3067\u304D\u307E\u3059\u3002")}return id}function announcementId(input,op){const help=`twp announcement ${op} help`;const[raw,...rest]=input.args;if(rest.length>0)throw new UsageError(`${op} \u304C\u53D7\u3051\u53D6\u308C\u308B\u304A\u77E5\u3089\u305B ID \u306F1\u3064\u3060\u3051\u3067\u3059: ${rest.join(" ")}`,help);return checkId(raw??"",help)}function announcementIds(input){
@@ -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{exitCodeFor,fetchAllPages,reportError}from"./chunk-TJNM7PHZ.js";import"./chunk-GYB2R6BV.js";import{renderOutput}from"./chunk-SZOEBJGI.js";import"./chunk-Q3B65OFC.js";import{evaluateQuery}from"./chunk-GFLGXGWE.js";import{describeWaitResult,parseWaitOptions,waitUntilTerminal}from"./chunk-WVCEKC7V.js";
4
- import{parseOperationArgs,repeatedValues}from"./chunk-RX5HWI4L.js";import{readBody}from"./chunk-IWYJSQ5I.js";import{ALLOW_REDACTED_FLAG,NO_REDACT_FLAG,NO_REDACT_NOTICE}from"./chunk-W4NLJ2YK.js";import"./chunk-2AVQILQQ.js";import"./chunk-HVZUXLQ4.js";import{ApiError,TwpApiClient,appendQuery}from"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";import{redactSecretValues,redactSecrets,withDebug}from"./chunk-IXT2X5BZ.js";import{DEFAULT_MAX_ITEMS,DEFAULT_MAX_PAGES,
3
+ import{CommandModelMissingError,MAX_REPORTED_VIOLATIONS,loadCommandModelDomain,loadCommandModelRoutes,validateBody,validateQuery}from"./chunk-NZ7WI4RZ.js";import{exitCodeFor,fetchAllPages,reportError}from"./chunk-JA7DLMKJ.js";import"./chunk-DG7JPFYK.js";import{renderOutput}from"./chunk-SZOEBJGI.js";import"./chunk-Q3B65OFC.js";import{evaluateQuery}from"./chunk-GFLGXGWE.js";import{describeWaitResult,parseWaitOptions,waitUntilTerminal}from"./chunk-WVCEKC7V.js";
4
+ import{parseOperationArgs,repeatedValues}from"./chunk-RX5HWI4L.js";import{readBody}from"./chunk-IWYJSQ5I.js";import{ALLOW_REDACTED_FLAG,NO_REDACT_FLAG,NO_REDACT_NOTICE}from"./chunk-W4NLJ2YK.js";import"./chunk-2T23XGJF.js";import"./chunk-HVZUXLQ4.js";import{ApiError,TwpApiClient,appendQuery}from"./chunk-JA5A6UJ2.js";import"./chunk-MMVXE2CJ.js";import{redactSecretValues,redactSecrets,withDebug}from"./chunk-IXT2X5BZ.js";import{DEFAULT_MAX_ITEMS,DEFAULT_MAX_PAGES,
5
5
  envelopePaging,isPageNumberEnvelope,pageRangeNotes,positiveInteger,readEnvelopeCursor,readPageNumberCursor,shellQuote}from"./chunk-MI6HVYR2.js";import"./chunk-II5RVJQN.js";import"./chunk-3ZRMMBP5.js";import{ApiResponseError,EXIT_OK,EXIT_WAIT_TIMEOUT,NetworkError,UsageError}from"./chunk-VFPY2A23.js";import{GLOBAL_OPTIONS_HELP}from"./chunk-PECIBNFD.js";import{AuthSession,NotLoggedInError,SessionExpiredError,loadCredentials}from"./chunk-XNLIEUAW.js";import{httpFetch}from"./chunk-J7QYPKVK.js";
6
- import{effectiveApiUrl,resolveConfiguredOutput,resolveProfile}from"./chunk-EDF4U5BT.js";import"./chunk-RZVI6PMW.js";import{HELP_TOKEN}from"./chunk-MLRBDF44.js";import"./chunk-QQRJLH6B.js";import{OUTPUT_FORMATS,resolveOutputFormat}from"./chunk-74BPZOKU.js";import"./chunk-UREA4ZIG.js";import{stripTerminalControls}from"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var MIN_SEGMENT_CHARS=3;var parsedCache=new WeakMap;function splitSegments(path){return path.split("/").filter(segment=>segment!=="")}function parseRoutes(routes){const cached=parsedCache.get(routes);if(cached!==void 0)return cached;const parsed=[];for(const[key,domain]of Object.entries(routes.routes)){const space=key.indexOf(" ");if(space<=0)continue;const template=key.slice(space+1);parsed.push({method:key.slice(0,space),template,domain,segments:splitSegments(template).map(segment=>/^\{[^/{}]+\}$/.
6
+ import{effectiveApiUrl,resolveConfiguredOutput,resolveProfile}from"./chunk-EDF4U5BT.js";import"./chunk-RZVI6PMW.js";import{HELP_TOKEN}from"./chunk-JF2GCXNQ.js";import"./chunk-QQRJLH6B.js";import{OUTPUT_FORMATS,resolveOutputFormat}from"./chunk-74BPZOKU.js";import"./chunk-UREA4ZIG.js";import{stripTerminalControls}from"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var MIN_SEGMENT_CHARS=3;var parsedCache=new WeakMap;function splitSegments(path){return path.split("/").filter(segment=>segment!=="")}function parseRoutes(routes){const cached=parsedCache.get(routes);if(cached!==void 0)return cached;const parsed=[];for(const[key,domain]of Object.entries(routes.routes)){const space=key.indexOf(" ");if(space<=0)continue;const template=key.slice(space+1);parsed.push({method:key.slice(0,space),template,domain,segments:splitSegments(template).map(segment=>/^\{[^/{}]+\}$/.
7
7
  test(segment)?null:segment)})}parsedCache.set(routes,parsed);return parsed}function matches(route,segments){if(route.segments.length!==segments.length)return false;return route.segments.every((literal,i)=>literal===null||literal===segments[i])}function compareSpecificity(a,b){const literals=route=>route.segments.filter(segment=>segment!==null).length;const diff=literals(b)-literals(a);if(diff!==0)return diff;for(let i=0;i<a.segments.length;i+=1){const aLiteral=a.segments[i]!==null;const bLiteral=b.
8
8
  segments[i]!==null;if(aLiteral!==bLiteral)return aLiteral?-1:1}return 0}function lookupRoute(routes,method,path){const segments=splitSegments(path);const hits=parseRoutes(routes).filter(route=>matches(route,segments));const sameMethod=hits.filter(route=>route.method===method).sort(compareSpecificity);const best=sameMethod[0];if(best!==void 0)return{kind:"matched",domain:best.domain,template:best.template};if(hits.length>0){const[top]=[...hits].sort(compareSpecificity);const template=top.template;
9
9
  const methods=[...new Set(hits.filter(route=>route.template===template).map(route=>route.method))].sort();return{kind:"method-mismatch",template,methods}}return{kind:"unknown"}}function pickOperation(operations,method,template){return operations.find(op=>op.method===method&&op.path===template)??null}async function suggestRoutes(routes,path,limit=5){const{default:fuzzysort}=await import("./fuzzysort-DFVKV4B4.js");const parsed=parseRoutes(routes);const templates=[...new Set(parsed.map(route=>route.
@@ -1,9 +1,9 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
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-4DUZIRGL.js";import"./chunk-NZ7WI4RZ.js";import{buildDiffLines,
4
- diffStat}from"./chunk-VRBI2NPI.js";import{require_fuzzysort}from"./chunk-DIMZRTLE.js";import"./chunk-N2UVRM3Z.js";import"./chunk-2AVQILQQ.js";import"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";import"./chunk-IXT2X5BZ.js";import"./chunk-II5RVJQN.js";import"./chunk-VFPY2A23.js";import{RelayError,builtinCatalog,classifyModelSwitch,createRuntime,loadCachedCatalog,modelLabel,pickModel,specFor,toModelInfos}from"./chunk-LLBLGHHZ.js";
5
- import"./chunk-D233KKXW.js";import"./chunk-PMOUHEJQ.js";import"./chunk-XNLIEUAW.js";import{proxyDiagnostics}from"./chunk-J7QYPKVK.js";import{checkMinSupportedVersion,isBelowMinSupported,minSupportedBlockMessage}from"./chunk-DXXFUNYN.js";import"./chunk-EDF4U5BT.js";import{configReadDirs,twpHomeDir}from"./chunk-RZVI6PMW.js";import{parseArgv}from"./chunk-QLDKF6GK.js";import{applyPermissionMode,checkPermission,describePermissionMode,getMode,isModeId,modeSource,
6
- nextMode}from"./chunk-2LOT54OO.js";import"./chunk-MLRBDF44.js";import"./chunk-EOXTDZTA.js";import"./chunk-QQRJLH6B.js";import{isFullWidth,isWide,stringWidth,stripAnsi}from"./chunk-UREA4ZIG.js";import{stripTerminalControls}from"./chunk-NHYMHCAT.js";import{__commonJS,__export,__require,__toESM}from"./chunk-VSJBJXZO.js";var require_react_production=__commonJS({"node_modules/react/cjs/react.production.js"(exports){"use strict";var REACT_ELEMENT_TYPE=Symbol.for("react.transitional.element");var REACT_PORTAL_TYPE=Symbol.for("react.portal");var REACT_FRAGMENT_TYPE=Symbol.for("react.fragment");var REACT_STRICT_MODE_TYPE=Symbol.for("react.strict_mode");var REACT_PROFILER_TYPE=Symbol.for("react.profiler");var REACT_CONSUMER_TYPE=Symbol.for("react.consumer");var REACT_CONTEXT_TYPE=Symbol.for("react.context");var REACT_FORWARD_REF_TYPE=Symbol.
4
+ diffStat}from"./chunk-VRBI2NPI.js";import{require_fuzzysort}from"./chunk-DIMZRTLE.js";import"./chunk-N2UVRM3Z.js";import"./chunk-2T23XGJF.js";import"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";import"./chunk-MMVXE2CJ.js";import"./chunk-IXT2X5BZ.js";import"./chunk-II5RVJQN.js";import"./chunk-VFPY2A23.js";import{RelayError,builtinCatalog,classifyModelSwitch,createRuntime,loadCachedCatalog,modelLabel,pickModel,specFor,toModelInfos}from"./chunk-LLBLGHHZ.js";
5
+ import"./chunk-D233KKXW.js";import"./chunk-PMOUHEJQ.js";import"./chunk-XNLIEUAW.js";import{proxyDiagnostics}from"./chunk-J7QYPKVK.js";import{checkMinSupportedVersion,isBelowMinSupported,minSupportedBlockMessage}from"./chunk-DXXFUNYN.js";import"./chunk-EDF4U5BT.js";import{configReadDirs,twpHomeDir}from"./chunk-RZVI6PMW.js";import{parseArgv}from"./chunk-5PBNMFNO.js";import{applyPermissionMode,checkPermission,describePermissionMode,getMode,isModeId,modeSource,
6
+ nextMode}from"./chunk-2LOT54OO.js";import"./chunk-JF2GCXNQ.js";import"./chunk-EOXTDZTA.js";import"./chunk-QQRJLH6B.js";import{isFullWidth,isWide,stringWidth,stripAnsi}from"./chunk-UREA4ZIG.js";import{stripTerminalControls}from"./chunk-NHYMHCAT.js";import{__commonJS,__export,__require,__toESM}from"./chunk-VSJBJXZO.js";var require_react_production=__commonJS({"node_modules/react/cjs/react.production.js"(exports){"use strict";var REACT_ELEMENT_TYPE=Symbol.for("react.transitional.element");var REACT_PORTAL_TYPE=Symbol.for("react.portal");var REACT_FRAGMENT_TYPE=Symbol.for("react.fragment");var REACT_STRICT_MODE_TYPE=Symbol.for("react.strict_mode");var REACT_PROFILER_TYPE=Symbol.for("react.profiler");var REACT_CONSUMER_TYPE=Symbol.for("react.consumer");var REACT_CONTEXT_TYPE=Symbol.for("react.context");var REACT_FORWARD_REF_TYPE=Symbol.
7
7
  for("react.forward_ref");var REACT_SUSPENSE_TYPE=Symbol.for("react.suspense");var REACT_MEMO_TYPE=Symbol.for("react.memo");var REACT_LAZY_TYPE=Symbol.for("react.lazy");var REACT_ACTIVITY_TYPE=Symbol.for("react.activity");var REACT_VIEW_TRANSITION_TYPE=Symbol.for("react.view_transition");var MAYBE_ITERATOR_SYMBOL=Symbol.iterator;function getIteratorFn(maybeIterable){if(null===maybeIterable||"object"!==typeof maybeIterable)return null;maybeIterable=MAYBE_ITERATOR_SYMBOL&&maybeIterable[MAYBE_ITERATOR_SYMBOL]||
8
8
  maybeIterable["@@iterator"];return"function"===typeof maybeIterable?maybeIterable:null}var ReactNoopUpdateQueue={isMounted:function(){return false},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}};var assign=Object.assign;var emptyObject={};function Component(props,context,updater){this.props=props;this.context=context;this.refs=emptyObject;this.updater=updater||ReactNoopUpdateQueue}Component.prototype.isReactComponent={};Component.prototype.setState=
9
9
  function(partialState,callback){if("object"!==typeof partialState&&"function"!==typeof partialState&&null!=partialState)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,partialState,callback,"setState")};Component.prototype.forceUpdate=function(callback){this.updater.enqueueForceUpdate(this,callback,"forceUpdate")};function ComponentDummy(){}ComponentDummy.prototype=Component.prototype;function PureComponent2(props,context,updater){
@@ -1212,7 +1212,7 @@ cwd()){const listed=await gitListFiles(cwd2);const raw=listed??await walkFiles(c
1212
1212
  1;const after=/^[^\s]*/.exec(text.slice(cursor))?.[0]??"";return{query,start,end:cursor+after.length}}var TWP_SLASH_ROUTES={"/tasks":{domain:"task",operation:"list"},"/task":{domain:"task",operation:"get"},"/projects":{domain:"project",operation:"list"}};function isTwpSlashCommand(name){return Object.hasOwn(TWP_SLASH_ROUTES,name)}async function runTwpSlashCommand(name,args,deps){const route=TWP_SLASH_ROUTES[name];if(!Object.hasOwn(TWP_SLASH_ROUTES,name)||route===void 0){return{code:2,out:"",err:`\u4E0D\u660E\u306A\u30B3\u30DE\u30F3\u30C9: ${name}
1213
1213
  `}}const parsed=parseArgv([route.domain,route.operation,...args]);if(parsed.command!=="domain"||parsed.domain!==route.domain){return{code:2,out:"",err:`${name}: \u3053\u306E\u5F15\u6570\u306F\u4F7F\u3048\u307E\u305B\u3093\uFF08${args.join(" ")}\uFF09
1214
1214
  `}}if(parsed.unknown.length>0){return{code:2,out:"",err:`\u4E0D\u660E\u306A\u5F15\u6570: ${parsed.unknown.join(" ")}
1215
- `}}let out="";let err="";const io={out:text=>void(out+=text),err:text=>void(err+=text),isTty:true};const globals={profile:parsed.profile??deps.profile,...parsed.output!==void 0?{output:parsed.output}:{},...parsed.query!==void 0?{query:parsed.query}:{},dryRun:parsed.dryRun,debug:parsed.debug,yes:parsed.yes,refresh:parsed.refresh};const{runDomain}=await import("./run-UH7QKMO3.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-VNV2AVDI.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-MUIN7OUW.js";import{dateFlag,monthFlag}from"./chunk-EXT4AIDF.js";import"./chunk-WDQMYRPE.js";import"./chunk-RX5HWI4L.js";import"./chunk-JJSBBWJ5.js";import"./chunk-IWYJSQ5I.js";import"./chunk-W4NLJ2YK.js";import"./chunk-2AVQILQQ.js";import{isSafePathSegment}from"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";import"./chunk-IXT2X5BZ.js";
4
- import"./chunk-MI6HVYR2.js";import"./chunk-II5RVJQN.js";import{requireResolved,withResolved}from"./chunk-PS5QFKHB.js";import{isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiRejectedError,ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";import"./chunk-J7QYPKVK.js";import"./chunk-EDF4U5BT.js";import"./chunk-RZVI6PMW.js";import"./chunk-QQRJLH6B.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var CREATE_USAGE="twp attendance record create --date <YYYY-MM-DD> --time <HH:MM> --type <clock-in|clock-out|break-start|break-end|switch> [--project <\u30B3\u30FC\u30C9|ID>] [--task <\u30BF\u30B9\u30AFID>] [--memo <\u30E1\u30E2>]";var UPDATE_USAGE="twp attendance record update <\u8A18\u9332ID> --memo <\u30E1\u30E2> [--month <YYYY-MM>]";var DELETE_USAGE="twp attendance record delete <\u8A18\u9332ID> --reason <\u7406\u7531> --yes [--month <YYYY-MM>]";var MOVE_USAGE="twp attendance record move <\u8A18\u9332\
3
+ import{PUNCH_TYPES,assertMonthOpen,attendanceDomain}from"./chunk-Y7GYWZLW.js";import"./chunk-UVCJXHWN.js";import{dateFlag,monthFlag}from"./chunk-EXT4AIDF.js";import"./chunk-KW37N7IO.js";import"./chunk-RX5HWI4L.js";import"./chunk-JJSBBWJ5.js";import"./chunk-IWYJSQ5I.js";import"./chunk-W4NLJ2YK.js";import"./chunk-2T23XGJF.js";import{isSafePathSegment}from"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";import"./chunk-MMVXE2CJ.js";
4
+ import"./chunk-IXT2X5BZ.js";import"./chunk-MI6HVYR2.js";import"./chunk-II5RVJQN.js";import{requireResolved,withResolved}from"./chunk-PS5QFKHB.js";import{isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiRejectedError,ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";import"./chunk-J7QYPKVK.js";import"./chunk-EDF4U5BT.js";import"./chunk-RZVI6PMW.js";import"./chunk-QQRJLH6B.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var CREATE_USAGE="twp attendance record create --date <YYYY-MM-DD> --time <HH:MM> --type <clock-in|clock-out|break-start|break-end|switch> [--project <\u30B3\u30FC\u30C9|ID>] [--task <\u30BF\u30B9\u30AFID>] [--memo <\u30E1\u30E2>]";var UPDATE_USAGE="twp attendance record update <\u8A18\u9332ID> --memo <\u30E1\u30E2> [--month <YYYY-MM>]";var DELETE_USAGE="twp attendance record delete <\u8A18\u9332ID> --reason <\u7406\u7531> --yes [--month <YYYY-MM>]";var MOVE_USAGE="twp attendance record move <\u8A18\u9332\
5
5
  ID> --project <\u30B3\u30FC\u30C9|ID> [--month <YYYY-MM>]";var TEXT_MAX=500;var UUID_PATTERN=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;var TIME_PATTERN=/^(\d{2}):(\d{2})(?::(\d{2}))?$/;var CLOSED_REASON="\u30B5\u30FC\u30D0\u306F\u7DE0\u3081\u6E08\u307F\u306E\u6708\u3078\u306E\u4FEE\u6B63\u3092\u62D2\u5426\u305B\u305A\u7DE0\u3081\u306E\u96C6\u8A08\u3092\u6D17\u3044\u66FF\u3048\u308B\u306E\u3067\u3001CLI \u304C\u9001\u308B\u524D\u306B\u6B62\u3081\u3066\u3044\u307E\u3059\u3002";
6
6
  var FORBIDDEN="\u81EA\u5206\u306E\u6253\u523B\u306E\u4FEE\u6B63\u306B\u306F\u6253\u523B\u4FEE\u6B63\u306E\u6A29\u9650\uFF08\u30E6\u30FC\u30B6\u30FC\u8A2D\u5B9A\u306E\u300C\u6253\u523B\u4FEE\u6B63\u300D\uFF09\u3068\u52E4\u6020\u306E\u5229\u7528\u6A29\u9650\u304C\u5FC5\u8981\u3067\u3059\u3002\u30C6\u30CA\u30F3\u30C8\u306E\u7BA1\u7406\u8005\u306B\u4ED8\u4E0E\u3092\u4F9D\u983C\u3057\u3066\u304F\u3060\u3055\u3044";var RECORD_COLUMNS=["id","type","type_label","recorded_at","year_month","project_id","t\
7
7
  ask_id","memo","is_manual","deleted_at"];var LABELS={clock_in:"\u51FA\u52E4",clock_out:"\u9000\u52E4",break_start:"\u4F11\u61A9\u958B\u59CB",break_end:"\u4F11\u61A9\u7D42\u4E86",switch:"\u5207\u66FF"};var TYPE_ORDER={break_start:1,break_end:2,switch:3,clock_out:4,clock_in:5};function zonedParts(epochMs,timeZone){const parts=new Intl.DateTimeFormat("en-US",{timeZone,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",hourCycle:"h23"}).formatToParts(new Date(
@@ -1,7 +1,7 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{hoursMinutes}from"./chunk-MUIN7OUW.js";import{monthFlag}from"./chunk-EXT4AIDF.js";import"./chunk-WDQMYRPE.js";import"./chunk-RX5HWI4L.js";import"./chunk-JJSBBWJ5.js";import"./chunk-IWYJSQ5I.js";import"./chunk-W4NLJ2YK.js";import"./chunk-2AVQILQQ.js";import"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";import"./chunk-IXT2X5BZ.js";import"./chunk-MI6HVYR2.js";import"./chunk-II5RVJQN.js";
4
- import"./chunk-PS5QFKHB.js";import{isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";import"./chunk-J7QYPKVK.js";import"./chunk-EDF4U5BT.js";import"./chunk-RZVI6PMW.js";import"./chunk-QQRJLH6B.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var MONTH_FLAG={name:"--month",summary:"\u5BFE\u8C61\u306E\u5E74\u6708\uFF08YYYY-MM\uFF09",takesValue:true,placeholder:"<YYYY-MM>"};var ME_FLAG={name:"--me",summary:"\u81EA\u5206\u306E\u5206\u3060\u3051\u3092\u8868\u793A\u3059\u308B\uFF08\u7121\u3051\u308C\u3070\u5168\u54E1\u5206\u30FB\u7BA1\u7406\u8005\uFF09",takesValue:false};var FORBIDDEN_ADMIN="\u6A29\u9650\u304C\u8DB3\u308A\u307E\u305B\u3093\u3002\u5168\u54E1\u5206\uFF08--me \u306A\u3057\uFF09\u306F\u52E4\u6020\u306E\u7BA1\u7406\u8005\u6A29\u9650\uFF08\u52E4\u6020: \u7BA1\u7406\u8005\uFF09\u3001\u81EA\u5206\u306E\u5206\uFF08--me\uFF09\u306F\u52E4\u6020\u306E\u5229\u7528\u6A29\u9650\u304C\u8981\u308A\u307E\u3059\u3002\u30C6\u30CA\u30F3\u30C8\u306E\u7BA1\u7406\u8005\u306B\u6A29\u9650\u306E\u4ED8\u4E0E\u3092\u4F9D\u983C\u3057\u3066\u304F\u3060\u3055\u3044";
3
+ import{hoursMinutes}from"./chunk-Y7GYWZLW.js";import"./chunk-UVCJXHWN.js";import{monthFlag}from"./chunk-EXT4AIDF.js";import"./chunk-KW37N7IO.js";import"./chunk-RX5HWI4L.js";import"./chunk-JJSBBWJ5.js";import"./chunk-IWYJSQ5I.js";import"./chunk-W4NLJ2YK.js";import"./chunk-2T23XGJF.js";import"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";import"./chunk-MMVXE2CJ.js";import"./chunk-IXT2X5BZ.js";import"./chunk-MI6HVYR2.js";
4
+ import"./chunk-II5RVJQN.js";import"./chunk-PS5QFKHB.js";import{isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";import"./chunk-J7QYPKVK.js";import"./chunk-EDF4U5BT.js";import"./chunk-RZVI6PMW.js";import"./chunk-QQRJLH6B.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var MONTH_FLAG={name:"--month",summary:"\u5BFE\u8C61\u306E\u5E74\u6708\uFF08YYYY-MM\uFF09",takesValue:true,placeholder:"<YYYY-MM>"};var ME_FLAG={name:"--me",summary:"\u81EA\u5206\u306E\u5206\u3060\u3051\u3092\u8868\u793A\u3059\u308B\uFF08\u7121\u3051\u308C\u3070\u5168\u54E1\u5206\u30FB\u7BA1\u7406\u8005\uFF09",takesValue:false};var FORBIDDEN_ADMIN="\u6A29\u9650\u304C\u8DB3\u308A\u307E\u305B\u3093\u3002\u5168\u54E1\u5206\uFF08--me \u306A\u3057\uFF09\u306F\u52E4\u6020\u306E\u7BA1\u7406\u8005\u6A29\u9650\uFF08\u52E4\u6020: \u7BA1\u7406\u8005\uFF09\u3001\u81EA\u5206\u306E\u5206\uFF08--me\uFF09\u306F\u52E4\u6020\u306E\u5229\u7528\u6A29\u9650\u304C\u8981\u308A\u307E\u3059\u3002\u30C6\u30CA\u30F3\u30C8\u306E\u7BA1\u7406\u8005\u306B\u6A29\u9650\u306E\u4ED8\u4E0E\u3092\u4F9D\u983C\u3057\u3066\u304F\u3060\u3055\u3044";
5
5
  function listBody(spec,body){if(!isRecord(body)||!Array.isArray(body[spec.key])){throw new ApiResponseError(`${spec.label}\u306E\u5FDC\u7B54\u306B ${spec.key} \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}return body}function monthListOperation(spec){const usage=`twp ${spec.domain} list [--month <YYYY-MM>] [--me]`;return{name:"list",summary:`\u6708\u306E${spec.label}\u3092\u4E00\u89A7\u3059\u308B\uFF08--me \u3067\u81EA\u5206\u306E\u5206\u30FB\u7121\u3051\u308C\u3070\u5168\u54E1\u5206\uFF1D\u7BA1\u7406\u8005\uFF09`,
6
6
  usage,description:`GET ${spec.path} \u3092\u8868\u793A\u3057\u307E\u3059\uFF08\u5168\u54E1\u5206\u30FB\u52E4\u6020\u306E\u7BA1\u7406\u8005\u6A29\u9650\u304C\u5FC5\u8981\uFF09\u3002--me \u3092\u4ED8\u3051\u308B\u3068 GET ${spec.path}/me\uFF08\u81EA\u5206\u306E\u5206\uFF09\u3067\u3059\u3002
7
7
  --month \u304C\u7121\u3051\u308C\u3070\u4ECA\u6708\u3067\u3059\uFF08\u30C6\u30CA\u30F3\u30C8\u306E\u696D\u52D9\u65E5\u306E\u533A\u5207\u308A\u3067\u30B5\u30FC\u30D0\u304C\u6C7A\u3081\u307E\u3059\uFF09\u3002
@@ -1,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-IWYJSQ5I.js";import"./chunk-W4NLJ2YK.js";import{BACKLOG_BASE_PATH,BACKLOG_PROJECT_SCOPE_LABEL,BACKLOG_SCOPE_LABEL,backlogSpacePath,isExactNumericId,resolveNamed}from"./chunk-2AVQILQQ.js";import"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";import"./chunk-IXT2X5BZ.js";import{LIST_FLAGS}from"./chunk-MI6HVYR2.js";import"./chunk-II5RVJQN.js";
3
+ import{repeatedValues}from"./chunk-RX5HWI4L.js";import{readBody}from"./chunk-IWYJSQ5I.js";import"./chunk-W4NLJ2YK.js";import{BACKLOG_BASE_PATH,BACKLOG_PROJECT_SCOPE_LABEL,BACKLOG_SCOPE_LABEL,backlogSpacePath,isExactNumericId,resolveNamed}from"./chunk-2T23XGJF.js";import"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";import"./chunk-MMVXE2CJ.js";import"./chunk-IXT2X5BZ.js";import{LIST_FLAGS}from"./chunk-MI6HVYR2.js";import"./chunk-II5RVJQN.js";
4
4
  import{requireResolved,singleRef,withResolved}from"./chunk-PS5QFKHB.js";import{isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";import"./chunk-J7QYPKVK.js";import"./chunk-EDF4U5BT.js";import"./chunk-RZVI6PMW.js";import"./chunk-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';
@@ -24,20 +24,21 @@ get(name);if(raw===void 0)return void 0;const trimmed=raw.trim();const n=Number.
24
24
  \uFF09`)}if(bounds.max!==void 0&&n>bounds.max){throw new UsageError(`${name} \u306B\u6307\u5B9A\u3067\u304D\u308B\u306E\u306F ${bounds.max} \u307E\u3067\u3067\u3059\uFF08\u53D7\u3051\u53D6\u3063\u305F\u5024: ${raw}\uFF09`,`Backlog \u5074\u306E\u4E0A\u9650\u3067\u3059\u3002\u7D9A\u304D\u306F --offset \u3067\u53D6\u5F97\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}return n}function dateFlag(flags,name){const raw=flags.get(name);if(raw===void 0)return void 0;const trimmed=raw.trim();if(!DATE.test(trimmed)){
25
25
  throw new UsageError(`${name} \u306F yyyy-MM-dd \u306E\u5F62\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u53D7\u3051\u53D6\u3063\u305F\u5024: ${raw}\uFF09`)}return trimmed}function commaList(flags,name){const raw=flags.get(name);if(raw===void 0)return void 0;const parts=raw.split(",").map(part=>part.trim());if(parts.length===0||parts.some(part=>part==="")){throw new UsageError(`${name} \u306B\u7A7A\u306E\u5024\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\uFF08\u53D7\u3051\u53D6\u3063\u305F\u5024: ${raw}\
26
26
  \uFF09`,"\u8907\u6570\u6307\u5B9A\u306F\u30AB\u30F3\u30DE\u533A\u5207\u308A\u3067\u3059\uFF08--status \u672A\u5BFE\u5FDC,\u51E6\u7406\u4E2D\uFF09\u3002")}return parts}function resolvedList(input,key){const value=input.resolved?.[key];return value===void 0||value===""?void 0:value.split(",")}function indexedQuery(key,values,into){if(values===void 0)return;values.forEach((value,index)=>{into[`${key}[${index}]`]=value})}async function resolveSpace(input,ctx){const ref=input.flags.get("--space");if(ref===
27
- void 0){const configured=ctx.configuredBacklogSpace();if(configured!==void 0){try{const space2=await ctx.resolver.backlogSpace(configured);return{id:space2.id,defaulted:space2.name??configured,defaultSource:"config"}}catch(err){if(!(err instanceof UsageError))throw err;throw new UsageError(`\u8A2D\u5B9A\u306E\u65E2\u5B9A Backlog \u30B9\u30DA\u30FC\u30B9\u300C${configured}\u300D\u3092\u89E3\u6C7A\u3067\u304D\u307E\u305B\u3093: ${err.message}`,"twp configure \u3067\u65E2\u5B9A\u306E Backlog \u30B9\u30DA\u30FC\u30B9\u3092\u76F4\u3059\u304B\u3001--space \u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\
28
- \uFF08twp backlog space list \u3067\u78BA\u8A8D\u3067\u304D\u307E\u3059\uFF09\u3002")}}const space=await ctx.resolver.backlogDefaultSpace();return{id:space.id,defaulted:space.name,defaultSource:"single"}}if(ref.trim()===""){throw new UsageError("--space \u306B\u7A7A\u306E\u5024\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093","--space <ID|\u30B9\u30DA\u30FC\u30B9URL> \u3092\u6307\u5B9A\u3059\u308B\u304B\u3001--space \u3054\u3068\u5916\u3057\u3066\u304F\u3060\u3055\u3044\u3002")}return{id:(await ctx.
29
- resolver.backlogSpace(ref)).id,defaulted:null}}function withSpace(input,space){return withResolved(input,{spaceId:space.id,...space.defaulted!==null?{spaceDefaulted:space.defaulted}:{},...space.defaultSource==="config"?{spaceDefaultSource:"config"}:{}})}async function resolveNumericRefs(refs,flag,label,scope,load){if(refs.every(ref=>NUMERIC.test(ref)))return[...refs];const candidates=await load();const resolved=[];for(const ref of refs){resolved.push(NUMERIC.test(ref)?ref:(await resolveNamed(ref,
30
- candidates,{flag,label,scope})).id)}return resolved}function requireProjectForNames(refs,flag,projectIds){if(projectIds.length===1)return projectIds[0];throw new UsageError(projectIds.length===0?`${flag} \u3092\u540D\u524D\u3067\u6307\u5B9A\u3059\u308B\u306B\u306F --project \u304C\u5FC5\u8981\u3067\u3059`:`${flag} \u3092\u540D\u524D\u3067\u6307\u5B9A\u3067\u304D\u308B\u306E\u306F --project \u304C1\u3064\u306E\u3068\u304D\u3060\u3051\u3067\u3059\uFF08\u3044\u307E\u306F ${projectIds.length} \u4EF6\uFF09`,
31
- `${flag} \u306E\u5019\u88DC\uFF08${refs.join(" / ")}\uFF09\u306F Backlog \u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u914D\u4E0B\u306B\u3057\u304B\u3042\u308A\u307E\u305B\u3093\u3002\u6570\u5024\u306E ID \u3092\u76F4\u63A5\u6E21\u305B\u3070 --project \u306F\u8981\u308A\u307E\u305B\u3093\u3002`)}function issueRef(input,usage){const ref=singleRef(input,{flag:"--issue",label:"\u8AB2\u984C\u30AD\u30FC",usage});if(!ISSUE_REF.test(ref)){throw new UsageError(`\u8AB2\u984C\u30AD\u30FC\u306E\u5F62\u5F0F\u304C\u9055\u3044\u307E\u3059: ${ref}`,
32
- "Backlog \u306E\u8AB2\u984C\u30AD\u30FC\uFF08HC_FM_ID-19171\uFF09\u304B\u8AB2\u984CID\uFF08\u6570\u5024\uFF09\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002")}return ref}var UPDATE_PROJECT_FLAG={name:"--project",summary:"--status / --assignee / --notify \u3092\u540D\u524D\u3067\u6307\u5B9A\u3059\u308B\u3068\u304D\u306B\u8981\u308B Backlog \u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\uFF08\u30AD\u30FC / \u540D\u79F0 / \u6570\u5024ID\uFF09",takesValue:true,placeholder:"<\u30AD\u30FC|ID>"};function requireUpdateProject(input,flag,value){
33
- const ref=input.flags.get("--project")?.trim();if(ref===void 0||ref===""){throw new UsageError(`${flag} \u3092\u540D\u524D\uFF08${value}\uFF09\u3067\u6307\u5B9A\u3059\u308B\u306B\u306F --project \u304C\u5FC5\u8981\u3067\u3059`,`${flag} \u306E\u5019\u88DC\u306F Backlog \u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u914D\u4E0B\u306B\u3057\u304B\u306A\u304F\u3001\u8AB2\u984C\u30AD\u30FC\u304B\u3089\u306F\u5F15\u3051\u307E\u305B\u3093\u3002twp backlog status list --project <\u30AD\u30FC> / twp backlog user list --project <\u30AD\u30FC> \u306E id \u3092 ${flag}\
34
- \u306B\u76F4\u63A5\u6E21\u305B\u3070 --project \u306F\u8981\u308A\u307E\u305B\u3093\u3002`)}return ref}function readUpdateRef(input,flag,label){const raw=input.flags.get(flag);return raw===void 0?void 0:updateRefOf(input,flag,label,raw)}function updateRefOf(input,flag,label,raw){const value=raw.trim();if(value===""){throw new UsageError(`${flag} \u306B\u7A7A\u306E\u5024\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093`,flag===NOTIFY_FLAG.name?`${flag} \u3054\u3068\u5916\u305B\u3070\u3001\u901A\u77E5\u5148\u3092\u6307\u5B9A\u305B\u305A\u306B\u9001\u308A\u307E\u3059\u3002`:
35
- `${flag} \u3054\u3068\u5916\u305B\u3070\u3001\u305D\u306E\u9805\u76EE\u306F\u5909\u66F4\u3057\u307E\u305B\u3093\u3002`)}if(value.includes(",")){throw new UsageError(`${flag} \u306B\u8907\u6570\u306E\u5024\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\uFF08\u53D7\u3051\u53D6\u3063\u305F\u5024: ${value}\uFF09`,flag===NOTIFY_FLAG.name?`\u8907\u6570\u4EBA\u306B\u901A\u77E5\u3059\u308B\u3068\u304D\u306F ${flag} \u3092\u91CD\u306D\u3066\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08${flag} 91\
36
- ${flag} 92\uFF09\u3002`:`\u66F4\u65B0\u306F1\u3064\u306E\u5024\u3060\u3051\u3092\u53D7\u3051\u307E\u3059\uFF08\u7D5E\u308A\u8FBC\u307F\u306E twp backlog issue list \u3068\u306F\u9055\u3044\u307E\u3059\uFF09\u3002`)}if(NUMERIC.test(value)&&!isExactNumericId(value)){throw new UsageError(`${flag} \u306E ID \u304C\u6570\u5024\u3068\u3057\u3066\u6271\u3048\u308B\u7BC4\u56F2\u3092\u8D85\u3048\u3066\u3044\u307E\u3059: ${value}`,`Backlog \u306E ID \u3092\u305D\u306E\u307E\u307E\u6E21\u3057\u3066\u304F\u3060\u3055\u3044\uFF08twp backlog status list / user list \u306E id \u5217\uFF09\u3002`)}
37
- return{flag,label,value,projectRef:NUMERIC.test(value)?null:requireUpdateProject(input,flag,value)}}async function resolveUpdateProject(ref,load){if(isExactNumericId(ref))return ref;const resolved=await resolveNamed(ref,await load(),{flag:"--project",label:"Backlog \u30D7\u30ED\u30B8\u30A7\u30AF\u30C8",scope:BACKLOG_SCOPE_LABEL});if(!isExactNumericId(resolved.id)){throw new ApiResponseError(`Backlog \u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u300C${ref}\u300D\u306E ID \u3092\u6570\u5024\u3068\u3057\u3066\u9001\u308C\u307E\u305B\u3093: ${JSON.
38
- stringify(resolved.id)}\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}return resolved.id}async function resolveUpdateRef(ref,projectId,load){if(ref.projectRef===null)return ref.value;if(projectId===void 0){throw new ApiResponseError(`${ref.flag} \u306E\u89E3\u6C7A\u5148\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u304C\u89E3\u6C7A\u3055\u308C\u3066\u3044\u307E\u305B\u3093\uFF08\u5185\u90E8\u30A8\u30E9\u30FC\uFF09\u3002`)}const resolved=await resolveNamed(ref.value,
39
- await load(projectId),{flag:ref.flag,label:ref.label,scope:BACKLOG_PROJECT_SCOPE_LABEL});if(!isExactNumericId(resolved.id)){throw new ApiResponseError(`${ref.label}\u300C${ref.value}\u300D\u306E ID \u3092\u6570\u5024\u3068\u3057\u3066\u9001\u308C\u307E\u305B\u3093: ${JSON.stringify(resolved.id)}\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}return resolved.id}var NOTIFY_FLAG={name:"--notify",summary:"\u30B3\u30E1\u30F3\u30C8\u306E\u901A\u77E5\u5148\uFF08Backlog \u306E\u300C\u304A\u77E5\u3089\u305B\u3057\u305F\u3044\u30E6\u30FC\u30B6\u30FC\u300D\uFF09\u3002\u8907\u6570\u306A\u3089\u91CD\u306D\u3066\u6307\u5B9A\u3002\u6570\u5B57\u3060\u3051\u306E\u5024\u306F ID \u3068\u3057\
40
- \u3066\u9001\u308A\u307E\u3059\uFF08\u540D\u524D\u306A\u3089 --project \u304C\u8981\u308B\uFF09",takesValue:true,repeatable:true,placeholder:"<\u540D\u524D|ID>"};var NOTIFY_HELP="--notify <\u540D\u524D|ID> \u3067\u3001\u30B3\u30E1\u30F3\u30C8\u306E\u901A\u77E5\u5148\uFF08Backlog \u306E\u300C\u304A\u77E5\u3089\u305B\u3057\u305F\u3044\u30E6\u30FC\u30B6\u30FC\u300D\uFF09\u3092\u6307\u5B9A\u3067\u304D\u307E\u3059\u3002\n \u26A0 \u6307\u5B9A\u3057\u306A\u3044\u3068\u3001\u62C5\u5F53\u8005\u4EE5\u5916\u3078\u306F\u901A\u77E5\u304C\u5C4A\u304B\u306A\u3044\u3053\u3068\u304C\u3042\u308A\u307E\u3059\u3002\u62C5\u5F53\u3092\u5909\u3048\u305A\u306B\u76F8\u624B\u3078\u805E\u304D\u305F\u3044\u3068\u304D\u306F\n \u62C5\u5F53\u5909\u66F4\u3067\u4EE3\u7528\u305B\u305A --notify \u3092\u4F7F\u3063\u3066\u304F\u3060\u3055\u3044\u3002\u8907\u6570\u4EBA\u306A\u3089 --notify \u3092\u91CD\u306D\u3066\u6307\u5B9A\u3057\u307E\u3059\u3002\n \u6570\u5B57\u3060\u3051\u306E\u5024\u306F ID \u3068\u3057\u3066\u9001\u308A\u307E\u3059\u3002\u540D\u524D\u30FB\u30ED\u30B0\u30A4\u30F3ID\u30FB\u30E1\u30FC\u30EB\u3067\u6307\u3059\u306B\u306F --project \u304C\u5FC5\u8981\u3067\u3001\n \u7167\u5408\u306F\u5B8C\u5168\u4E00\u81F4\u3060\u3051\u3067\u3059\uFF08\u4E00\u81F4\u3057\u306A\u3051\u308C\u3070\u5019\u88DC\u3092\u51FA\u3057\u3066\u7D42\u4E86\u30B3\u30FC\u30C9 2 \u3067\u6B62\u307E\u308A\u3001\u4F55\u3082\u9001\u308A\u307E\u305B\u3093\uFF09\u3002";
27
+ void 0){const configured=ctx.configuredBacklogSpace();if(configured!==void 0){try{const space2=await ctx.resolver.backlogSpace(configured,"backlog_space");return{id:space2.id,defaulted:space2.name??configured,defaultSource:"config"}}catch(err){if(!(err instanceof UsageError))throw err;const advice="twp configure \u3067\u65E2\u5B9A\u306E Backlog \u30B9\u30DA\u30FC\u30B9\u3092\u76F4\u3059\u304B\u3001--space \u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08twp backlog space list \u3067\u78BA\u8A8D\u3067\u304D\u307E\u3059\uFF09\u3002";
28
+ throw new UsageError(`\u8A2D\u5B9A\u306E\u65E2\u5B9A Backlog \u30B9\u30DA\u30FC\u30B9\u3092\u89E3\u6C7A\u3067\u304D\u307E\u305B\u3093: ${err.message}`,err.hint!==void 0?`${err.hint}
29
+ ${advice}`:advice)}}const space=await ctx.resolver.backlogDefaultSpace();return{id:space.id,defaulted:space.name,defaultSource:"single"}}if(ref.trim()===""){throw new UsageError("--space \u306B\u7A7A\u306E\u5024\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093","--space <ID|\u30B9\u30DA\u30FC\u30B9URL> \u3092\u6307\u5B9A\u3059\u308B\u304B\u3001--space \u3054\u3068\u5916\u3057\u3066\u304F\u3060\u3055\u3044\u3002")}return{id:(await ctx.resolver.backlogSpace(ref)).id,defaulted:null}}function withSpace(input,space){
30
+ return withResolved(input,{spaceId:space.id,...space.defaulted!==null?{spaceDefaulted:space.defaulted}:{},...space.defaultSource==="config"?{spaceDefaultSource:"config"}:{}})}async function resolveNumericRefs(refs,flag,label,scope,load){if(refs.every(ref=>NUMERIC.test(ref)))return[...refs];const candidates=await load();const resolved=[];for(const ref of refs){resolved.push(NUMERIC.test(ref)?ref:(await resolveNamed(ref,candidates,{flag,label,scope})).id)}return resolved}function requireProjectForNames(refs,flag,projectIds){
31
+ if(projectIds.length===1)return projectIds[0];throw new UsageError(projectIds.length===0?`${flag} \u3092\u540D\u524D\u3067\u6307\u5B9A\u3059\u308B\u306B\u306F --project \u304C\u5FC5\u8981\u3067\u3059`:`${flag} \u3092\u540D\u524D\u3067\u6307\u5B9A\u3067\u304D\u308B\u306E\u306F --project \u304C1\u3064\u306E\u3068\u304D\u3060\u3051\u3067\u3059\uFF08\u3044\u307E\u306F ${projectIds.length} \u4EF6\uFF09`,`${flag} \u306E\u5019\u88DC\uFF08${refs.join(" / ")}\uFF09\u306F Backlog \u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u914D\u4E0B\u306B\u3057\u304B\u3042\u308A\u307E\u305B\u3093\u3002\u6570\u5024\u306E ID \u3092\u76F4\u63A5\u6E21\u305B\u3070 --pr\
32
+ oject \u306F\u8981\u308A\u307E\u305B\u3093\u3002`)}function issueRef(input,usage){const ref=singleRef(input,{flag:"--issue",label:"\u8AB2\u984C\u30AD\u30FC",usage});if(!ISSUE_REF.test(ref)){throw new UsageError(`\u8AB2\u984C\u30AD\u30FC\u306E\u5F62\u5F0F\u304C\u9055\u3044\u307E\u3059: ${ref}`,"Backlog \u306E\u8AB2\u984C\u30AD\u30FC\uFF08HC_FM_ID-19171\uFF09\u304B\u8AB2\u984CID\uFF08\u6570\u5024\uFF09\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002")}return ref}var UPDATE_PROJECT_FLAG={
33
+ name:"--project",summary:"--status / --assignee / --notify \u3092\u540D\u524D\u3067\u6307\u5B9A\u3059\u308B\u3068\u304D\u306B\u8981\u308B Backlog \u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\uFF08\u30AD\u30FC / \u540D\u79F0 / \u6570\u5024ID\uFF09",takesValue:true,placeholder:"<\u30AD\u30FC|ID>"};function requireUpdateProject(input,flag,value){const ref=input.flags.get("--project")?.trim();if(ref===void 0||ref===""){throw new UsageError(`${flag} \u3092\u540D\u524D\uFF08${value}\uFF09\u3067\u6307\u5B9A\u3059\u308B\u306B\u306F --project \u304C\u5FC5\u8981\u3067\u3059`,
34
+ `${flag} \u306E\u5019\u88DC\u306F Backlog \u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u914D\u4E0B\u306B\u3057\u304B\u306A\u304F\u3001\u8AB2\u984C\u30AD\u30FC\u304B\u3089\u306F\u5F15\u3051\u307E\u305B\u3093\u3002twp backlog status list --project <\u30AD\u30FC> / twp backlog user list --project <\u30AD\u30FC> \u306E id \u3092 ${flag} \u306B\u76F4\u63A5\u6E21\u305B\u3070 --project \u306F\u8981\u308A\u307E\u305B\u3093\u3002`)}return ref}function readUpdateRef(input,flag,label){const raw=input.flags.get(flag);
35
+ return raw===void 0?void 0:updateRefOf(input,flag,label,raw)}function updateRefOf(input,flag,label,raw){const value=raw.trim();if(value===""){throw new UsageError(`${flag} \u306B\u7A7A\u306E\u5024\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093`,flag===NOTIFY_FLAG.name?`${flag} \u3054\u3068\u5916\u305B\u3070\u3001\u901A\u77E5\u5148\u3092\u6307\u5B9A\u305B\u305A\u306B\u9001\u308A\u307E\u3059\u3002`:`${flag} \u3054\u3068\u5916\u305B\u3070\u3001\u305D\u306E\u9805\u76EE\u306F\u5909\u66F4\u3057\u307E\u305B\u3093\u3002`)}
36
+ if(value.includes(",")){throw new UsageError(`${flag} \u306B\u8907\u6570\u306E\u5024\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\uFF08\u53D7\u3051\u53D6\u3063\u305F\u5024: ${value}\uFF09`,flag===NOTIFY_FLAG.name?`\u8907\u6570\u4EBA\u306B\u901A\u77E5\u3059\u308B\u3068\u304D\u306F ${flag} \u3092\u91CD\u306D\u3066\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08${flag} 91 ${flag} 92\uFF09\u3002`:`\u66F4\u65B0\u306F1\u3064\u306E\u5024\u3060\u3051\u3092\u53D7\u3051\u307E\u3059\uFF08\u7D5E\u308A\u8FBC\u307F\u306E twp backlog issue list \u3068\u306F\u9055\u3044\u307E\u3059\uFF09\u3002`)}
37
+ if(NUMERIC.test(value)&&!isExactNumericId(value)){throw new UsageError(`${flag} \u306E ID \u304C\u6570\u5024\u3068\u3057\u3066\u6271\u3048\u308B\u7BC4\u56F2\u3092\u8D85\u3048\u3066\u3044\u307E\u3059: ${value}`,`Backlog \u306E ID \u3092\u305D\u306E\u307E\u307E\u6E21\u3057\u3066\u304F\u3060\u3055\u3044\uFF08twp backlog status list / user list \u306E id \u5217\uFF09\u3002`)}return{flag,label,value,projectRef:NUMERIC.test(value)?null:requireUpdateProject(input,flag,value)}}async function resolveUpdateProject(ref,load){
38
+ if(isExactNumericId(ref))return ref;const resolved=await resolveNamed(ref,await load(),{flag:"--project",label:"Backlog \u30D7\u30ED\u30B8\u30A7\u30AF\u30C8",scope:BACKLOG_SCOPE_LABEL});if(!isExactNumericId(resolved.id)){throw new ApiResponseError(`Backlog \u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u300C${ref}\u300D\u306E ID \u3092\u6570\u5024\u3068\u3057\u3066\u9001\u308C\u307E\u305B\u3093: ${JSON.stringify(resolved.id)}\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}
39
+ return resolved.id}async function resolveUpdateRef(ref,projectId,load){if(ref.projectRef===null)return ref.value;if(projectId===void 0){throw new ApiResponseError(`${ref.flag} \u306E\u89E3\u6C7A\u5148\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u304C\u89E3\u6C7A\u3055\u308C\u3066\u3044\u307E\u305B\u3093\uFF08\u5185\u90E8\u30A8\u30E9\u30FC\uFF09\u3002`)}const resolved=await resolveNamed(ref.value,await load(projectId),{flag:ref.flag,label:ref.label,scope:BACKLOG_PROJECT_SCOPE_LABEL});if(!isExactNumericId(
40
+ resolved.id)){throw new ApiResponseError(`${ref.label}\u300C${ref.value}\u300D\u306E ID \u3092\u6570\u5024\u3068\u3057\u3066\u9001\u308C\u307E\u305B\u3093: ${JSON.stringify(resolved.id)}\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}return resolved.id}var NOTIFY_FLAG={name:"--notify",summary:"\u30B3\u30E1\u30F3\u30C8\u306E\u901A\u77E5\u5148\uFF08Backlog \u306E\u300C\u304A\u77E5\u3089\u305B\u3057\u305F\u3044\u30E6\u30FC\u30B6\u30FC\u300D\uFF09\u3002\u8907\u6570\u306A\u3089\u91CD\u306D\u3066\u6307\u5B9A\u3002\u6570\u5B57\u3060\u3051\u306E\u5024\u306F ID \u3068\u3057\u3066\u9001\u308A\u307E\u3059\uFF08\u540D\u524D\u306A\u3089 --project \u304C\u8981\u308B\uFF09",
41
+ takesValue:true,repeatable:true,placeholder:"<\u540D\u524D|ID>"};var NOTIFY_HELP="--notify <\u540D\u524D|ID> \u3067\u3001\u30B3\u30E1\u30F3\u30C8\u306E\u901A\u77E5\u5148\uFF08Backlog \u306E\u300C\u304A\u77E5\u3089\u305B\u3057\u305F\u3044\u30E6\u30FC\u30B6\u30FC\u300D\uFF09\u3092\u6307\u5B9A\u3067\u304D\u307E\u3059\u3002\n \u26A0 \u6307\u5B9A\u3057\u306A\u3044\u3068\u3001\u62C5\u5F53\u8005\u4EE5\u5916\u3078\u306F\u901A\u77E5\u304C\u5C4A\u304B\u306A\u3044\u3053\u3068\u304C\u3042\u308A\u307E\u3059\u3002\u62C5\u5F53\u3092\u5909\u3048\u305A\u306B\u76F8\u624B\u3078\u805E\u304D\u305F\u3044\u3068\u304D\u306F\n \u62C5\u5F53\u5909\u66F4\u3067\u4EE3\u7528\u305B\u305A --notify \u3092\u4F7F\u3063\u3066\u304F\u3060\u3055\u3044\u3002\u8907\u6570\u4EBA\u306A\u3089 --notify \u3092\u91CD\u306D\u3066\u6307\u5B9A\u3057\u307E\u3059\u3002\n \u6570\u5B57\u3060\u3051\u306E\u5024\u306F ID \u3068\u3057\u3066\u9001\u308A\u307E\u3059\u3002\u540D\u524D\u30FB\u30ED\u30B0\u30A4\u30F3ID\u30FB\u30E1\u30FC\u30EB\u3067\u6307\u3059\u306B\u306F --project \u304C\u5FC5\u8981\u3067\u3001\n \u7167\u5408\u306F\u5B8C\u5168\u4E00\u81F4\u3060\u3051\u3067\u3059\uFF08\u4E00\u81F4\u3057\u306A\u3051\u308C\u3070\u5019\u88DC\u3092\u51FA\u3057\u3066\u7D42\u4E86\u30B3\u30FC\u30C9 2 \u3067\u6B62\u307E\u308A\u3001\u4F55\u3082\u9001\u308A\u307E\u305B\u3093\uFF09\u3002";
41
42
  function readNotifyRefs(input){return repeatedValues(input,NOTIFY_FLAG.name).map(raw=>updateRefOf(input,NOTIFY_FLAG.name,"Backlog \u30E6\u30FC\u30B6\u30FC",raw))}async function resolveNotifyRefs(refs,projectId,load){if(refs.length===0)return void 0;const ids=[];for(const ref of refs){const id=await resolveUpdateRef(ref,projectId,load);if(!ids.includes(id))ids.push(id)}return ids.join(",")}function notifyBody(input,body){const ids=resolvedList(input,"notifiedUserId");if(ids!==void 0)body["notifie\
42
43
  dUserId"]=ids.map(Number)}function spaceNotes(input){const defaulted=input.resolved?.["spaceDefaulted"];if(defaulted===void 0)return[];return input.resolved?.["spaceDefaultSource"]==="config"?[`--space \u3092\u7701\u7565\u3057\u305F\u305F\u3081\u3001\u8A2D\u5B9A\u306E\u65E2\u5B9A Backlog \u30B9\u30DA\u30FC\u30B9 ${defaulted} \u3092\u4F7F\u3044\u307E\u3057\u305F\uFF08twp configure \u3067\u5909\u66F4\u3067\u304D\u307E\u3059\uFF09\u3002`]:[`--space \u3092\u7701\u7565\u3057\u305F\u305F\u3081\u3001\u767B\u9332\u3055\u308C\u3066\u3044\u308B\u552F\u4E00\u306E Backlog \u30B9\u30DA\u30FC\u30B9 ${defaulted}\
43
44
  \u3092\u4F7F\u3044\u307E\u3057\u305F\u3002`]}function updateNotes(input){const notes=[...spaceNotes(input)];const usedForName=input.resolved?.["projectUsed"]!==void 0;if(input.flags.get("--project")!==void 0&&!usedForName){notes.push("--project \u306F\u4F7F\u3044\u307E\u305B\u3093\u3067\u3057\u305F\uFF08\u540D\u524D\u3067\u6307\u5B9A\u3057\u305F\u5024\u304C\u7121\u304F\u3001\u3059\u3079\u3066\u6570\u5024 ID \u3060\u3063\u305F\u305F\u3081\u3001\u540D\u524D\u306E\u89E3\u6C7A\u304C\u8981\u308A\u307E\u305B\u3093\uFF09\u3002")}
@@ -106,11 +107,12 @@ comments.length<requested)return null;const id=isRecord(last)?last["id"]:void 0;
106
107
  --limit\uFF08--count \u3068\u540C\u3058\u610F\u5473\uFF09\u306E\u65E2\u5B9A\u306F ${DEFAULT_COUNT}\u30FB\u4E0A\u9650\u306F ${MAX_COUNT} \u3067\u3059\u3002
107
108
  --all \u3092\u4ED8\u3051\u308B\u3068\u3001\u30B3\u30E1\u30F3\u30C8 ID \u3092\u8FBF\u3063\u3066\u5168\u4EF6\u3092\u53D6\u5F97\u3057\u307E\u3059\uFF08--limit \u306F\u305D\u306E\u3068\u304D\u306E1\u30DA\u30FC\u30B8\u306E\u4EF6\u6570\u30FB\u65E2\u5B9A ${MAX_COUNT}\uFF09\u3002
108
109
  \u3053\u306E API \u306F\u30AB\u30FC\u30BD\u30EB\u3092\u8FD4\u3055\u306A\u3044\u305F\u3081 --cursor \u306F\u3042\u308A\u307E\u305B\u3093\u3002\u9014\u4E2D\u304B\u3089\u8FBF\u308B\u306B\u306F --min-id / --max-id \u3092\u4F7F\u3044\u307E\u3059\u3002`,flags:[SPACE_FLAG,{name:"--issue",summary:"\u8AB2\u984C\u30AD\u30FC\uFF08\u4F4D\u7F6E\u5F15\u6570\u3068\u540C\u3058\u610F\u5473\uFF09",takesValue:true,placeholder:"<\u30AD\u30FC|ID>"},{name:"--limit",summary:`\u53D6\u5F97\u4EF6\u6570\uFF08\u65E2\u5B9A ${DEFAULT_COUNT}\
109
- \u30FB\u4E0A\u9650 ${MAX_COUNT}\u30FB--all \u3068\u4F75\u7528\u3057\u305F\u3068\u304D\u306F1\u30DA\u30FC\u30B8\u306E\u4EF6\u6570\uFF09`,takesValue:true,placeholder:"<\u4EF6\u6570>"},{name:"--count",summary:`--limit \u3068\u540C\u3058\uFF08\u65E2\u5B9A ${DEFAULT_COUNT}\u30FB\u4E0A\u9650 ${MAX_COUNT}\uFF09`,takesValue:true,placeholder:"<\u4EF6\u6570>"},...LIST_FLAGS.filter(spec=>spec.name!=="--limit"&&spec.name!=="--cursor"),{name:"--order",summary:"\u4E26\u3073\u9806\uFF08asc | desc\u30FB\u65E2\u5B9A desc\uFF09",
110
- takesValue:true,placeholder:"<\u9806\u5E8F>"},{name:"--min-id",summary:"\u3053\u306E\u30B3\u30E1\u30F3\u30C8ID \u3088\u308A\u5F8C\u306E\u30B3\u30E1\u30F3\u30C8\u3060\u3051\u3092\u8FD4\u3059",takesValue:true,placeholder:"<ID>"},{name:"--max-id",summary:"\u3053\u306E\u30B3\u30E1\u30F3\u30C8ID \u3088\u308A\u524D\u306E\u30B3\u30E1\u30F3\u30C8\u3060\u3051\u3092\u8FD4\u3059",takesValue:true,placeholder:"<ID>"}],async prepare(input,ctx){const ref=issueRef(input,"twp backlog comment list help");return withResolved(
111
- withSpace(input,await resolveSpace(input,ctx)),{issueRef:ref})},plan(input){const ref=requireResolved(input,"issueRef");return{method:"GET",path:backlogSpacePath(requireSpace(input),`/issues/${encodeURIComponent(ref)}/comments`),query:{count:commentPageSize(input)??(input.flags.has("--all")?MAX_COUNT:void 0),order:order(input.flags.get("--order")),minId:integerFlag(input.flags,"--min-id",{min:0}),maxId:integerFlag(input.flags,"--max-id",{min:0})}}},plannedNotes:spaceNotes,paging:COMMENT_PAGING,summarize:body=>listOf(
112
- body,"comments","\u30B3\u30E1\u30F3\u30C8\u4E00\u89A7").map(commentRow),raw:body=>listOf(body,"comments","\u30B3\u30E1\u30F3\u30C8\u4E00\u89A7"),notes(body,input){if(input.flags.has("--all"))return[];const received=listOf(body,"comments","\u30B3\u30E1\u30F3\u30C8\u4E00\u89A7").length;const count=commentPageSize(input)??DEFAULT_COUNT;return received<count?[]:[`${received} \u4EF6\uFF08--limit \u306E\u4E0A\u9650\u3061\u3087\u3046\u3069\uFF09\u3092\u53D6\u5F97\u3057\u307E\u3057\u305F\u3002\u7D9A\u304D\u304C\u3042\u308B\u304B\u3082\u3057\u308C\u307E\u305B\u3093: --all \u3067\u5168\u4EF6\u3092\u53D6\u5F97\u3059\u308B\u304B\u3001--min-id / --max-id \u3067\u7D9A\u304D\u3092\u53D6\u5F97\u3057\u3066\u304F\u3060\u3055\u3044\u3002`]}},
113
- {name:"create",summary:"Backlog \u8AB2\u984C\u306B\u30B3\u30E1\u30F3\u30C8\u3092\u6295\u7A3F\u3059\u308B\uFF08--yes \u304C\u5FC5\u8981\uFF09",usage:"twp backlog comment create <\u8AB2\u984C\u30AD\u30FC|\u8AB2\u984CID> --body-file <\u30D1\u30B9> [--notify <\u540D\u524D|ID>]... [--project <\u30AD\u30FC|ID>] [--space <ID|URL>] --yes",description:`${EXTERNAL_WRITE_HELP}
110
+ \u30FB\u4E0A\u9650 ${MAX_COUNT}\u30FB--all \u3068\u4F75\u7528\u3057\u305F\u3068\u304D\u306F1\u30DA\u30FC\u30B8\u306E\u4EF6\u6570\uFF09`,takesValue:true,placeholder:"<\u4EF6\u6570>"},{name:"--count",summary:`--limit \u3068\u540C\u3058\uFF08\u65E2\u5B9A ${DEFAULT_COUNT}\u30FB\u4E0A\u9650 ${MAX_COUNT}\uFF09`,takesValue:true,placeholder:"<\u4EF6\u6570>"},...LIST_FLAGS.filter(spec=>spec.name!=="--limit"&&spec.name!=="--cursor").map(spec=>spec.name==="--all"?{...spec,summary:"\u5168\u30DA\u30FC\u30B8\u3092\u81EA\u52D5\u3067\u8FBF\u308B\uFF08--max-id / --m\
111
+ in-id \u3068\u4F75\u7528\u3059\u308B\u3068\u305D\u306E\u7BC4\u56F2\u3092\u5168\u4EF6\uFF09"}:spec),{name:"--order",summary:"\u4E26\u3073\u9806\uFF08asc | desc\u30FB\u65E2\u5B9A desc\uFF09",takesValue:true,placeholder:"<\u9806\u5E8F>"},{name:"--min-id",summary:"\u3053\u306E\u30B3\u30E1\u30F3\u30C8ID \u3088\u308A\u5F8C\u306E\u30B3\u30E1\u30F3\u30C8\u3060\u3051\u3092\u8FD4\u3059",takesValue:true,placeholder:"<ID>"},{name:"--max-id",summary:"\u3053\u306E\u30B3\u30E1\u30F3\u30C8ID \u3088\u308A\u524D\u306E\u30B3\u30E1\u30F3\u30C8\u3060\u3051\u3092\u8FD4\u3059",
112
+ takesValue:true,placeholder:"<ID>"}],async prepare(input,ctx){const ref=issueRef(input,"twp backlog comment list help");return withResolved(withSpace(input,await resolveSpace(input,ctx)),{issueRef:ref})},plan(input){const ref=requireResolved(input,"issueRef");return{method:"GET",path:backlogSpacePath(requireSpace(input),`/issues/${encodeURIComponent(ref)}/comments`),query:{count:commentPageSize(input)??(input.flags.has("--all")?MAX_COUNT:void 0),order:order(input.flags.get("--order")),minId:integerFlag(
113
+ input.flags,"--min-id",{min:0}),maxId:integerFlag(input.flags,"--max-id",{min:0})}}},plannedNotes:spaceNotes,paging:COMMENT_PAGING,summarize:body=>listOf(body,"comments","\u30B3\u30E1\u30F3\u30C8\u4E00\u89A7").map(commentRow),raw:body=>listOf(body,"comments","\u30B3\u30E1\u30F3\u30C8\u4E00\u89A7"),notes(body,input){if(input.flags.has("--all"))return[];const received=listOf(body,"comments","\u30B3\u30E1\u30F3\u30C8\u4E00\u89A7").length;const count=commentPageSize(input)??DEFAULT_COUNT;return received<
114
+ count?[]:[`${received} \u4EF6\uFF08--limit \u306E\u4E0A\u9650\u3061\u3087\u3046\u3069\uFF09\u3092\u53D6\u5F97\u3057\u307E\u3057\u305F\u3002\u7D9A\u304D\u304C\u3042\u308B\u304B\u3082\u3057\u308C\u307E\u305B\u3093: --all \u3067\u5168\u4EF6\u3092\u53D6\u5F97\u3059\u308B\u304B\u3001--min-id / --max-id \u3067\u7D9A\u304D\u3092\u53D6\u5F97\u3057\u3066\u304F\u3060\u3055\u3044\u3002`]}},{name:"create",summary:"Backlog \u8AB2\u984C\u306B\u30B3\u30E1\u30F3\u30C8\u3092\u6295\u7A3F\u3059\u308B\uFF08--yes \u304C\u5FC5\u8981\uFF09",
115
+ usage:"twp backlog comment create <\u8AB2\u984C\u30AD\u30FC|\u8AB2\u984CID> --body-file <\u30D1\u30B9> [--notify <\u540D\u524D|ID>]... [--project <\u30AD\u30FC|ID>] [--space <ID|URL>] --yes",description:`${EXTERNAL_WRITE_HELP}
114
116
 
115
117
  ${bodyHelp("--body-file","--body")}
116
118
 
@@ -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-LS7DFMG6.js";import"./chunk-NLDVB4PZ.js";import"./chunk-Y7GYWZLW.js";import"./chunk-UVCJXHWN.js";import"./chunk-EXT4AIDF.js";import"./chunk-KW37N7IO.js";import"./chunk-RX5HWI4L.js";import"./chunk-JJSBBWJ5.js";import"./chunk-IWYJSQ5I.js";import"./chunk-W4NLJ2YK.js";import"./chunk-2T23XGJF.js";
4
+ import"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";import"./chunk-MMVXE2CJ.js";import"./chunk-IXT2X5BZ.js";import"./chunk-MI6HVYR2.js";import"./chunk-II5RVJQN.js";import"./chunk-PS5QFKHB.js";import"./chunk-3ZRMMBP5.js";import"./chunk-VFPY2A23.js";import"./chunk-J7QYPKVK.js";import"./chunk-EDF4U5BT.js";import"./chunk-RZVI6PMW.js";import"./chunk-QQRJLH6B.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";export{breakdownRows,budgetDomain,dashboardRows,fiscalYear,importRejection,overwriteLines,parseAllocationRows,parseSplit,parseTargetRows,periodsLabel};
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{FORCE_FLAG,OUT_FLAG,REV_FLAG,revOf,singleId,uploadStaged}from"./chunk-FJEGS55N.js";import{CUSTOMER_LICENSE,childForbidden,levelForbidden}from"./chunk-RMU72S3D.js";import{inspectLocalFile}from"./chunk-WTYIFLVB.js";import{createFlags,fieldBody,hasAnyField,updateFlags}from"./chunk-WDQMYRPE.js";import{SALES_ESTIMATES_PATH,isExactNumericId}from"./chunk-2AVQILQQ.js";import{nonEmpty}from"./chunk-MI6HVYR2.js";import{requireResolved,withResolved}from"./chunk-PS5QFKHB.js";
3
+ import{FORCE_FLAG,OUT_FLAG,REV_FLAG,revOf,singleId,uploadStaged}from"./chunk-733XATRJ.js";import{CUSTOMER_LICENSE,childForbidden,levelForbidden}from"./chunk-FM3RHTEQ.js";import{inspectLocalFile}from"./chunk-WTYIFLVB.js";import{createFlags,fieldBody,hasAnyField,updateFlags}from"./chunk-KW37N7IO.js";import{SALES_ESTIMATES_PATH,isExactNumericId}from"./chunk-2T23XGJF.js";import{nonEmpty}from"./chunk-MI6HVYR2.js";import{requireResolved,withResolved}from"./chunk-PS5QFKHB.js";
4
4
  import{acknowledgement,isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";import fs from"fs";import path from"path";var DOCUMENT_TYPES=["order_form","individual_contract","other"];var DOCUMENT_TYPE_HELP="order_form\uFF1D\u6CE8\u6587\u66F8 / individual_contract\uFF1D\u500B\u5225\u5951\u7D04\u66F8 / other\uFF1D\u305D\u306E\u4ED6\u6848\u4EF6\u66F8\u985E";var MAGIC_BYTES={pdf:["%PDF-"],jpg:["\xFF\xD8\xFF"],jpeg:["\xFF\xD8\xFF"],png:["\x89PNG\r\n\n"],xlsx:["PK","PK","PK\x07\b"],docx:["PK","PK","PK\x07\b"],xls:["\xD0\xCF\xE0\xA1\xB1\xE1"],doc:["\xD0\xCF\xE0\xA1\xB1\xE1"]};var FILE_NAME_MAX_CHARS=255;var FIELDS=[
5
5
  {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:"document_type",values:DOCUMENT_TYPES,summary:`\u66F8\u985E\u7A2E\u5225\uFF08${DOCUMENT_TYPE_HELP}\u30FBcreate \u3067\u306F\u5FC5\u9808\uFF09`}];var COLUMNS=["document_id","estimate_id","document_type","document_type_label","document_name","current_version","updated_by_name","updated_at"];var VERSION_COLUMNS=[
6
6
  "version_number","file_name","file_size","is_current","created_by_name","created_at"];var ESTIMATE_FLAG={name:"--estimate",summary:"\u898B\u7A4D\u306E ID\uFF08twp estimate list \u306E id \u5217\u306E\u6570\u5B57\u30FB\u5FC5\u9808\uFF09",takesValue:true,placeholder:"<\u898B\u7A4DID>"};var FILE_FLAG={name:"--file",summary:"\u30A2\u30C3\u30D7\u30ED\u30FC\u30C9\u3059\u308B\u30D5\u30A1\u30A4\u30EB\uFF08PDF\u30FBJPEG\u30FBPNG\u30FBWord\u30FBExcel\u3002\u5FC5\u9808\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{ResolveError,ULID_RE,UUID_RE,isSafePathSegment,resolveProjectRef,safeProjectIdPolicy}from"./chunk-HVZUXLQ4.js";import{ApiError}from"./chunk-JA5A6UJ2.js";import{graphNextCursor,ms365NamedRow,ms365NotConnectedGuidance,ms365Path,ms365Segment}from"./chunk-H4CDX4TX.js";import{isTaskKey}from"./chunk-II5RVJQN.js";import{UsageError}from"./chunk-VFPY2A23.js";import{loadProjectConfig,loadUserConfig}from"./chunk-EDF4U5BT.js";import{twpHomeDir}from"./chunk-RZVI6PMW.js";var BACKLOG_BASE_PATH="/api/v2/integrations/backlog";function assertBacklogPathSegment(value,label){if(!isSafePathSegment(value)){throw new ResolveError(`${label}\u3068\u3057\u3066 URL \u306B\u5165\u308C\u3089\u308C\u306A\u3044\u5024\u304C\u30B5\u30FC\u30D0\u304B\u3089\u8FD4\u308A\u307E\u3057\u305F: ${JSON.stringify(value)}\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}return value}function backlogSpacePath(spaceId,suffix=""){assertBacklogPathSegment(spaceId,
3
+ import{ResolveError,ULID_RE,UUID_RE,isSafePathSegment,resolveProjectRef,safeProjectIdPolicy}from"./chunk-HVZUXLQ4.js";import{ApiError}from"./chunk-JA5A6UJ2.js";import{graphNextCursor,ms365NamedRow,ms365NotConnectedGuidance,ms365Path,ms365Segment}from"./chunk-MMVXE2CJ.js";import{isTaskKey}from"./chunk-II5RVJQN.js";import{UsageError}from"./chunk-VFPY2A23.js";import{loadProjectConfig,loadUserConfig}from"./chunk-EDF4U5BT.js";import{twpHomeDir}from"./chunk-RZVI6PMW.js";var BACKLOG_BASE_PATH="/api/v2/integrations/backlog";function assertBacklogPathSegment(value,label){if(!isSafePathSegment(value)){throw new ResolveError(`${label}\u3068\u3057\u3066 URL \u306B\u5165\u308C\u3089\u308C\u306A\u3044\u5024\u304C\u30B5\u30FC\u30D0\u304B\u3089\u8FD4\u308A\u307E\u3057\u305F: ${JSON.stringify(value)}\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}return value}function backlogSpacePath(spaceId,suffix=""){assertBacklogPathSegment(spaceId,
4
4
  "Backlog \u30B9\u30DA\u30FC\u30B9 ID");return`${BACKLOG_BASE_PATH}/${encodeURIComponent(spaceId)}${suffix}`}function idString(value){if(typeof value==="number"&&Number.isFinite(value))return String(value);if(typeof value==="string"&&value.trim()!=="")return value.trim();return null}function text(value){return typeof value==="string"&&value.trim()!==""?value.trim():null}function backlogSpaceAliases(spaceUrl){const aliases=[];const trimmed=spaceUrl.trim().replace(/\/+$/,"");if(trimmed==="")return aliases;
5
5
  let host;try{host=new URL(trimmed).host}catch{host=trimmed.replace(/^\/+/,"").split("/")[0]??""}if(host==="")return aliases;aliases.push(host);const label=host.split(".")[0];if(label!==void 0&&label!==""&&label!==host)aliases.push(label);return aliases}function backlogSpaceRow(row){const url=text(row["space_url"]);return{id:idString(row["id"]),name:url,code:null,aliases:url!==null?backlogSpaceAliases(url):[]}}function backlogProjectRow(row){return{id:idString(row["id"]),name:text(row["name"]),code:text(
6
6
  row["projectKey"])}}function backlogStatusRow(row){return{id:idString(row["id"]),name:text(row["name"]),code:null}}function backlogUserRow(row){return{id:idString(row["id"]),name:text(row["name"]),code:null,aliases:[text(row["userId"]),text(row["mailAddress"])].filter(v=>v!==null)}}var REDMINE_BASE_PATH="/api/v2/integrations/redmine";function redmineServerPath(serverId,suffix=""){assertBacklogPathSegment(serverId,"Redmine \u63A5\u7D9A\u5148 ID");return`${REDMINE_BASE_PATH}/${encodeURIComponent(serverId)}${suffix}`}function text2(value){return typeof value==="string"&&value.trim()!==""?value.trim():null}function redmineServerAliases(baseUrl){const trimmed=baseUrl.trim().replace(/\/+$/,"");if(trimmed==="")return[];const aliases=[trimmed];try{const host=new URL(trimmed).host;
@@ -129,7 +129,7 @@ if(cursor!==null)query.set("cursor",cursor);const res=await this.get(`${NOTIFICA
129
129
  res.status)}cursor=body["next_cursor"]}return{count:total,complete:false}}async announcementUnreadCount(){const res=await this.get(`${ANNOUNCEMENTS_PATH}/counts`);const count=res.ok&&isRecord(res.json)?res.json["unread_count"]:void 0;if(typeof count!=="number"||!Number.isSafeInteger(count)||count<0){throw new ResolveError(res.ok?"\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":
130
130
  `\u304A\u77E5\u3089\u305B\u306E\u672A\u8AAD\u4EF6\u6570\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08HTTP ${res.status}\uFF09\u3002\u63A5\u7D9A\u5148\u3068\u30ED\u30B0\u30A4\u30F3\u72B6\u614B\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`,res.status)}return count}async namedList(path2,envelope,label,map){return namedListFrom(await this.get(path2),envelope,label,map)}async cached(scope,projectId,load){const key={profile:this.options.profile,scope,project:projectId};
131
131
  const options={...this.options.env!==void 0?{env:this.options.env}:{},refresh:this.options.refresh,...this.options.ttlMs!==void 0?{ttlMs:this.options.ttlMs}:{},...this.options.now!==void 0?{now:this.options.now}:{}};const hit=readCache(key,options);if(hit!==null&&Array.isArray(hit))return hit;const fresh=await load();writeCache(key,fresh,options);return fresh}applyAlias(kind,input){const table=this.options.aliases?.[kind];if(table===void 0)return input;const needle=input.trim().toLowerCase();for(const[
132
- from,to]of Object.entries(table)){if(from.trim().toLowerCase()===needle&&typeof to==="string"&&to.trim()!=="")return to}return input}async backlogSpaces(){return this.cached("backlog-spaces",BACKLOG_SPACES_CACHE_KEY,()=>this.namedList(`${BACKLOG_BASE_PATH}/spaces`,"spaces","Backlog \u30B9\u30DA\u30FC\u30B9",backlogSpaceRow))}async backlogSpace(ref){return resolveNamed(ref,await this.backlogSpaces(),{flag:"--space",label:"Backlog \u30B9\u30DA\u30FC\u30B9",scope:BACKLOG_SCOPE_LABEL})}async backlogDefaultSpace(){
132
+ from,to]of Object.entries(table)){if(from.trim().toLowerCase()===needle&&typeof to==="string"&&to.trim()!=="")return to}return input}async backlogSpaces(){return this.cached("backlog-spaces",BACKLOG_SPACES_CACHE_KEY,()=>this.namedList(`${BACKLOG_BASE_PATH}/spaces`,"spaces","Backlog \u30B9\u30DA\u30FC\u30B9",backlogSpaceRow))}async backlogSpace(ref,flag="--space"){return resolveNamed(ref,await this.backlogSpaces(),{flag,label:"Backlog \u30B9\u30DA\u30FC\u30B9",scope:BACKLOG_SCOPE_LABEL})}async backlogDefaultSpace(){
133
133
  const spaces=await this.backlogSpaces();if(spaces.length===1)return spaces[0];if(spaces.length===0){throw new UsageError("Backlog \u30B9\u30DA\u30FC\u30B9\u304C1\u4EF6\u3082\u767B\u9332\u3055\u308C\u3066\u3044\u307E\u305B\u3093","TWP \u306E\u5916\u90E8\u9023\u643A\u8A2D\u5B9A\u3067 Backlog \u30B9\u30DA\u30FC\u30B9\u3092\u767B\u9332\u3057\u3066\u304F\u3060\u3055\u3044\uFF08twp backlog space list \u3067\u78BA\u8A8D\u3067\u304D\u307E\u3059\uFF09\u3002")}throw new UsageError(`Backlog \u30B9\u30DA\u30FC\u30B9\u304C ${spaces.
134
134
  length} \u4EF6\u767B\u9332\u3055\u308C\u3066\u3044\u308B\u305F\u3081\u3001--space \u30671\u3064\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044`,"twp backlog space list \u3067 ID \u3068\u30B9\u30DA\u30FC\u30B9URL\u3092\u78BA\u8A8D\u3067\u304D\u307E\u3059\u3002\u6BCE\u56DE\u306E\u6307\u5B9A\u3092\u7701\u304F\u306B\u306F twp configure \u3067\u65E2\u5B9A\u306E Backlog \u30B9\u30DA\u30FC\u30B9\u3092\u8A2D\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002")}async backlogProjects(spaceId){return this.cached(
135
135
  "backlog-projects",spaceId,()=>this.namedList(backlogSpacePath(spaceId,"/projects"),"projects","Backlog \u30D7\u30ED\u30B8\u30A7\u30AF\u30C8",backlogProjectRow))}async backlogStatuses(spaceId,projectId){return this.cached("backlog-statuses",`${spaceId}/${projectId}`,()=>this.namedList(backlogSpacePath(spaceId,`/projects/${encodeURIComponent(assertBacklogPathSegment(projectId,"Backlog \u30D7\u30ED\u30B8\u30A7\u30AF\u30C8 ID"))}/statuses`),"statuses","Backlog \u30B9\u30C6\u30FC\u30BF\u30B9",backlogStatusRow))}async backlogUsers(spaceId,projectId){