@tocca-systems/twp-cli 0.47.0 → 0.48.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 (59) hide show
  1. package/CHANGELOG.public.md +6 -0
  2. package/README.md +45 -4
  3. package/dist/{analysis-KUCETWIJ.js → analysis-GAU2A3FU.js} +1 -1
  4. package/dist/{api-command-PQ435C3B.js → api-command-26MLBIZC.js} +2 -2
  5. package/dist/{app-227MZT5L.js → app-Y7MAQAPC.js} +2 -2
  6. package/dist/attendance-correct-5SFXA4DC.js +51 -0
  7. package/dist/{attendance-lists-NVRU2NLY.js → attendance-lists-3T7S7QF5.js} +1 -1
  8. package/dist/{backlog-F6TNQG4I.js → backlog-F4EWY7MT.js} +1 -1
  9. package/dist/{budget-FOFE3YUJ.js → budget-QFUGQIPZ.js} +1 -1
  10. package/dist/{chunk-XWW63XJJ.js → chunk-4F2ONF4P.js} +6 -4
  11. package/dist/{chunk-ZFTKBOGN.js → chunk-6TPGATAG.js} +1 -1
  12. package/dist/chunk-6ZB7A6VD.js +9 -0
  13. package/dist/{chunk-3B5PVPGU.js → chunk-A65V3K75.js} +1 -1
  14. package/dist/{chunk-VIU2HPWM.js → chunk-BN26WHLS.js} +1 -1
  15. package/dist/{chunk-PSWDEV6M.js → chunk-FZWRYJVM.js} +1 -1
  16. package/dist/{chunk-P7JCZYAI.js → chunk-GOZCJLRA.js} +1 -1
  17. package/dist/{chunk-ZTIR3NSH.js → chunk-IO5SMECE.js} +1 -1
  18. package/dist/{chunk-DPGQ36DA.js → chunk-JKL6NUVV.js} +1 -1
  19. package/dist/{chunk-KPXJALCL.js → chunk-KS2ZUQFC.js} +1 -1
  20. package/dist/{chunk-4ZTWRAHM.js → chunk-LAXINIDA.js} +1 -1
  21. package/dist/{chunk-E7MUDY4P.js → chunk-MY2U3CD6.js} +1 -1
  22. package/dist/{chunk-ACPGM5KP.js → chunk-OYDF57NH.js} +1 -1
  23. package/dist/{chunk-YLXW7TIU.js → chunk-QOUDJ7XO.js} +18 -18
  24. package/dist/{chunk-JBX4OEHV.js → chunk-VB2CSFRO.js} +1 -1
  25. package/dist/{chunk-LLOXVVFK.js → chunk-VYT6JAXQ.js} +12 -9
  26. package/dist/{chunk-CEBL5R62.js → chunk-XQRSX2RH.js} +1 -1
  27. package/dist/cli.js +29 -6
  28. package/dist/{company-X37NKBWH.js → company-77JEESSV.js} +2 -2
  29. package/dist/{contract-YRMK73XV.js → contract-26SKL7XT.js} +1 -1
  30. package/dist/{department-WKV46OIM.js → department-IZAR2LZ4.js} +1 -1
  31. package/dist/{deposit-75KCQBCE.js → deposit-MYTKRIEX.js} +1 -1
  32. package/dist/{estimate-LA7WXYTV.js → estimate-KLS7XJLD.js} +2 -2
  33. package/dist/{inquiry-NHDMHZXX.js → inquiry-52OT4HKJ.js} +1 -1
  34. package/dist/{invoice-WVCRD2MT.js → invoice-D77PS3WU.js} +2 -2
  35. package/dist/{job-title-FSVZSCMO.js → job-title-U67Z25ZO.js} +1 -1
  36. package/dist/{knowledge-J6TFEPMP.js → knowledge-Q3QLSNDX.js} +1 -1
  37. package/dist/{leave-MWDZOGQH.js → leave-OSIABEFV.js} +1 -1
  38. package/dist/{media-66FCDEMZ.js → media-HDG4VHAR.js} +1 -1
  39. package/dist/{notification-ZZV4M24X.js → notification-MEOHWBXH.js} +1 -1
  40. package/dist/{oneshot-C2GOGRLM.js → oneshot-ACV6XH5A.js} +1 -1
  41. package/dist/{position-G24ALWEO.js → position-N7SRF3CF.js} +1 -1
  42. package/dist/{project-WKWOVDVA.js → project-YMJJDSTP.js} +1 -1
  43. package/dist/{prospect-SS2Z4UNJ.js → prospect-3JD7STGT.js} +1 -1
  44. package/dist/{purchase-YPTIOSG6.js → purchase-2SLZBDD6.js} +2 -2
  45. package/dist/{receivable-G7TYHCBD.js → receivable-6ZRAUHC3.js} +1 -1
  46. package/dist/{registry-RPVLCPFY.js → registry-GQ3L7PZ2.js} +1 -1
  47. package/dist/report-TUSP7RRF.js +127 -0
  48. package/dist/{run-VGH3UT6R.js → run-ZPB23AZX.js} +1 -1
  49. package/dist/{sales-ai-review-57QGRYMZ.js → sales-ai-review-7NPG7KV6.js} +1 -1
  50. package/dist/{sales-master-7SWNOWZS.js → sales-master-W5MXNZQ2.js} +1 -1
  51. package/dist/{sales-numbering-TQS3PUV7.js → sales-numbering-RQV2I5G5.js} +1 -1
  52. package/dist/{supplier-payment-IORFZDHV.js → supplier-payment-TDL3IE4H.js} +1 -1
  53. package/dist/{task-TK37X5JF.js → task-2SHYSZBZ.js} +2 -2
  54. package/dist/{user-O4N3RNPO.js → user-YEIHSVVN.js} +2 -2
  55. package/dist/{workflow-JSBBY3V5.js → workflow-USG3ZKW6.js} +1 -1
  56. package/package.json +1 -1
  57. package/dist/attendance-K2U7RYDU.js +0 -3
  58. package/dist/chunk-WPY6OQOT.js +0 -9
  59. package/dist/report-EILA6LJW.js +0 -73
@@ -11,6 +11,12 @@
11
11
  `CHANGELOG.md` に残してあります。顧客向けの履歴は public 公開以降を対象とします。
12
12
  -->
13
13
 
14
+ ## 0.48.0
15
+
16
+ `twp attendance record create` で過去の時刻での打刻を、`twp attendance record update` / `delete` / `move` で打刻のメモの変更・取り消し・プロジェクトの付け替えができるようになりました。送る前に締め済みの月でないこと、前後の打刻との整合(二重の出勤など)を確かめ、問題があれば `--yes` を付けない限り送りません。`--dry-run` で確認結果だけを見ることもできます。
17
+
18
+ `twp report inbox` で確認者として見られる日報を一覧し(未読・書いた人・作成日で絞り込み)、`twp report read` / `review` / `unreview` / `reject` / `comment` で既読・確認済み・確認の取り消し・差し戻し・コメントができるようになりました。確認済みと差し戻しは書いた人へ通知が届くため `--yes` が必要です。また `twp report advice` で自分の日報に AI のアドバイスをもらえます(AI クレジットを消費します)。
19
+
14
20
  ## 0.47.0
15
21
 
16
22
  `twp onedrive link create` で `--drive` を省略して自分の OneDrive のファイルに共有リンクを作ろうとすると、エラーになって作れなかった不具合を修正しました。
package/README.md CHANGED
@@ -26,12 +26,12 @@ TWP(Tocca Working Platform)を、ターミナルから使うための CLI
26
26
  | **できる** | `twp notification` による自分宛ての通知の一覧(未読・カテゴリ・語で絞り込み)・詳細・未読件数・カテゴリ一覧と、1件ずつ・まとめての既読化 |
27
27
  | **できる** | `twp estimate` / `twp invoice` による販売管理の見積・請求の一覧(語・ステータス・取引先・プロジェクト・担当者・日付・回収状況で絞り込み)と詳細、`twp estimate` による見積の作成・更新・削除・社内共有メモ・既存の請求の紐づけ・関連入金・部署按分・案件書類(注文書・個別契約書など)の登録・版の差替え・ダウンロードと、注文書からの注文書番号の読み取り・見積書/注文書/注文請書の PDF の書き出し、`twp invoice` による請求の作成・更新・削除・取消と取消解除・統合請求書の作成・社内共有メモ・CSV/MF 会計仕訳の書き出し・請求書メールの送信・支払いリンクの作成・請求書/納品書/検収書の PDF の書き出し、`twp contract` による取引契約(見積から作る販売管理の契約)の一覧・詳細・作成・更新・削除、`twp invoice auto-template` による自動請求テンプレートの一覧・詳細・作成・更新・削除と発行履歴の参照(販売管理の管理者)、`twp deposit` による入金の一覧・詳細・登録・更新・削除・CSV 書き出し、請求への引当(CSV での一括を含む)・解除・手数料分の引き上げ、入金予定からの入金と引当のまとめ登録、`twp receivable` による売掛金残高の表示と CSV 書き出し・月次の締めと締めの解除(どちらも販売管理の管理者)、`twp purchase` による仕入(注文書)の一覧・詳細・作成・更新・削除・複製・一覧のメモ・注文書/注文請書の PDF の書き出しと、添付書類(見積書・注文書・注文請書)の登録・版の差替え・ダウンロード、添付した見積書からの AI 読み取り(候補を出すだけで仕入は変えません)、`twp supplier-payment` による支払(仕入先へ払うお金の台帳)の一覧・詳細・登録・更新・削除・ID を並べたファイルでのステータスの一括変更と、毎月の支払を生成する支払先マスタの一覧・詳細・登録・更新・削除(どちらも販売管理の管理者)、`twp business-place` / `twp payee` / `twp seal-impression` による帳票に載る自社の事業所・振込先・印影(画像の登録を含む)の一覧・詳細・登録・更新・削除(書き込みは販売管理の管理者。振込先の一覧は口座番号を伏字にします)、`twp purchase ai-mapping` による見積書 AI 読み取りのマッピング表の一覧・詳細・登録・更新・削除と反映先の選択肢、`twp estimate no-rule` / `twp invoice no-rule` / `twp purchase no-rule` による見積・請求・仕入の番号ルールの一覧(次に発行される番号つき)・詳細・登録・更新・削除と、`twp estimate format` による見積フォーマット(書類を作るときの既定値の組)の一覧・詳細・作成・更新・削除、`twp rounding-setting` による端数処理(金額の丸め方)の表示と変更(番号ルールと端数処理の変更は `--yes` が要り、変更前・変更後を出します)、`twp company` / `twp customer` による取引先企業・顧客の一覧と詳細(名前でも指定できます)、`twp customer` による顧客の登録・更新・削除(担当者・対応履歴ごと。ID を並べたファイルでの一括削除を含む)と担当者・対応履歴の一覧・詳細・登録・更新・削除、全顧客の最近の対応、名刺画像の登録・裏面メモ・削除、企業をまたいだ人物の一覧・詳細・CSV 書き出し、登録前の類似企業検索、`twp company` による取引先企業(仕入先を含む)の登録・更新・削除、`twp prospect` によるアプローチ先(見込客)の一覧・登録・更新・削除・CSV での一括登録と書き出し・重複確認・顧客への昇格と対応履歴の記録、`twp estimate|invoice|contract ai-review` による申請前AIチェックの実行(`--wait` で完了まで待つ)・結果の表示・指摘への確認済みの理由の登録と取消、`twp ai-review-reason` による理由の横断一覧・社内ナレッジへの追記文案の生成と追記PRの作成(販売管理の管理者)。販売管理・顧客管理の権限が要ります |
28
28
  | **できる** | `twp media` によるメディアライブラリのファイルのアップロード・一覧・ダウンロード・削除(ゴミ箱へ移す)・一括操作(公開・非公開・アーカイブ・移動・削除・復元・ZIP ダウンロード)、`twp media folder` によるフォルダの一覧・ツリー表示・作成・名前変更・移動・削除・ゴミ箱からの復元と完全削除(`--folder` はフォルダID のほか「親/子」形式のパスでも指定可)、`twp storage get` によるストレージ使用量の確認(管理者) |
29
- | **できる** | `twp attendance` による自分の勤怠の参照(いまの打刻状態・打刻の履歴・月の勤怠表)と打刻、管理者向けの残業サマリ(36協定を含む)・締め状況の参照 |
29
+ | **できる** | `twp attendance` による自分の勤怠の参照(いまの打刻状態・打刻の履歴・月の勤怠表)と打刻・打刻修正(過去の時刻での打刻・メモの変更・取り消し・プロジェクトの付け替え)、管理者向けの残業サマリ(36協定を含む)・締め状況の参照 |
30
30
  | **できる** | `twp leave` による有給の残日数・取得履歴・付与履歴の参照と有給の申請(`twp leave request`)、`twp workchange list` / `twp shift list` による月の勤務変更・シフトの参照(`--me` で自分の分・無ければ全員分=勤怠の管理者) |
31
31
  | **できる** | `twp analysis` による分析の読み取り(稼働分析・プロジェクトアサイン・人材別アサインを月ごとの列で、今週のキャパシティと過負荷アラート・再分配候補・標準勤務時間の設定、負荷のリスク判定、プロジェクト健全性スコアの一覧・推移と AI の所見)、`twp project manhours` / `twp task manhours` による工数の集計、`twp project workload` によるメンバーごとのタスク件数。分析の権限と、ページごとの閲覧対象への登録が要ります |
32
32
  | **できる** | `twp budget` による予実管理(年度の予実ダッシュボード・サマリー・部署行の内訳と未割当・CSV 出力、目標の一覧・JSON でのまとめ登録・前年度からのコピー・CSV の取り込みと雛形、プロジェクトの部署按分の参照と全件置換)。分析の権限と予実管理ページの閲覧対象への登録が要り、目標の書き込みは全体管理者か分析の権限が「管理者」の人です |
33
33
  | **できる** | `twp workflow` による、自分が申請できる申請書・申請書の定義(管理者)・自分の申請・承認履歴・自分の承認待ちの参照(申請書は名前でも指定できます)と、申請の起票・提出・更新・削除、承認・却下・差し戻し・取下げ |
34
- | **できる** | `twp report` による自分のレポート(日報)の一覧(フォーマット・状態・語で絞り込み)・詳細と、下書きの作成(フォーマットの入力項目から雛形を出せます)・更新・提出、使えるレポートフォーマットの一覧 |
34
+ | **できる** | `twp report` による自分のレポート(日報)の一覧(フォーマット・状態・語で絞り込み)・詳細と、下書きの作成(フォーマットの入力項目から雛形を出せます)・更新・提出・AI アドバイス、使えるレポートフォーマットの一覧。確認者としての一覧(未読・書いた人・作成日で絞り込み)・既読・コメント・確認済み・確認の取り消し・差し戻し |
35
35
  | **できる** | `twp wiki` / `twp note` / `twp meeting` による、wiki ページ(親ページ直下の子の一覧を含む)・ノート・議事録(開催日の期間で絞り込み)の一覧と、本文を `--output text` で文書として読むこと |
36
36
  | **できる** | `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`)もできます |
37
37
  | **できる** | `twp task-loop` による、TWP のタスクキューを手元の AI CLI に実行させる常駐ループ |
@@ -739,13 +739,34 @@ twp attendance timesheet [--month <YYYY-MM>]
739
739
  twp attendance punch <clock-in|clock-out|break-start|break-end|switch> [--project <コード|ID>] [--task <タスクID>] [--memo <メモ>]
740
740
  ```
741
741
 
742
- - 対象はログインしている本人の勤怠だけです。打刻の修正・過去の時刻での打刻・申請はまだできません
742
+ - 対象はログインしている本人の勤怠だけです。打刻の修正・過去の時刻での打刻は次の節の `twp attendance record` で行います
743
743
  - `twp attendance punch` の打刻時刻はサーバの時刻です。いま打てる種類は `twp attendance status` で分かります。**今月が締め済みなら打刻を送らずに止めます**(終了コード 3。サーバは締め済みの月への打刻を拒否しないため)
744
744
  - `--month` / `--date` を省くと今月です。「今月」はテナントの業務日の区切りでサーバが決めます
745
745
  - 存在しない日付(`2026-02-30` など)や `YYYY-MM` 以外の年月は、送る前に引数エラー(終了コード 2)にします
746
746
  - `twp attendance list` は新しい順です。`twp attendance timesheet` の時間は `H:MM` で、月の合計は stderr に出します。締め済みの月は、締めた時点の集計であることを知らせます
747
747
  - ヘルプは `twp attendance help`
748
748
 
749
+ ### 打刻を修正する(過去の時刻での打刻・メモ・取り消し・付け替え)
750
+
751
+ ```bash
752
+ twp attendance record create --date <YYYY-MM-DD> --time <HH:MM> --type <clock-in|clock-out|break-start|break-end|switch> [--project <コード|ID>] [--task <タスクID>] [--memo <メモ>]
753
+ twp attendance record update <記録ID> --memo <メモ> [--month <YYYY-MM>]
754
+ twp attendance record delete <記録ID> --reason <理由> --yes [--month <YYYY-MM>]
755
+ twp attendance record move <記録ID> --project <コード|ID> [--month <YYYY-MM>]
756
+ ```
757
+
758
+ - 対象はログインしている本人の記録だけです。自分の打刻の修正には打刻修正の権限が要ります(無ければ案内して終了コード 3)
759
+ - `--date` / `--time` は**テナントの**日付・時刻です(画面と同じ。端末のタイムゾーンは使いません)。業務日の区切り(既定5時)より前の時刻は前日の業務日に入ります
760
+ - 送る前に次を確かめて stderr に出します。**`--dry-run` はここまで走らせて止まります**(修正そのものは送りません)
761
+ - 記録の業務月が**締め済みなら送りません**(終了コード 3。サーバは締め済みの月への修正を拒否せず、締めの集計を洗い替えるため)
762
+ - サーバの整合プレビュー(休憩打刻だけが残る・`switch` で後ろの打刻のプロジェクトが付け替わる件数・出勤を取り消すと休憩だけが残る)
763
+ - その業務日の打刻の並び(**二重の出勤・出勤前の退勤**など、この修正で新たに生まれる矛盾。元からある矛盾は数えません)
764
+ - 警告が1件でもあれば、`--yes` が無い限り送りません(終了コード 2)。`record delete` は警告の有無に関わらず `--yes` が必須です
765
+ - 記録ID は `twp attendance list` の `id` です。記録は本人の打刻履歴から探すので、今月でなければ `--month` で記録の年月を指定します
766
+ - `record update` で変えられるのはメモだけです(`--memo ""` で消せます)。時刻・種類を直すときは `record delete` で取り消してから `record create` で打ち直します
767
+ - `record move` はサーバが元の記録を取り消し、同じ時刻・種類で付け替え先の記録を作ります(タスクの紐づけは外れます)
768
+ - 締め・締め解除は CLI からはできません
769
+
749
770
  ### 残業・締め状況を見る(勤怠の管理者)
750
771
 
751
772
  ```bash
@@ -881,9 +902,29 @@ twp report submit <レポートID> # 提
881
902
  - `update` の `content` は丸ごと置き換わります(今の値は `report get <レポートID> --output json` で取れます)。書き換えられるのは下書きと差し戻されたレポートです
882
903
  - `submit` は送る前に、画面と同じく必須の項目とタイトルが埋まっているかを確かめます
883
904
  - タイトルを省くと、画面と同じくフォーマットの既定のタイトル(`{date}` は今日の日付)かフォーマット名で作ります
884
- - 添付ファイル・動画・タスク参照・申請参照の項目の値はこの CLI では作れません(画面で入力してください)。確認・差し戻し・コメントは `twp api /api/v2/reports/...` で到達できます
905
+ - 添付ファイル・動画・タスク参照・申請参照の項目の値はこの CLI では作れません(画面で入力してください)
906
+ - `advice` は自分のレポートに AI のアドバイスをもらいます(書いた本人だけ・AI クレジットを消費するので `--yes` が要ります)
885
907
  - ヘルプは `twp report help`
886
908
 
909
+ ### レポート(日報)を確認する(確認者)
910
+
911
+ ```bash
912
+ twp report inbox [--format <フォーマット>] [--status <completed|reviewed|rejected>[,…]] [--unread] [--writer <ユーザー>] [--from <YYYY-MM-DD>] [--to <YYYY-MM-DD>] [--all]
913
+ twp report get <レポートID> # 本文とコメント
914
+ twp report read <レポートID> # 既読(複数は --report を繰り返す)
915
+ twp report comment list <レポートID>
916
+ twp report comment create <レポートID> --body-file comment.md
917
+ twp report review <レポートID> --yes # 確認済み(複数は --report を繰り返す)
918
+ twp report unreview <レポートID> # 確認の取り消し
919
+ twp report reject <レポートID> --comment-file reason.md --yes # 差し戻し(理由は必須)
920
+ ```
921
+
922
+ - `inbox` は確認者(またはフォーマットの管理者)になっているフォーマットの、提出されたレポートです(画面の「レポート確認」と同じ)。そのフォーマットで自分が書いたものも混ざります(自分の分だけなら `report list`)
923
+ - `--writer` は書いた人(ID・メールアドレス・社員番号・氏名。組織管理者でない場合は ID)、`--from` / `--to` は作成日(JST)です
924
+ - `review` と `reject` は書いた人へ通知が届くため `--yes` が要ります。`reject` の理由はコメントとして残り、通知にも載ります
925
+ - 複数のレポートを一度に `read` / `review` すると1件ずつ順に送り、失敗したらそこで止めて適用済みと未送信の ID を stderr に出します
926
+ - 確認者・管理者でないレポートに `review` / `unreview` / `reject` を打つと、権限の案内を出して終了コード 3 で終わります
927
+
887
928
  ### wiki・ノート・議事録を読む
888
929
 
889
930
  ```bash
@@ -1,3 +1,3 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{MANHOUR_DESCRIPTION,MANHOUR_FROM_FLAG,MANHOUR_TO_FLAG,analysisDomain,analysisForbidden,currentMonth,manhourNotes,manhourQuery,manhourRows,monthsBetween,workloadDistributionNotes,workloadDistributionRows}from"./chunk-E7MUDY4P.js";import"./chunk-YLXW7TIU.js";import"./chunk-4B3T4UE7.js";import"./chunk-F7K37QG6.js";import"./chunk-QQRJLH6B.js";import"./chunk-LXIAOCUW.js";import"./chunk-VTQAI52S.js";import"./chunk-UFND7FBC.js";import"./chunk-VSJBJXZO.js";export{MANHOUR_DESCRIPTION,MANHOUR_FROM_FLAG,MANHOUR_TO_FLAG,analysisDomain,analysisForbidden,currentMonth,manhourNotes,manhourQuery,manhourRows,monthsBetween,workloadDistributionNotes,workloadDistributionRows};
3
+ import{MANHOUR_DESCRIPTION,MANHOUR_FROM_FLAG,MANHOUR_TO_FLAG,analysisDomain,analysisForbidden,currentMonth,manhourNotes,manhourQuery,manhourRows,monthsBetween,workloadDistributionNotes,workloadDistributionRows}from"./chunk-MY2U3CD6.js";import"./chunk-QOUDJ7XO.js";import"./chunk-4B3T4UE7.js";import"./chunk-F7K37QG6.js";import"./chunk-QQRJLH6B.js";import"./chunk-LXIAOCUW.js";import"./chunk-VTQAI52S.js";import"./chunk-UFND7FBC.js";import"./chunk-VSJBJXZO.js";export{MANHOUR_DESCRIPTION,MANHOUR_FROM_FLAG,MANHOUR_TO_FLAG,analysisDomain,analysisForbidden,currentMonth,manhourNotes,manhourQuery,manhourRows,monthsBetween,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{CommandModelMissingError,MAX_REPORTED_VIOLATIONS,loadCommandModelDomain,loadCommandModelRoutes,validateBody,validateQuery}from"./chunk-NZ7WI4RZ.js";import{NO_REDACT_FLAG,NO_REDACT_NOTICE,exitCodeFor,fetchAllPages,reportError}from"./chunk-LLOXVVFK.js";import"./chunk-WPY6OQOT.js";import{evaluateQuery}from"./chunk-ATYA6DG5.js";import{renderOutput}from"./chunk-MXKAEPXA.js";import{redactSecretValues,redactSecrets,withDebug}from"./chunk-AUAZP2G7.js";import"./chunk-Q3B65OFC.js";
4
- import{readBody}from"./chunk-ORUDW52G.js";import"./chunk-XWW63XJJ.js";import"./chunk-GMBJTG6A.js";import"./chunk-3HH5IYNO.js";import{parseOperationArgs,repeatedValues}from"./chunk-F7K37QG6.js";import{ApiError,TwpApiClient,appendQuery}from"./chunk-IF2K4PM5.js";import{GLOBAL_OPTIONS_HELP}from"./chunk-YLM54X35.js";import{AuthSession,NotLoggedInError,SessionExpiredError,loadCredentials}from"./chunk-XNLIEUAW.js";import{effectiveApiUrl,resolveConfiguredOutput,
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-VYT6JAXQ.js";import"./chunk-6ZB7A6VD.js";import{evaluateQuery}from"./chunk-ATYA6DG5.js";import{renderOutput}from"./chunk-MXKAEPXA.js";import{redactSecretValues,redactSecrets,withDebug}from"./chunk-AUAZP2G7.js";import"./chunk-Q3B65OFC.js";
4
+ import{readBody}from"./chunk-ORUDW52G.js";import"./chunk-4F2ONF4P.js";import"./chunk-GMBJTG6A.js";import"./chunk-3HH5IYNO.js";import{parseOperationArgs,repeatedValues}from"./chunk-F7K37QG6.js";import{ApiError,TwpApiClient,appendQuery}from"./chunk-IF2K4PM5.js";import{GLOBAL_OPTIONS_HELP}from"./chunk-YLM54X35.js";import{AuthSession,NotLoggedInError,SessionExpiredError,loadCredentials}from"./chunk-XNLIEUAW.js";import{effectiveApiUrl,resolveConfiguredOutput,
5
5
  resolveProfile}from"./chunk-4VZKNEVN.js";import{HELP_TOKEN}from"./chunk-Y5EN7RYN.js";import"./chunk-QQRJLH6B.js";import{OUTPUT_FORMATS,resolveOutputFormat}from"./chunk-K2ONOH3L.js";import"./chunk-WVS4W5FY.js";import"./chunk-II5RVJQN.js";import{DEFAULT_MAX_ITEMS,DEFAULT_MAX_PAGES,envelopePaging,isPageNumberEnvelope,pageRangeNotes,positiveInteger,readEnvelopeCursor,readPageNumberCursor,shellQuote}from"./chunk-IOGMOXYF.js";import"./chunk-VTQAI52S.js";
6
6
  import{ApiRejectedError,ApiResponseError,EXIT_OK,EXIT_WAIT_TIMEOUT,NetworkError,UsageError}from"./chunk-UFND7FBC.js";import{httpFetch}from"./chunk-J7QYPKVK.js";import"./chunk-RZVI6PMW.js";import{stripTerminalControls}from"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var MIN_SEGMENT_CHARS=3;var parsedCache=new WeakMap;function splitSegments(path){return path.split("/").filter(segment=>segment!=="")}function parseRoutes(routes){const cached=parsedCache.get(routes);if(cached!==void 0)return cached;const parsed=[];for(const[key,domain]of Object.entries(routes.routes)){const space=key.indexOf(" ");if(space<=0)continue;const template=key.slice(space+1);parsed.push({method:key.slice(0,space),template,domain,segments:splitSegments(template).map(segment=>/^\{[^/{}]+\}$/.
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.
@@ -1,7 +1,7 @@
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-LKS7GANP.js";import"./chunk-NZ7WI4RZ.js";import{buildDiffLines,
4
- diffStat}from"./chunk-VRBI2NPI.js";import"./chunk-AUAZP2G7.js";import{require_fuzzysort}from"./chunk-DIMZRTLE.js";import"./chunk-XWW63XJJ.js";import"./chunk-GMBJTG6A.js";import"./chunk-3HH5IYNO.js";import"./chunk-IF2K4PM5.js";import{RelayError,builtinCatalog,createRuntime,loadCachedCatalog,modelLabel,pickModel,toModelInfos}from"./chunk-6QOT7CHX.js";import"./chunk-D233KKXW.js";import"./chunk-XNLIEUAW.js";import{checkMinSupportedVersion,isBelowMinSupported,
4
+ diffStat}from"./chunk-VRBI2NPI.js";import"./chunk-AUAZP2G7.js";import{require_fuzzysort}from"./chunk-DIMZRTLE.js";import"./chunk-4F2ONF4P.js";import"./chunk-GMBJTG6A.js";import"./chunk-3HH5IYNO.js";import"./chunk-IF2K4PM5.js";import{RelayError,builtinCatalog,createRuntime,loadCachedCatalog,modelLabel,pickModel,toModelInfos}from"./chunk-6QOT7CHX.js";import"./chunk-D233KKXW.js";import"./chunk-XNLIEUAW.js";import{checkMinSupportedVersion,isBelowMinSupported,
5
5
  minSupportedBlockMessage}from"./chunk-DXXFUNYN.js";import"./chunk-4VZKNEVN.js";import{parseArgv}from"./chunk-4OSCQLZT.js";import{applyPermissionMode,checkPermission,describePermissionMode,getMode,isModeId,modeSource,nextMode}from"./chunk-NAUH75MM.js";import"./chunk-Y5EN7RYN.js";import"./chunk-QQRJLH6B.js";import{isFullWidth,isWide,stringWidth,stripAnsi}from"./chunk-WVS4W5FY.js";import"./chunk-N2UVRM3Z.js";import"./chunk-II5RVJQN.js";import"./chunk-UFND7FBC.js";
6
6
  import"./chunk-PMOUHEJQ.js";import{proxyDiagnostics}from"./chunk-J7QYPKVK.js";import{configReadDirs,twpHomeDir}from"./chunk-RZVI6PMW.js";import{stripTerminalControls}from"./chunk-NHYMHCAT.js";import{__commonJS,__export,__require,__toESM}from"./chunk-VSJBJXZO.js";var require_react_production=__commonJS({"node_modules/react/cjs/react.production.js"(exports){"use strict";var REACT_ELEMENT_TYPE=Symbol.for("react.transitional.element");var REACT_PORTAL_TYPE=Symbol.for("react.portal");var REACT_FRAGMENT_TYPE=Symbol.for("react.fragment");var REACT_STRICT_MODE_TYPE=Symbol.for("react.strict_mode");var REACT_PROFILER_TYPE=Symbol.for("react.profiler");var REACT_CONSUMER_TYPE=Symbol.for("react.consumer");var REACT_CONTEXT_TYPE=Symbol.for("react.context");var REACT_FORWARD_REF_TYPE=Symbol.
7
7
  for("react.forward_ref");var REACT_SUSPENSE_TYPE=Symbol.for("react.suspense");var REACT_MEMO_TYPE=Symbol.for("react.memo");var REACT_LAZY_TYPE=Symbol.for("react.lazy");var REACT_ACTIVITY_TYPE=Symbol.for("react.activity");var REACT_VIEW_TRANSITION_TYPE=Symbol.for("react.view_transition");var MAYBE_ITERATOR_SYMBOL=Symbol.iterator;function getIteratorFn(maybeIterable){if(null===maybeIterable||"object"!==typeof maybeIterable)return null;maybeIterable=MAYBE_ITERATOR_SYMBOL&&maybeIterable[MAYBE_ITERATOR_SYMBOL]||
@@ -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-VGH3UT6R.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-ZPB23AZX.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",
@@ -0,0 +1,51 @@
1
+ import { createRequire as __twpCreateRequire } from 'node:module';
2
+ const require = __twpCreateRequire(import.meta.url);
3
+ import{PUNCH_TYPES,assertMonthOpen,attendanceDomain}from"./chunk-QOUDJ7XO.js";import{dateFlag,monthFlag}from"./chunk-4B3T4UE7.js";import"./chunk-4F2ONF4P.js";import{isSafePathSegment}from"./chunk-GMBJTG6A.js";import"./chunk-3HH5IYNO.js";import"./chunk-IF2K4PM5.js";import"./chunk-4VZKNEVN.js";import"./chunk-II5RVJQN.js";import{requireResolved,withResolved}from"./chunk-LXIAOCUW.js";import{isRecord,pick}from"./chunk-VTQAI52S.js";import{ApiRejectedError,
4
+ ApiResponseError,UsageError}from"./chunk-UFND7FBC.js";import"./chunk-J7QYPKVK.js";import"./chunk-RZVI6PMW.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var CREATE_USAGE="twp attendance record create --date <YYYY-MM-DD> --time <HH:MM> --type <clock-in|clock-out|break-start|break-end|switch> [--project <\u30B3\u30FC\u30C9|ID>] [--task <\u30BF\u30B9\u30AFID>] [--memo <\u30E1\u30E2>]";var UPDATE_USAGE="twp attendance record update <\u8A18\u9332ID> --memo <\u30E1\u30E2> [--month <YYYY-MM>]";var DELETE_USAGE="twp attendance record delete <\u8A18\u9332ID> --reason <\u7406\u7531> --yes [--month <YYYY-MM>]";var MOVE_USAGE="twp attendance record move <\u8A18\u9332\
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
+ 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
+ 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(
8
+ epochMs));const get=type=>Number(parts.find(p=>p.type===type)?.value);return{year:get("year"),month:get("month"),day:get("day"),hour:get("hour"),minute:get("minute"),second:get("second")}}function zonedToUtcIso(date,time,timeZone){const[year,month,day]=date.split("-").map(Number);const[hour,minute,second=0]=time.split(":").map(Number);const wall=Date.UTC(year,month-1,day,hour,minute,second);let utc=wall;for(let i=0;i<3;i+=1){const local=zonedParts(utc,timeZone);const localAsUtc=Date.UTC(local.year,
9
+ local.month-1,local.day,local.hour,local.minute,local.second);utc-=localAsUtc-wall}return new Date(utc).toISOString().replace(".000Z","Z")}var pad=n=>String(n).padStart(2,"0");function businessDateOf(epochMs,timeZone,boundaryHour){const local=zonedParts(epochMs,timeZone);const base=new Date(Date.UTC(local.year,local.month-1,local.day));if(local.hour<boundaryHour)base.setUTCDate(base.getUTCDate()-1);return`${base.getUTCFullYear()}-${pad(base.getUTCMonth()+1)}-${pad(base.getUTCDate())}`}function wallClock(epochMs,timeZone){
10
+ const local=zonedParts(epochMs,timeZone);return`${local.year}-${pad(local.month)}-${pad(local.day)} ${pad(local.hour)}:${pad(local.minute)}`}function sortPunches(punches){return[...punches].sort((a,b)=>a.at-b.at||(TYPE_ORDER[a.type]??9)-(TYPE_ORDER[b.type]??9))}function endState(punches){let state="off";for(const punch of sortPunches(punches)){if(punch.type==="clock_in"||punch.type==="break_end"||punch.type==="switch")state="working";else if(punch.type==="break_start")state="break";else if(punch.
11
+ type==="clock_out")state="off"}return state}function sequenceProblems(punches,timeZone,initial="off"){const sorted=sortPunches(punches);const problems=[];let state=initial;for(const punch of sorted){const when=`${wallClock(punch.at,timeZone)} \u306E${LABELS[punch.type]??punch.type}`;switch(punch.type){case"clock_in":if(state!=="off")problems.push(`${when}: \u51FA\u52E4\u4E2D\u306B\u3082\u3046\u4E00\u5EA6\u51FA\u52E4\u3057\u3066\u3044\u307E\u3059\uFF08\u4E8C\u91CD\u306E\u51FA\u52E4\uFF09`);state=
12
+ "working";break;case"clock_out":if(state==="off")problems.push(`${when}: \u51FA\u52E4\u3088\u308A\u524D\uFF08\u307E\u305F\u306F\u9000\u52E4\u306E\u5F8C\uFF09\u306B\u9000\u52E4\u3057\u3066\u3044\u307E\u3059`);if(state==="break")problems.push(`${when}: \u4F11\u61A9\u4E2D\u306B\u9000\u52E4\u3057\u3066\u3044\u307E\u3059\uFF08\u4F11\u61A9\u7D42\u4E86\u304C\u3042\u308A\u307E\u305B\u3093\uFF09`);state="off";break;case"break_start":if(state!=="working")problems.push(`${when}: \u52E4\u52D9\u4E2D\u3067\u306A\u3044\u306E\u306B\u4F11\u61A9\u3092\u59CB\u3081\u3066\u3044\u307E\u3059`);
13
+ state="break";break;case"break_end":if(state!=="break")problems.push(`${when}: \u4F11\u61A9\u3057\u3066\u3044\u306A\u3044\u306E\u306B\u4F11\u61A9\u3092\u7D42\u3048\u3066\u3044\u307E\u3059`);state="working";break;case"switch":if(state!=="working")problems.push(`${when}: \u52E4\u52D9\u4E2D\u3067\u306A\u3044\u306E\u306B\u4F5C\u696D\u3092\u5207\u308A\u66FF\u3048\u3066\u3044\u307E\u3059`);state="working";break;default:break}}return problems}function introducedProblems(before,after,timeZone,initial="o\
14
+ ff"){const existing=new Set(sequenceProblems(before,timeZone,initial));return sequenceProblems(after,timeZone,initial).filter(problem=>!existing.has(problem))}function recordsOf(body){if(!isRecord(body)||!Array.isArray(body["records"])){throw new ApiResponseError("\u6253\u523B\u5C65\u6B74\u306E\u5FDC\u7B54\u306B records \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002")}return body["records"].filter(isRecord)}function toPunch(row){
15
+ const at=typeof row["recorded_at"]==="string"?Date.parse(row["recorded_at"]):Number.NaN;if(typeof row["id"]!=="string"||typeof row["type"]!=="string"||!Number.isFinite(at))return void 0;return{id:row["id"],type:row["type"],at}}function isActive(row){return row["deleted_at"]===null||row["deleted_at"]===void 0}async function dayPunches(ctx,businessDate){const body=await ctx.send({method:"GET",path:"/api/v1/attendance/records",query:{date:businessDate}});return recordsOf(body).filter(isActive).map(
16
+ toPunch).filter(p=>p!==void 0)}function previousDate(date){const[y,m,d]=date.split("-").map(Number);const base=new Date(Date.UTC(y,m-1,d-1));return`${base.getUTCFullYear()}-${pad(base.getUTCMonth()+1)}-${pad(base.getUTCDate())}`}async function dayContext(ctx,businessDate){const punches=await dayPunches(ctx,businessDate);const initial=endState(await dayPunches(ctx,previousDate(businessDate)));return{punches,initial}}function clockOf(input){return{timeZone:requireResolved(input,"timeZone"),boundaryHour:Number(
17
+ requireResolved(input,"boundaryHour"))}}async function withClock(input,ctx,extra={}){const clock=await ctx.resolver.tenantClock();return withResolved(input,{timeZone:clock.timeZone,boundaryHour:String(clock.boundaryHour),...extra})}function textFlag(input,name,usage,required,allowEmpty=false){const value=input.flags.get(name);if(value===void 0||value.trim()===""&&!allowEmpty){if(required)throw new UsageError(`${name} \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044`,usage);return void 0}if([
18
+ ...value].length>TEXT_MAX){throw new UsageError(`${name} \u306F ${TEXT_MAX} \u6587\u5B57\u4EE5\u5185\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08${[...value].length} \u6587\u5B57\uFF09`,usage)}return value}function createType(input){if(input.args.length>0)throw new UsageError(`record create \u306F\u4F4D\u7F6E\u5F15\u6570\u3092\u53D7\u3051\u53D6\u308A\u307E\u305B\u3093: ${input.args.join(" ")}`,CREATE_USAGE);const kind=input.flags.get("--type");if(kind===void 0||kind.trim()===""){throw new UsageError(
19
+ `--type \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08${Object.keys(PUNCH_TYPES).join(" / ")}\uFF09`,CREATE_USAGE)}const type=PUNCH_TYPES[kind.trim()];if(type===void 0){throw new UsageError(`--type \u304C\u9055\u3044\u307E\u3059: ${kind}\uFF08${Object.keys(PUNCH_TYPES).join(" / ")} \u306E\u3069\u308C\u304B\uFF09`,CREATE_USAGE)}return type}function createWhen(input){const date=dateFlag(input.flags);if(date===void 0)throw new UsageError("--date \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u30C6\u30CA\u30F3\u30C8\u306E\u65E5\u4ED8\u30FBYYYY-MM-DD\uFF09",
20
+ CREATE_USAGE);const raw=input.flags.get("--time");if(raw===void 0)throw new UsageError("--time \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u30C6\u30CA\u30F3\u30C8\u306E\u6642\u523B\u30FBHH:MM \u307E\u305F\u306F HH:MM:SS\uFF09",CREATE_USAGE);const match=TIME_PATTERN.exec(raw.trim());if(match===null||Number(match[1])>23||Number(match[2])>59||Number(match[3]??0)>59){throw new UsageError(`--time \u306F HH:MM \u307E\u305F\u306F HH:MM:SS \u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u53D7\u3051\u53D6\u3063\u305F\u5024: ${raw}\
21
+ \uFF09`,"\u4F8B: --time 09:00")}return{date,time:`${match[1]}:${match[2]}:${match[3]??"00"}`}}function validateCreate(input){const type=createType(input);createWhen(input);if(type==="switch"&&!input.flags.has("--project")){throw new UsageError("--type switch \u306B\u306F\u5207\u308A\u66FF\u3048\u5148\u306E --project \u304C\u5FC5\u8981\u3067\u3059",CREATE_USAGE)}const task=input.flags.get("--task");if(task!==void 0&&!UUID_PATTERN.test(task.trim())){throw new UsageError(`--task \u306F\u30BF\u30B9\u30AF\u306E ID\uFF08UUID\uFF09\u3067\u6307\u5B9A\u3057\u3066\
22
+ \u304F\u3060\u3055\u3044\uFF08\u53D7\u3051\u53D6\u3063\u305F\u5024: ${task}\uFF09`,"ID \u306F twp task get <\u30AD\u30FC> --query id \u3067\u5206\u304B\u308A\u307E\u3059")}textFlag(input,"--memo",CREATE_USAGE,false)}function createPlan(input){const body={type:createType(input),recorded_at:requireResolved(input,"recordedAt")};if(input.flags.has("--project"))body["project_id"]=requireResolved(input,"projectId");const task=input.flags.get("--task");if(task!==void 0)body["task_id"]=task.trim();const memo=textFlag(
23
+ input,"--memo",CREATE_USAGE,false);if(memo!==void 0)body["memo"]=memo;return{method:"POST",path:"/api/v1/attendance/manual-punch",body}}async function createPreview(input,ctx){const{timeZone,boundaryHour}=clockOf(input);const type=createType(input);const recordedAt=requireResolved(input,"recordedAt");const at=Date.parse(recordedAt);const businessDate=businessDateOf(at,timeZone,boundaryHour);await assertMonthOpen(ctx,businessDate.slice(0,7),"\u6253\u523B\u4FEE\u6B63",CLOSED_REASON);const notes=[`\
24
+ \u9001\u308B\u6253\u523B: ${wallClock(at,timeZone)}\uFF08${timeZone}\uFF09\u306E${LABELS[type]??type} \uFF1D ${recordedAt}\u30FB\u696D\u52D9\u65E5 ${businessDate}`];const warnings=[];if(type==="switch"){const preview=await ctx.send({method:"POST",path:"/api/v1/attendance/manual-punch/switch-preview",body:{recorded_at:recordedAt,project_id:requireResolved(input,"projectId")}});const count=isRecord(preview)?preview["count"]:void 0;if(typeof count!=="number")throw new ApiResponseError("\u5207\u66FF\u30D7\u30EC\u30D3\u30E5\u30FC\u306E\u5FDC\u7B54\u306B \
25
+ count \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002");if(count>0)warnings.push(`\u3053\u306E\u5207\u66FF\u3067\u3001\u5F8C\u308D\u306B\u7D9A\u304F\u6253\u523B ${count} \u4EF6\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3082\u5207\u308A\u66FF\u3048\u5148\u306B\u5909\u308F\u308A\u307E\u3059`);else notes.push("\u3053\u306E\u5207\u66FF\u3067\u4ED8\u3051\u66FF\u308F\u308B\u65E2\u5B58\u306E\u6253\u523B\u306F\u3042\u308A\u307E\u305B\u3093\u3002")}else{
26
+ const preview=await ctx.send({method:"POST",path:"/api/v1/attendance/manual-punch/integrity-preview",body:{type,recorded_at:recordedAt}});if(!isRecord(preview)||!("warning"in preview)){throw new ApiResponseError("\u6574\u5408\u30D7\u30EC\u30D3\u30E5\u30FC\u306E\u5FDC\u7B54\u306B warning \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002")}if(typeof preview["warning"]==="string"&&preview["warning"]!=="")warnings.push(preview["w\
27
+ arning"])}const day=await dayContext(ctx,businessDate);warnings.push(...introducedProblems(day.punches,[...day.punches,{id:"(new)",type,at}],timeZone,day.initial));return{notes,warnings}}function recordId(input,usage){const[id,...rest]=input.args;if(id===void 0||id.trim()==="")throw new UsageError("\u8A18\u9332 ID \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08twp attendance list \u306E id\uFF09",usage);if(rest.length>0)throw new UsageError(`\u8A18\u9332 ID \u306F1\u3064\u3060\u3051\u6307\u5B9A\u3067\u304D\u307E\u3059: ${rest.
28
+ join(" ")}`,usage);if(!isSafePathSegment(id.trim()))throw new UsageError(`\u8A18\u9332 ID \u306E\u5F62\u5F0F\u304C\u9055\u3044\u307E\u3059: ${id}`,usage);return id.trim()}async function findRecord(input,ctx,id){const month=monthFlag(input.flags);const rows=[...recordsOf(await ctx.send({method:"GET",path:"/api/v1/attendance/records",query:{year_month:month}}))];const row=rows.find(r=>r["id"]===id);if(row===void 0){throw new UsageError(`\u8A18\u9332 ${id} \u304C${month===void 0?"\u4ECA\u6708":` ${month}\
29
+ `}\u306E\u6253\u523B\u5C65\u6B74\u306B\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002`,"\u8A18\u9332\u306E\u5E74\u6708\u3092 --month <YYYY-MM> \u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08twp attendance list --month <YYYY-MM> \u3067 id \u3068 year_month \u304C\u5206\u304B\u308A\u307E\u3059\uFF09")}if(!isActive(row))throw new ApiRejectedError(`\u8A18\u9332 ${id} \u306F\u65E2\u306B\u53D6\u308A\u6D88\u3057\u6E08\u307F\u3067\u3059\uFF08${String(row["deleted_at"])}\uFF09\u3002`);return{
30
+ row,month:rows}}function describeRow(row,timeZone){const at=typeof row["recorded_at"]==="string"?Date.parse(row["recorded_at"]):Number.NaN;const when=Number.isFinite(at)?wallClock(at,timeZone):String(row["recorded_at"]);return`${when} \u306E${LABELS[String(row["type"])]??String(row["type"])}\uFF08\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8 ${String(row["project_id"]??"\u306A\u3057")}\uFF09`}async function existingPreview(input,ctx,usage,action){const id=recordId(input,usage);const{timeZone}=clockOf(input);
31
+ const found=await findRecord(input,ctx,id);const yearMonth=typeof found.row["year_month"]==="string"?found.row["year_month"]:void 0;if(yearMonth===void 0)throw new ApiResponseError("\u6253\u523B\u8A18\u9332\u306B year_month \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002");await assertMonthOpen(ctx,yearMonth,action,CLOSED_REASON);return{...found,notes:[`\u5BFE\u8C61: ${describeRow(found.row,timeZone)}`]}}var ID_FLAGS=[{name:"\
32
+ --month",summary:"\u8A18\u9332\u306E\u5E74\u6708\uFF08YYYY-MM\u30FB\u65E2\u5B9A\u306F\u4ECA\u6708\uFF09",takesValue:true,placeholder:"<YYYY-MM>"}];var createOperation={name:"create",summary:"\u904E\u53BB\u306E\u6642\u523B\u3067\u6253\u523B\u3059\u308B\uFF08\u6253\u523B\u4FEE\u6B63\u30FB\u9001\u308B\u524D\u306B\u6574\u5408\u3092\u78BA\u304B\u3081\u308B\uFF09",usage:CREATE_USAGE,description:"POST /api/v1/attendance/manual-punch \u3092\u9001\u308A\u307E\u3059\uFF08\u30ED\u30B0\u30A4\u30F3\u3057\u3066\u3044\u308B\u672C\u4EBA\u306E\u5206\u30FB\u6253\u523B\u4FEE\u6B63\u306E\u6A29\u9650\u304C\u5FC5\u8981\uFF09\u3002\n--date / --time \u306F\u30C6\u30CA\u30F3\u30C8\u306E\u65E5\u4ED8\u30FB\u6642\u523B\u3067\u3059\uFF08\u753B\u9762\u3068\u540C\u3058\u3002\u7AEF\u672B\
33
+ \u306E\u30BF\u30A4\u30E0\u30BE\u30FC\u30F3\u306F\u4F7F\u3044\u307E\u305B\u3093\uFF09\u3002\n\u9001\u308B\u524D\u306B\u3001\u696D\u52D9\u6708\u306E\u7DE0\u3081\uFF08\u7DE0\u3081\u6E08\u307F\u306A\u3089\u9001\u308A\u307E\u305B\u3093\u30FB\u7D42\u4E86\u30B3\u30FC\u30C9 3\uFF09\u3001\u30B5\u30FC\u30D0\u306E\u6574\u5408\u30D7\u30EC\u30D3\u30E5\u30FC\n\uFF08--type switch \u306F\u4ED8\u3051\u66FF\u308F\u308B\u6253\u523B\u306E\u4EF6\u6570\u30FB\u305D\u308C\u4EE5\u5916\u306F\u300C\u4F11\u61A9\u3060\u3051\u304C\u6B8B\u308B\u300D\uFF09\u3001\u305D\u306E\u696D\u52D9\u65E5\u306E\u6253\u523B\u306E\u4E26\u3073\n\uFF08\u4E8C\u91CD\u306E\u51FA\u52E4\u30FB\u51FA\u52E4\u524D\u306E\u9000\u52E4\u306A\u3069\u3001\u3053\u306E\u6253\u523B\u3067\u65B0\u305F\u306B\u751F\u307E\u308C\u308B\u77DB\u76FE\uFF09\u3092\u78BA\u304B\u3081\u3066 stderr \u306B\u51FA\u3057\u307E\u3059\u3002\n\u8B66\u544A\u304C1\u4EF6\u3067\u3082\u3042\u308C\u3070 --yes \u304C\u7121\u3044\u9650\u308A\u9001\u308A\u307E\u305B\u3093\uFF08\u7D42\u4E86\u30B3\u30FC\u30C9 2\uFF09\u3002--dry-run \u306F\u78BA\u304B\u3081\u305F\u7D50\u679C\u3068\u9001\u308B\u5185\u5BB9\u3092\u51FA\u3057\u3066\u6B62\u307E\u308A\u307E\u3059\u3002\n--type switch \u306B\u306F\u5207\u308A\u66FF\u3048\u5148\u306E --project \u304C\u5FC5\u8981\u3067\u3059\u3002",
34
+ flags:[{name:"--date",summary:"\u6253\u523B\u306E\u65E5\u4ED8\uFF08\u30C6\u30CA\u30F3\u30C8\u306E\u65E5\u4ED8\u30FBYYYY-MM-DD\uFF09",takesValue:true,placeholder:"<YYYY-MM-DD>"},{name:"--time",summary:"\u6253\u523B\u306E\u6642\u523B\uFF08\u30C6\u30CA\u30F3\u30C8\u306E\u6642\u523B\u30FBHH:MM \u307E\u305F\u306F HH:MM:SS\uFF09",takesValue:true,placeholder:"<HH:MM>"},{name:"--type",summary:`\u6253\u523B\u306E\u7A2E\u985E\uFF08${Object.keys(PUNCH_TYPES).join(" / ")}\uFF09`,takesValue:true,placeholder:"\
35
+ <\u7A2E\u985E>"},{name:"--project",summary:"\u4F5C\u696D\u3059\u308B\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\uFF08\u30B3\u30FC\u30C9\u307E\u305F\u306F ID\uFF09",takesValue:true,placeholder:"<\u30B3\u30FC\u30C9|ID>"},{name:"--task",summary:"\u4F5C\u696D\u3059\u308B\u30BF\u30B9\u30AF\u306E ID\uFF08UUID\uFF09",takesValue:true,placeholder:"<\u30BF\u30B9\u30AFID>"},{name:"--memo",summary:`\u30E1\u30E2\uFF08${TEXT_MAX} \u6587\u5B57\u4EE5\u5185\uFF09`,takesValue:true,placeholder:"<\u30E1\u30E2>"}],async prepare(input,ctx){
36
+ validateCreate(input);const{date,time}=createWhen(input);const explicit=input.flags.get("--project");const project=explicit===void 0?{}:{projectId:await ctx.projectId(explicit)};const clock=await ctx.resolver.tenantClock();return withResolved(input,{timeZone:clock.timeZone,boundaryHour:String(clock.boundaryHour),recordedAt:zonedToUtcIso(date,time,clock.timeZone),...project})},plan:createPlan,preview:createPreview,summarize:body=>{const record=isRecord(body)?body["record"]:void 0;if(!isRecord(record)||
37
+ typeof record["type"]!=="string"){throw new ApiResponseError("\u6253\u523B\u4FEE\u6B63\u306E\u5FDC\u7B54\u306B\u6253\u523B\u8A18\u9332\uFF08type\uFF09\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002")}return{...pick(record,RECORD_COLUMNS),updated_count:isRecord(body)?body["updated_count"]??null:null}},raw:body=>body,forbidden:FORBIDDEN};var updateOperation={name:"update",summary:"\u6253\u523B\u8A18\u9332\u306E\u30E1\u30E2\u3092\u5909\u3048\u308B",
38
+ usage:UPDATE_USAGE,description:"PATCH /api/v1/attendance/records/{id} \u3092\u9001\u308A\u307E\u3059\uFF08\u30ED\u30B0\u30A4\u30F3\u3057\u3066\u3044\u308B\u672C\u4EBA\u306E\u8A18\u9332\uFF09\u3002\u5909\u3048\u3089\u308C\u308B\u306E\u306F\u30E1\u30E2\u3060\u3051\u3067\u3059\n\uFF08\u6642\u523B\u30FB\u7A2E\u985E\u3092\u76F4\u3059\u3068\u304D\u306F record delete \u3067\u53D6\u308A\u6D88\u3057\u3066\u304B\u3089 record create \u3067\u6253\u3061\u76F4\u3057\u3066\u304F\u3060\u3055\u3044\uFF09\u3002\n\u8A18\u9332\u306F\u672C\u4EBA\u306E\u6253\u523B\u5C65\u6B74\u304B\u3089\u63A2\u3057\u307E\u3059\u3002\u4ECA\u6708\u3067\u306A\u3051\u308C\u3070 --month \u3067\u8A18\u9332\u306E\u5E74\u6708\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n\u7DE0\u3081\u6E08\u307F\u306E\u6708\u306E\u8A18\u9332\u306F\u9001\u308A\u307E\u305B\u3093\uFF08\u7D42\u4E86\u30B3\u30FC\u30C9 3\uFF09\u3002",
39
+ flags:[{name:"--memo",summary:`\u65B0\u3057\u3044\u30E1\u30E2\uFF08${TEXT_MAX} \u6587\u5B57\u4EE5\u5185\u30FB\u7A7A\u6587\u5B57\u3067\u6D88\u3059\uFF09`,takesValue:true,placeholder:"<\u30E1\u30E2>"},...ID_FLAGS],prepare(input,ctx){recordId(input,UPDATE_USAGE);textFlag(input,"--memo",UPDATE_USAGE,true,true);return withClock(input,ctx)},plan:input=>({method:"PATCH",path:`/api/v1/attendance/records/${recordId(input,UPDATE_USAGE)}`,body:{memo:textFlag(input,"--memo",UPDATE_USAGE,true,true)}}),async preview(input,ctx){
40
+ const{notes}=await existingPreview(input,ctx,UPDATE_USAGE,"\u30E1\u30E2\u306E\u5909\u66F4");return{notes,warnings:[]}},summarize:body=>pick(isRecord(body)?body["record"]:void 0,RECORD_COLUMNS),raw:body=>body,forbidden:FORBIDDEN};var deleteOperation={name:"delete",summary:"\u6253\u523B\u8A18\u9332\u3092\u53D6\u308A\u6D88\u3059\uFF08--yes \u5FC5\u9808\u30FB\u9001\u308B\u524D\u306B\u6574\u5408\u3092\u78BA\u304B\u3081\u308B\uFF09",usage:DELETE_USAGE,description:"DELETE /api/v1/attendance/records/{id\
41
+ } \u3092\u9001\u308A\u307E\u3059\uFF08\u30ED\u30B0\u30A4\u30F3\u3057\u3066\u3044\u308B\u672C\u4EBA\u306E\u8A18\u9332\u30FB\u6253\u523B\u4FEE\u6B63\u306E\u6A29\u9650\u304C\u5FC5\u8981\uFF09\u3002\n\u53D6\u308A\u6D88\u3057\u306F\u5C65\u6B74\u306B\u6B8B\u308A\u307E\u3059\uFF08\u53D6\u6D88\u6E08\u307F\u3068\u3057\u3066\u8868\u793A\u3055\u308C\u307E\u3059\uFF09\u3002--reason\uFF08\u53D6\u308A\u6D88\u3057\u306E\u7406\u7531\uFF09\u306F\u5FC5\u9808\u3067\u3059\u3002\n\u9001\u308B\u524D\u306B\u3001\u8A18\u9332\u306E\u6708\u306E\u7DE0\u3081\uFF08\u7DE0\u3081\u6E08\u307F\u306A\u3089\u9001\u308A\u307E\u305B\u3093\u30FB\u7D42\u4E86\u30B3\u30FC\u30C9 3\uFF09\u3001\u30B5\u30FC\u30D0\u306E\u6574\u5408\u30D7\u30EC\u30D3\u30E5\u30FC\n\uFF08\u51FA\u52E4\u3092\u6D88\u3059\u3068\u4F11\u61A9\u3060\u3051\u304C\u6B8B\u308B\uFF09\u3001\u305D\u306E\u696D\u52D9\u65E5\u306E\u6253\u523B\u306E\u4E26\u3073\uFF08\u53D6\u308A\u6D88\u3057\u3067\u65B0\u305F\u306B\u751F\u307E\u308C\u308B\u77DB\u76FE\uFF09\u3092\u78BA\u304B\u3081\u3066 stderr \u306B\u51FA\u3057\u307E\u3059\u3002\n--dry-run \u306F\u78BA\u304B\u3081\u305F\u7D50\u679C\u3068\u9001\u308B\u5185\u5BB9\u3092\u51FA\u3057\u3066\u6B62\u307E\u308A\u307E\u3059\uFF08--yes \u306F\u8981\u308A\u307E\u305B\u3093\uFF09\u3002\n\u8A18\u9332\u306F\u672C\u4EBA\u306E\u6253\u523B\u5C65\u6B74\u304B\u3089\u63A2\u3057\u307E\u3059\u3002\u4ECA\u6708\u3067\u306A\u3051\u308C\u3070 --month \u3067\u8A18\u9332\u306E\u5E74\u6708\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
42
+ destructive:true,confirmation:"\u53D6\u308A\u6D88\u3057\u306E\u64CD\u4F5C\uFF08\u9001\u308B\u524D\u306E\u6574\u5408\u306E\u78BA\u8A8D\u306F --dry-run \u3067\u898B\u3089\u308C\u307E\u3059\uFF09",flags:[{name:"--reason",summary:`\u53D6\u308A\u6D88\u3057\u306E\u7406\u7531\uFF08${TEXT_MAX} \u6587\u5B57\u4EE5\u5185\uFF09`,takesValue:true,placeholder:"<\u7406\u7531>"},...ID_FLAGS],prepare(input,ctx){recordId(input,DELETE_USAGE);textFlag(input,"--reason",DELETE_USAGE,true);return withClock(input,ctx)},
43
+ plan:input=>({method:"DELETE",path:`/api/v1/attendance/records/${recordId(input,DELETE_USAGE)}`,body:{reason:textFlag(input,"--reason",DELETE_USAGE,true)}}),async preview(input,ctx){const id=recordId(input,DELETE_USAGE);const{timeZone,boundaryHour}=clockOf(input);const{row,notes}=await existingPreview(input,ctx,DELETE_USAGE,"\u53D6\u308A\u6D88\u3057");const warnings=[];const server=await ctx.send({method:"POST",path:`/api/v1/attendance/records/${id}/integrity-preview`,body:{}});if(!isRecord(server)||
44
+ !("warning"in server)){throw new ApiResponseError("\u6574\u5408\u30D7\u30EC\u30D3\u30E5\u30FC\u306E\u5FDC\u7B54\u306B warning \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002")}if(typeof server["warning"]==="string"&&server["warning"]!=="")warnings.push(server["warning"]);const target=toPunch(row);if(target!==void 0){const day=await dayContext(ctx,businessDateOf(target.at,timeZone,boundaryHour));warnings.push(...introducedProblems(
45
+ day.punches,day.punches.filter(p=>p.id!==id),timeZone,day.initial))}return{notes,warnings}},summarize:body=>pick(isRecord(body)?body["record"]:void 0,RECORD_COLUMNS),raw:body=>body,forbidden:FORBIDDEN};var moveOperation={name:"move",summary:"\u6253\u523B\u8A18\u9332\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3092\u4ED8\u3051\u66FF\u3048\u308B",usage:MOVE_USAGE,description:"POST /api/v1/attendance/records/{id}/transfer \u3092\u9001\u308A\u307E\u3059\uFF08\u30ED\u30B0\u30A4\u30F3\u3057\u3066\u3044\u308B\u672C\u4EBA\u306E\u8A18\u9332\u30FB\u6253\u523B\u4FEE\u6B63\u306E\u6A29\u9650\u304C\u5FC5\u8981\uFF09\u3002\n\u30B5\u30FC\u30D0\u306F\u5143\u306E\u8A18\u9332\u3092\u53D6\u308A\u6D88\u3057\u3001\u540C\u3058\u6642\u523B\u30FB\u7A2E\u985E\u3067\u4ED8\u3051\u66FF\u3048\u5148\u306E\u8A18\u9332\u3092\u4F5C\u308A\u307E\u3059\uFF08\u30BF\u30B9\u30AF\u306E\u7D10\u3065\u3051\u306F\u5916\
46
+ \u308C\u307E\u3059\uFF09\u3002\n\u8A18\u9332\u306F\u672C\u4EBA\u306E\u6253\u523B\u5C65\u6B74\u304B\u3089\u63A2\u3057\u307E\u3059\u3002\u4ECA\u6708\u3067\u306A\u3051\u308C\u3070 --month \u3067\u8A18\u9332\u306E\u5E74\u6708\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n\u7DE0\u3081\u6E08\u307F\u306E\u6708\u306E\u8A18\u9332\u306F\u9001\u308A\u307E\u305B\u3093\uFF08\u7D42\u4E86\u30B3\u30FC\u30C9 3\uFF09\u3002",flags:[{name:"--project",summary:"\u4ED8\u3051\u66FF\u3048\u5148\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\uFF08\u30B3\u30FC\u30C9\u307E\u305F\u306F ID\uFF09",
47
+ takesValue:true,placeholder:"<\u30B3\u30FC\u30C9|ID>"},...ID_FLAGS],async prepare(input,ctx){recordId(input,MOVE_USAGE);const explicit=input.flags.get("--project");if(explicit===void 0||explicit.trim()==="")throw new UsageError("--project\uFF08\u4ED8\u3051\u66FF\u3048\u5148\uFF09\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",MOVE_USAGE);return withClock(input,ctx,{projectId:await ctx.projectId(explicit)})},plan:input=>({method:"POST",path:`/api/v1/attendance/records/${recordId(input,MOVE_USAGE)}\
48
+ /transfer`,body:{project_id:requireResolved(input,"projectId")}}),async preview(input,ctx){const{row,notes}=await existingPreview(input,ctx,MOVE_USAGE,"\u4ED8\u3051\u66FF\u3048");const to=requireResolved(input,"projectId");if(row["project_id"]===to)throw new UsageError(`\u8A18\u9332\u306F\u65E2\u306B\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8 ${to} \u306B\u4ED8\u3044\u3066\u3044\u307E\u3059\uFF08\u4ED8\u3051\u66FF\u3048\u5148\u304C\u4ECA\u3068\u540C\u3058\u3067\u3059\uFF09`,MOVE_USAGE);notes.push(`\u4ED8\u3051\u66FF\u3048\
49
+ \u5148: \u30D7\u30ED\u30B8\u30A7\u30AF\u30C8 ${to}`);return{notes,warnings:[]}},summarize:body=>{const next=isRecord(body)?body["new_record"]:void 0;if(!isRecord(next))throw new ApiResponseError("\u4ED8\u3051\u66FF\u3048\u306E\u5FDC\u7B54\u306B new_record \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002");return pick(next,RECORD_COLUMNS)},raw:body=>body,forbidden:FORBIDDEN};var attendanceRecordResource={name:"record",summary:"\
50
+ \u6253\u523B\u8A18\u9332\u306E\u4FEE\u6B63\uFF08\u904E\u53BB\u306E\u6642\u523B\u3067\u306E\u6253\u523B\u30FB\u30E1\u30E2\u306E\u5909\u66F4\u30FB\u53D6\u308A\u6D88\u3057\u30FB\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u4ED8\u3051\u66FF\u3048\uFF09",operations:[createOperation,updateOperation,deleteOperation,moveOperation]};var attendanceDomainWithRecords={...attendanceDomain,summary:"\u52E4\u6020\uFF08\u81EA\u5206\u306E\u6253\u523B\u72B6\u614B\u30FB\u6253\u523B\u5C65\u6B74\u30FB\u52E4\u6020\u8868\u30FB\u6253\u523B\u30FB\u6253\u523B\u4FEE\u6B63\uFF0F\u7BA1\u7406\u8005\u5411\u3051\u306E\u6B8B\u696D\u30B5\u30DE\u30EA\u30FB\u7DE0\u3081\u72B6\u6CC1\uFF09",
51
+ subresources:[...attendanceDomain.subresources??[],attendanceRecordResource]};export{attendanceDomainWithRecords,attendanceRecordResource,businessDateOf,endState,introducedProblems,sequenceProblems,zonedParts,zonedToUtcIso};
@@ -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-YLXW7TIU.js";import{monthFlag}from"./chunk-4B3T4UE7.js";import"./chunk-LXIAOCUW.js";import{isRecord,pick}from"./chunk-VTQAI52S.js";import{ApiResponseError,UsageError}from"./chunk-UFND7FBC.js";import"./chunk-VSJBJXZO.js";var MONTH_FLAG={name:"--month",summary:"\u5BFE\u8C61\u306E\u5E74\u6708\uFF08YYYY-MM\uFF09",takesValue:true,placeholder:"<YYYY-MM>"};var ME_FLAG={name:"--me",summary:"\u81EA\u5206\u306E\u5206\u3060\u3051\u3092\u8868\u793A\u3059\u308B\uFF08\u7121\u3051\u308C\u3070\u5168\u54E1\u5206\u30FB\u7BA1\u7406\u8005\uFF09",takesValue:false};var FORBIDDEN_ADMIN="\u6A29\u9650\u304C\u8DB3\u308A\u307E\u305B\u3093\u3002\u5168\u54E1\u5206\uFF08--me \u306A\u3057\uFF09\u306F\u52E4\u6020\u306E\u7BA1\u7406\u8005\u6A29\u9650\uFF08\u52E4\u6020: \u7BA1\u7406\u8005\uFF09\u3001\u81EA\u5206\u306E\u5206\uFF08--me\uFF09\u306F\u52E4\u6020\u306E\u5229\u7528\u6A29\u9650\u304C\u8981\u308A\u307E\u3059\u3002\u30C6\u30CA\u30F3\u30C8\u306E\u7BA1\u7406\u8005\u306B\u6A29\u9650\u306E\u4ED8\u4E0E\u3092\u4F9D\u983C\u3057\u3066\u304F\u3060\u3055\u3044";
3
+ import{hoursMinutes}from"./chunk-QOUDJ7XO.js";import{monthFlag}from"./chunk-4B3T4UE7.js";import"./chunk-LXIAOCUW.js";import{isRecord,pick}from"./chunk-VTQAI52S.js";import{ApiResponseError,UsageError}from"./chunk-UFND7FBC.js";import"./chunk-VSJBJXZO.js";var MONTH_FLAG={name:"--month",summary:"\u5BFE\u8C61\u306E\u5E74\u6708\uFF08YYYY-MM\uFF09",takesValue:true,placeholder:"<YYYY-MM>"};var ME_FLAG={name:"--me",summary:"\u81EA\u5206\u306E\u5206\u3060\u3051\u3092\u8868\u793A\u3059\u308B\uFF08\u7121\u3051\u308C\u3070\u5168\u54E1\u5206\u30FB\u7BA1\u7406\u8005\uFF09",takesValue:false};var FORBIDDEN_ADMIN="\u6A29\u9650\u304C\u8DB3\u308A\u307E\u305B\u3093\u3002\u5168\u54E1\u5206\uFF08--me \u306A\u3057\uFF09\u306F\u52E4\u6020\u306E\u7BA1\u7406\u8005\u6A29\u9650\uFF08\u52E4\u6020: \u7BA1\u7406\u8005\uFF09\u3001\u81EA\u5206\u306E\u5206\uFF08--me\uFF09\u306F\u52E4\u6020\u306E\u5229\u7528\u6A29\u9650\u304C\u8981\u308A\u307E\u3059\u3002\u30C6\u30CA\u30F3\u30C8\u306E\u7BA1\u7406\u8005\u306B\u6A29\u9650\u306E\u4ED8\u4E0E\u3092\u4F9D\u983C\u3057\u3066\u304F\u3060\u3055\u3044";
4
4
  function listBody(spec,body){if(!isRecord(body)||!Array.isArray(body[spec.key])){throw new ApiResponseError(`${spec.label}\u306E\u5FDC\u7B54\u306B ${spec.key} \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}return body}function monthListOperation(spec){const usage=`twp ${spec.domain} list [--month <YYYY-MM>] [--me]`;return{name:"list",summary:`\u6708\u306E${spec.label}\u3092\u4E00\u89A7\u3059\u308B\uFF08--me \u3067\u81EA\u5206\u306E\u5206\u30FB\u7121\u3051\u308C\u3070\u5168\u54E1\u5206\uFF1D\u7BA1\u7406\u8005\uFF09`,
5
5
  usage,description:`GET ${spec.path} \u3092\u8868\u793A\u3057\u307E\u3059\uFF08\u5168\u54E1\u5206\u30FB\u52E4\u6020\u306E\u7BA1\u7406\u8005\u6A29\u9650\u304C\u5FC5\u8981\uFF09\u3002--me \u3092\u4ED8\u3051\u308B\u3068 GET ${spec.path}/me\uFF08\u81EA\u5206\u306E\u5206\uFF09\u3067\u3059\u3002
6
6
  --month \u304C\u7121\u3051\u308C\u3070\u4ECA\u6708\u3067\u3059\uFF08\u30C6\u30CA\u30F3\u30C8\u306E\u696D\u52D9\u65E5\u306E\u533A\u5207\u308A\u3067\u30B5\u30FC\u30D0\u304C\u6C7A\u3081\u307E\u3059\uFF09\u3002
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{readBody}from"./chunk-ORUDW52G.js";import{BACKLOG_BASE_PATH,BACKLOG_PROJECT_SCOPE_LABEL,BACKLOG_SCOPE_LABEL,backlogSpacePath,isExactNumericId,resolveNamed}from"./chunk-XWW63XJJ.js";import"./chunk-GMBJTG6A.js";import"./chunk-3HH5IYNO.js";import"./chunk-IF2K4PM5.js";import"./chunk-4VZKNEVN.js";import"./chunk-II5RVJQN.js";import{requireResolved,singleRef,withResolved}from"./chunk-LXIAOCUW.js";import{isRecord,pick}from"./chunk-VTQAI52S.js";
3
+ import{readBody}from"./chunk-ORUDW52G.js";import{BACKLOG_BASE_PATH,BACKLOG_PROJECT_SCOPE_LABEL,BACKLOG_SCOPE_LABEL,backlogSpacePath,isExactNumericId,resolveNamed}from"./chunk-4F2ONF4P.js";import"./chunk-GMBJTG6A.js";import"./chunk-3HH5IYNO.js";import"./chunk-IF2K4PM5.js";import"./chunk-4VZKNEVN.js";import"./chunk-II5RVJQN.js";import{requireResolved,singleRef,withResolved}from"./chunk-LXIAOCUW.js";import{isRecord,pick}from"./chunk-VTQAI52S.js";
4
4
  import{ApiResponseError,UsageError}from"./chunk-UFND7FBC.js";import"./chunk-J7QYPKVK.js";import"./chunk-RZVI6PMW.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var DEFAULT_COUNT=20;var MAX_COUNT=100;var NUMERIC=/^[0-9]+$/;var ISSUE_REF=/^(?:[A-Za-z0-9_]+-[0-9]+|[0-9]+)$/;var DATE=/^[0-9]{4}-[0-9]{2}-[0-9]{2}$/;var SPACE_COLUMNS=["id","space_url"];var PROJECT_COLUMNS=["id","projectKey","name"];var ISSUE_LIST_COLUMNS=["issueKey","summary","status","assignee","priority","dueDate","updated","descriptionTruncated"];var ISSUE_GET_COLUMNS=["id","issueKey","projectId","summary","description","descriptionTruncated","status","issueType","priority","assignee","cr\
5
5
  eatedUser","parentIssueId","startDate","dueDate","estimatedHours","actualHours","created","updated"];var COMMENT_COLUMNS=["id","created","createdUserId","createdUser","content","changeLog"];function commentRow(row){const source=isRecord(row)?row:{};const user=isRecord(source["createdUser"])?source["createdUser"]:{};return pick({...source,createdUserId:user["id"]??null,createdUser:user["name"]??null},COMMENT_COLUMNS)}var ATTACHMENT_COLUMNS=["id","name","size","contentType","createdUserId","create\
6
6
  dUser","created"];var STATUS_COLUMNS=["id","name","color"];var USER_COLUMNS=["id","userId","name","mailAddress","roleType"];var SPACE_FLAG={name:"--space",summary:"Backlog \u30B9\u30DA\u30FC\u30B9\uFF08ID / \u30B9\u30DA\u30FC\u30B9URL / \u30B5\u30D6\u30C9\u30E1\u30A4\u30F3\uFF09\u3002\u767B\u9332\u304C1\u4EF6\u306A\u3089\u7701\u7565\u3067\u304D\u307E\u3059",takesValue:true,placeholder:"<ID|URL>"};var BODY_MAX_CHARS=1e5;var BODY_FLAGS=[{name:"--body-file",summary:"\u672C\u6587\u3092\u30D5\u30A1\u30A4\u30EB\u304B\u3089\u8AAD\u3080\uFF08- \u3067\u6A19\u6E96\u5165\u529B\uFF09\u3002\u6539\u884C\u30FBMarkdown\
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{analysisForbidden}from"./chunk-E7MUDY4P.js";import"./chunk-YLXW7TIU.js";import"./chunk-4B3T4UE7.js";import{repeatedValues}from"./chunk-F7K37QG6.js";import{ApiError,MultipartBody}from"./chunk-IF2K4PM5.js";import"./chunk-QQRJLH6B.js";import{nonEmpty}from"./chunk-IOGMOXYF.js";import{requireResolved,withResolved}from"./chunk-LXIAOCUW.js";import{isRecord,pick}from"./chunk-VTQAI52S.js";import{ApiRejectedError,ApiResponseError,UsageError}from"./chunk-UFND7FBC.js";
3
+ import{analysisForbidden}from"./chunk-MY2U3CD6.js";import"./chunk-QOUDJ7XO.js";import"./chunk-4B3T4UE7.js";import{repeatedValues}from"./chunk-F7K37QG6.js";import{ApiError,MultipartBody}from"./chunk-IF2K4PM5.js";import"./chunk-QQRJLH6B.js";import{nonEmpty}from"./chunk-IOGMOXYF.js";import{requireResolved,withResolved}from"./chunk-LXIAOCUW.js";import{isRecord,pick}from"./chunk-VTQAI52S.js";import{ApiRejectedError,ApiResponseError,UsageError}from"./chunk-UFND7FBC.js";
4
4
  import"./chunk-J7QYPKVK.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";import fs from"fs";import path from"path";var PATH="/api/v2/budget";var ANALYSIS_FORBIDDEN=analysisForbidden("");function budgetForbidden(body){if(body?.error==="forbidden")return"\u3053\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3092\u95B2\u89A7\u3067\u304D\u307E\u305B\u3093\uFF08\u30E1\u30F3\u30D0\u30FC\u3067\u306A\u3044\u304B\u3001\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u6A29\u9650\u304C\u8DB3\u308A\u307E\u305B\u3093\uFF09\u3002\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u7BA1\u7406\u8005\u306B\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002";
5
5
  return ANALYSIS_FORBIDDEN(body)}var FORBIDDEN=budgetForbidden;var EDIT_HINT="\u76EE\u6A19\u306E\u8A2D\u5B9A\u30FB\u30B3\u30D4\u30FC\u30FB\u53D6\u308A\u8FBC\u307F\u306F\u3001\u5168\u4F53\u7BA1\u7406\u8005\u304B\u5206\u6790\u306E\u6A29\u9650\u304C\u300C\u7BA1\u7406\u8005\u300D\u306E\u4EBA\u3060\u3051\u304C\u3067\u304D\u307E\u3059\u3002\u6309\u5206\u306F\u305D\u308C\u306B\u52A0\u3048\u3066\u3001\u305D\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u7BA1\u7406\u8005\u3082\u3067\u304D\u307E\u3059\n\uFF08\u3069\u3061\u3089\u3082\u5206\u6790\u306E\u6A29\u9650\u304C\u300C\u306A\u3057\u300D\u3067\u306F\u4F7F\u3048\u307E\u305B\u3093\uFF09\u3002";
6
6
  var YEAR_MIN=2e3;var YEAR_MAX=2100;var IMPORT_MAX_BYTES=2048*1024;var SET_FILE_MAX_BYTES=4*1024*1024;var AMOUNT_MAX=999999999999;var SHOWN_OVERWRITES=24;var BOM=new RegExp(`^${String.fromCharCode(65279)}`);function usageOf(op){return`twp budget ${op} help`}function text(value){return typeof value==="string"||typeof value==="number"?String(value):""}function yen(value){return typeof value==="number"?`${value.toLocaleString("ja-JP")} \u5186`:"\uFF08\u306A\u3057\uFF09"}function noArgs(input,op){if(input.
@@ -85,10 +85,12 @@ throw new UsageError(`\u53D6\u5F15\u5148\u306E ID \u306F\u5148\u982D\u306B 0 \u3
85
85
  const res=await this.get(path2);if(res.status===401||res.status===403){throw new ApiError(res.status,isRecord(res.json)?res.json:null,"GET",path2)}rows.push(...rawListFrom(res,"items",label));const hasMore=isRecord(res.json)?res.json["has_more"]:void 0;const next=isRecord(res.json)?res.json["next_cursor"]:void 0;if(hasMore===false)return rows;if(hasMore!==true||typeof next!=="string"||next===""){throw new ResolveError(`${label}\u4E00\u89A7\u306E\u5FDC\u7B54\u306E has_more / next_cursor \u304C\u8AAD\u3081\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`,
86
86
  res.status)}if(seenCursors.has(next))throw new ResolveError(`${label}\u4E00\u89A7\u306E next_cursor \u304C\u9032\u307F\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`,res.status);seenCursors.add(next);cursor=next}}async featureLevel(feature){const res=await this.get("/api/v2/user");if(res.status===401||res.status===403){throw new ApiError(res.status,isRecord(res.json)?res.json:null,"GET","/api/v2/user")}if(!res.ok)throw new ResolveError(`\u30ED\u30B0\u30A4\
87
87
  \u30F3\u4E2D\u306E\u30E6\u30FC\u30B6\u30FC\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08HTTP ${res.status}\uFF09\u3002`,res.status);const user=isRecord(res.json)?res.json["user"]:void 0;if(!isRecord(user))throw new ResolveError("\u30E6\u30FC\u30B6\u30FC\u53D6\u5F97\u306E\u5FDC\u7B54\u306B user \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002",res.status);const permissions=user["feature_permissions"];
88
- const level=isRecord(permissions)?permissions[feature]:void 0;return{isAdmin:user["is_admin"]===true,level:typeof level==="string"?level:null}}async prospect(input,flag="<\u30A2\u30D7\u30ED\u30FC\u30C1\u5148>"){const trimmed=input.trim();if(trimmed==="")throw new UsageError(`${flag} \u306B\u7A7A\u306E\u5024\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093`);if(UUID_RE.test(trimmed))return{id:trimmed,name:trimmed};const rows=[];let cursor=null;let truncated=false;const seenCursors=new Set;for(let page=1;;page+=
89
- 1){const query=`keyword=${encodeURIComponent(trimmed)}&limit=${PROSPECT_SEARCH_PAGE_LIMIT}${cursor===null?"":`&cursor=${encodeURIComponent(cursor)}`}`;const path2=`${PROSPECTS_PATH}?${query}`;const res=await this.get(path2);if(res.status===401||res.status===403){throw new ApiError(res.status,isRecord(res.json)?res.json:null,"GET",path2)}rows.push(...rawListFrom(res,"items","\u30A2\u30D7\u30ED\u30FC\u30C1\u5148"));const hasMore=isRecord(res.json)?res.json["has_more"]:void 0;const next=isRecord(res.
90
- json)?res.json["next_cursor"]:void 0;if(hasMore===false)break;if(hasMore!==true||typeof next!=="string"||next===""||seenCursors.has(next)){throw new ResolveError("\u30A2\u30D7\u30ED\u30FC\u30C1\u5148\u4E00\u89A7\u306E\u5FDC\u7B54\u306E has_more / next_cursor \u304C\u8AAD\u3081\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002",res.status)}if(page>=PROSPECT_SEARCH_MAX_PAGES){truncated=true;break}seenCursors.add(next);cursor=next}const needle=trimmed.
91
- toLowerCase();const hits=rows.filter(row=>str(row["company_name"])?.trim().toLowerCase()===needle);if(hits.some(row=>str(row["id"])===null))throw new ResolveError("\u30A2\u30D7\u30ED\u30FC\u30C1\u5148\u4E00\u89A7\u306E\u884C\u306B id \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002");const ids=[...new Set(hits.map(row=>str(row["id"])))];if(truncated){throw new UsageError(`${flag} \u306E\u300C${trimmed}\u300D\u306B\u5F53\u305F\u308B\u30A2\u30D7\u30ED\u30FC\u30C1\u5148\u304C\u591A\u3059\u304E\u308B\u305F\u3081\uFF08${PROSPECT_SEARCH_MAX_PAGES*
88
+ const level=isRecord(permissions)?permissions[feature]:void 0;return{isAdmin:user["is_admin"]===true,level:typeof level==="string"?level:null}}async tenantClock(){const res=await this.get("/api/v2/user");if(res.status===401||res.status===403){throw new ApiError(res.status,isRecord(res.json)?res.json:null,"GET","/api/v2/user")}if(!res.ok)throw new ResolveError(`\u30ED\u30B0\u30A4\u30F3\u4E2D\u306E\u30E6\u30FC\u30B6\u30FC\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08HTTP ${res.
89
+ status}\uFF09\u3002`,res.status);const user=isRecord(res.json)?res.json["user"]:void 0;if(!isRecord(user))throw new ResolveError("\u30E6\u30FC\u30B6\u30FC\u53D6\u5F97\u306E\u5FDC\u7B54\u306B user \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002",res.status);const zone=str(user["tenant_timezone"]);const boundary=user["business_day_boundary_hour"];return{timeZone:zone??"Asia/Tokyo",boundaryHour:typeof boundary==="number"&&Number.
90
+ isInteger(boundary)&&boundary>=0&&boundary<=23?boundary:5}}async prospect(input,flag="<\u30A2\u30D7\u30ED\u30FC\u30C1\u5148>"){const trimmed=input.trim();if(trimmed==="")throw new UsageError(`${flag} \u306B\u7A7A\u306E\u5024\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093`);if(UUID_RE.test(trimmed))return{id:trimmed,name:trimmed};const rows=[];let cursor=null;let truncated=false;const seenCursors=new Set;for(let page=1;;page+=1){const query=`keyword=${encodeURIComponent(trimmed)}&limit=${PROSPECT_SEARCH_PAGE_LIMIT}${cursor===
91
+ null?"":`&cursor=${encodeURIComponent(cursor)}`}`;const path2=`${PROSPECTS_PATH}?${query}`;const res=await this.get(path2);if(res.status===401||res.status===403){throw new ApiError(res.status,isRecord(res.json)?res.json:null,"GET",path2)}rows.push(...rawListFrom(res,"items","\u30A2\u30D7\u30ED\u30FC\u30C1\u5148"));const hasMore=isRecord(res.json)?res.json["has_more"]:void 0;const next=isRecord(res.json)?res.json["next_cursor"]:void 0;if(hasMore===false)break;if(hasMore!==true||typeof next!=="str\
92
+ ing"||next===""||seenCursors.has(next)){throw new ResolveError("\u30A2\u30D7\u30ED\u30FC\u30C1\u5148\u4E00\u89A7\u306E\u5FDC\u7B54\u306E has_more / next_cursor \u304C\u8AAD\u3081\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002",res.status)}if(page>=PROSPECT_SEARCH_MAX_PAGES){truncated=true;break}seenCursors.add(next);cursor=next}const needle=trimmed.toLowerCase();const hits=rows.filter(row=>str(row["company_name"])?.trim().toLowerCase()===needle);
93
+ if(hits.some(row=>str(row["id"])===null))throw new ResolveError("\u30A2\u30D7\u30ED\u30FC\u30C1\u5148\u4E00\u89A7\u306E\u884C\u306B id \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002");const ids=[...new Set(hits.map(row=>str(row["id"])))];if(truncated){throw new UsageError(`${flag} \u306E\u300C${trimmed}\u300D\u306B\u5F53\u305F\u308B\u30A2\u30D7\u30ED\u30FC\u30C1\u5148\u304C\u591A\u3059\u304E\u308B\u305F\u3081\uFF08${PROSPECT_SEARCH_MAX_PAGES*
92
94
  PROSPECT_SEARCH_PAGE_LIMIT} \u4EF6\u3092\u8D85\u3048\u3066\uFF09\u4E00\u610F\u306B\u6C7A\u3081\u3089\u308C\u307E\u305B\u3093`,"ID \u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08twp prospect list --keyword <\u8A9E> \u306E id \u5217\uFF09\u3002")}if(ids.length===1&&ids[0]!==null&&ids[0]!==void 0){if(!isSafePathSegment(ids[0]))throw new ResolveError(`\u30B5\u30FC\u30D0\u304C\u8FD4\u3057\u305F\u30A2\u30D7\u30ED\u30FC\u30C1\u5148\u306E id \u3092\u30D1\u30B9\u306B\u4F7F\u3048\u307E\u305B\u3093: ${ids[0]}\
93
95
  \u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`);return{id:ids[0],name:trimmed}}if(ids.length>1){const shown=hits.slice(0,10).map(row=>`${String(row["id"])}\uFF08${[str(row["contact_department"]),str(row["contact_name"])].filter(v=>v!==null).join(" ")||"\u9023\u7D61\u5148\u306A\u3057"}\uFF09`).join(" / ");throw new UsageError(`${flag} \u306E\u300C${trimmed}\u300D\u304C\u30A2\u30D7\u30ED\u30FC\u30C1\u5148${ids.length}\u4EF6\u306B\u4E00\u81F4\u3057\u307E\u3059: ${shown}${hits.
94
96
  length>10?` \u2026\uFF08\u5168 ${hits.length} \u4EF6\uFF09`:""}`,"\u540C\u3058\u4F01\u696D\u540D\u306E\u884C\u304C\u8907\u6570\u3042\u308A\u307E\u3059\u3002ID \u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08twp prospect list --keyword <\u8A9E> \u306E id \u5217\uFF09\u3002")}throw new UsageError(`${flag} \u306E\u300C${trimmed}\u300D\u3068\u4F01\u696D\u540D\u304C\u5B8C\u5168\u306B\u4E00\u81F4\u3059\u308B\u30A2\u30D7\u30ED\u30FC\u30C1\u5148\u304C\u3042\u308A\u307E\u305B\u3093`,"\u4F5C\u6210\u3057\u305F\u76F4\u5F8C\u306F\u691C\
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{readBody}from"./chunk-ORUDW52G.js";import{WORKFLOWS_PATH}from"./chunk-XWW63XJJ.js";import{UUID_RE,isSafePathSegment}from"./chunk-GMBJTG6A.js";import{LIST_FLAGS,LIST_PAGING_HELP,envelopePaging,nonEmpty,positiveInteger}from"./chunk-IOGMOXYF.js";import{requireResolved,singleRef,withResolved}from"./chunk-LXIAOCUW.js";import{acknowledgement,isRecord,pick}from"./chunk-VTQAI52S.js";import{ApiResponseError,UsageError}from"./chunk-UFND7FBC.js";var WORKFLOW_FLAG={name:"--workflow",summary:"\u7533\u8ACB\u66F8\uFF08\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\uFF09\u306E\u540D\u524D\u304B ID \u3067\u7D5E\u308A\u8FBC\u3080",takesValue:true,placeholder:"<\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC>"};var CATEGORIES={undefined:"\u6C4E\u7528",paid_holiday:"\u6709\u7D66\u4F11\u6687",substitute_holiday:"\u632F\u66FF\u4F11\u6687",comp_holiday:"\u4EE3\u4F11",absence:"\u6B20\u52E4",special_holiday:"\u7279\u5225\u4F11\u6687",other_leave:"\u305D\u306E\u4ED6\u4F11\u6687\u30FB\u6B20\u52E4",
3
+ import{readBody}from"./chunk-ORUDW52G.js";import{WORKFLOWS_PATH}from"./chunk-4F2ONF4P.js";import{UUID_RE,isSafePathSegment}from"./chunk-GMBJTG6A.js";import{LIST_FLAGS,LIST_PAGING_HELP,envelopePaging,nonEmpty,positiveInteger}from"./chunk-IOGMOXYF.js";import{requireResolved,singleRef,withResolved}from"./chunk-LXIAOCUW.js";import{acknowledgement,isRecord,pick}from"./chunk-VTQAI52S.js";import{ApiResponseError,UsageError}from"./chunk-UFND7FBC.js";var WORKFLOW_FLAG={name:"--workflow",summary:"\u7533\u8ACB\u66F8\uFF08\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\uFF09\u306E\u540D\u524D\u304B ID \u3067\u7D5E\u308A\u8FBC\u3080",takesValue:true,placeholder:"<\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC>"};var CATEGORIES={undefined:"\u6C4E\u7528",paid_holiday:"\u6709\u7D66\u4F11\u6687",substitute_holiday:"\u632F\u66FF\u4F11\u6687",comp_holiday:"\u4EE3\u4F11",absence:"\u6B20\u52E4",special_holiday:"\u7279\u5225\u4F11\u6687",other_leave:"\u305D\u306E\u4ED6\u4F11\u6687\u30FB\u6B20\u52E4",
4
4
  sales:"\u53D6\u5F15",commuting_expenses:"\u901A\u52E4\u4EA4\u901A\u8CBB",cms_publish:"\u30B3\u30F3\u30C6\u30F3\u30C4\u516C\u958B",equipment_lending:"\u5099\u54C1\u8CB8\u51FA",ai_tool_license:"AI\u30C4\u30FC\u30EB\u30E9\u30A4\u30BB\u30F3\u30B9",qualification_bonus:"\u5408\u683C\u304A\u795D\u3044\u91D1"};var CATEGORY_HELP=`\u30AB\u30C6\u30B4\u30EA: ${Object.entries(CATEGORIES).map(([key,label])=>`${key}\uFF08${label}\uFF09`).join(" / ")}`;var WORKFLOW_STATUSES=["active","inactive","draft"];var INSTANCE_STATUSES=[
5
5
  "new","in_progress","approved","rejected","canceled","sent_back"];var INSTANCE_STATUS_HELP="\u72B6\u614B: new\uFF08\u4E0B\u66F8\u304D\uFF09/ in_progress\uFF08\u627F\u8A8D\u5F85\u3061\uFF09/ approved\uFF08\u627F\u8A8D\u6E08\u307F\uFF09/ rejected\uFF08\u5374\u4E0B\uFF09/ canceled\uFF08\u53D6\u6D88\uFF09/ sent_back\uFF08\u5DEE\u3057\u623B\u3057\uFF09";var WORKFLOW_COLUMNS=["id","name","defined_category","status","is_hidden","valid_from","valid_to"];var WORKFLOW_ADMIN_COLUMNS=[...WORKFLOW_COLUMNS,"s\
6
6
  tep_count"];var WORKFLOW_GET_COLUMNS=["id","name","defined_category","status","is_hidden","valid_from","valid_to","description"];var INSTANCE_COLUMNS=["id","title","workflow_name","status","current_step_no","applicant_name","applied_at","completed_at"];var INSTANCE_GET_COLUMNS=["id","title","workflow_id","workflow_name","status","current_step_no","applicant_name","applied_at","completed_at","can_approve","is_editable","is_cancelable"];var PENDING_COLUMNS=["id","title","workflow_name","applicant_\
@@ -0,0 +1,9 @@
1
+ import { createRequire as __twpCreateRequire } from 'node:module';
2
+ const require = __twpCreateRequire(import.meta.url);
3
+ var LOADERS={"agent-loop":async()=>(await import("./agent-loop-XKH5YE6A.js")).agentLoopDomain,"ai-review-reason":async()=>(await import("./sales-ai-review-7NPG7KV6.js")).aiReviewReasonDomain,analysis:async()=>(await import("./analysis-GAU2A3FU.js")).analysisDomain,attendance:async()=>(await import("./attendance-correct-5SFXA4DC.js")).attendanceDomainWithRecords,backlog:async()=>(await import("./backlog-F4EWY7MT.js")).backlogDomain,budget:async()=>(await import("./budget-QFUGQIPZ.js")).budgetDomain,
4
+ "business-place":async()=>(await import("./sales-master-W5MXNZQ2.js")).businessPlaceDomain,company:async()=>(await import("./company-77JEESSV.js")).companyDomain,contract:async()=>(await import("./contract-26SKL7XT.js")).contractDomain,customer:async()=>(await import("./company-77JEESSV.js")).customerDomain,department:async()=>(await import("./department-IZAR2LZ4.js")).departmentDomain,deposit:async()=>(await import("./deposit-MYTKRIEX.js")).depositDomain,estimate:async()=>(await import("./estimate-KLS7XJLD.js")).
5
+ estimateDomain,inquiry:async()=>(await import("./inquiry-52OT4HKJ.js")).inquiryDomain,invoice:async()=>(await import("./invoice-D77PS3WU.js")).invoiceDomain,"job-title":async()=>(await import("./job-title-U67Z25ZO.js")).jobTitleDomain,leave:async()=>(await import("./leave-OSIABEFV.js")).leaveDomain,media:async()=>(await import("./media-HDG4VHAR.js")).mediaDomain,meeting:async()=>(await import("./knowledge-Q3QLSNDX.js")).meetingDomain,note:async()=>(await import("./knowledge-Q3QLSNDX.js")).
6
+ noteDomain,notification:async()=>(await import("./notification-MEOHWBXH.js")).notificationDomain,onedrive:async()=>(await import("./onedrive-3OBI4B5Z.js")).onedriveDomain,outlook:async()=>(await import("./outlook-LY6WBXIJ.js")).outlookDomain,payee:async()=>(await import("./sales-master-W5MXNZQ2.js")).payeeDomain,position:async()=>(await import("./position-N7SRF3CF.js")).positionDomain,project:async()=>(await import("./project-YMJJDSTP.js")).projectDomain,prospect:async()=>(await import("./prospect-3JD7STGT.js")).
7
+ prospectDomain,purchase:async()=>(await import("./purchase-2SLZBDD6.js")).purchaseDomain,receivable:async()=>(await import("./receivable-6ZRAUHC3.js")).receivableDomain,report:async()=>(await import("./report-TUSP7RRF.js")).reportDomain,"rounding-setting":async()=>(await import("./sales-numbering-RQV2I5G5.js")).roundingSettingDomain,"seal-impression":async()=>(await import("./sales-master-W5MXNZQ2.js")).sealImpressionDomain,shift:async()=>(await import("./attendance-lists-3T7S7QF5.js")).shiftDomain,
8
+ storage:async()=>(await import("./storage-KLLBENBY.js")).storageDomain,"supplier-payment":async()=>(await import("./supplier-payment-TDL3IE4H.js")).supplierPaymentDomain,task:async()=>(await import("./task-2SHYSZBZ.js")).taskDomain,teams:async()=>(await import("./teams-DRHXPLWN.js")).teamsDomain,user:async()=>(await import("./user-YEIHSVVN.js")).userDomain,wiki:async()=>(await import("./knowledge-Q3QLSNDX.js")).wikiDomain,workchange:async()=>(await import("./attendance-lists-3T7S7QF5.js")).
9
+ workchangeDomain,workflow:async()=>(await import("./workflow-USG3ZKW6.js")).workflowDomain};async function loadDomain(name){return LOADERS[name]()}export{loadDomain};
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{booleanText,boundedText,isoDate}from"./chunk-XDHLO54T.js";import{ORG_MASTER_LIMIT}from"./chunk-XWW63XJJ.js";import{ULID_RE,UUID_RE,isSafePathSegment}from"./chunk-GMBJTG6A.js";import{nonEmpty,positiveInteger}from"./chunk-IOGMOXYF.js";import{requireResolved,singleRef,withResolved}from"./chunk-LXIAOCUW.js";import{acknowledgement,isRecord,pick}from"./chunk-VTQAI52S.js";import{ApiResponseError,UsageError}from"./chunk-UFND7FBC.js";var CLEAR_DATE="none";function placeholderOf(field){switch(field.kind){case"text":return`<${field.label}>`;case"integer":return"<\u6574\u6570>";case"boolean":return"<true|false>";case"enum":return`<${field.values.join("|")}>`;case"date":return`<YYYY-MM-DD|${CLEAR_DATE}>`;case"ref":return field.placeholder}}function createFlags(fields){return fields.map(field=>({name:field.flag,summary:field.summary,takesValue:true,placeholder:placeholderOf(field)}))}function updateFlags(fields){const flags=[];for(const field of fields){
3
+ import{booleanText,boundedText,isoDate}from"./chunk-XDHLO54T.js";import{ORG_MASTER_LIMIT}from"./chunk-4F2ONF4P.js";import{ULID_RE,UUID_RE,isSafePathSegment}from"./chunk-GMBJTG6A.js";import{nonEmpty,positiveInteger}from"./chunk-IOGMOXYF.js";import{requireResolved,singleRef,withResolved}from"./chunk-LXIAOCUW.js";import{acknowledgement,isRecord,pick}from"./chunk-VTQAI52S.js";import{ApiResponseError,UsageError}from"./chunk-UFND7FBC.js";var CLEAR_DATE="none";function placeholderOf(field){switch(field.kind){case"text":return`<${field.label}>`;case"integer":return"<\u6574\u6570>";case"boolean":return"<true|false>";case"enum":return`<${field.values.join("|")}>`;case"date":return`<YYYY-MM-DD|${CLEAR_DATE}>`;case"ref":return field.placeholder}}function createFlags(fields){return fields.map(field=>({name:field.flag,summary:field.summary,takesValue:true,placeholder:placeholderOf(field)}))}function updateFlags(fields){const flags=[];for(const field of fields){
4
4
  flags.push({name:field.flag,summary:field.summary,takesValue:true,placeholder:placeholderOf(field)});if(field.kind==="ref")flags.push({name:field.clearFlag,summary:field.clearSummary,takesValue:false})}return flags}function integerValue(field,raw){const trimmed=raw.trim();const value=/^\d+$/.test(trimmed)?Number(trimmed):Number.NaN;const tooLarge=field.max!==void 0&&value>field.max;if(!Number.isSafeInteger(value)||value<field.min||tooLarge){const range=field.max!==void 0?`${field.min} \u4EE5\u4E0A ${field.
5
5
  max} \u4EE5\u4E0B`:`${field.min} \u4EE5\u4E0A`;throw new UsageError(`${field.flag} \u306F ${range}\u306E\u6574\u6570\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044: ${raw}`,`${field.label}\u3092\u6574\u6570\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}return value}function fieldBody(input,fields){const body={};for(const field of fields){switch(field.kind){case"text":{const value=boundedText(input,field.flag,{maxChars:field.maxChars,label:field.label});if(value!==void 0)body[field.
6
6
  key]=value;break}case"integer":{const raw=input.flags.get(field.flag);if(raw!==void 0)body[field.key]=integerValue(field,raw);break}case"boolean":{const raw=input.flags.get(field.flag);if(raw!==void 0)body[field.key]=booleanText(field.flag,raw);break}case"enum":{const raw=input.flags.get(field.flag);if(raw===void 0)break;const value=raw.trim().toLowerCase();if(!field.values.includes(value)){throw new UsageError(`${field.flag} \u306B\u300C${raw}\u300D\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093`,
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{readCsvFileText}from"./chunk-OHXZO5WK.js";import{featureLicenseGuidance,invoiceFilters}from"./chunk-P7JCZYAI.js";import{boundedText,isoDate}from"./chunk-XDHLO54T.js";import{readBody}from"./chunk-ORUDW52G.js";import{SALES_DEPOSITS_PATH,isExactNumericId,resolveNamed}from"./chunk-XWW63XJJ.js";import{repeatedValues}from"./chunk-F7K37QG6.js";import{ApiError}from"./chunk-IF2K4PM5.js";import{LIST_PAGING_HELP,PAGE_NUMBER_LIST_FLAGS,PAGE_NUMBER_PAGING_HELP,
3
+ import{readCsvFileText}from"./chunk-OHXZO5WK.js";import{featureLicenseGuidance,invoiceFilters}from"./chunk-GOZCJLRA.js";import{boundedText,isoDate}from"./chunk-XDHLO54T.js";import{readBody}from"./chunk-ORUDW52G.js";import{SALES_DEPOSITS_PATH,isExactNumericId,resolveNamed}from"./chunk-4F2ONF4P.js";import{repeatedValues}from"./chunk-F7K37QG6.js";import{ApiError}from"./chunk-IF2K4PM5.js";import{LIST_PAGING_HELP,PAGE_NUMBER_LIST_FLAGS,PAGE_NUMBER_PAGING_HELP,
4
4
  STABLE_PAGE_ORDER,nonEmpty,pageNumberPaging,pageNumberQuery,pageRangeNotes}from"./chunk-IOGMOXYF.js";import{requireResolved,withResolved}from"./chunk-LXIAOCUW.js";import{acknowledgement,isRecord,pick}from"./chunk-VTQAI52S.js";import{ApiResponseError,UsageError}from"./chunk-UFND7FBC.js";var PATH=SALES_DEPOSITS_PATH;function salesAdminForbidden(what){return body=>body?.error==="permission_denied"?featureLicenseGuidance("\u8CA9\u58F2\u7BA1\u7406"):`${what}\u306B\u306F\u8CA9\u58F2\u7BA1\u7406\u306E\u6A29\u9650\u304C\u300C\u7BA1\u7406\u8005\u300D\u3067\u3042\u308B\u3053\u3068\u304C\u8981\u308A\u307E\u3059\u3002\u30C6\u30CA\u30F3\u30C8\u7BA1\u7406\u8005\u306B\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`}var FORBIDDEN=salesAdminForbidden("\u5165\u91D1");var ALLOCATION_STATUSES={
5
5
  allocated:"\u5F15\u5F53\u6E08",shortage:"\u672A\u5165\u91D1\u6709",excess:"\u5165\u91D1\u8D85\u904E\u6709",transfer_fee_resolved:"\u624B\u6570\u6599\u51E6\u7406\u6E08"};var EXCESS_REASONS={transfer_fee:"\u632F\u8FBC\u624B\u6570\u6599",agency_fee:"\u4EE3\u884C\u624B\u6570\u6599\uFF08\u53E3\u5EA7\u632F\u66FF \u57FA\u672C\u5229\u7528\u6599\uFF09",partial:"\u4E00\u90E8\u5165\u91D1",offset:"\u76F8\u6BBA",overpayment:"\u904E\u5165\u91D1",other:"\u305D\u306E\u4ED6"};var EXCESS_TAX_CATEGORIES={taxable_purchase_10:"\
6
6
  \u8AB2\u7A0E\u4ED5\u5165 10%",not_applicable:"\u5BFE\u8C61\u5916"};var BULK_MAX_ROWS=100;var PLAN_MAX_ITEMS=50;var PLAN_MAX_ALLOCATIONS=100;var FILE_MAX_BYTES=1024*1024;var EXCESS_NOTE_MAX_CHARS=255;var PLAN_MEMO_MAX_CHARS=1e3;var CONTENT_MAX_CHARS=1e6;var LIST_COLUMNS=["id","deposit_date","company_name","payee_name","deposit_amount","allocated_amount","unallocated_amount","allocation_status"];var GET_COLUMNS=[...LIST_COLUMNS,"memo","excess_reason","excess_amount","excess_note","excess_tax_categ\
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{salesFeatureDenied}from"./chunk-JBX4OEHV.js";import{featureLicenseGuidance}from"./chunk-P7JCZYAI.js";import{charCount,readBody}from"./chunk-ORUDW52G.js";import{isExactNumericId}from"./chunk-XWW63XJJ.js";import{repeatedValues}from"./chunk-F7K37QG6.js";import{ApiError}from"./chunk-IF2K4PM5.js";import{NotLoggedInError,SessionExpiredError}from"./chunk-XNLIEUAW.js";import{LIST_PAGING_HELP,PAGE_NUMBER_LIST_FLAGS,envelopePaging,nonEmpty,positiveInteger}from"./chunk-IOGMOXYF.js";
3
+ import{salesFeatureDenied}from"./chunk-VB2CSFRO.js";import{featureLicenseGuidance}from"./chunk-GOZCJLRA.js";import{charCount,readBody}from"./chunk-ORUDW52G.js";import{isExactNumericId}from"./chunk-4F2ONF4P.js";import{repeatedValues}from"./chunk-F7K37QG6.js";import{ApiError}from"./chunk-IF2K4PM5.js";import{NotLoggedInError,SessionExpiredError}from"./chunk-XNLIEUAW.js";import{LIST_PAGING_HELP,PAGE_NUMBER_LIST_FLAGS,envelopePaging,nonEmpty,positiveInteger}from"./chunk-IOGMOXYF.js";
4
4
  import{requireResolved,withResolved}from"./chunk-LXIAOCUW.js";import{isRecord,pick}from"./chunk-VTQAI52S.js";import{ApiRejectedError,ApiResponseError,NetworkError,UsageError}from"./chunk-UFND7FBC.js";var SALES_PATH="/api/v2/sales";var REASONS_PATH=`${SALES_PATH}/ai-review-reasons`;function documentForbidden(body){if(salesFeatureDenied(body))return featureLicenseGuidance("\u8CA9\u58F2\u7BA1\u7406");const reason=body?.error;if(typeof reason==="string"&&reason.endsWith("\u6A29\u9650\u304C\u3042\u308A\u307E\u305B\u3093")){return`${reason}\uFF08\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306B\u7D10\u3065\u304F\u66F8\u985E\u306F\u305D\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u30E1\u30F3\u30D0\u30FC\u3001\u7D10\u3065\u304B\u306A\u3044\u66F8\u985E\u306F\u4F5C\u6210\u8005\u30FB\u62C5\u5F53\u8005\u3068\u7BA1\u7406\u8005\u3060\u3051\u304C\u6271\u3048\u307E\u3059\uFF09`}
5
5
  return void 0}function reasonsForbidden(body){if(body?.error==="permission_denied")return featureLicenseGuidance("\u8CA9\u58F2\u7BA1\u7406");return"\u7406\u7531\u306E\u6A2A\u65AD\u4E00\u89A7\u30FB\u6587\u6848\u751F\u6210\u30FBPR \u4F5C\u6210\u306F\u8CA9\u58F2\u7BA1\u7406\u306E\u7BA1\u7406\u8005\u3060\u3051\u304C\u4F7F\u3048\u307E\u3059\uFF08\u66F8\u985E\u3092\u8DE8\u3044\u3067\u7406\u7531\u3092\u8AAD\u3080\u305F\u3081\uFF09\u3002\u30C6\u30CA\u30F3\u30C8\u304C\u8CA9\u58F2\u7BA1\u7406\u3092\u5951\u7D04\u3057\u3066\u3044\u308B\u304B\u30FB\u3042\u306A\u305F\u306E\u8CA9\u58F2\u7BA1\u7406\u306E\u6A29\u9650\u304C\u300C\u7BA1\u7406\u8005\u300D\u304B\u3092\u30C6\u30CA\u30F3\u30C8\u7BA1\u7406\u8005\u306B\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002"}
6
6
  var ESTIMATE={name:"estimate",label:"\u898B\u7A4D",segment:"estimates"};var INVOICE={name:"invoice",label:"\u8ACB\u6C42",segment:"invoices"};var CONTRACT={name:"contract",label:"\u53D6\u5F15\u5951\u7D04",segment:"contracts"};var JUDGMENTS={no_issue:"\u78BA\u8A8D\u3057\u305F\u304C\u554F\u984C\u306A\u3044\u3068\u5224\u65AD\u3057\u305F",corrected:"\u6307\u6458\u3092\u53D7\u3051\u3066\u66F8\u985E\u3092\u4FEE\u6B63\u3057\u305F",not_applicable:"\u3053\u306E\u6848\u4EF6\u306B\u306F\u5F53\u3066\u306F\u307E\u3089\u306A\u3044\u6307\u6458\u3060\u3068\u5224\u65AD\u3057\u305F"};
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{isoDate}from"./chunk-XDHLO54T.js";import{SALES_ESTIMATES_PATH,SALES_INVOICES_PATH,isExactNumericId,resolveNamed}from"./chunk-XWW63XJJ.js";import{repeatedValues}from"./chunk-F7K37QG6.js";import{LIST_PAGING_HELP,PAGE_NUMBER_LIST_FLAGS,PAGE_NUMBER_PAGING_HELP,STABLE_PAGE_ORDER,nonEmpty,pageNumberPaging,pageNumberQuery,pageRangeNotes}from"./chunk-IOGMOXYF.js";import{withResolved}from"./chunk-LXIAOCUW.js";import{isRecord,pick}from"./chunk-VTQAI52S.js";import{
3
+ import{isoDate}from"./chunk-XDHLO54T.js";import{SALES_ESTIMATES_PATH,SALES_INVOICES_PATH,isExactNumericId,resolveNamed}from"./chunk-4F2ONF4P.js";import{repeatedValues}from"./chunk-F7K37QG6.js";import{LIST_PAGING_HELP,PAGE_NUMBER_LIST_FLAGS,PAGE_NUMBER_PAGING_HELP,STABLE_PAGE_ORDER,nonEmpty,pageNumberPaging,pageNumberQuery,pageRangeNotes}from"./chunk-IOGMOXYF.js";import{withResolved}from"./chunk-LXIAOCUW.js";import{isRecord,pick}from"./chunk-VTQAI52S.js";import{
4
4
  ApiResponseError,UsageError}from"./chunk-UFND7FBC.js";var ESTIMATE_STATUSES={new:"\u4F5C\u6210\u4E2D",create_completed:"\u4F5C\u6210\u5B8C\u4E86",in_progress:"\u7533\u8ACB\u4E2D",approved:"\u627F\u8A8D\u6E08",submitted:"\u63D0\u793A\u6E08",rejected:"\u5DEE\u3057\u623B\u3057",deleted:"\u524A\u9664\u6E08"};var INVOICE_STATUSES={new:"\u4F5C\u6210\u4E2D",create_completed:"\u4F5C\u6210\u5B8C\u4E86",in_progress:"\u7533\u8ACB\u4E2D",approved:"\u627F\u8A8D\u6E08",rejected:"\u5DEE\u3057\u623B\u3057",submitted:"\u63D0\u793A\u6E08",manager_confirmation:"\u6848\u4EF6\u62C5\u5F53\u8005\
5
5
  _\u6848\u4EF6\u5185\u5BB9\u30FB\u91D1\u984D\u78BA\u8A8D",invoice_issued:"\u8ACB\u6C42\u66F8\u767A\u884C\u6E08",sent_to_client:"\u5148\u65B9\u9001\u4ED8\u6E08",archived:"\u4FDD\u7BA1\u6E08",deleted:"\u524A\u9664\u6E08",cancelled:"\u53D6\u6D88\uFF08\u7121\u52B9\uFF09",lost:"\u5931\u6CE8"};var ALLOCATION_STATUSES={unallocated:"\u672A\u56DE\u53CE",allocated:"\u56DE\u53CE\u6E08"};function statusRefs(table){return Object.entries(table).map(([code,name])=>({id:code,name,code}))}function statusHelp(table){
6
6
  return Object.entries(table).map(([code,name])=>`${code}\uFF08${name}\uFF09`).join(" / ")}function licenseForbidden(guidance){return body=>body?.error==="permission_denied"?guidance:void 0}function featureLicenseGuidance(feature){return`${feature}\u3092\u4F7F\u3046\u6A29\u9650\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u30C6\u30CA\u30F3\u30C8\u304C${feature}\u3092\u5951\u7D04\u3057\u3066\u3044\u306A\u3044\u304B\u3001\u3042\u306A\u305F\u306E${feature}\u306E\u6A29\u9650\u304C\u300C\u306A\u3057\u300D\u306B\u306A\u3063\u3066\u3044\u307E\u3059\u3002\u30C6\u30CA\u30F3\u30C8\u7BA1\u7406\u8005\u306B\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{FORCE_FLAG,OUT_FLAG,REV_FLAG,revOf,singleId,uploadStaged}from"./chunk-DPGQ36DA.js";import{CUSTOMER_LICENSE,childForbidden,levelForbidden}from"./chunk-KPXJALCL.js";import{inspectLocalFile}from"./chunk-HNUBM24L.js";import{createFlags,fieldBody,hasAnyField,updateFlags}from"./chunk-3B5PVPGU.js";import{SALES_ESTIMATES_PATH,isExactNumericId}from"./chunk-XWW63XJJ.js";import{nonEmpty}from"./chunk-IOGMOXYF.js";import{requireResolved,withResolved}from"./chunk-LXIAOCUW.js";
3
+ import{FORCE_FLAG,OUT_FLAG,REV_FLAG,revOf,singleId,uploadStaged}from"./chunk-JKL6NUVV.js";import{CUSTOMER_LICENSE,childForbidden,levelForbidden}from"./chunk-KS2ZUQFC.js";import{inspectLocalFile}from"./chunk-HNUBM24L.js";import{createFlags,fieldBody,hasAnyField,updateFlags}from"./chunk-A65V3K75.js";import{SALES_ESTIMATES_PATH,isExactNumericId}from"./chunk-4F2ONF4P.js";import{nonEmpty}from"./chunk-IOGMOXYF.js";import{requireResolved,withResolved}from"./chunk-LXIAOCUW.js";
4
4
  import{acknowledgement,isRecord,pick}from"./chunk-VTQAI52S.js";import{ApiResponseError,UsageError}from"./chunk-UFND7FBC.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{CUSTOMER_FLAG,CUSTOMER_LICENSE,childForbidden,levelForbidden,prepareCustomerFlag}from"./chunk-KPXJALCL.js";import{inspectLocalFile}from"./chunk-HNUBM24L.js";import{createFlags,fieldBody,hasAnyField,updateFlags}from"./chunk-3B5PVPGU.js";import{checkUploadQuota}from"./chunk-2YNZ4MRT.js";import{booleanText}from"./chunk-XDHLO54T.js";import{CUSTOMERS_PATH,isExactNumericId}from"./chunk-XWW63XJJ.js";import{isSafePathSegment}from"./chunk-GMBJTG6A.js";import{
3
+ import{CUSTOMER_FLAG,CUSTOMER_LICENSE,childForbidden,levelForbidden,prepareCustomerFlag}from"./chunk-KS2ZUQFC.js";import{inspectLocalFile}from"./chunk-HNUBM24L.js";import{createFlags,fieldBody,hasAnyField,updateFlags}from"./chunk-A65V3K75.js";import{checkUploadQuota}from"./chunk-2YNZ4MRT.js";import{booleanText}from"./chunk-XDHLO54T.js";import{CUSTOMERS_PATH,isExactNumericId}from"./chunk-4F2ONF4P.js";import{isSafePathSegment}from"./chunk-GMBJTG6A.js";import{
4
4
  ApiError}from"./chunk-IF2K4PM5.js";import{NotLoggedInError,SessionExpiredError}from"./chunk-XNLIEUAW.js";import{nonEmpty}from"./chunk-IOGMOXYF.js";import{requireResolved,withResolved}from"./chunk-LXIAOCUW.js";import{acknowledgement,isRecord,pick}from"./chunk-VTQAI52S.js";import{ApiResponseError,UsageError}from"./chunk-UFND7FBC.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={
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{contentTypeFor,inspectLocalFile,issued}from"./chunk-HNUBM24L.js";import{createFlags,fieldBody,hasAnyField,updateFlags}from"./chunk-3B5PVPGU.js";import{checkUploadQuota}from"./chunk-2YNZ4MRT.js";import{readCsvFileText}from"./chunk-OHXZO5WK.js";import{featureLicenseGuidance}from"./chunk-P7JCZYAI.js";import{CUSTOMERS_PATH,SALES_COMPANIES_PATH,isExactNumericId}from"./chunk-XWW63XJJ.js";import{isSafePathSegment}from"./chunk-GMBJTG6A.js";import{ApiError,
3
+ import{contentTypeFor,inspectLocalFile,issued}from"./chunk-HNUBM24L.js";import{createFlags,fieldBody,hasAnyField,updateFlags}from"./chunk-A65V3K75.js";import{checkUploadQuota}from"./chunk-2YNZ4MRT.js";import{readCsvFileText}from"./chunk-OHXZO5WK.js";import{featureLicenseGuidance}from"./chunk-GOZCJLRA.js";import{CUSTOMERS_PATH,SALES_COMPANIES_PATH,isExactNumericId}from"./chunk-4F2ONF4P.js";import{isSafePathSegment}from"./chunk-GMBJTG6A.js";import{ApiError,
4
4
  errorListMessages}from"./chunk-IF2K4PM5.js";import{LIST_FLAGS,LIST_PAGING_HELP,envelopePaging,nonEmpty,positiveInteger}from"./chunk-IOGMOXYF.js";import{requireResolved,singleRef,withResolved}from"./chunk-LXIAOCUW.js";import{acknowledgement,isRecord,pick}from"./chunk-VTQAI52S.js";import{ApiRejectedError,ApiResponseError,UsageError}from"./chunk-UFND7FBC.js";import fs from"fs";import path from"path";function levelForbidden(licenseGuidance,levelGuidance){return body=>body?.error==="permission_denied"?licenseGuidance:levelGuidance}var COMPANY_LICENSE="\u53D6\u5F15\u5148\u3092\u6271\u3046\u306B\u306F\u8CA9\u58F2\u7BA1\u7406\u304B\u9867\u5BA2\u7BA1\u7406\u306E\u6A29\u9650\u304C\u8981\u308A\u307E\u3059\u304C\u3001\u3069\u3061\u3089\u3082\u3042\u308A\u307E\u305B\u3093\u3002\u30C6\u30CA\u30F3\u30C8\u304C\u3069\u3061\u3089\u3082\u5951\u7D04\u3057\u3066\u3044\u306A\u3044\u304B\u3001\u3042\u306A\u305F\u306E\u6A29\u9650\u304C\u3069\u3061\u3089\u3082\u300C\u306A\u3057\u300D\u306B\u306A\u3063\u3066\u3044\u307E\u3059\u3002\u30C6\u30CA\u30F3\u30C8\u7BA1\u7406\u8005\u306B\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002";
5
5
  var CUSTOMER_LICENSE=featureLicenseGuidance("\u9867\u5BA2\u7BA1\u7406");var COMPANY_WRITE_FORBIDDEN=levelForbidden(COMPANY_LICENSE,"\u9867\u5BA2\u306E\u4F5C\u6210\u30FB\u66F4\u65B0\u306B\u306F\u3001\u9867\u5BA2\u7BA1\u7406\u306E\u6A29\u9650\u304C\u300C\u7DE8\u96C6\u8005\u300D\u4EE5\u4E0A\u304B\u3001\u8CA9\u58F2\u7BA1\u7406\u306E\u6A29\u9650\u304C\u300C\u30E1\u30F3\u30D0\u30FC\u300D\u4EE5\u4E0A\u306E\u3069\u3061\u3089\u304B\u304C\u8981\u308A\u307E\u3059\u3002\u30C6\u30CA\u30F3\u30C8\u7BA1\u7406\u8005\u306B\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002");
6
6
  var LEVEL_LABELS={admin:"\u7BA1\u7406\u8005",editor:"\u7DE8\u96C6\u8005",viewer:"\u95B2\u89A7\u8005",none:"\u306A\u3057"};var CHILD_DELETE_NEEDS="\u62C5\u5F53\u8005\u30FB\u5BFE\u5FDC\u5C65\u6B74\u306E\u524A\u9664\u306B\u306F\u9867\u5BA2\u7BA1\u7406\u306E\u6A29\u9650\u304C\u300C\u7BA1\u7406\u8005\u300D\u3067\u3042\u308B\u3053\u3068\u304C\u8981\u308A\u307E\u3059";var CUSTOMER_DELETE_FORBIDDEN=levelForbidden(COMPANY_LICENSE,"\u9867\u5BA2\u306E\u524A\u9664\u306B\u306F\u3001\u4F01\u696D\u306E\u524A\u9664\u306B\u9867\u5BA2\u7BA1\u7406\u306E\u300C\u7BA1\u7406\u8005\u300D\u304B\u8CA9\u58F2\u7BA1\u7406\u306E\u300C\u30E1\u30F3\u30D0\u30FC\u300D\u4EE5\u4E0A\u3001\u62C5\u5F53\u8005\u30FB\u5BFE\u5FDC\u5C65\u6B74\u306E\u524A\u9664\u306B\u9867\u5BA2\u7BA1\u7406\u306E\u300C\u7BA1\u7406\u8005\u300D\u304C\u8981\u308A\u307E\u3059\u3002\u30C6\u30CA\u30F3\u30C8\u7BA1\u7406\u8005\
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{salesAdminForbidden}from"./chunk-VIU2HPWM.js";import{nonEmpty,positiveInteger}from"./chunk-IOGMOXYF.js";import{withResolved}from"./chunk-LXIAOCUW.js";import{isRecord,pick}from"./chunk-VTQAI52S.js";import{ApiResponseError,UsageError}from"./chunk-UFND7FBC.js";var PATH="/api/v2/sales/receivables";var FORBIDDEN=salesAdminForbidden("\u58F2\u639B\u91D1\u6B8B\u9AD8\u3068\u7DE0\u3081");var CLOSING_LIST_MAX=36;var SUMMARY_LABELS=[["previous_balance","\u524D\u6708\u6B8B\u9AD8"],["current_debit","\u5F53\u6708\u501F\u65B9\uFF08\u5F53\u6708\u8ACB\u6C42\u984D\uFF09"],["current_credit","\u5F53\u6708\u8CB8\u65B9\uFF08\u5F53\u6708\u5165\u91D1\u5F15\u5F53\u984D\uFF09"],["current_balance","\u5F53\u6708\u6B8B\u9AD8"],["current_month_uncollected","\u2460 \u5F53\u6708\u8ACB\u6C42 \u672A\u56DE\u53CE"],
3
+ import{salesAdminForbidden}from"./chunk-BN26WHLS.js";import{nonEmpty,positiveInteger}from"./chunk-IOGMOXYF.js";import{withResolved}from"./chunk-LXIAOCUW.js";import{isRecord,pick}from"./chunk-VTQAI52S.js";import{ApiResponseError,UsageError}from"./chunk-UFND7FBC.js";var PATH="/api/v2/sales/receivables";var FORBIDDEN=salesAdminForbidden("\u58F2\u639B\u91D1\u6B8B\u9AD8\u3068\u7DE0\u3081");var CLOSING_LIST_MAX=36;var SUMMARY_LABELS=[["previous_balance","\u524D\u6708\u6B8B\u9AD8"],["current_debit","\u5F53\u6708\u501F\u65B9\uFF08\u5F53\u6708\u8ACB\u6C42\u984D\uFF09"],["current_credit","\u5F53\u6708\u8CB8\u65B9\uFF08\u5F53\u6708\u5165\u91D1\u5F15\u5F53\u984D\uFF09"],["current_balance","\u5F53\u6708\u6B8B\u9AD8"],["current_month_uncollected","\u2460 \u5F53\u6708\u8ACB\u6C42 \u672A\u56DE\u53CE"],
4
4
  ["previous_uncollected","\u2461 \u524D\u6708\u4EE5\u524D \u672A\u5165\u91D1\u58F2\u639B\u91D1"],["advance_received","\u524D\u53D7\u91D1\uFF08\u7FCC\u6708\u4EE5\u964D\u8ACB\u6C42\u3078\u306E\u5165\u91D1\uFF09"],["future_invoice_total","\u2462 \u7FCC\u6708\u4EE5\u964D \u58F2\u639B\u91D1\uFF08\u8ACB\u6C42\u7DCF\u984D\u30FB\u53C2\u8003\uFF09"]];var ITEM_COLUMNS=["invoice_id","invoice_no","company_name","title","invoice_date","due_date","total","collected","uncollected"];var CLOSING_COLUMNS=["year_mo\
5
5
  nth","basis_date","closed_at","closed_by_name","has_variance"];function usageOf(op){return`twp receivable ${op} help`}function yen(value){return typeof value==="number"?`${value.toLocaleString("ja-JP")} \u5186`:"\uFF08\u4E0D\u660E\uFF09"}function text(value){return typeof value==="string"||typeof value==="number"?String(value):""}function yearMonthValue(raw,label){const value=raw.trim();if(!/^\d{4}-(0[1-9]|1[0-2])$/.test(value))throw new UsageError(`${label} \u306F YYYY-MM \u306E\u5F62\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044: ${raw}`,
6
6
  "\u4F8B: 2026-09");return value}function previousYearMonth(yearMonth){const[y,m]=yearMonth.split("-").map(Number);return m===1?`${y-1}-12`:`${y}-${String(m-1).padStart(2,"0")}`}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`);return body}function withoutResult(body){return Object.
@@ -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-YLXW7TIU.js";import{dateFlag,monthFlag}from"./chunk-4B3T4UE7.js";import{repeatedValues}from"./chunk-F7K37QG6.js";import{requireResolved,withResolved}from"./chunk-LXIAOCUW.js";import{isRecord,pick}from"./chunk-VTQAI52S.js";import{ApiResponseError,UsageError}from"./chunk-UFND7FBC.js";var ANALYSIS_PATH="/api/v2/analysis";var ACCESSIBLE_PAGES_HINT="\u958B\u3051\u308B\u5206\u6790\u30DA\u30FC\u30B8\u306F twp api /api/v2/analysis/accessible-pages \u3067\u78BA\u8A8D\u3067\u304D\u307E\u3059\u3002";var LICENSE_GUIDANCE="\u5206\u6790\u3092\u4F7F\u3046\u6A29\u9650\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u30C6\u30CA\u30F3\u30C8\u304C\u5206\u6790\u3092\u5951\u7D04\u3057\u3066\u3044\u306A\u3044\u304B\u3001\u3042\u306A\u305F\u306E\u5206\u6790\u306E\u6A29\u9650\u304C\u300C\u306A\u3057\u300D\u306B\u306A\u3063\u3066\u3044\u307E\u3059\u3002\u30C6\u30CA\u30F3\u30C8\u7BA1\u7406\u8005\u306B\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002";
3
+ import{hoursMinutes}from"./chunk-QOUDJ7XO.js";import{dateFlag,monthFlag}from"./chunk-4B3T4UE7.js";import{repeatedValues}from"./chunk-F7K37QG6.js";import{requireResolved,withResolved}from"./chunk-LXIAOCUW.js";import{isRecord,pick}from"./chunk-VTQAI52S.js";import{ApiResponseError,UsageError}from"./chunk-UFND7FBC.js";var ANALYSIS_PATH="/api/v2/analysis";var ACCESSIBLE_PAGES_HINT="\u958B\u3051\u308B\u5206\u6790\u30DA\u30FC\u30B8\u306F twp api /api/v2/analysis/accessible-pages \u3067\u78BA\u8A8D\u3067\u304D\u307E\u3059\u3002";var LICENSE_GUIDANCE="\u5206\u6790\u3092\u4F7F\u3046\u6A29\u9650\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u30C6\u30CA\u30F3\u30C8\u304C\u5206\u6790\u3092\u5951\u7D04\u3057\u3066\u3044\u306A\u3044\u304B\u3001\u3042\u306A\u305F\u306E\u5206\u6790\u306E\u6A29\u9650\u304C\u300C\u306A\u3057\u300D\u306B\u306A\u3063\u3066\u3044\u307E\u3059\u3002\u30C6\u30CA\u30F3\u30C8\u7BA1\u7406\u8005\u306B\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002";
4
4
  var PAGE_GUIDANCE=`\u3053\u306E\u5206\u6790\u30DA\u30FC\u30B8\u306E\u95B2\u89A7\u5BFE\u8C61\u306B\u542B\u307E\u308C\u3066\u3044\u307E\u305B\u3093\u3002\u5206\u6790\u306E\u7BA1\u7406\u8005\u306B\u5BFE\u8C61\u3078\u306E\u8FFD\u52A0\u3092\u4F9D\u983C\u3057\u3066\u304F\u3060\u3055\u3044\u3002${ACCESSIBLE_PAGES_HINT}`;var PAGE_DENIED_MARK="\u5206\u6790\u30DA\u30FC\u30B8";function analysisForbidden(levelGuidance2){return body=>{if(body?.error==="permission_denied"){const text=body.error_description??"";
5
5
  if(text.includes(PAGE_DENIED_MARK))return PAGE_GUIDANCE;if(text.includes("\u3053\u306E\u6A5F\u80FD"))return LICENSE_GUIDANCE;return void 0}if(body?.error==="forbidden")return levelGuidance2;return void 0}}function levelGuidance(page,features){return`${page}\u3092\u958B\u304F\u6A29\u9650\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u5206\u6790\u62C5\u5F53\u8005\u30D5\u30E9\u30B0\u3001\u307E\u305F\u306F${features}\u306E\u6A29\u9650\uFF08\u300C\u306A\u3057\u300D\u4EE5\u5916\uFF09\u304C\u8981\u308A\u307E\u3059\u3002\u30C6\u30CA\u30F3\u30C8\u7BA1\u7406\u8005\u306B\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`}
6
6
  var FROM_FLAG={name:"--from",summary:"\u958B\u59CB\u306E\u5E74\u6708\uFF08YYYY-MM\uFF09",takesValue:true,placeholder:"<YYYY-MM>"};var TO_FLAG={name:"--to",summary:"\u7D42\u4E86\u306E\u5E74\u6708\uFF08YYYY-MM\uFF09",takesValue:true,placeholder:"<YYYY-MM>"};var MONTH_FLAG={name:"--month",summary:"1\u304B\u6708\u3060\u3051\uFF08YYYY-MM\uFF09\u3002--from / --to \u3068\u306F\u4F75\u7528\u4E0D\u53EF",takesValue:true,placeholder:"<YYYY-MM>"};var YEAR_FLAG={name:"--year",summary:"1\u5E74\u5206\uFF081\u301C12\u6708\u30FBYYYY\uFF09\u3002--from \
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{salesAdminForbidden}from"./chunk-VIU2HPWM.js";import{featureLicenseGuidance,licenseForbidden}from"./chunk-P7JCZYAI.js";import{booleanText,boundedText}from"./chunk-XDHLO54T.js";import{SALES_ESTIMATE_FORMATS_PATH,SALES_ESTIMATE_NO_RULES_PATH,SALES_INVOICE_NO_RULES_PATH,SALES_PURCHASE_NO_RULES_PATH,SALES_ROUNDING_SETTING_PATH,isExactNumericId}from"./chunk-XWW63XJJ.js";import{repeatedValues}from"./chunk-F7K37QG6.js";import{LIST_PAGING_HELP,PAGE_NUMBER_LIST_FLAGS,
3
+ import{salesAdminForbidden}from"./chunk-BN26WHLS.js";import{featureLicenseGuidance,licenseForbidden}from"./chunk-GOZCJLRA.js";import{booleanText,boundedText}from"./chunk-XDHLO54T.js";import{SALES_ESTIMATE_FORMATS_PATH,SALES_ESTIMATE_NO_RULES_PATH,SALES_INVOICE_NO_RULES_PATH,SALES_PURCHASE_NO_RULES_PATH,SALES_ROUNDING_SETTING_PATH,isExactNumericId}from"./chunk-4F2ONF4P.js";import{repeatedValues}from"./chunk-F7K37QG6.js";import{LIST_PAGING_HELP,PAGE_NUMBER_LIST_FLAGS,
4
4
  nonEmpty,pageNumberPaging,pageNumberQuery,pageRangeNotes}from"./chunk-IOGMOXYF.js";import{requireResolved,withResolved}from"./chunk-LXIAOCUW.js";import{acknowledgement,isRecord,pick}from"./chunk-VTQAI52S.js";import{ApiResponseError,UsageError}from"./chunk-UFND7FBC.js";var INT_MAX=2147483647;var MEMBER_FORBIDDEN=licenseForbidden(featureLicenseGuidance("\u8CA9\u58F2\u7BA1\u7406"));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`);return body}function recordOf(body,what){const data=envelope(body,what)["data"];if(!isRecord(data)||typeof data["id"]!==
5
5
  "string")throw new ApiResponseError(`${what}\u306E\u5FDC\u7B54\u306B data.id \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`);return data}function serverMessage(body){const message=isRecord(body)?body["message"]:void 0;return typeof message==="string"&&message!==""?[message]:[]}function text(value){return typeof value==="string"||typeof value==="number"?String(value):""}function integerValue(flag,raw,min,max=INT_MAX){const trimmed=raw.
6
6
  trim();const value=/^\d+$/.test(trimmed)?Number(trimmed):Number.NaN;if(!Number.isSafeInteger(value)||value<min||value>max)throw new UsageError(`${flag} \u306F ${min} \u4EE5\u4E0A ${max} \u4EE5\u4E0B\u306E\u6574\u6570\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044: ${raw}`);return value}var RULE_COLUMNS=["id","rule_name","prefix","digit_count","current_number","count_up_num","next_number","sort_order"];function nextNumber(rule,purchaseFormat){const current=rule["current_number"];const step=rule["\