@tocca-systems/twp-cli 0.48.0 → 0.50.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.public.md +16 -0
- package/README.md +121 -4
- package/dist/{agent-loop-XKH5YE6A.js → agent-loop-EBIXJ4EH.js} +2 -2
- package/dist/{ai-dispatch-FGVNSM6L.js → ai-dispatch-2FL2AFL7.js} +2 -2
- package/dist/analysis-2SWIQ4AI.js +4 -0
- package/dist/announcement-R76XDLW7.js +52 -0
- package/dist/{api-command-26MLBIZC.js → api-command-VFFV7BD4.js} +5 -16
- package/dist/{app-Y7MAQAPC.js → app-PNDIA4NV.js} +4 -4
- package/dist/{attendance-correct-5SFXA4DC.js → attendance-correct-SN2KYGOE.js} +2 -2
- package/dist/{attendance-lists-3T7S7QF5.js → attendance-lists-6S62D2UV.js} +1 -1
- package/dist/{backlog-F4EWY7MT.js → backlog-5XSCJGPJ.js} +2 -2
- package/dist/{budget-QFUGQIPZ.js → budget-PIGBJ5N7.js} +1 -1
- package/dist/{charter-command-2RIS2VTQ.js → charter-command-LIX2JXRJ.js} +1 -1
- package/dist/{chunk-6TPGATAG.js → chunk-342WUEV4.js} +1 -1
- package/dist/{chunk-IXFMXUNT.js → chunk-3YCVR7X4.js} +1 -1
- package/dist/{chunk-VTQAI52S.js → chunk-3ZRMMBP5.js} +1 -1
- package/dist/{chunk-HNUBM24L.js → chunk-4S7SNE2M.js} +1 -1
- package/dist/{chunk-QICH2OOI.js → chunk-5JL26BPU.js} +1 -1
- package/dist/{chunk-ORUDW52G.js → chunk-6LSQCOCJ.js} +1 -1
- package/dist/{chunk-F7K37QG6.js → chunk-7UB4I3JF.js} +1 -1
- package/dist/{chunk-AJO4O5ZF.js → chunk-A4LFG7MW.js} +1 -1
- package/dist/{chunk-LAXINIDA.js → chunk-BVXUORXE.js} +1 -1
- package/dist/{chunk-GOZCJLRA.js → chunk-CF3ZZKCZ.js} +2 -2
- package/dist/{chunk-MY2U3CD6.js → chunk-CUPPIHSJ.js} +51 -27
- package/dist/{chunk-JKL6NUVV.js → chunk-DQCHLRSB.js} +2 -2
- package/dist/{chunk-BN26WHLS.js → chunk-ELEOYXLD.js} +2 -2
- package/dist/{chunk-4B3T4UE7.js → chunk-EXT4AIDF.js} +1 -1
- package/dist/{chunk-VB2CSFRO.js → chunk-FANDYQCM.js} +1 -1
- package/dist/{chunk-4OSCQLZT.js → chunk-FMJUPLDG.js} +1 -1
- package/dist/{chunk-ATYA6DG5.js → chunk-GFLGXGWE.js} +1 -1
- package/dist/chunk-GXZOFRZH.js +9 -0
- package/dist/{chunk-KS2ZUQFC.js → chunk-IRHKFHJZ.js} +2 -2
- package/dist/{chunk-QOUDJ7XO.js → chunk-IU5P6MY5.js} +1 -1
- package/dist/{chunk-IOGMOXYF.js → chunk-MI6HVYR2.js} +1 -1
- package/dist/{chunk-A65V3K75.js → chunk-NK53AFVE.js} +1 -1
- package/dist/{chunk-XQRSX2RH.js → chunk-NN6LAZRA.js} +33 -8
- package/dist/{chunk-3AD2T6L2.js → chunk-ONAMXPTE.js} +1 -1
- package/dist/{chunk-XDHLO54T.js → chunk-OTIR4GES.js} +1 -1
- package/dist/{chunk-LXIAOCUW.js → chunk-PS5QFKHB.js} +1 -1
- package/dist/chunk-Q2KIETMB.js +132 -0
- package/dist/{chunk-3HH5IYNO.js → chunk-QBGEYQ2I.js} +1 -1
- package/dist/{chunk-OHXZO5WK.js → chunk-QLENN5DD.js} +1 -1
- package/dist/chunk-QSXS5SB2.js +33 -0
- package/dist/{chunk-VYT6JAXQ.js → chunk-S3A24B2C.js} +6 -6
- package/dist/{chunk-OYDF57NH.js → chunk-SECVO7RQ.js} +2 -2
- package/dist/{chunk-TKGVAWGU.js → chunk-TVODNAPX.js} +1 -1
- package/dist/{chunk-IO5SMECE.js → chunk-V2BB5EWS.js} +2 -2
- package/dist/{chunk-2YNZ4MRT.js → chunk-V64CGX7V.js} +1 -1
- package/dist/{chunk-UFND7FBC.js → chunk-VFPY2A23.js} +2 -2
- package/dist/chunk-WVCEKC7V.js +14 -0
- package/dist/{chunk-H3WYVFTS.js → chunk-YJZT3UD3.js} +1 -1
- package/dist/chunk-ZGHEF45T.js +4 -0
- package/dist/{chunk-FZWRYJVM.js → chunk-ZY6LEKWR.js} +2 -2
- package/dist/cli.js +105 -10
- package/dist/{commands-EIWS357Q.js → commands-CA22R7VD.js} +7 -7
- package/dist/{commands-SWR442MR.js → commands-ZZGY6P3B.js} +2 -2
- package/dist/{company-77JEESSV.js → company-CQYSBKTQ.js} +4 -3
- package/dist/{completion-YSP6UE25.js → completion-3F2GJNGC.js} +1 -1
- package/dist/{contract-26SKL7XT.js → contract-A2FGGVOR.js} +2 -2
- package/dist/{department-IZAR2LZ4.js → department-6BILJZG7.js} +2 -2
- package/dist/{deposit-MYTKRIEX.js → deposit-OAGRJMZ4.js} +2 -2
- package/dist/{estimate-KLS7XJLD.js → estimate-5PSXHHNT.js} +4 -4
- package/dist/{inquiry-52OT4HKJ.js → inquiry-NMOT4JSX.js} +2 -2
- package/dist/{invoice-D77PS3WU.js → invoice-TXEJT6I6.js} +3 -3
- package/dist/{job-title-U67Z25ZO.js → job-title-NSYPQMEX.js} +1 -1
- package/dist/{knowledge-Q3QLSNDX.js → knowledge-5DX6EMHZ.js} +2 -32
- package/dist/{leave-OSIABEFV.js → leave-DEGAZKVH.js} +2 -2
- package/dist/{media-HDG4VHAR.js → media-RJCTHFK6.js} +86 -26
- package/dist/{notification-MEOHWBXH.js → notification-NG4J6N2D.js} +2 -2
- package/dist/{onedrive-3OBI4B5Z.js → onedrive-YPJCILR2.js} +1 -1
- package/dist/{oneshot-ACV6XH5A.js → oneshot-RA65DTXP.js} +2 -2
- package/dist/{outlook-LY6WBXIJ.js → outlook-MNOVX6QS.js} +2 -2
- package/dist/{position-N7SRF3CF.js → position-OZBQYKZS.js} +1 -1
- package/dist/{project-YMJJDSTP.js → project-5YFBRM32.js} +2 -2
- package/dist/{prospect-3JD7STGT.js → prospect-TQ2FFWEZ.js} +3 -3
- package/dist/{purchase-2SLZBDD6.js → purchase-WOUWIZHO.js} +4 -4
- package/dist/query-XEOVFI4D.js +3 -0
- package/dist/receivable-RFZT6PY3.js +4 -0
- package/dist/{registry-GQ3L7PZ2.js → registry-H4NP4HUQ.js} +1 -1
- package/dist/{report-TUSP7RRF.js → report-EFE43ZVI.js} +2 -2
- package/dist/{run-ZPB23AZX.js → run-TNFPATQF.js} +2 -2
- package/dist/{sales-ai-review-7NPG7KV6.js → sales-ai-review-FSA4J2J2.js} +2 -2
- package/dist/{sales-master-W5MXNZQ2.js → sales-master-Q5BJ7RNG.js} +3 -3
- package/dist/{sales-numbering-RQV2I5G5.js → sales-numbering-ITDBMODV.js} +2 -2
- package/dist/{server-skills-Z5DGCJQ7.js → server-skills-IXIOOOC2.js} +1 -1
- package/dist/{skill-command-74MCUHFJ.js → skill-command-NXHTJXYY.js} +1 -1
- package/dist/{storage-KLLBENBY.js → storage-AQDCEBDJ.js} +1 -1
- package/dist/{supplier-payment-TDL3IE4H.js → supplier-payment-FWGQR3Z3.js} +3 -3
- package/dist/support-TVTQJFRE.js +53 -0
- package/dist/{task-2SHYSZBZ.js → task-IDQKPRYS.js} +3 -3
- package/dist/{teams-DRHXPLWN.js → teams-IO6UQNYP.js} +2 -2
- package/dist/{user-YEIHSVVN.js → user-B6KW6HA2.js} +3 -3
- package/dist/worker-agent-PEFBLL56.js +150 -0
- package/dist/{workflow-USG3ZKW6.js → workflow-SYWZKWWB.js} +1 -1
- package/package.json +1 -1
- package/dist/analysis-GAU2A3FU.js +0 -3
- package/dist/chunk-4F2ONF4P.js +0 -127
- package/dist/chunk-6ZB7A6VD.js +0 -9
- package/dist/chunk-Y5EN7RYN.js +0 -4
- package/dist/query-3ZQP4DCN.js +0 -3
- package/dist/receivable-6ZRAUHC3.js +0 -4
package/CHANGELOG.public.md
CHANGED
|
@@ -11,6 +11,22 @@
|
|
|
11
11
|
`CHANGELOG.md` に残してあります。顧客向けの履歴は public 公開以降を対象とします。
|
|
12
12
|
-->
|
|
13
13
|
|
|
14
|
+
## 0.50.0
|
|
15
|
+
|
|
16
|
+
`twp announcement` で、自分に届いているお知らせの一覧(未読・確認待ち・語で絞り込み)・本文と返信の表示・未読件数の確認ができるようになりました。`read` / `read-all` で既読に、`confirm` で「確認しました」を記録でき、`reply list` / `reply create` で返信を読み書きできます。まとめての既読化と確認は取り消せないため `--yes` が必要です。
|
|
17
|
+
|
|
18
|
+
システムサポートへの依頼を CLI から出し(スクリーンショット等の添付つき)、返答の確認・コメント・完了・再問い合わせ・取り下げができるようになりました(`twp support`)。
|
|
19
|
+
|
|
20
|
+
ワーカーエージェント(AIエージェント)を CLI から作成・更新・削除し、スケジュール(〇分ごと・毎日・毎週・毎月)を設定して有効化できるようになりました。`twp worker-agent run start --wait` で今すぐ実行して結果(最終要約)を受け取れます。
|
|
21
|
+
|
|
22
|
+
## 0.49.0
|
|
23
|
+
|
|
24
|
+
メディアライブラリのファイルを1件ずつ CLI で管理できるようになりました。詳細の確認(`twp media get`)、名前・説明・タグの変更(`twp media update`)、移動(`twp media move`)、公開・非公開・アーカイブ(`twp media publish` / `unpublish` / `archive`)、日時を決めた予約公開(`twp media schedule`)、ゴミ箱からの復元(`twp media restore`)と完全削除(`twp media delete --permanent`)に対応しています。あわせて、ゴミ箱の一覧と空にする操作(`twp media trash`)、タグの一覧・登録・統合・削除(`twp media tag`)、最近閲覧したファイル(`twp media recent list`)も使えます。
|
|
25
|
+
|
|
26
|
+
プロジェクトのリスク分析(`twp project risk`)・収支分析(`twp project profit`)・工程の一覧と登録(`twp project process list` / `create`)、全社の収支分析(`twp analysis profit list`)・人材KPI(`twp analysis staff-kpi list` / `estimates` / `settings`)を CLI から読めるようになりました。権限が無いときは、どの権限が足りないかを案内します。
|
|
27
|
+
|
|
28
|
+
ワーカーエージェント(AIエージェント)の一覧・詳細・ツールのカタログ・実行回数の上限と、実行履歴・実行結果・ステップログを CLI から読めるようになりました(`twp worker-agent`)。実行結果は最終要約を先頭に出します。
|
|
29
|
+
|
|
14
30
|
## 0.48.0
|
|
15
31
|
|
|
16
32
|
`twp attendance record create` で過去の時刻での打刻を、`twp attendance record update` / `delete` / `move` で打刻のメモの変更・取り消し・プロジェクトの付け替えができるようになりました。送る前に締め済みの月でないこと、前後の打刻との整合(二重の出勤など)を確かめ、問題があれば `--yes` を付けない限り送りません。`--dry-run` で確認結果だけを見ることもできます。
|
package/README.md
CHANGED
|
@@ -23,12 +23,15 @@ TWP(Tocca Working Platform)を、ターミナルから使うための CLI
|
|
|
23
23
|
| **できる** | `twp user` によるテナントのユーザーの作成・更新・失効(退社)と招待(1件・CSV 一括・再送・取消)、ユーザーと所属(部署・役職)の参照(一覧・取得・所属の履歴)、所属の付け替え(異動)・作成・更新・終了・削除、在籍者の棚卸と人事台帳 CSV との突き合わせ。作成・更新・招待と取得、所属の書き込み、他人の所属の参照、棚卸は組織管理者の権限が要ります |
|
|
24
24
|
| **できる** | `twp department` / `twp position` / `twp job-title` による組織マスタ(部署・役職・職位)の一覧・取得・作成・更新・削除と、部署ツリー・部署の所属者の表示。作成・更新・削除は管理者の権限が要ります |
|
|
25
25
|
| **できる** | `twp inquiry category` による問い合わせカテゴリの一覧・取得・作成・更新(通知先の設定・末尾への並べ替えを含む)。取得・作成・更新は問い合わせ機能の管理者の権限が要ります |
|
|
26
|
+
| **できる** | `twp support` によるシステムサポートへの依頼(依頼者側)の一覧・詳細(コメントの経過を含む)・起票(添付3件まで)・コメント・完了・再問い合わせ・取り下げと、カテゴリの一覧。運営側(回答・ステータス変更)は扱いません |
|
|
26
27
|
| **できる** | `twp notification` による自分宛ての通知の一覧(未読・カテゴリ・語で絞り込み)・詳細・未読件数・カテゴリ一覧と、1件ずつ・まとめての既読化 |
|
|
28
|
+
| **できる** | `twp worker-agent` によるワーカーエージェント(AIエージェント)の参照(一覧・詳細・スケジュールと次回実行予定・許可できるツールのカタログ・実行回数の上限と今日の使用数)と、実行履歴・実行結果(最終要約を先頭に)・ステップログ・ステップの集計の読み取りと、作成・更新(スケジュール指定込み)・削除・有効化/無効化・今すぐ実行(`--wait` で終わるまで待つ)・実行の取消 |
|
|
29
|
+
| **できる** | `twp announcement` による自分に届いているお知らせ(運営・組織)の一覧(未読・確認待ち・語で絞り込み)・本文と返信の表示・未読件数、既読化(1件ずつ・まとめて)・「確認しました」の記録・返信の一覧と投稿 |
|
|
27
30
|
| **できる** | `twp estimate` / `twp invoice` による販売管理の見積・請求の一覧(語・ステータス・取引先・プロジェクト・担当者・日付・回収状況で絞り込み)と詳細、`twp estimate` による見積の作成・更新・削除・社内共有メモ・既存の請求の紐づけ・関連入金・部署按分・案件書類(注文書・個別契約書など)の登録・版の差替え・ダウンロードと、注文書からの注文書番号の読み取り・見積書/注文書/注文請書の PDF の書き出し、`twp invoice` による請求の作成・更新・削除・取消と取消解除・統合請求書の作成・社内共有メモ・CSV/MF 会計仕訳の書き出し・請求書メールの送信・支払いリンクの作成・請求書/納品書/検収書の PDF の書き出し、`twp contract` による取引契約(見積から作る販売管理の契約)の一覧・詳細・作成・更新・削除、`twp invoice auto-template` による自動請求テンプレートの一覧・詳細・作成・更新・削除と発行履歴の参照(販売管理の管理者)、`twp deposit` による入金の一覧・詳細・登録・更新・削除・CSV 書き出し、請求への引当(CSV での一括を含む)・解除・手数料分の引き上げ、入金予定からの入金と引当のまとめ登録、`twp receivable` による売掛金残高の表示と CSV 書き出し・月次の締めと締めの解除(どちらも販売管理の管理者)、`twp purchase` による仕入(注文書)の一覧・詳細・作成・更新・削除・複製・一覧のメモ・注文書/注文請書の PDF の書き出しと、添付書類(見積書・注文書・注文請書)の登録・版の差替え・ダウンロード、添付した見積書からの AI 読み取り(候補を出すだけで仕入は変えません)、`twp supplier-payment` による支払(仕入先へ払うお金の台帳)の一覧・詳細・登録・更新・削除・ID を並べたファイルでのステータスの一括変更と、毎月の支払を生成する支払先マスタの一覧・詳細・登録・更新・削除(どちらも販売管理の管理者)、`twp business-place` / `twp payee` / `twp seal-impression` による帳票に載る自社の事業所・振込先・印影(画像の登録を含む)の一覧・詳細・登録・更新・削除(書き込みは販売管理の管理者。振込先の一覧は口座番号を伏字にします)、`twp purchase ai-mapping` による見積書 AI 読み取りのマッピング表の一覧・詳細・登録・更新・削除と反映先の選択肢、`twp estimate no-rule` / `twp invoice no-rule` / `twp purchase no-rule` による見積・請求・仕入の番号ルールの一覧(次に発行される番号つき)・詳細・登録・更新・削除と、`twp estimate format` による見積フォーマット(書類を作るときの既定値の組)の一覧・詳細・作成・更新・削除、`twp rounding-setting` による端数処理(金額の丸め方)の表示と変更(番号ルールと端数処理の変更は `--yes` が要り、変更前・変更後を出します)、`twp company` / `twp customer` による取引先企業・顧客の一覧と詳細(名前でも指定できます)、`twp customer` による顧客の登録・更新・削除(担当者・対応履歴ごと。ID を並べたファイルでの一括削除を含む)と担当者・対応履歴の一覧・詳細・登録・更新・削除、全顧客の最近の対応、名刺画像の登録・裏面メモ・削除、企業をまたいだ人物の一覧・詳細・CSV 書き出し、登録前の類似企業検索、`twp company` による取引先企業(仕入先を含む)の登録・更新・削除、`twp prospect` によるアプローチ先(見込客)の一覧・登録・更新・削除・CSV での一括登録と書き出し・重複確認・顧客への昇格と対応履歴の記録、`twp estimate|invoice|contract ai-review` による申請前AIチェックの実行(`--wait` で完了まで待つ)・結果の表示・指摘への確認済みの理由の登録と取消、`twp ai-review-reason` による理由の横断一覧・社内ナレッジへの追記文案の生成と追記PRの作成(販売管理の管理者)。販売管理・顧客管理の権限が要ります |
|
|
28
|
-
| **できる** | `twp media`
|
|
31
|
+
| **できる** | `twp media` によるメディアライブラリのファイルのアップロード・一覧・ダウンロード・詳細・名前/説明/タグの変更・移動・公開・非公開・アーカイブ・予約公開・削除(ゴミ箱へ移す・`--permanent` で完全削除)・復元・一括操作(公開・非公開・アーカイブ・移動・削除・復元・ZIP ダウンロード)、`twp media folder` によるフォルダの一覧・ツリー表示・作成・名前変更・移動・削除・ゴミ箱からの復元と完全削除(`--folder` はフォルダID のほか「親/子」形式のパスでも指定可)、`twp media trash` によるゴミ箱の一覧と空にする操作、`twp media tag` によるタグの一覧・登録・統合・削除(統合と削除は管理者)、`twp media recent list` による最近閲覧したファイル、`twp storage get` によるストレージ使用量の確認(管理者) |
|
|
29
32
|
| **できる** | `twp attendance` による自分の勤怠の参照(いまの打刻状態・打刻の履歴・月の勤怠表)と打刻・打刻修正(過去の時刻での打刻・メモの変更・取り消し・プロジェクトの付け替え)、管理者向けの残業サマリ(36協定を含む)・締め状況の参照 |
|
|
30
33
|
| **できる** | `twp leave` による有給の残日数・取得履歴・付与履歴の参照と有給の申請(`twp leave request`)、`twp workchange list` / `twp shift list` による月の勤務変更・シフトの参照(`--me` で自分の分・無ければ全員分=勤怠の管理者) |
|
|
31
|
-
| **できる** | `twp analysis` による分析の読み取り(稼働分析・プロジェクトアサイン・人材別アサインを月ごとの列で、今週のキャパシティと過負荷アラート・再分配候補・標準勤務時間の設定、負荷のリスク判定、プロジェクト健全性スコアの一覧・推移と AI の所見)、`twp project manhours` / `twp task manhours` による工数の集計、`twp project workload`
|
|
34
|
+
| **できる** | `twp analysis` による分析の読み取り(稼働分析・プロジェクトアサイン・人材別アサインを月ごとの列で、今週のキャパシティと過負荷アラート・再分配候補・標準勤務時間の設定、負荷のリスク判定、プロジェクト健全性スコアの一覧・推移と AI の所見)、`twp project manhours` / `twp task manhours` による工数の集計、`twp project workload` によるメンバーごとのタスク件数、収支分析(`twp analysis profit`・`twp project profit`)・人材KPI(`twp analysis staff-kpi`)・プロジェクトのリスク分析(`twp project risk`)の読み取りと工程の一覧・登録(`twp project process`)。分析の権限と、ページごとの閲覧対象への登録が要ります |
|
|
32
35
|
| **できる** | `twp budget` による予実管理(年度の予実ダッシュボード・サマリー・部署行の内訳と未割当・CSV 出力、目標の一覧・JSON でのまとめ登録・前年度からのコピー・CSV の取り込みと雛形、プロジェクトの部署按分の参照と全件置換)。分析の権限と予実管理ページの閲覧対象への登録が要り、目標の書き込みは全体管理者か分析の権限が「管理者」の人です |
|
|
33
36
|
| **できる** | `twp workflow` による、自分が申請できる申請書・申請書の定義(管理者)・自分の申請・承認履歴・自分の承認待ちの参照(申請書は名前でも指定できます)と、申請の起票・提出・更新・削除、承認・却下・差し戻し・取下げ |
|
|
34
37
|
| **できる** | `twp report` による自分のレポート(日報)の一覧(フォーマット・状態・語で絞り込み)・詳細と、下書きの作成(フォーマットの入力項目から雛形を出せます)・更新・提出・AI アドバイス、使えるレポートフォーマットの一覧。確認者としての一覧(未読・書いた人・作成日で絞り込み)・既読・コメント・確認済み・確認の取り消し・差し戻し |
|
|
@@ -354,6 +357,29 @@ twp inquiry category update <カテゴリ> [--title <名前>] [--sort <整数|la
|
|
|
354
357
|
- 削除はまだありません(`twp api /api/v2/inquiries/categories/<ID> --method DELETE --yes` で行えます)
|
|
355
358
|
- ヘルプは `twp inquiry category help`
|
|
356
359
|
|
|
360
|
+
### システムサポートへ依頼する
|
|
361
|
+
|
|
362
|
+
```
|
|
363
|
+
twp support category list
|
|
364
|
+
twp support list [--status <状態>]
|
|
365
|
+
twp support get <ID>
|
|
366
|
+
twp support create --category <名前|ID> --subject <件名> (--body <本文> | --body-file <パス>) [--attach <パス>]…
|
|
367
|
+
twp support comment create <ID> (--body <本文> | --body-file <パス>) [--attach <パス>]…
|
|
368
|
+
twp support close <ID> --yes
|
|
369
|
+
twp support reinquire <ID> --yes
|
|
370
|
+
twp support withdraw <ID> --yes
|
|
371
|
+
```
|
|
372
|
+
|
|
373
|
+
- `list` は自分が出した依頼を返します(テナントのサポート管理者はテナントの全件)。`--status` は `new` / `in_progress` / `waiting`(回答済み)/ `re_inquiry` / `closed` / `withdrawn`
|
|
374
|
+
- 返答が来たかは `twp support get <ID> --output text` で確かめます。依頼の本文・状態の履歴・コメントを時系列で出し、運営の返答は「サポート(氏名)」と表示します
|
|
375
|
+
- `--attach` はローカルファイルで、3件まで指定できます(各ファイルを容量検査 → アップロードしてから依頼・コメントを送ります)。`--dry-run` は最初に送るリクエストと、依頼の本体(件名・本文・カテゴリ)を表示します
|
|
376
|
+
- 件名は255文字、依頼の本文は10,000文字、コメントは5,000文字まで。`--body-file -` で標準入力から読みます
|
|
377
|
+
- `close`(完了)・`reinquire`(回答済みの依頼を再問い合わせ)・`withdraw`(取り下げ)は `--yes` が要ります。状態が合わないときはサーバが断ります(終了コード 3)
|
|
378
|
+
- 他の人の依頼と存在しない依頼は、どちらも「見つかりません」になります
|
|
379
|
+
- 添付のダウンロードはまだありません(`get` は添付 ID を出します。`twp api /api/v2/attachments/<添付ID>/download` で取得できます)
|
|
380
|
+
- 運営(マスターテナント)側の操作はありません
|
|
381
|
+
- ヘルプは `twp support help`
|
|
382
|
+
|
|
357
383
|
### 自分宛ての通知を扱う
|
|
358
384
|
|
|
359
385
|
```
|
|
@@ -696,13 +722,43 @@ twp prospect interaction list|create|update|delete [<対応履歴ID>] --prospect
|
|
|
696
722
|
- 権限(顧客管理): 閲覧は「閲覧者」以上、登録・更新・`import` は「編集者」以上、削除・`export`・`promote`・対応履歴の削除は「管理者」
|
|
697
723
|
- ヘルプは `twp prospect help` / `twp prospect import help` / `twp prospect promote help` / `twp prospect interaction help`
|
|
698
724
|
|
|
725
|
+
### お知らせを読む・確認する・返信する
|
|
726
|
+
|
|
727
|
+
```
|
|
728
|
+
twp announcement list [--unread | --needs-confirm] [--keyword <語>] [--all]
|
|
729
|
+
twp announcement get <お知らせID> [--output text]
|
|
730
|
+
twp announcement counts
|
|
731
|
+
twp announcement read <お知らせID>...
|
|
732
|
+
twp announcement read-all --yes
|
|
733
|
+
twp announcement confirm <お知らせID> --yes
|
|
734
|
+
twp announcement reply list <お知らせID>
|
|
735
|
+
twp announcement reply create <お知らせID> --body-file <ファイル|->
|
|
736
|
+
```
|
|
737
|
+
|
|
738
|
+
- 運営からのお知らせと組織のお知らせを混ぜて扱います。掲載中のものだけです。`get` で見ただけでは既読になりません
|
|
739
|
+
- `--needs-confirm` は「確認が要るのにまだ確認していない」お知らせだけを出します
|
|
740
|
+
- **確認が要るお知らせは、既読にしても「確認しました」を押すまで未読のままです**(画面と同じ)。確認を記録するのは `confirm` だけで、発信者が見る記録として残り取り消せないので `--yes` が要ります
|
|
741
|
+
- `read-all` は既読を未読へ戻せないので `--yes` が要ります。送る前に未読件数を stderr に出し、`--dry-run` なら件数を出すだけで既読にしません
|
|
742
|
+
- `get --output text` は本文を読める形(タイトル・発信者・本文・返信)で出します。返信は自分に見える範囲だけです
|
|
743
|
+
- 返信は返信を受け付けていて掲載中の組織のお知らせにだけ送れます(2,000 文字まで・作成者へ通知が届きます)。返信の削除・お知らせの作成と配信はまだありません(`twp api` で到達できます)
|
|
744
|
+
- ヘルプは `twp announcement help`
|
|
745
|
+
|
|
699
746
|
### メディアライブラリのファイルを扱う
|
|
700
747
|
|
|
701
748
|
```bash
|
|
702
749
|
twp media list [--project <コード|ID>] [--folder <ID|パス>] [--keyword <語>] [--all]
|
|
703
750
|
twp media upload --file <パス> [--project <コード|ID>] [--folder <ID|パス>] [--name <ファイル名>] [--content-type <型>]
|
|
704
751
|
twp media download <ファイルID> --out <パス> [--force]
|
|
705
|
-
twp media
|
|
752
|
+
twp media get <ファイルID>
|
|
753
|
+
twp media update <ファイルID> [--name <ファイル名>] [--description <説明> | --clear-description] [--tag <タグ>]... [--clear-tags]
|
|
754
|
+
twp media move <ファイルID> [--project <コード|ID> | --personal] [--folder <フォルダID>]
|
|
755
|
+
twp media publish | unpublish | archive | restore <ファイルID>
|
|
756
|
+
twp media schedule <ファイルID> --start <日時> [--end <日時>] [--archive-after-end] | --clear
|
|
757
|
+
twp media delete <ファイルID> --yes [--permanent]
|
|
758
|
+
twp media trash list [--project <コード|ID>] [--all]
|
|
759
|
+
twp media trash empty --yes [--project <コード|ID>]
|
|
760
|
+
twp media tag list [--with-count] | create <タグ> | merge <旧タグ> --into <新タグ> --yes | delete <タグ> --yes
|
|
761
|
+
twp media recent list [--limit <件数>]
|
|
706
762
|
twp media bulk-publish | bulk-unpublish | bulk-archive | bulk-restore <ファイルID>...
|
|
707
763
|
twp media bulk-move <ファイルID>... [--project <コード|ID>] [--folder <ID|パス>]
|
|
708
764
|
twp media bulk-delete <ファイルID>... --yes [--permanent]
|
|
@@ -722,7 +778,12 @@ twp storage get
|
|
|
722
778
|
- **`twp media folder delete` は送る前に中身(サブフォルダ・ファイルの件数)を確かめ、中身があるのに `--recursive` が無ければ止めます。** 既定はゴミ箱へ移すだけで `twp media folder restore` で戻せます。`--permanent` はゴミ箱にあるフォルダだけを完全に削除し、復元できません(ID で指定)。同名のフォルダの作成・自分の下位フォルダへの移動も送る前に止めます(サーバはこれらの理由を返さないため)
|
|
723
779
|
- **`twp media upload` はアップロード用URLの発行・ファイルの転送・完了登録を1コマンドで行い、サーバが計算した sha256 をローカルのファイルと突き合わせます。** 一致しなければ失敗で終わります。`--dry-run` はURLの発行リクエストだけを表示します(その前に送る容量検査は注記で知らせます)
|
|
724
780
|
- **転送や完了登録に失敗したときは、ファイルIDと再登録・破棄のコマンドを stderr に出して失敗で終わります。** タスク添付と違い、URLを発行した時点でファイルが仮登録され**自動では消えない**ので、表示されたコマンドのどちらかを実行してください
|
|
725
|
-
- `twp media delete`
|
|
781
|
+
- `twp media delete` はゴミ箱へ移すだけで、`twp media restore` で戻せます。**`--permanent` はゴミ箱にあるファイルだけを完全に削除し、復元できません**(先に `--permanent` 無しでゴミ箱へ移してください)
|
|
782
|
+
- **`twp media update --tag` は指定したタグで置き換えます**(追加ではありません。今のタグは `twp media get` で確認)。タグを全部外すなら `--clear-tags`、説明を消すなら `--clear-description`
|
|
783
|
+
- `twp media move` は `--project` / `--personal` を付けなければ今のスコープのまま、`--folder` を付けなければ最上位へ移します
|
|
784
|
+
- **`twp media schedule` の日時はタイムゾーン付きの ISO 8601 で指定します**(例 `2026-12-01T09:00:00+09:00`)。オフセットの無い日時は受け付けません。送る値は `--dry-run` で確認できます。`--clear` で予約を外すと非公開(下書き)に戻ります
|
|
785
|
+
- **`twp media trash empty` はゴミ箱のファイルとフォルダをすべて完全に削除します。** 実行時は先に件数を表示し、1件でも消せなかったものがあれば終了コード 3 で終わります
|
|
786
|
+
- **`twp media tag merge` / `delete` はテナント全体のファイルのタグを書き換えます**(管理者のみ・`--yes` が要る)。実行時は先に使用数を表示し、存在しないタグは送らずに終了コード 2 で止まります(サーバは無いタグの削除にも成功を返すため)
|
|
726
787
|
- **アップロードの前に、テナントのストレージ容量を確かめます**(`twp task attachment upload` も同じ)。容量を超えるなら何も登録せず終了コード 3 で止まり、警告の閾値を超えているときは stderr で知らせます
|
|
727
788
|
- **一括操作(`bulk-*`)は1件でも失敗すると終了コード 3 で終わり、失敗したファイルと理由・適用済みのファイルを stderr に出します**(サーバは失敗があっても HTTP 200 を返すため)。`bulk-publish` / `bulk-unpublish` / `bulk-archive` は存在しないファイルIDが1件でもあると他も適用しません。`bulk-restore` / `bulk-move` / `bulk-delete` は1件ずつ処理するので、失敗したもの以外は適用されます。`bulk-download` は ZIP に入った件数が指定より少なければ書き出さずに終了コード 3 で終わります。件数は 100 件まで(`bulk-download` は 50 件)
|
|
728
789
|
- `bulk-restore` はゴミ箱から戻す操作です(アーカイブの解除ではありません)。`bulk-delete --permanent` は**ゴミ箱にあるファイルだけ**を完全に削除します(先に `bulk-delete` でゴミ箱へ移してください)
|
|
@@ -810,6 +871,14 @@ twp analysis project-health insights [--project <コード>] [--date <YYYY-MM-DD
|
|
|
810
871
|
twp project manhours [<コード>] [--from <YYYY-MM-DD>] [--to <YYYY-MM-DD>]
|
|
811
872
|
twp task manhours <キー> [--from <YYYY-MM-DD>] [--to <YYYY-MM-DD>]
|
|
812
873
|
twp project workload [<コード>]
|
|
874
|
+
twp analysis profit list --fiscal-year <YYYY> [--scope project|user] [--segment <ID>]
|
|
875
|
+
twp analysis staff-kpi list --department <部署> [--month <YYYY-MM>] [--user <ユーザー>]
|
|
876
|
+
twp analysis staff-kpi estimates --department <部署> [--month <YYYY-MM>]
|
|
877
|
+
twp analysis staff-kpi settings --department <部署>
|
|
878
|
+
twp project risk [<コード>]
|
|
879
|
+
twp project profit [<コード>] [--month <YYYY-MM> | --from <YYYY-MM> --to <YYYY-MM>]
|
|
880
|
+
twp project process list [<コード>] [--status active|inactive]
|
|
881
|
+
twp project process create [<コード>] --process <工程マスタ> [--description <説明>] [--sort-order <0〜9999>] [--status active|inactive]
|
|
813
882
|
```
|
|
814
883
|
|
|
815
884
|
- 稼働分析・プロジェクトアサイン・人材別アサインは、期間を指定しなければ**当月(この端末の時計)**です。当月で埋めたときは stderr でそう言います。表は月ごとの値を `YYYY-MM` 列に並べ、値は画面と同じくサーバの集計のままです(内訳は `--output json`)
|
|
@@ -819,6 +888,11 @@ twp project workload [<コード>]
|
|
|
819
888
|
- 分析の 403 は「分析の権限が無い」「そのページの閲覧対象に入っていない」「ページが要る機能(勤怠・プロジェクト・人事管理)の権限が無い」を分けて案内します
|
|
820
889
|
- `project-health insights` は呼ぶたびにサーバが AI で所見を作り、テナントの AI クレジットを消費するので `--yes` が要ります
|
|
821
890
|
- `project manhours`(プロジェクト管理者)と `task manhours` は、期間を省くと今月です(テナントの業務日の区切りでサーバが決めます)。応答にユーザー名は無いので、`user_id` は `twp project members` と突き合わせてください
|
|
891
|
+
- `project risk` はリスク分析(期限超過・滞留など)を高リスク → 中リスクの順に1タスク1行で出します。判定はサーバのままです
|
|
892
|
+
- `project profit` はプロジェクト管理者とテナント管理者だけが読めます。期間を省くと**当月**です(画面は会計年度で開くので、年度で見るなら `--from` / `--to`)。列は画面の月別表と同じです
|
|
893
|
+
- `analysis profit list` は会計年度でしか集計できないので `--fiscal-year` が必須です。売上は全確度(サーバの既定)で集計されます
|
|
894
|
+
- `analysis staff-kpi` は `--department` が必須で、`--month` を省くと当月です。`--user` はサーバに絞り込みの口が無いので CLI が行を絞ります。応答にユーザー名は無いので `user_id` で突き合わせてください
|
|
895
|
+
- `project process create` は `--process` に工程マスタの名前・コード・ID を渡します。工程の並び替え・更新・削除、人材KPIの設定・目標の登録は CLI では行えません
|
|
822
896
|
- 標準勤務時間の変更・負荷判定の再実行・ページの閲覧対象の設定は CLI では行えません(画面か `twp api` を使ってください)
|
|
823
897
|
|
|
824
898
|
### 予実を見る・目標を入れる
|
|
@@ -847,6 +921,49 @@ twp budget allocation set [--project <コード>] --clear --yes
|
|
|
847
921
|
- `target import` は雛形(`import-template`)の形の CSV を取り込みます。1行でも誤りがあればサーバが1件も書かず、行ごとの理由をすべて出して終了コード 3 です
|
|
848
922
|
- `allocation set` は按分を**全件置き換え**ます(指定しなかった部署の按分は消えます)。`--clear` で按分をすべて消します。送る前に置換前と置換後の按分を出します。比率の合計(100%)はサーバも CLI も検査しないので、自分で確かめてください
|
|
849
923
|
|
|
924
|
+
### ワーカーエージェント(AIエージェント)を見る
|
|
925
|
+
|
|
926
|
+
```
|
|
927
|
+
twp worker-agent list [--owner <ユーザー>]
|
|
928
|
+
twp worker-agent get <エージェント>
|
|
929
|
+
twp worker-agent tools [--keyword <語>] [--category <カテゴリ>] [--all]
|
|
930
|
+
twp worker-agent tool get <ツール名>
|
|
931
|
+
twp worker-agent limits [--agent <エージェント>]
|
|
932
|
+
twp worker-agent run list <エージェント> [--all]
|
|
933
|
+
twp worker-agent run get <エージェント> <実行ID>
|
|
934
|
+
twp worker-agent run steps <エージェント> <実行ID> [--type <種別>] [--all]
|
|
935
|
+
twp worker-agent run stats <エージェント> <実行ID>
|
|
936
|
+
```
|
|
937
|
+
|
|
938
|
+
- **`<エージェント>` はエージェント ID でも名前でも指定できます。** 名前は一覧と完全一致で照合します(同名が複数あれば候補を出して止まります)
|
|
939
|
+
- エージェント管理者はテナントの全エージェント、それ以外は自分のエージェントだけを見られます。参照できないエージェントは「見つかりません」になります
|
|
940
|
+
- `list` / `get` はスケジュールの説明(「毎日 03:00」等)・次回実行予定(`next_run_at`)・有効/無効・直近の実行を出します
|
|
941
|
+
- **`run get` は最終要約を先頭に出します。** 結果だけが欲しいときは `--query summary`、`--output text` は要約を本文として先に出します
|
|
942
|
+
- `run steps --type` は `thinking` / `tool_call` / `tool_result` / `error` / `budget_warning` / `final_summary`(カンマ区切りで複数)。ステップの保持期間は90日で、それより古い実行ではステップが0件です
|
|
943
|
+
- トークン数(`*_tokens`)はキー名が秘密の伏字化に当たるため `***(伏字)` で出ます。見るときは `--no-redact` を付けてください
|
|
944
|
+
- AIエージェント機能のライセンスが無いアカウントでは、どの操作も権限の案内を出して終了コード 3 になります
|
|
945
|
+
|
|
946
|
+
### ワーカーエージェントを作る・動かす
|
|
947
|
+
|
|
948
|
+
```
|
|
949
|
+
twp worker-agent create --name <名前> --instructions-file <パス> --tool <ツール名>... --schedule <スケジュール> [--write-enabled --yes] [--enable]
|
|
950
|
+
twp worker-agent update <エージェント> [--schedule <スケジュール>] [--instructions-file <パス>] [--tool <ツール名>...] [--write-enabled --yes | --read-only]
|
|
951
|
+
twp worker-agent enable <エージェント>
|
|
952
|
+
twp worker-agent disable <エージェント>
|
|
953
|
+
twp worker-agent delete <エージェント> --yes
|
|
954
|
+
twp worker-agent run start <エージェント> [--simulate] [--wait] --yes
|
|
955
|
+
twp worker-agent run cancel <エージェント> <実行ID>
|
|
956
|
+
```
|
|
957
|
+
|
|
958
|
+
- **`--schedule` は `interval:30m` / `daily:09:00` / `weekly:mon,fri@09:00` / `monthly:1,15@09:00`(`last` で月末)。** 時刻は Asia/Tokyo。間隔は15〜1440分・5分刻みで、外れた値は送る前に止めます
|
|
959
|
+
- 指示文は `--instructions-file` で渡してください(引数では改行・引用符が壊れます)。`--cli-input-json` で API の本文をまとめて渡すこともできます
|
|
960
|
+
- 作成直後は無効です(`--enable` か `twp worker-agent enable` で定期実行が始まります)。`update --tool` は許可ツールを丸ごと置き換えます
|
|
961
|
+
- **書き込み系ツールを許可する作成・更新(`--write-enabled`)・削除・今すぐ実行は `--yes` が要ります。** 今すぐ実行は AI のクレジットを消費します
|
|
962
|
+
- `run start --simulate` は書き込み系ツールを実際には書き込まずに記録だけします(twp 共通の `--dry-run` は「何も送らずに送る内容を表示する」で別物です)
|
|
963
|
+
- **`run start --wait` は終わるまで待って最終要約を先頭に出します。** 終了コードは 0=succeeded・3=failed / cancelled / 見送り・6=上限(既定300秒・`--wait-timeout` で最大480秒)まで終わらなかった(未完了。実行は続いているので、打ち直さず `run get` で確かめてください。打ち直すと二重に実行されます)
|
|
964
|
+
- 編集・削除・有効化・今すぐ実行はオーナーだけができます(管理者でも他人のエージェントは不可)。無効化と取消は管理者もできます
|
|
965
|
+
- CLI から作ったエージェントは画面から作ったものと同じ扱い(`created_via: ui`)で記録されます
|
|
966
|
+
|
|
850
967
|
### ワークフロー(申請)を見る・出す・承認する
|
|
851
968
|
|
|
852
969
|
```bash
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{stepToItem}from"./chunk-LUQ2KE6Y.js";import{loadLocalConfig}from"./chunk-QVPU4HHG.js";import"./chunk-N2UVRM3Z.js";import{loadAiConfig}from"./chunk-AEJHDFXB.js";import"./chunk-JTJWDV5U.js";import"./chunk-GY7KI5E5.js";import"./chunk-II5RVJQN.js";import{LIST_FLAGS,LIST_PAGING_HELP,envelopePaging,nonEmpty,positiveInteger}from"./chunk-
|
|
4
|
-
isRecord,pick}from"./chunk-
|
|
3
|
+
import{stepToItem}from"./chunk-LUQ2KE6Y.js";import{loadLocalConfig}from"./chunk-QVPU4HHG.js";import"./chunk-N2UVRM3Z.js";import{loadAiConfig}from"./chunk-AEJHDFXB.js";import"./chunk-JTJWDV5U.js";import"./chunk-GY7KI5E5.js";import"./chunk-II5RVJQN.js";import{LIST_FLAGS,LIST_PAGING_HELP,envelopePaging,nonEmpty,positiveInteger}from"./chunk-MI6HVYR2.js";import{requireResolved,singleRef,withResolved}from"./chunk-PS5QFKHB.js";import{acknowledgement,
|
|
4
|
+
isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";import"./chunk-PMOUHEJQ.js";import"./chunk-J7QYPKVK.js";import"./chunk-5WGOHFAS.js";import"./chunk-RZVI6PMW.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var LABEL="\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u30EB\u30FC\u30D7\u306E\u30A2\u30A4\u30C6\u30E0";var STATUSES=["pending","processing","completed","failed"];var AI_TYPES=["claude","gemini","codex","copilot"];var EFFORTS=["low","medium","high","xhigh","max"];var PRIORITIES=["P0","P1","P2","P3"];var LIST_COLUMNS=["item_id","status","task_key","label","ai_type","ai_effort","runner_id","created_at"];var GET_COLUMNS=["item_id","status","task_key","label","prompt","ai_type","ai_model","ai_effort","runn\
|
|
5
5
|
er_id","attempt_count","reclaim_count","error_message","created_by_name","created_at","started_at","completed_at"];var HISTORY_COLUMNS=["item_id","status","task_key","skill","ai_type","runner_id","duration_ms","cost_usd","created_at"];var PROJECT_FLAG={name:"--project",summary:"\u30AD\u30E5\u30FC\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\uFF08\u30B3\u30FC\u30C9\u307E\u305F\u306F ID\u3002\u7701\u7565\u6642\u306F TWP_PROJECT / .twp/config.json / ~/.twp/config.json\uFF09",takesValue:true,placeholder:"\
|
|
6
6
|
<\u30B3\u30FC\u30C9|ID>"};var ITEM_FLAG={name:"--item",summary:"\u30A2\u30A4\u30C6\u30E0\u306E ID\uFF08item_id\uFF09\u3002\u4F4D\u7F6E\u5F15\u6570\u3068\u540C\u3058\u610F\u5473\uFF08\u4E21\u65B9\u6307\u5B9A\u306F\u30A8\u30E9\u30FC\uFF09",takesValue:true,placeholder:"<\u30A2\u30A4\u30C6\u30E0ID>"};var FORBIDDEN_CORE="\u30C6\u30CA\u30F3\u30C8\u306E\u7BA1\u7406\u8005\uFF08admin \u30ED\u30FC\u30EB\uFF09\u306E\u6A29\u9650\u304C\u5FC5\u8981\u3067\u3059\uFF08\u500B\u4EBA\u30AD\u30E5\u30FC\u3092\u9664\u304F\uFF09";
|
|
7
7
|
var CREATE_HINT="\u30A2\u30A4\u30C6\u30E0\u306E\u6295\u5165\uFF08twp agent-loop create\uFF09\u306F\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u30E1\u30F3\u30D0\u30FC\u306A\u3089\u7BA1\u7406\u8005\u3067\u306A\u304F\u3066\u3082\u884C\u3048\u307E\u3059";var FORBIDDEN_UPDATE=`\u30AD\u30E5\u30FC\u306E\u30A2\u30A4\u30C6\u30E0\u306E\u66F4\u65B0\u306B\u306F${FORBIDDEN_CORE}\u3002\u5B9F\u884C\u4E2D\u306E\u30A2\u30A4\u30C6\u30E0\u3078\u306E\u66F8\u304D\u623B\u3057\u3060\u3051\u306F\u3001\u305D\u306E\u30A2\u30A4\u30C6\u30E0\u3092 claim \u3057\u305F\u30EB\u30FC\u30D7\u81EA\u8EAB\u304C run_id \u3092\u6DFB\u3048\u3066\u884C\u3048\u307E\u3059\u3002`+
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{failureHint,isAuthError,isCliFatalText,isRateLimited,isServerAiType,isUntrusted,maxTurnsReached,rateLimitWaitSeconds,tailForScan}from"./chunk-ZOOEH7ZE.js";import{
|
|
4
|
-
activeSlotPath,detectClaudeAutoSwitch,isClaudeAi,isUsableModelId,modelFitsRoute,resolveSpawnTarget,usesBedrock,wrapWithAutoSwitch}from"./chunk-AEJHDFXB.js";import"./chunk-JTJWDV5U.js";import"./chunk-GY7KI5E5.js";import"./chunk-
|
|
3
|
+
import{failureHint,isAuthError,isCliFatalText,isRateLimited,isServerAiType,isUntrusted,maxTurnsReached,rateLimitWaitSeconds,tailForScan}from"./chunk-ZOOEH7ZE.js";import{expandServerSkills,prepareSkillOverlay}from"./chunk-TVODNAPX.js";import"./chunk-YJZT3UD3.js";import{detectAiClis}from"./chunk-T4QZO6RQ.js";import"./chunk-A4LFG7MW.js";import"./chunk-VRBI2NPI.js";import{isForceOnly,killProcessTree,system32}from"./chunk-N2UVRM3Z.js";import{DEFAULT_CLAUDE_LAUNCHER,
|
|
4
|
+
activeSlotPath,detectClaudeAutoSwitch,isClaudeAi,isUsableModelId,modelFitsRoute,resolveSpawnTarget,usesBedrock,wrapWithAutoSwitch}from"./chunk-AEJHDFXB.js";import"./chunk-JTJWDV5U.js";import"./chunk-GY7KI5E5.js";import"./chunk-VFPY2A23.js";import{findExecutable,isWindowsDriveAbsolute}from"./chunk-PMOUHEJQ.js";import"./chunk-J7QYPKVK.js";import"./chunk-5WGOHFAS.js";import{stripTerminalControls}from"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";import{spawnSync}from"child_process";import fs2 from"fs";import path2 from"path";import{spawn}from"child_process";import fs from"fs";import path from"path";var FINAL_REPORT_BEGIN="<<<AI_FINAL_REPORT>>>";var FINAL_REPORT_END="<<<END_AI_FINAL_REPORT>>>";var ClaudeStreamRenderer=class{constructor(now=()=>new Date){this.now=now}now;toolNames=new Map;toolCount=0;result={subtype:null,isError:null,numTurns:null,costUsd:null,durationMs:null,tokensIn:null,tokensOut:null,rateLimited:false,resetsAt:null,finalText:""};push(line){const trimmed=line.trim();if(trimmed==="")return[];let event;try{const parsed=JSON.parse(trimmed);if(parsed===null||typeof parsed!=="\
|
|
5
5
|
object"||Array.isArray(parsed)){return[line]}event=parsed}catch{return[line]}switch(event["type"]){case"rate_limit_event":return this.onRateLimit(event);case"assistant":return this.onAssistant(event);case"user":return this.onUser(event);case"result":return this.onResult(event);default:return event["type"]==="system"?[]:[line]}}sawRateLimit(){return this.result.rateLimited}lastRateLimitNote="";onRateLimit(event){const info=event["rate_limit_info"];if(info===null||typeof info!=="object")return[];const rec=info;
|
|
6
6
|
const status=typeof rec["status"]==="string"?rec["status"]:"";const resets=typeof rec["resetsAt"]==="number"?rec["resetsAt"]:null;if(status==="")return[];const at=isSaneEpochSec(resets)?` resets=${new Date(resets*1e3).toISOString()}`:"";if(status.startsWith("allowed")){if(status==="allowed")return[];const seen=`${status}|${resets??""}`;if(seen===this.lastRateLimitNote)return[];this.lastRateLimitNote=seen;return[this.line(`\u2139\uFE0F \u4E0A\u9650\u306B\u63A5\u8FD1\uFF08status=${status}${at}\uFF09\u2014 \u5B9F\
|
|
7
7
|
\u884C\u306F\u7D99\u7D9A\u3057\u307E\u3059`)]}if(resets!==null)this.result.resetsAt=resets;this.result.rateLimited=true;return[this.line(`\u26A0\uFE0F \u30EC\u30FC\u30C8\u30EA\u30DF\u30C3\u30C8\u901A\u77E5: status=${status}${at}`)]}onAssistant(event){const out=[];for(const block of contentBlocks(event)){if(block.type==="tool_use"){const name=typeof block.name==="string"?block.name:"tool";if(typeof block.id==="string")this.toolNames.set(block.id,name);this.toolCount+=1;out.push(this.line(`>> ${name}${toolDetail(
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
|
+
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
+
import{FROM_FLAG,MANHOUR_DESCRIPTION,MANHOUR_FROM_FLAG,MANHOUR_TO_FLAG,MONTH_FLAG,TO_FLAG,analysisDomain,analysisForbidden,currentMonth,dataOf,listIn,manhourNotes,manhourQuery,manhourRows,monthRange,monthsBetween,noArgs,profitRows,rangeNotes,recordOf,staffKpiRows,workloadDistributionNotes,workloadDistributionRows}from"./chunk-CUPPIHSJ.js";import"./chunk-7UB4I3JF.js";import"./chunk-IU5P6MY5.js";import"./chunk-EXT4AIDF.js";import"./chunk-QQRJLH6B.js";import"./chunk-PS5QFKHB.js";
|
|
4
|
+
import"./chunk-3ZRMMBP5.js";import"./chunk-VFPY2A23.js";import"./chunk-VSJBJXZO.js";export{FROM_FLAG,MANHOUR_DESCRIPTION,MANHOUR_FROM_FLAG,MANHOUR_TO_FLAG,MONTH_FLAG,TO_FLAG,analysisDomain,analysisForbidden,currentMonth,dataOf,listIn,manhourNotes,manhourQuery,manhourRows,monthRange,monthsBetween,noArgs,profitRows,rangeNotes,recordOf,staffKpiRows,workloadDistributionNotes,workloadDistributionRows};
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
|
+
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
+
import{composeDocument,htmlToText,metaLine}from"./chunk-QSXS5SB2.js";import{boundedText}from"./chunk-OTIR4GES.js";import{readBody}from"./chunk-6LSQCOCJ.js";import{ANNOUNCEMENTS_PATH}from"./chunk-Q2KIETMB.js";import{isSafePathSegment}from"./chunk-GMBJTG6A.js";import"./chunk-QBGEYQ2I.js";import"./chunk-IF2K4PM5.js";import"./chunk-4VZKNEVN.js";import"./chunk-II5RVJQN.js";import{LIST_FLAGS,LIST_PAGING_HELP,envelopePaging,positiveInteger}from"./chunk-MI6HVYR2.js";
|
|
4
|
+
import{requireResolved,withResolved}from"./chunk-PS5QFKHB.js";import{isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";import"./chunk-J7QYPKVK.js";import"./chunk-RZVI6PMW.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var LABEL="\u304A\u77E5\u3089\u305B";var LIST_COLUMNS=["id","publish_start_at","sender_name","category_name","title","is_read","require_confirmation","is_confirmed"];var UNCONFIRMED_COLUMNS=["id","publish_start_at","publish_end_at","importance","title"];var GET_COLUMNS=["id","title","sender_name","category_name","importance_name","publish_start_at","publish_end_at","is_organization","is_read","require_confirmation","is_confirmed","allow_replies","link_url"];var REPLY_COLUMNS=["id","created_at","\
|
|
5
|
+
user_name","is_mine","content"];var REPLY_MAX_CHARS=2e3;function noArgs(input,op){if(input.args.length>0){throw new UsageError(`${op} \u306F\u4F4D\u7F6E\u5F15\u6570\u3092\u53D6\u308A\u307E\u305B\u3093: ${input.args.join(" ")}`,`twp announcement ${op} help`)}}function checkId(raw,help){const id=raw.trim();if(id==="")throw new UsageError("\u304A\u77E5\u3089\u305B\u306E ID \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",help);if(!isSafePathSegment(id)){throw new UsageError(`\u304A\u77E5\u3089\u305B\u306E ID \u3068\u3057\u3066\u4F7F\u3048\u306A\u3044\
|
|
6
|
+
\u5024\u3067\u3059: ${id}`,"\u304A\u77E5\u3089\u305B\u306E ID \u306F twp announcement list \u306E id \u5217\u3067\u78BA\u8A8D\u3067\u304D\u307E\u3059\u3002")}return id}function announcementId(input,op){const help=`twp announcement ${op} help`;const[raw,...rest]=input.args;if(rest.length>0)throw new UsageError(`${op} \u304C\u53D7\u3051\u53D6\u308C\u308B\u304A\u77E5\u3089\u305B ID \u306F1\u3064\u3060\u3051\u3067\u3059: ${rest.join(" ")}`,help);return checkId(raw??"",help)}function announcementIds(input){
|
|
7
|
+
const help="twp announcement read help";if(input.args.length===0)throw new UsageError("\u304A\u77E5\u3089\u305B\u306E ID \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",help);return[...new Set(input.args.map(raw=>checkId(raw,help)))]}function itemPath(id,suffix=""){return`${ANNOUNCEMENTS_PATH}/${encodeURIComponent(id)}${suffix}`}function envelope(body,what){if(!isRecord(body)||body["result"]!==true){throw new ApiResponseError(`${what}\u306E\u5FDC\u7B54\u306E\u5F62\u304C\u60F3\u5B9A\u3068\u9055\u3044\u307E\u3059\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}
|
|
8
|
+
return body}function readAnnouncementCursor(body){const record=isRecord(body)?body:{};if(!("page"in record)&&!("total_pages"in record))return{hasMore:void 0,cursor:void 0};const page=record["page"];const totalPages=record["total_pages"];if(!Number.isInteger(page)||!Number.isInteger(totalPages)){return{hasMore:`page=${JSON.stringify(page)??"undefined"} / total_pages=${JSON.stringify(totalPages)??"undefined"}`,cursor:void 0}}return page<totalPages?{hasMore:true,cursor:String(page+1)}:{hasMore:false,
|
|
9
|
+
cursor:null}}var listPaging=envelopePaging({label:`${LABEL}\u4E00\u89A7`,itemsKey:"announcements",cursorParam:"page",readCursor:readAnnouncementCursor});function listRows(body){envelope(body,`${LABEL}\u4E00\u89A7`);return listPaging.items(body)}function detail(body){const row=envelope(body,LABEL)["announcement"];if(!isRecord(row)||typeof row["id"]!=="string"){throw new ApiResponseError(`${LABEL}\u306E\u5FDC\u7B54\u306B announcement \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}
|
|
10
|
+
const replies=body["replies"];return replies===void 0?row:{...row,replies}}function replyList(body){const list=envelope(body,"\u8FD4\u4FE1\u4E00\u89A7")["replies"];if(!Array.isArray(list))throw new ApiResponseError("\u8FD4\u4FE1\u4E00\u89A7\u306E\u5FDC\u7B54\u306B replies \u914D\u5217\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002");return list}function withoutResult(row){return Object.fromEntries(Object.entries(row).filter(
|
|
11
|
+
([key])=>key!=="result"))}function textOf(value){if(typeof value!=="string")return"";return/<[a-z][^>]*>/i.test(value)?htmlToText(value):value.trim()}function announcementDocument(body){const row=detail(body);const confirm=row["require_confirmation"]===true?row["is_confirmed"]===true?"\u78BA\u8A8D\u6E08\u307F":"\u672A\u78BA\u8A8D\uFF08twp announcement confirm \u3067\u78BA\u8A8D\u3092\u8A18\u9332\u3057\u307E\u3059\uFF09":void 0;const replies=Array.isArray(row["replies"])?row["replies"]:[];const replyText=replies.
|
|
12
|
+
filter(isRecord).map(r=>`- ${String(r["user_name"]??r["user_id"]??"(\u4E0D\u660E)")}\uFF08${String(r["created_at"]??"")}\uFF09
|
|
13
|
+
${textOf(r["content"]).split("\n").join("\n ")}`).join("\n");return composeDocument(row["title"],[...metaLine("ID",row["id"]),...metaLine("\u767A\u4FE1\u8005",row["sender_name"]),...metaLine("\u30AB\u30C6\u30B4\u30EA",row["category_name"]),...metaLine("\u91CD\u8981\u5EA6",row["importance_name"]),...metaLine("\u63B2\u8F09\u958B\u59CB",row["publish_start_at"]),...metaLine("\u63B2\u8F09\u7D42\u4E86",row["publish_end_at"]),...metaLine("\u65E2\u8AAD",row["is_read"]===true?"\u65E2\u8AAD":"\u672A\u8AAD"),
|
|
14
|
+
...metaLine("\u78BA\u8A8D",confirm),...metaLine("\u30EA\u30F3\u30AF",row["link_url"])],[{body:textOf(row["content"])},{heading:`\u8FD4\u4FE1\uFF08${replies.length} \u4EF6\uFF09`,body:replyText}])}var NEEDS_CONFIRM_EXCLUSIVE=["--unread","--keyword","--cursor","--limit"];var listOperation={name:"list",summary:`\u81EA\u5206\u306B\u5C4A\u3044\u3066\u3044\u308B${LABEL}\u3092\u4E00\u89A7\u3059\u308B\uFF08\u30D4\u30F3\u7559\u3081\u304C\u5148\u982D\u30FB\u65E2\u5B9A\u306F\u65B0\u3057\u3044\u9806\uFF09`,
|
|
15
|
+
usage:"twp announcement list [--unread | --needs-confirm] [--keyword <\u8A9E>] [--all] [--limit <\u4EF6\u6570>] [--cursor <\u30DA\u30FC\u30B8\u756A\u53F7>]",description:`\u904B\u55B6\u304B\u3089\u306E\u304A\u77E5\u3089\u305B\u3068\u7D44\u7E54\u306E\u304A\u77E5\u3089\u305B\u3092\u6DF7\u305C\u3066\u8FD4\u3057\u307E\u3059\uFF08is_organization \u3067\u898B\u5206\u3051\u3089\u308C\u307E\u3059\uFF09\u3002\u63B2\u8F09\u4E2D\u306E\u3082\u306E\u3060\u3051\u3067\u3059\u3002
|
|
16
|
+
--unread \u3067\u672A\u8AAD\u3060\u3051\u306B\u7D5E\u308A\u307E\u3059\u3002\u78BA\u8A8D\u304C\u8981\u308B\u304A\u77E5\u3089\u305B\u306F\u300C\u78BA\u8A8D\u3057\u307E\u3057\u305F\u300D\u3092\u62BC\u3059\u307E\u3067\u672A\u8AAD\u306E\u307E\u307E\u3067\u3059\u3002
|
|
17
|
+
--needs-confirm \u306F\u300C\u78BA\u8A8D\u304C\u8981\u308B\u306E\u306B\u307E\u3060\u78BA\u8A8D\u3057\u3066\u3044\u306A\u3044\u300D\u304A\u77E5\u3089\u305B\u3060\u3051\u3092\u51FA\u3057\u307E\u3059\uFF08\u5225\u306E API \u3092\u53E9\u304F\u306E\u3067 --unread / --keyword / --cursor / --limit \u3068\u306F\u4F75\u7528\u3067\u304D\u307E\u305B\u3093\uFF09\u3002
|
|
18
|
+
|
|
19
|
+
--output json \u306F API \u304C\u8FD4\u3059\u5168\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u51FA\u3057\u307E\u3059\u3002
|
|
20
|
+
--output table / text / tsv \u306F\u8981\u7D04\u5217\uFF08${LIST_COLUMNS.join(" / ")}\u3002--needs-confirm \u306E\u3068\u304D\u306F ${UNCONFIRMED_COLUMNS.join(" / ")}\uFF09\u3067\u3059\u3002
|
|
21
|
+
|
|
22
|
+
`+LIST_PAGING_HELP+"\n \u26A0 \u3053\u306E\u4E00\u89A7\u306F\u30DA\u30FC\u30B8\u756A\u53F7\u3067\u4F4D\u7F6E\u3092\u6307\u5B9A\u3057\u307E\u3059\uFF08--cursor \u306F\u30DA\u30FC\u30B8\u756A\u53F7\u3067\u3059\u30FB1\u59CB\u307E\u308A\uFF09\u3002",flags:[...LIST_FLAGS.map(spec=>spec.name==="--cursor"?{...spec,summary:"\u7D9A\u304D\u3092\u53D6\u5F97\u3059\u308B\u30DA\u30FC\u30B8\u756A\u53F7\uFF081\u59CB\u307E\u308A\uFF09",placeholder:"<\u30DA\u30FC\u30B8\u756A\u53F7>"}:spec),{name:"--unread",summary:"\
|
|
23
|
+
\u672A\u8AAD\u3060\u3051\u306B\u7D5E\u308A\u8FBC\u3080",takesValue:false},{name:"--needs-confirm",summary:"\u78BA\u8A8D\u304C\u8981\u308B\u306E\u306B\u672A\u78BA\u8A8D\u306E\u3082\u306E\u3060\u3051\u3092\u51FA\u3059",takesValue:false},{name:"--keyword",summary:"\u30BF\u30A4\u30C8\u30EB\u30FB\u672C\u6587\u306E\u8A9E\u3067\u7D5E\u308A\u8FBC\u3080",takesValue:true,placeholder:"<\u8A9E>"}],paging:listPaging,plan(input){noArgs(input,"list");if(input.flags.has("--needs-confirm")){const clash=NEEDS_CONFIRM_EXCLUSIVE.
|
|
24
|
+
filter(name=>input.flags.has(name));if(clash.length>0){throw new UsageError(`--needs-confirm \u306F ${clash.join(" / ")} \u3068\u4F75\u7528\u3067\u304D\u307E\u305B\u3093`,"twp announcement list help")}return{method:"GET",path:`${ANNOUNCEMENTS_PATH}/unconfirmed`}}return{method:"GET",path:ANNOUNCEMENTS_PATH,query:listQuery(input)}},summarize:body=>{const columns=isRecord(body)&&"total_pages"in body?LIST_COLUMNS:UNCONFIRMED_COLUMNS;return listRows(body).map(row=>pick(row,columns))},raw:body=>listRows(
|
|
25
|
+
body)};function listQuery(input){const keyword=boundedText(input,"--keyword",{maxChars:255,label:"\u691C\u7D22\u8A9E"});const limit=positiveInteger(input.flags,"--limit");const page=positiveInteger(input.flags,"--cursor");return{badges:input.flags.has("--unread")?"unread":void 0,keyword,limit,page:page===void 0?void 0:String(page)}}var getOperation={name:"get",summary:`${LABEL}1\u4EF6\u306E\u672C\u6587\u3068\u8FD4\u4FE1\u3092\u8868\u793A\u3059\u308B`,usage:"twp announcement get <\u304A\u77E5\u3089\u305BID>",
|
|
26
|
+
description:"\u898B\u308B\u3060\u3051\u3067\u306F\u65E2\u8AAD\u306B\u306A\u308A\u307E\u305B\u3093\uFF08\u65E2\u8AAD\u306B\u3059\u308B\u306E\u306F twp announcement read\uFF09\u3002\n\u8FD4\u4FE1\u3092\u53D7\u3051\u4ED8\u3051\u3066\u3044\u308B\u7D44\u7E54\u306E\u304A\u77E5\u3089\u305B\u306F\u3001\u7D9A\u3051\u3066\u8FD4\u4FE1\u4E00\u89A7\u3082\u53D6\u5F97\u3057\u3066 replies \u306B\u5165\u308C\u307E\u3059\uFF08\u81EA\u5206\u306B\u898B\u3048\u308B\u7BC4\u56F2\u3060\u3051\uFF09\u3002\n\n--output text \u3067\u672C\u6587\u3092\u8AAD\u3081\u308B\u5F62\uFF08\u30BF\u30A4\u30C8\u30EB\u30FB\u767A\u4FE1\u8005\u30FB\u672C\u6587\u30FB\u8FD4\u4FE1\uFF09\u3067\u51FA\u3057\u307E\u3059\u3002--output json \u306F\u304A\u77E5\u3089\u305B\u306E\u5168\u30D5\u30A3\u30FC\u30EB\u30C9\u306B replies \u3092\u8DB3\u3057\u305F\u3082\u306E\u3067\u3059\u3002",
|
|
27
|
+
flags:[],plan:input=>({method:"GET",path:itemPath(announcementId(input,"get"))}),plannedNotes:()=>["\u8FD4\u4FE1\u3092\u53D7\u3051\u4ED8\u3051\u3066\u3044\u308B\u7D44\u7E54\u306E\u304A\u77E5\u3089\u305B\u306A\u3089\u3001\u7D9A\u3051\u3066\u8FD4\u4FE1\u4E00\u89A7\uFF08GET \u2026/replies\uFF09\u3082\u53D6\u5F97\u3057\u307E\u3059\u3002"],async execute(input,ctx){const id=announcementId(input,"get");const body=await ctx.send({method:"GET",path:itemPath(id)});const row=envelope(body,LABEL)["announcem\
|
|
28
|
+
ent"];if(!isRecord(row)||row["is_organization"]!==true||row["allow_replies"]!==true){return{...body,replies:[]}}return{...body,replies:replyList(await ctx.send({method:"GET",path:itemPath(id,"/replies")}))}},summarize:body=>pick(detail(body),GET_COLUMNS),raw:detail,document:announcementDocument};var countsOperation={name:"counts",summary:`\u81EA\u5206\u306E\u672A\u8AAD\u306E${LABEL}\u4EF6\u6570\u3092\u8868\u793A\u3059\u308B`,usage:"twp announcement counts",description:"\u78BA\u8A8D\u304C\u8981\u308B\u304A\u77E5\u3089\u305B\u306F\u300C\u78BA\u8A8D\u3057\u307E\u3057\u305F\u300D\u3092\u62BC\u3059\u307E\u3067\u672A\u8AAD\u306B\
|
|
29
|
+
\u6570\u3048\u3089\u308C\u307E\u3059\u3002",flags:[],plan(input){noArgs(input,"counts");return{method:"GET",path:`${ANNOUNCEMENTS_PATH}/counts`}},summarize:counts,raw:counts};function counts(body){const row=envelope(body,"\u304A\u77E5\u3089\u305B\u4EF6\u6570");if(typeof row["unread_count"]!=="number")throw new ApiResponseError("\u304A\u77E5\u3089\u305B\u4EF6\u6570\u306E\u5FDC\u7B54\u306B unread_count \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002");
|
|
30
|
+
return withoutResult(row)}var CONFIRM_STAYS_UNREAD="\u78BA\u8A8D\u304C\u8981\u308B\u304A\u77E5\u3089\u305B\u306F\u3001\u65E2\u8AAD\u306B\u3057\u3066\u3082\u300C\u78BA\u8A8D\u3057\u307E\u3057\u305F\u300D\u3092\u62BC\u3059\u307E\u3067\u672A\u8AAD\u306E\u307E\u307E\u3067\u3059\uFF08twp announcement confirm\uFF09\u3002";var readOperation={name:"read",summary:`${LABEL}\u3092\u65E2\u8AAD\u306B\u3059\u308B\uFF08ID \u3092\u8907\u6570\u4E26\u3079\u3089\u308C\u308B\uFF09`,usage:"twp announcement read <\u304A\u77E5\u3089\
|
|
31
|
+
\u305BID>...",description:`1\u4EF6\u305A\u3064\u65E2\u8AAD\u306B\u3057\u307E\u3059\uFF081\u4EF61\u5F80\u5FA9\uFF09\u3002\u65E2\u306B\u65E2\u8AAD\u306E\u3082\u306E\u306B\u6253\u3063\u3066\u3082\u5909\u308F\u308A\u307E\u305B\u3093\u3002
|
|
32
|
+
${CONFIRM_STAYS_UNREAD}
|
|
33
|
+
\u9014\u4E2D\u3067\u5931\u6557\u3057\u305F\u3089\u3001\u305D\u3053\u3067\u6B62\u3081\u3066\u65E2\u8AAD\u306B\u3067\u304D\u305F ID \u3092 stderr \u306B\u51FA\u3057\u307E\u3059\u3002`,flags:[],plan:input=>({method:"POST",path:itemPath(announcementIds(input)[0],"/read")}),plannedNotes(input){const ids=announcementIds(input);return ids.length>1?[`\u3053\u306E\u3042\u3068\u6B8B\u308A ${ids.length-1} \u4EF6\u306B\u3082\u540C\u3058 POST \u2026/read \u30921\u4EF6\u305A\u3064\u9001\u308A\u307E\u3059\u3002`]:
|
|
34
|
+
[]},async execute(input,ctx){const done=[];for(const id of announcementIds(input)){try{envelope(await ctx.send({method:"POST",path:itemPath(id,"/read")}),"\u65E2\u8AAD\u5316")}catch(error){if(done.length>0)ctx.warn(`\u65E2\u8AAD\u306B\u3067\u304D\u305F\u306E\u306F ${done.length} \u4EF6\u3067\u3059: ${done.join(" ")}\uFF08${id} \u3067\u5931\u6557\u3057\u305F\u305F\u3081\u6B8B\u308A\u306F\u9001\u3063\u3066\u3044\u307E\u305B\u3093\uFF09`);throw error}done.push(id)}return{result:true,read:done}},summarize:readResult,
|
|
35
|
+
raw:readResult,notes:()=>[CONFIRM_STAYS_UNREAD]};function readResult(body){const read=envelope(body,"\u65E2\u8AAD\u5316")["read"];if(!Array.isArray(read))throw new Error("\u5185\u90E8\u30A8\u30E9\u30FC: \u65E2\u8AAD\u5316\u306E\u7D50\u679C\u304C\u7D44\u307F\u7ACB\u3066\u3089\u308C\u3066\u3044\u307E\u305B\u3093");return{read_count:read.length,read}}var readAllOperation={name:"read-all",summary:`\u81EA\u5206\u306B\u5C4A\u3044\u3066\u3044\u308B${LABEL}\u3092\u307E\u3068\u3081\u3066\u65E2\u8AAD\u306B\u3059\u308B\uFF08--yes \u304C\u8981\u308B\uFF09`,
|
|
36
|
+
usage:"twp announcement read-all --yes",description:`\u63B2\u8F09\u4E2D\u306E\u304A\u77E5\u3089\u305B\u3092\u307E\u3068\u3081\u3066\u65E2\u8AAD\u306B\u3057\u307E\u3059\u3002\u65E2\u8AAD\u3092\u672A\u8AAD\u3078\u623B\u3059\u624B\u6BB5\u306F\u7121\u3044\u306E\u3067 --yes \u304C\u8981\u308A\u307E\u3059\u3002
|
|
37
|
+
\u9001\u308B\u524D\u306B\u672A\u8AAD\u4EF6\u6570\u3092\u6570\u3048\u3066 stderr \u306B\u51FA\u3057\u307E\u3059\u3002--dry-run \u306A\u3089\u4EF6\u6570\u3092\u51FA\u3059\u3060\u3051\u3067\u65E2\u8AAD\u306B\u3057\u307E\u305B\u3093\u3002
|
|
38
|
+
${CONFIRM_STAYS_UNREAD}
|
|
39
|
+
read_count \u306F\u30B5\u30FC\u30D0\u304C\u65E2\u8AAD\u306E\u8A18\u9332\u3092\u4ED8\u3051\u305F\u4EF6\u6570\u3067\u3059\uFF08\u65E2\u306B\u65E2\u8AAD\u3060\u3063\u305F\u3082\u306E\u3092\u542B\u3080\u3053\u3068\u304C\u3042\u308A\u307E\u3059\uFF09\u3002`,destructive:true,confirmation:"\u65E2\u8AAD\u3092\u672A\u8AAD\u3078\u623B\u305B\u306A\u3044\u64CD\u4F5C",flags:[],async prepare(input,ctx){noArgs(input,"read-all");return withResolved(input,{unreadCount:String(await ctx.resolver.announcementUnreadCount())})},
|
|
40
|
+
plan:()=>({method:"POST",path:`${ANNOUNCEMENTS_PATH}/read-all`,body:{}}),plannedNotes:input=>[`\u65E2\u8AAD\u306B\u3059\u308B\u5BFE\u8C61: \u672A\u8AAD ${requireResolved(input,"unreadCount")} \u4EF6\uFF08\u9001\u308B\u76F4\u524D\u306B\u6570\u3048\u305F\u4EF6\u6570\u3067\u3059\uFF09\u3002${CONFIRM_STAYS_UNREAD}`],summarize:readAllResult,raw:readAllResult};function readAllResult(body){const count=envelope(body,"\u4E00\u62EC\u65E2\u8AAD\u5316")["read_count"];if(typeof count!=="number")throw new ApiResponseError(
|
|
41
|
+
"\u4E00\u62EC\u65E2\u8AAD\u5316\u306E\u5FDC\u7B54\u306B read_count \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002");return{read_count:count}}var confirmOperation={name:"confirm",summary:`${LABEL}\u3092\u300C\u78BA\u8A8D\u3057\u307E\u3057\u305F\u300D\u306B\u3059\u308B\uFF08--yes \u304C\u8981\u308B\uFF09`,usage:"twp announcement confirm <\u304A\u77E5\u3089\u305BID> --yes",description:"\u753B\u9762\u306E\u300C\u78BA\u8A8D\u3057\u307E\u3057\u305F\u300D\u30DC\u30BF\u30F3\u3068\u540C\u3058\u3067\u3059\u3002\u78BA\u8A8D\u3057\u305F\u4E8B\u5B9F\u306F\u767A\u4FE1\u8005\u304C\u898B\u308B\u8A18\u9332\u3068\u3057\u3066\u6B8B\u308A\
|
|
42
|
+
\u3001\u53D6\u308A\u6D88\u305B\u306A\u3044\u306E\u3067 --yes \u304C\u8981\u308A\u307E\u3059\u3002\n\u78BA\u8A8D\u304C\u8981\u308B\u304A\u77E5\u3089\u305B\uFF08require_confirmation \u304C true\uFF09\u3060\u3051\u304C\u5BFE\u8C61\u3067\u3001\u305D\u308C\u4EE5\u5916\u306F\u30B5\u30FC\u30D0\u304C\u65AD\u308A\u307E\u3059\u3002\n\u78BA\u8A8D\u3059\u308B\u3068\u65E2\u8AAD\u306B\u3082\u306A\u308A\u307E\u3059\u3002\u78BA\u8A8D\u304C\u8981\u308B\u304A\u77E5\u3089\u305B\u306F twp announcement list --needs-confirm \u3067\u4E00\u89A7\u3067\u304D\u307E\u3059\u3002",
|
|
43
|
+
destructive:true,confirmation:"\u78BA\u8A8D\u306E\u8A18\u9332\u304C\u6B8B\u308A\u3001\u53D6\u308A\u6D88\u305B\u306A\u3044\u64CD\u4F5C",flags:[],plan:input=>({method:"POST",path:itemPath(announcementId(input,"confirm"),"/confirm"),body:{}}),summarize:confirmResult,raw:confirmResult};function confirmResult(body){const row=envelope(body,"\u78BA\u8A8D");if(typeof row["confirmed_at"]!=="string")throw new ApiResponseError("\u78BA\u8A8D\u306E\u5FDC\u7B54\u306B confirmed_at \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002");
|
|
44
|
+
return{confirmed_at:row["confirmed_at"]}}var replyListOperation={name:"list",summary:`${LABEL}\u3078\u306E\u8FD4\u4FE1\u3092\u4E00\u89A7\u3059\u308B\uFF08\u81EA\u5206\u306B\u898B\u3048\u308B\u7BC4\u56F2\uFF09`,usage:"twp announcement reply list <\u304A\u77E5\u3089\u305BID>",description:"\u8FD4\u4FE1\u306E\u516C\u958B\u7BC4\u56F2\u304C\u300C\u4F5C\u6210\u8005\u306E\u307F\u300D\u306E\u304A\u77E5\u3089\u305B\u3067\u306F\u3001\u4F5C\u6210\u8005\u30FB\u767A\u4FE1\u90E8\u7F72\u30FB\u7BA1\u7406\u8005\u4EE5\u5916\u306B\u306F\u81EA\u5206\u306E\u8FD4\u4FE1\u3060\u3051\u304C\u8FD4\u308A\u307E\u3059\u3002\n\u8FD4\u4FE1\u3092\u53D7\u3051\u4ED8\u3051\u3066\u3044\u306A\u3044\u304A\u77E5\u3089\u305B\u306F0\u4EF6\u3067\u8FD4\u308A\u3001\u305D\u306E\u65E8\u3092 stderr \u306B\u51FA\u3057\u307E\u3059\u3002",
|
|
45
|
+
flags:[],plan:input=>({method:"GET",path:itemPath(announcementId(input,"reply list"),"/replies")}),summarize:body=>replyList(body).map(row=>pick(row,REPLY_COLUMNS)),raw:replyList,notes:body=>isRecord(body)&&body["allow_replies"]===false?["\u3053\u306E\u304A\u77E5\u3089\u305B\u306F\u8FD4\u4FE1\u3092\u53D7\u3051\u4ED8\u3051\u3066\u3044\u307E\u305B\u3093\uFF080\u4EF6\u306F\u305D\u306E\u305F\u3081\u3067\u3059\uFF09\u3002"]:[]};var REPLY_CREATE_USAGE="twp announcement reply create <\u304A\u77E5\u3089\u305BID> --body-fil\
|
|
46
|
+
e <\u30D5\u30A1\u30A4\u30EB|->";var replyCreateOperation={name:"create",summary:`${LABEL}\u3078\u8FD4\u4FE1\u3059\u308B`,usage:REPLY_CREATE_USAGE,description:`\u672C\u6587\u306F --body-file\uFF08- \u3067\u6A19\u6E96\u5165\u529B\uFF09\u304B --body \u3067\u6E21\u3057\u307E\u3059\uFF08${REPLY_MAX_CHARS} \u6587\u5B57\u307E\u3067\uFF09\u3002
|
|
47
|
+
\u8FD4\u4FE1\u3092\u53D7\u3051\u4ED8\u3051\u3066\u3044\u3066\u63B2\u8F09\u4E2D\u306E\u7D44\u7E54\u306E\u304A\u77E5\u3089\u305B\u3060\u3051\u306B\u9001\u308C\u307E\u3059\uFF08\u305D\u308C\u4EE5\u5916\u306F\u30B5\u30FC\u30D0\u304C\u65AD\u308A\u307E\u3059\uFF09\u3002
|
|
48
|
+
\u304A\u77E5\u3089\u305B\u306E\u4F5C\u6210\u8005\u3078\u901A\u77E5\u304C\u5C4A\u304D\u307E\u3059\u3002`,flags:[{name:"--body-file",summary:"\u8FD4\u4FE1\u672C\u6587\u3092\u8AAD\u3080\u30D5\u30A1\u30A4\u30EB\uFF08- \u3067\u6A19\u6E96\u5165\u529B\uFF09",takesValue:true,placeholder:"<\u30D5\u30A1\u30A4\u30EB|->"},{name:"--body",summary:"\u8FD4\u4FE1\u672C\u6587\uFF08\u77ED\u3044\u3068\u304D\u3060\u3051\u3002\u6539\u884C\u3084\u8A18\u53F7\u3092\u542B\u3080\u306A\u3089 --body-file\uFF09",takesValue:true,
|
|
49
|
+
placeholder:"<\u672C\u6587>"}],async prepare(input){announcementId(input,"reply create");const content=await readBody(input,{flag:"--body",fileFlag:"--body-file",label:"\u8FD4\u4FE1\u672C\u6587",maxChars:REPLY_MAX_CHARS,usage:REPLY_CREATE_USAGE});if(content===void 0)throw new UsageError("\u8FD4\u4FE1\u672C\u6587\u3092 --body-file \u304B --body \u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",REPLY_CREATE_USAGE);return withResolved(input,{content})},plan:input=>({method:"POST",path:itemPath(
|
|
50
|
+
announcementId(input,"reply create"),"/replies"),body:{content:requireResolved(input,"content")}}),summarize:replyCreated,raw:replyCreated};function replyCreated(body){const reply=envelope(body,"\u8FD4\u4FE1")["reply"];if(!isRecord(reply)||typeof reply["id"]!=="string")throw new ApiResponseError("\u8FD4\u4FE1\u306E\u5FDC\u7B54\u306B reply \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002");return reply}var replyResource={name:"\
|
|
51
|
+
reply",summary:`${LABEL}\u3078\u306E\u8FD4\u4FE1\uFF08\u4E00\u89A7\u30FB\u4F5C\u6210\uFF09`,operations:[replyListOperation,replyCreateOperation]};var announcementDomain={name:"announcement",summary:"\u30C6\u30CA\u30F3\u30C8\u30FB\u7D44\u7E54\u306E\u304A\u77E5\u3089\u305B\uFF08\u4E00\u89A7\u30FB\u672C\u6587\u30FB\u4EF6\u6570\u30FB\u65E2\u8AAD\u5316\u30FB\u78BA\u8A8D\u30FB\u8FD4\u4FE1\uFF09",operations:[listOperation,getOperation,countsOperation,readOperation,readAllOperation,confirmOperation],subresources:[
|
|
52
|
+
replyResource]};export{announcementDomain};
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{CommandModelMissingError,MAX_REPORTED_VIOLATIONS,loadCommandModelDomain,loadCommandModelRoutes,validateBody,validateQuery}from"./chunk-NZ7WI4RZ.js";import{NO_REDACT_FLAG,NO_REDACT_NOTICE,exitCodeFor,fetchAllPages,reportError}from"./chunk-
|
|
4
|
-
import{readBody}from"./chunk-
|
|
5
|
-
resolveProfile}from"./chunk-4VZKNEVN.js";import{HELP_TOKEN}from"./chunk-
|
|
6
|
-
import{
|
|
3
|
+
import{CommandModelMissingError,MAX_REPORTED_VIOLATIONS,loadCommandModelDomain,loadCommandModelRoutes,validateBody,validateQuery}from"./chunk-NZ7WI4RZ.js";import{NO_REDACT_FLAG,NO_REDACT_NOTICE,exitCodeFor,fetchAllPages,reportError}from"./chunk-S3A24B2C.js";import{evaluateQuery}from"./chunk-GFLGXGWE.js";import{renderOutput}from"./chunk-MXKAEPXA.js";import{redactSecretValues,redactSecrets,withDebug}from"./chunk-AUAZP2G7.js";import{describeWaitResult,parseWaitOptions,
|
|
4
|
+
waitUntilTerminal}from"./chunk-WVCEKC7V.js";import"./chunk-GXZOFRZH.js";import"./chunk-Q3B65OFC.js";import{readBody}from"./chunk-6LSQCOCJ.js";import"./chunk-Q2KIETMB.js";import"./chunk-GMBJTG6A.js";import"./chunk-QBGEYQ2I.js";import{parseOperationArgs,repeatedValues}from"./chunk-7UB4I3JF.js";import{ApiError,TwpApiClient,appendQuery}from"./chunk-IF2K4PM5.js";import{GLOBAL_OPTIONS_HELP}from"./chunk-YLM54X35.js";import{AuthSession,NotLoggedInError,
|
|
5
|
+
SessionExpiredError,loadCredentials}from"./chunk-XNLIEUAW.js";import{effectiveApiUrl,resolveConfiguredOutput,resolveProfile}from"./chunk-4VZKNEVN.js";import{HELP_TOKEN}from"./chunk-ZGHEF45T.js";import"./chunk-QQRJLH6B.js";import{OUTPUT_FORMATS,resolveOutputFormat}from"./chunk-K2ONOH3L.js";import"./chunk-WVS4W5FY.js";import"./chunk-II5RVJQN.js";import{DEFAULT_MAX_ITEMS,DEFAULT_MAX_PAGES,envelopePaging,isPageNumberEnvelope,pageRangeNotes,positiveInteger,readEnvelopeCursor,
|
|
6
|
+
readPageNumberCursor,shellQuote}from"./chunk-MI6HVYR2.js";import"./chunk-3ZRMMBP5.js";import{ApiResponseError,EXIT_OK,EXIT_WAIT_TIMEOUT,NetworkError,UsageError}from"./chunk-VFPY2A23.js";import{httpFetch}from"./chunk-J7QYPKVK.js";import"./chunk-RZVI6PMW.js";import{stripTerminalControls}from"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var MIN_SEGMENT_CHARS=3;var parsedCache=new WeakMap;function splitSegments(path){return path.split("/").filter(segment=>segment!=="")}function parseRoutes(routes){const cached=parsedCache.get(routes);if(cached!==void 0)return cached;const parsed=[];for(const[key,domain]of Object.entries(routes.routes)){const space=key.indexOf(" ");if(space<=0)continue;const template=key.slice(space+1);parsed.push({method:key.slice(0,space),template,domain,segments:splitSegments(template).map(segment=>/^\{[^/{}]+\}$/.
|
|
7
7
|
test(segment)?null:segment)})}parsedCache.set(routes,parsed);return parsed}function matches(route,segments){if(route.segments.length!==segments.length)return false;return route.segments.every((literal,i)=>literal===null||literal===segments[i])}function compareSpecificity(a,b){const literals=route=>route.segments.filter(segment=>segment!==null).length;const diff=literals(b)-literals(a);if(diff!==0)return diff;for(let i=0;i<a.segments.length;i+=1){const aLiteral=a.segments[i]!==null;const bLiteral=b.
|
|
8
8
|
segments[i]!==null;if(aLiteral!==bLiteral)return aLiteral?-1:1}return 0}function lookupRoute(routes,method,path){const segments=splitSegments(path);const hits=parseRoutes(routes).filter(route=>matches(route,segments));const sameMethod=hits.filter(route=>route.method===method).sort(compareSpecificity);const best=sameMethod[0];if(best!==void 0)return{kind:"matched",domain:best.domain,template:best.template};if(hits.length>0){const[top]=[...hits].sort(compareSpecificity);const template=top.template;
|
|
9
9
|
const methods=[...new Set(hits.filter(route=>route.template===template).map(route=>route.method))].sort();return{kind:"method-mismatch",template,methods}}return{kind:"unknown"}}function pickOperation(operations,method,template){return operations.find(op=>op.method===method&&op.path===template)??null}async function suggestRoutes(routes,path,limit=5){const{default:fuzzysort}=await import("./fuzzysort-DFVKV4B4.js");const parsed=parseRoutes(routes);const templates=[...new Set(parsed.map(route=>route.
|
|
@@ -87,18 +87,7 @@ map(result=>result.target)}}return[]}var API_COMMAND_HELP=`twp api \u2014 API \u
|
|
|
87
87
|
\u8FD1\u3044\u30D1\u30B9\u304C\u3042\u308C\u3070\u4E26\u3079\u307E\u3059\u3002\u4E00\u89A7\u306E\u7D9A\u304D\u306F\u5FDC\u7B54\u306E next_cursor \u3092 --starting-token \u306B\u6E21\u3057\u3066\u8FBF\u3063\u3066\u304F\u3060\u3055\u3044\u3002
|
|
88
88
|
|
|
89
89
|
${GLOBAL_OPTIONS_HELP}
|
|
90
|
-
`;var
|
|
91
|
-
out / --wait-interval \u306F --wait \u3068\u4E00\u7DD2\u306B\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044","\u4F8B: twp api /v2/media/files/generate/video/<task_id> --wait --wait-timeout 300")}return null}const timeoutSeconds=seconds("--wait-timeout",rawTimeout,DEFAULT_WAIT_TIMEOUT_SECONDS,1,MAX_WAIT_TIMEOUT_SECONDS);const intervalSeconds=seconds("--wait-interval",rawInterval,Math.min(DEFAULT_WAIT_INTERVAL_SECONDS,timeoutSeconds),MIN_WAIT_INTERVAL_SECONDS,timeoutSeconds);return{timeoutSeconds,
|
|
92
|
-
intervalSeconds}}function seconds(flag,raw,fallback,min,max){if(raw===void 0)return fallback;const text=raw.trim();if(!/^\d+$/.test(text))throw new UsageError(`${flag} \u306B\u306F\u79D2\u6570\uFF08\u6574\u6570\uFF09\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044: ${raw}`);const value=Number(text);if(value<min||value>max){throw new UsageError(`${flag} \u306F ${min}\u301C${max} \u79D2\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u6307\u5B9A: ${value}\uFF09`,flag==="--wait-ti\
|
|
93
|
-
meout"?`\u4E0A\u9650 ${MAX_WAIT_TIMEOUT_SECONDS} \u79D2\u306F AI CLI \u306E Bash \u30C4\u30FC\u30EB\u306E\u4E0A\u9650\uFF08600\u79D2\uFF09\u306B\u53CE\u3081\u308B\u305F\u3081\u3067\u3059\u3002\u9577\u3044\u51E6\u7406\u306F\u9593\u3092\u7F6E\u3044\u3066\u6253\u3061\u76F4\u3057\u3066\u304F\u3060\u3055\u3044\u3002`:void 0)}return value}function readWaitStatus(body){const status=pickStatus(body);if(status===void 0){throw new UsageError("--wait \u306F status \u3092\u8FD4\u3059\u5FDC\u7B54\u306B\u3057\u304B\u4F7F\u3048\u307E\u305B\u3093\uFF08\u5FDC\u7B54\u306B data.status / status \u304C\u3042\u308A\u307E\u305B\u3093\uFF09",
|
|
94
|
-
"\u975E\u540C\u671F\u51E6\u7406\u306E\u72B6\u614B\u306E\u30D1\u30B9\uFF08\u4F8B: /v2/media/files/generate/video/<task_id>\uFF09\u306B\u4ED8\u3051\u3066\u304F\u3060\u3055\u3044\u3002")}if(status===TERMINAL_OK)return{kind:"completed",status};if(TERMINAL_FAILED.includes(status))return{kind:"failed",status};if(PENDING_STATUSES.includes(status))return{kind:"pending",status};throw new ApiResponseError(`--wait \u304C\u77E5\u3089\u306A\u3044 status \u3067\u3059: ${status}\uFF08\u5F85\u3064\u306E\u306F ${PENDING_STATUSES.
|
|
95
|
-
join(" / ")}\u3001\u7D42\u308F\u308A\u306F ${[TERMINAL_OK,...TERMINAL_FAILED].join(" / ")}\uFF09`)}function pickStatus(body){if(!isRecord(body))return void 0;const data=body["data"];if(isRecord(data)&&typeof data["status"]==="string")return data["status"];if(typeof body["status"]==="string")return body["status"];return void 0}function isRecord(value){return value!==null&&typeof value==="object"&&!Array.isArray(value)}async function waitUntilTerminal(firstBody,options,deps){const startedAt=deps.startedAt??
|
|
96
|
-
deps.now();const deadline=startedAt+options.timeoutSeconds*1e3;let body=firstBody;let state=readWaitStatus(body);let polls=1;while(state.kind==="pending"){if(deps.now()+options.intervalSeconds*1e3>deadline){return{body,state,polls,elapsedSeconds:elapsed(deps.now(),startedAt),timedOut:true}}await deps.sleep(options.intervalSeconds*1e3);let next;try{next=await deps.fetchAgain()}catch(pollError){return{body,state,polls,elapsedSeconds:elapsed(deps.now(),startedAt),timedOut:false,pollError}}let nextState;
|
|
97
|
-
try{nextState=readWaitStatus(next)}catch(statusError){const pollError=statusError instanceof UsageError?new ApiResponseError("\u53D6\u308A\u76F4\u3057\u305F\u5FDC\u7B54\u306B status \u304C\u3042\u308A\u307E\u305B\u3093\uFF08\u6700\u521D\u306E\u5FDC\u7B54\u306B\u306F\u3042\u308A\u307E\u3057\u305F\uFF09"):statusError;return{body,state,polls,elapsedSeconds:elapsed(deps.now(),startedAt),timedOut:false,pollError}}body=next;state=nextState;polls+=1}return{body,state,polls,elapsedSeconds:elapsed(deps.now(),
|
|
98
|
-
startedAt),timedOut:false}}function elapsed(now,startedAt){return Math.round((now-startedAt)/1e3)}function describeWaitResult(result){const head=`\u5F85\u6A5F: ${result.polls} \u56DE\u53D6\u5F97\u30FB${result.elapsedSeconds} \u79D2`;if(result.pollError!==void 0){const reason=result.pollError instanceof Error?result.pollError.message:String(result.pollError);return{note:`${head}\u3002\u53D6\u308A\u76F4\u3057\u306B\u5931\u6557\u3057\u305F\u305F\u3081\u6253\u3061\u5207\u308A\u307E\u3057\u305F\uFF08${reason}\
|
|
99
|
-
\uFF09\u3002\u6700\u5F8C\u306B\u53D6\u308C\u305F\u5FDC\u7B54\uFF08status=${result.state.status}\u30FB**\u672A\u5B8C\u4E86**\uFF09\u3092 stdout \u306B\u51FA\u3057\u3066\u3044\u307E\u3059\u3002\u51E6\u7406\u306F\u30B5\u30FC\u30D0\u3067\u7D9A\u3044\u3066\u3044\u308B\u53EF\u80FD\u6027\u304C\u3042\u308B\u306E\u3067\u3001\u958B\u59CB\u304B\u3089\u6253\u3061\u76F4\u3055\u305A\u540C\u3058\u30B3\u30DE\u30F3\u30C9\u3092\u6253\u3061\u76F4\u3057\u3066\u304F\u3060\u3055\u3044\u3002`,error:result.pollError instanceof
|
|
100
|
-
Error?result.pollError:new Error(reason)}}if(result.timedOut){return{note:`${head}\u3002\u6B21\u306E\u53D6\u5F97\u304C\u4E0A\u9650\u3092\u8D8A\u3048\u308B\u305F\u3081\u6253\u3061\u5207\u308A\u307E\u3057\u305F\u3002status=${result.state.status} \u306E\u307E\u307E**\u672A\u5B8C\u4E86**\u3067\u3059\uFF08\u7D42\u4E86\u30B3\u30FC\u30C9 6\uFF09\u3002\u540C\u3058\u30B3\u30DE\u30F3\u30C9\u3092\u6253\u3061\u76F4\u3059\u3068\u7D9A\u304D\u3092\u5F85\u3066\u307E\u3059\u3002`,error:null}}if(result.state.kind===
|
|
101
|
-
"failed"){return{note:`${head}\u3002status=${result.state.status} \u3067\u7D42\u308F\u308A\u307E\u3057\u305F\u3002`,error:new ApiRejectedError(`\u975E\u540C\u671F\u51E6\u7406\u304C ${result.state.status} \u3067\u7D42\u308F\u308A\u307E\u3057\u305F\uFF08\u5FDC\u7B54\u306F stdout \u306B\u51FA\u3057\u3066\u3044\u307E\u3059\uFF09`)}}return{note:`${head}\u3002status=${result.state.status} \u3067\u7D42\u308F\u308A\u307E\u3057\u305F\u3002`,error:null}}var writeOut=text=>void process.stdout.write(text);var writeErr=text=>void process.stderr.write(text);function line(text){return text===""?"":text.endsWith("\n")?text:`${text}
|
|
90
|
+
`;var writeOut=text=>void process.stdout.write(text);var writeErr=text=>void process.stderr.write(text);function line(text){return text===""?"":text.endsWith("\n")?text:`${text}
|
|
102
91
|
`}var API_METHODS=["GET","POST","PUT","PATCH","DELETE"];var API_FLAGS=[{name:"--method",summary:`HTTP \u30E1\u30BD\u30C3\u30C9\uFF08${API_METHODS.join(" / ")}\u30FB\u65E2\u5B9A GET\uFF09`,takesValue:true,placeholder:"<\u30E1\u30BD\u30C3\u30C9>"},{name:"--body-file",summary:"\u30EA\u30AF\u30A8\u30B9\u30C8\u30DC\u30C7\u30A3\u306E JSON \u30D5\u30A1\u30A4\u30EB\uFF08- \u3067\u6A19\u6E96\u5165\u529B\uFF09",takesValue:true,placeholder:"<\u30D1\u30B9>"},{name:"--cli-input-json",summary:"\u5168\u5F15\u6570\u3092 JSON \u3067\u6E21\u3059\uFF08-\
|
|
103
92
|
\u3067\u6A19\u6E96\u5165\u529B\uFF09",takesValue:true,placeholder:"<\u30D1\u30B9>"},{name:"--generate-cli-skeleton",summary:"--cli-input-json \u3078\u6E21\u3059\u5165\u529B\u3072\u306A\u5F62\u3092\u51FA\u529B\u3057\u3066\u7D42\u4E86\u3059\u308B",takesValue:false},{name:"--query-param",summary:"\u30AF\u30A8\u30EA\u5F15\u6570\uFF08k=v\u30FB\u8907\u6570\u6307\u5B9A\u53EF\uFF09",takesValue:true,placeholder:"<k=v>",repeatable:true},NO_REDACT_FLAG,{name:"--max-items",summary:`\u81EA\u52D5\u30DA\u30FC\u30B8\u30F3\u30B0\u306E\u4E0A\u9650\u4EF6\u6570\uFF08\u65E2\u5B9A ${DEFAULT_MAX_ITEMS}\
|
|
104
93
|
\u30FB\u8D85\u3048\u305F\u3089\u5168\u4EF6\u3067\u306F\u306A\u3044\u3068\u660E\u793A\u3057\u3066\u6B62\u307E\u308B\uFF09`,takesValue:true,placeholder:"<\u4EF6\u6570>"},{name:"--starting-token",summary:"\u3053\u306E\u30AB\u30FC\u30BD\u30EB\uFF08\u524D\u56DE\u306E next_cursor\uFF09\u304B\u3089\u53D6\u5F97\u3092\u59CB\u3081\u308B",takesValue:true,placeholder:"<\u30AB\u30FC\u30BD\u30EB>"},{name:"--no-paginate",summary:"\u81EA\u52D5\u30DA\u30FC\u30B8\u30F3\u30B0\u3092\u305B\u305A1\u30DA\u30FC\u30B8\u3060\u3051\u53D6\u5F97\u3059\u308B",
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{RESIDENT_TOKEN_CAP,activateModeFiles,activatePermissionSettings,buildResidentSet,buildSystemPrompt,createAuditLogger,createTwpToolkit,currentBranch,describeAuditLog,describeToolCatalog,displayCwd,executeTool,findProjectTwpSubdir,localTools,lstatOrNull,parseFrontMatter,parseRule,persistProjectAllow,projectPermissionsPath,projectRootFor,readFileTool,residentInputs,resolveGitExecutable,runTurn,secretReason}from"./chunk-LKS7GANP.js";
|
|
4
|
-
|
|
5
|
-
minSupportedBlockMessage}from"./chunk-DXXFUNYN.js";import"./chunk-4VZKNEVN.js";import{parseArgv}from"./chunk-
|
|
3
|
+
import{buildDiffLines,diffStat}from"./chunk-VRBI2NPI.js";import{RESIDENT_TOKEN_CAP,activateModeFiles,activatePermissionSettings,buildResidentSet,buildSystemPrompt,createAuditLogger,createTwpToolkit,currentBranch,describeAuditLog,describeToolCatalog,displayCwd,executeTool,findProjectTwpSubdir,localTools,lstatOrNull,parseFrontMatter,parseRule,persistProjectAllow,projectPermissionsPath,projectRootFor,readFileTool,residentInputs,resolveGitExecutable,runTurn,secretReason}from"./chunk-LKS7GANP.js";
|
|
4
|
+
import"./chunk-NZ7WI4RZ.js";import"./chunk-AUAZP2G7.js";import{require_fuzzysort}from"./chunk-DIMZRTLE.js";import"./chunk-Q2KIETMB.js";import"./chunk-GMBJTG6A.js";import"./chunk-QBGEYQ2I.js";import"./chunk-IF2K4PM5.js";import{RelayError,builtinCatalog,createRuntime,loadCachedCatalog,modelLabel,pickModel,toModelInfos}from"./chunk-6QOT7CHX.js";import"./chunk-D233KKXW.js";import"./chunk-XNLIEUAW.js";import{checkMinSupportedVersion,isBelowMinSupported,
|
|
5
|
+
minSupportedBlockMessage}from"./chunk-DXXFUNYN.js";import"./chunk-4VZKNEVN.js";import{parseArgv}from"./chunk-FMJUPLDG.js";import{applyPermissionMode,checkPermission,describePermissionMode,getMode,isModeId,modeSource,nextMode}from"./chunk-NAUH75MM.js";import"./chunk-ZGHEF45T.js";import"./chunk-QQRJLH6B.js";import{isFullWidth,isWide,stringWidth,stripAnsi}from"./chunk-WVS4W5FY.js";import"./chunk-N2UVRM3Z.js";import"./chunk-II5RVJQN.js";import"./chunk-VFPY2A23.js";
|
|
6
6
|
import"./chunk-PMOUHEJQ.js";import{proxyDiagnostics}from"./chunk-J7QYPKVK.js";import{configReadDirs,twpHomeDir}from"./chunk-RZVI6PMW.js";import{stripTerminalControls}from"./chunk-NHYMHCAT.js";import{__commonJS,__export,__require,__toESM}from"./chunk-VSJBJXZO.js";var require_react_production=__commonJS({"node_modules/react/cjs/react.production.js"(exports){"use strict";var REACT_ELEMENT_TYPE=Symbol.for("react.transitional.element");var REACT_PORTAL_TYPE=Symbol.for("react.portal");var REACT_FRAGMENT_TYPE=Symbol.for("react.fragment");var REACT_STRICT_MODE_TYPE=Symbol.for("react.strict_mode");var REACT_PROFILER_TYPE=Symbol.for("react.profiler");var REACT_CONSUMER_TYPE=Symbol.for("react.consumer");var REACT_CONTEXT_TYPE=Symbol.for("react.context");var REACT_FORWARD_REF_TYPE=Symbol.
|
|
7
7
|
for("react.forward_ref");var REACT_SUSPENSE_TYPE=Symbol.for("react.suspense");var REACT_MEMO_TYPE=Symbol.for("react.memo");var REACT_LAZY_TYPE=Symbol.for("react.lazy");var REACT_ACTIVITY_TYPE=Symbol.for("react.activity");var REACT_VIEW_TRANSITION_TYPE=Symbol.for("react.view_transition");var MAYBE_ITERATOR_SYMBOL=Symbol.iterator;function getIteratorFn(maybeIterable){if(null===maybeIterable||"object"!==typeof maybeIterable)return null;maybeIterable=MAYBE_ITERATOR_SYMBOL&&maybeIterable[MAYBE_ITERATOR_SYMBOL]||
|
|
8
8
|
maybeIterable["@@iterator"];return"function"===typeof maybeIterable?maybeIterable:null}var ReactNoopUpdateQueue={isMounted:function(){return false},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}};var assign=Object.assign;var emptyObject={};function Component(props,context,updater){this.props=props;this.context=context;this.refs=emptyObject;this.updater=updater||ReactNoopUpdateQueue}Component.prototype.isReactComponent={};Component.prototype.setState=
|
|
@@ -1212,7 +1212,7 @@ cwd()){const listed=await gitListFiles(cwd2);const raw=listed??await walkFiles(c
|
|
|
1212
1212
|
1;const after=/^[^\s]*/.exec(text.slice(cursor))?.[0]??"";return{query,start,end:cursor+after.length}}var TWP_SLASH_ROUTES={"/tasks":{domain:"task",operation:"list"},"/task":{domain:"task",operation:"get"},"/projects":{domain:"project",operation:"list"}};function isTwpSlashCommand(name){return Object.hasOwn(TWP_SLASH_ROUTES,name)}async function runTwpSlashCommand(name,args,deps){const route=TWP_SLASH_ROUTES[name];if(!Object.hasOwn(TWP_SLASH_ROUTES,name)||route===void 0){return{code:2,out:"",err:`\u4E0D\u660E\u306A\u30B3\u30DE\u30F3\u30C9: ${name}
|
|
1213
1213
|
`}}const parsed=parseArgv([route.domain,route.operation,...args]);if(parsed.command!=="domain"||parsed.domain!==route.domain){return{code:2,out:"",err:`${name}: \u3053\u306E\u5F15\u6570\u306F\u4F7F\u3048\u307E\u305B\u3093\uFF08${args.join(" ")}\uFF09
|
|
1214
1214
|
`}}if(parsed.unknown.length>0){return{code:2,out:"",err:`\u4E0D\u660E\u306A\u5F15\u6570: ${parsed.unknown.join(" ")}
|
|
1215
|
-
`}}let out="";let err="";const io={out:text=>void(out+=text),err:text=>void(err+=text),isTty:true};const globals={profile:parsed.profile??deps.profile,...parsed.output!==void 0?{output:parsed.output}:{},...parsed.query!==void 0?{query:parsed.query}:{},dryRun:parsed.dryRun,debug:parsed.debug,yes:parsed.yes,refresh:parsed.refresh};const{runDomain}=await import("./run-
|
|
1215
|
+
`}}let out="";let err="";const io={out:text=>void(out+=text),err:text=>void(err+=text),isTty:true};const globals={profile:parsed.profile??deps.profile,...parsed.output!==void 0?{output:parsed.output}:{},...parsed.query!==void 0?{query:parsed.query}:{},dryRun:parsed.dryRun,debug:parsed.debug,yes:parsed.yes,refresh:parsed.refresh};const{runDomain}=await import("./run-TNFPATQF.js");try{const code=await runDomain({domain:route.domain,...parsed.operation!==void 0?{operation:parsed.operation}:
|
|
1216
1216
|
{},argv:parsed.domainArgv,help:parsed.domainHelp,globals,version:deps.version,io,...deps.fetchImpl!==void 0?{fetchImpl:deps.fetchImpl}:{}});return{code,out,err}}catch(e){return{code:1,out,err:`${err}${e.message}
|
|
1217
1217
|
`}}}var GIT_LOG_OUTPUT=["9f3c1a2 feat(ui): \u4E00\u89A7\u306E\u30D5\u30A3\u30EB\u30BF\u3092 URL \u30AF\u30A8\u30EA\u3068\u540C\u671F\u3059\u308B","4b8e0d7 fix(ui): \u4EEE\u60F3\u30B9\u30AF\u30ED\u30FC\u30EB\u306E\u884C\u9AD8\u3055\u3092\u5B9F\u6E2C\u5024\u306B\u5408\u308F\u305B\u308B","c15a99e refactor(api): \u4E00\u89A7\u53D6\u5F97\u306E\u30DA\u30FC\u30B8\u30F3\u30B0\u51E6\u7406\u3092\u5171\u901A\u5316\u3059\u308B","2d70f4b test: \u4E00\u89A7\u30D5\u30A3\u30EB\u30BF\u306E\u56DE\u5E30\u30C6\u30B9\u30C8\u3092\u8FFD\u52A0\u3059\u308B",
|
|
1218
1218
|
"a6e2b38 fix(api): \u7A7A\u306E\u691C\u7D22\u6761\u4EF6\u3067\u5168\u4EF6\u8FD4\u3089\u306A\u3044\u3088\u3046\u306B\u3059\u308B","7c40d51 chore(deps): \u958B\u767A\u4F9D\u5B58\u3092\u6700\u65B0\u3078\u66F4\u65B0\u3059\u308B","e83b1c6 docs: \u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u624B\u9806\u306B Node 22 \u306E\u524D\u63D0\u3092\u8FFD\u8A18\u3059\u308B","b91f7a4 fix(ui): \u30E2\u30FC\u30C0\u30EB\u306E\u91CD\u306A\u308A\u9806\u3092\u6307\u5B9A\u3059\u308B","5a2c8e0 perf(api): \u4E00\u89A7\u306E N+1 \u3092\u89E3\u6D88\u3059\u308B",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import
|
|
4
|
-
ApiResponseError,UsageError}from"./chunk-
|
|
3
|
+
import"./chunk-Q2KIETMB.js";import{isSafePathSegment}from"./chunk-GMBJTG6A.js";import"./chunk-QBGEYQ2I.js";import{PUNCH_TYPES,assertMonthOpen,attendanceDomain}from"./chunk-IU5P6MY5.js";import{dateFlag,monthFlag}from"./chunk-EXT4AIDF.js";import"./chunk-IF2K4PM5.js";import"./chunk-4VZKNEVN.js";import"./chunk-II5RVJQN.js";import{requireResolved,withResolved}from"./chunk-PS5QFKHB.js";import{isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiRejectedError,
|
|
4
|
+
ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";import"./chunk-J7QYPKVK.js";import"./chunk-RZVI6PMW.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var CREATE_USAGE="twp attendance record create --date <YYYY-MM-DD> --time <HH:MM> --type <clock-in|clock-out|break-start|break-end|switch> [--project <\u30B3\u30FC\u30C9|ID>] [--task <\u30BF\u30B9\u30AFID>] [--memo <\u30E1\u30E2>]";var UPDATE_USAGE="twp attendance record update <\u8A18\u9332ID> --memo <\u30E1\u30E2> [--month <YYYY-MM>]";var DELETE_USAGE="twp attendance record delete <\u8A18\u9332ID> --reason <\u7406\u7531> --yes [--month <YYYY-MM>]";var MOVE_USAGE="twp attendance record move <\u8A18\u9332\
|
|
5
5
|
ID> --project <\u30B3\u30FC\u30C9|ID> [--month <YYYY-MM>]";var TEXT_MAX=500;var UUID_PATTERN=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;var TIME_PATTERN=/^(\d{2}):(\d{2})(?::(\d{2}))?$/;var CLOSED_REASON="\u30B5\u30FC\u30D0\u306F\u7DE0\u3081\u6E08\u307F\u306E\u6708\u3078\u306E\u4FEE\u6B63\u3092\u62D2\u5426\u305B\u305A\u7DE0\u3081\u306E\u96C6\u8A08\u3092\u6D17\u3044\u66FF\u3048\u308B\u306E\u3067\u3001CLI \u304C\u9001\u308B\u524D\u306B\u6B62\u3081\u3066\u3044\u307E\u3059\u3002";
|
|
6
6
|
var FORBIDDEN="\u81EA\u5206\u306E\u6253\u523B\u306E\u4FEE\u6B63\u306B\u306F\u6253\u523B\u4FEE\u6B63\u306E\u6A29\u9650\uFF08\u30E6\u30FC\u30B6\u30FC\u8A2D\u5B9A\u306E\u300C\u6253\u523B\u4FEE\u6B63\u300D\uFF09\u3068\u52E4\u6020\u306E\u5229\u7528\u6A29\u9650\u304C\u5FC5\u8981\u3067\u3059\u3002\u30C6\u30CA\u30F3\u30C8\u306E\u7BA1\u7406\u8005\u306B\u4ED8\u4E0E\u3092\u4F9D\u983C\u3057\u3066\u304F\u3060\u3055\u3044";var RECORD_COLUMNS=["id","type","type_label","recorded_at","year_month","project_id","t\
|
|
7
7
|
ask_id","memo","is_manual","deleted_at"];var LABELS={clock_in:"\u51FA\u52E4",clock_out:"\u9000\u52E4",break_start:"\u4F11\u61A9\u958B\u59CB",break_end:"\u4F11\u61A9\u7D42\u4E86",switch:"\u5207\u66FF"};var TYPE_ORDER={break_start:1,break_end:2,switch:3,clock_out:4,clock_in:5};function zonedParts(epochMs,timeZone){const parts=new Intl.DateTimeFormat("en-US",{timeZone,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",hourCycle:"h23"}).formatToParts(new Date(
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{hoursMinutes}from"./chunk-
|
|
3
|
+
import{hoursMinutes}from"./chunk-IU5P6MY5.js";import{monthFlag}from"./chunk-EXT4AIDF.js";import"./chunk-PS5QFKHB.js";import{isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";import"./chunk-VSJBJXZO.js";var MONTH_FLAG={name:"--month",summary:"\u5BFE\u8C61\u306E\u5E74\u6708\uFF08YYYY-MM\uFF09",takesValue:true,placeholder:"<YYYY-MM>"};var ME_FLAG={name:"--me",summary:"\u81EA\u5206\u306E\u5206\u3060\u3051\u3092\u8868\u793A\u3059\u308B\uFF08\u7121\u3051\u308C\u3070\u5168\u54E1\u5206\u30FB\u7BA1\u7406\u8005\uFF09",takesValue:false};var FORBIDDEN_ADMIN="\u6A29\u9650\u304C\u8DB3\u308A\u307E\u305B\u3093\u3002\u5168\u54E1\u5206\uFF08--me \u306A\u3057\uFF09\u306F\u52E4\u6020\u306E\u7BA1\u7406\u8005\u6A29\u9650\uFF08\u52E4\u6020: \u7BA1\u7406\u8005\uFF09\u3001\u81EA\u5206\u306E\u5206\uFF08--me\uFF09\u306F\u52E4\u6020\u306E\u5229\u7528\u6A29\u9650\u304C\u8981\u308A\u307E\u3059\u3002\u30C6\u30CA\u30F3\u30C8\u306E\u7BA1\u7406\u8005\u306B\u6A29\u9650\u306E\u4ED8\u4E0E\u3092\u4F9D\u983C\u3057\u3066\u304F\u3060\u3055\u3044";
|
|
4
4
|
function listBody(spec,body){if(!isRecord(body)||!Array.isArray(body[spec.key])){throw new ApiResponseError(`${spec.label}\u306E\u5FDC\u7B54\u306B ${spec.key} \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}return body}function monthListOperation(spec){const usage=`twp ${spec.domain} list [--month <YYYY-MM>] [--me]`;return{name:"list",summary:`\u6708\u306E${spec.label}\u3092\u4E00\u89A7\u3059\u308B\uFF08--me \u3067\u81EA\u5206\u306E\u5206\u30FB\u7121\u3051\u308C\u3070\u5168\u54E1\u5206\uFF1D\u7BA1\u7406\u8005\uFF09`,
|
|
5
5
|
usage,description:`GET ${spec.path} \u3092\u8868\u793A\u3057\u307E\u3059\uFF08\u5168\u54E1\u5206\u30FB\u52E4\u6020\u306E\u7BA1\u7406\u8005\u6A29\u9650\u304C\u5FC5\u8981\uFF09\u3002--me \u3092\u4ED8\u3051\u308B\u3068 GET ${spec.path}/me\uFF08\u81EA\u5206\u306E\u5206\uFF09\u3067\u3059\u3002
|
|
6
6
|
--month \u304C\u7121\u3051\u308C\u3070\u4ECA\u6708\u3067\u3059\uFF08\u30C6\u30CA\u30F3\u30C8\u306E\u696D\u52D9\u65E5\u306E\u533A\u5207\u308A\u3067\u30B5\u30FC\u30D0\u304C\u6C7A\u3081\u307E\u3059\uFF09\u3002
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{readBody}from"./chunk-
|
|
4
|
-
import{ApiResponseError,UsageError}from"./chunk-
|
|
3
|
+
import{readBody}from"./chunk-6LSQCOCJ.js";import{BACKLOG_BASE_PATH,BACKLOG_PROJECT_SCOPE_LABEL,BACKLOG_SCOPE_LABEL,backlogSpacePath,isExactNumericId,resolveNamed}from"./chunk-Q2KIETMB.js";import"./chunk-GMBJTG6A.js";import"./chunk-QBGEYQ2I.js";import"./chunk-IF2K4PM5.js";import"./chunk-4VZKNEVN.js";import"./chunk-II5RVJQN.js";import{requireResolved,singleRef,withResolved}from"./chunk-PS5QFKHB.js";import{isRecord,pick}from"./chunk-3ZRMMBP5.js";
|
|
4
|
+
import{ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";import"./chunk-J7QYPKVK.js";import"./chunk-RZVI6PMW.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var DEFAULT_COUNT=20;var MAX_COUNT=100;var NUMERIC=/^[0-9]+$/;var ISSUE_REF=/^(?:[A-Za-z0-9_]+-[0-9]+|[0-9]+)$/;var DATE=/^[0-9]{4}-[0-9]{2}-[0-9]{2}$/;var SPACE_COLUMNS=["id","space_url"];var PROJECT_COLUMNS=["id","projectKey","name"];var ISSUE_LIST_COLUMNS=["issueKey","summary","status","assignee","priority","dueDate","updated","descriptionTruncated"];var ISSUE_GET_COLUMNS=["id","issueKey","projectId","summary","description","descriptionTruncated","status","issueType","priority","assignee","cr\
|
|
5
5
|
eatedUser","parentIssueId","startDate","dueDate","estimatedHours","actualHours","created","updated"];var COMMENT_COLUMNS=["id","created","createdUserId","createdUser","content","changeLog"];function commentRow(row){const source=isRecord(row)?row:{};const user=isRecord(source["createdUser"])?source["createdUser"]:{};return pick({...source,createdUserId:user["id"]??null,createdUser:user["name"]??null},COMMENT_COLUMNS)}var ATTACHMENT_COLUMNS=["id","name","size","contentType","createdUserId","create\
|
|
6
6
|
dUser","created"];var STATUS_COLUMNS=["id","name","color"];var USER_COLUMNS=["id","userId","name","mailAddress","roleType"];var SPACE_FLAG={name:"--space",summary:"Backlog \u30B9\u30DA\u30FC\u30B9\uFF08ID / \u30B9\u30DA\u30FC\u30B9URL / \u30B5\u30D6\u30C9\u30E1\u30A4\u30F3\uFF09\u3002\u767B\u9332\u304C1\u4EF6\u306A\u3089\u7701\u7565\u3067\u304D\u307E\u3059",takesValue:true,placeholder:"<ID|URL>"};var BODY_MAX_CHARS=1e5;var BODY_FLAGS=[{name:"--body-file",summary:"\u672C\u6587\u3092\u30D5\u30A1\u30A4\u30EB\u304B\u3089\u8AAD\u3080\uFF08- \u3067\u6A19\u6E96\u5165\u529B\uFF09\u3002\u6539\u884C\u30FBMarkdown\
|
|
7
7
|
\u3092\u58CA\u3055\u306A\u3044\u4E3B\u7D4C\u8DEF",takesValue:true,placeholder:"<\u30D1\u30B9|->"},{name:"--body",summary:"\u672C\u6587\u3092\u76F4\u63A5\u6307\u5B9A\u3059\u308B\uFF08\u4E00\u884C\u5411\u3051\u3002--body-file \u3068\u306E\u4F75\u7528\u306F\u30A8\u30E9\u30FC\uFF09",takesValue:true,placeholder:"<\u6587\u5B57\u5217>"}];function bodyHelp(fileFlag,inlineFlag){return`\u672C\u6587\u306F ${fileFlag} \u3092\u4E3B\u7D4C\u8DEF\u306B\u3057\u3066\u304F\u3060\u3055\u3044\u3002\u30B7\u30A7\u30EB\u306E\u5F15\u6570\u306B\u8F09\u305B\u308B\u3068\u6539\u884C\u30FBMarkdown \u306E\u898B\u51FA\u3057\uFF08#\uFF09\u30FB
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{analysisForbidden}from"./chunk-
|
|
3
|
+
import{analysisForbidden}from"./chunk-CUPPIHSJ.js";import{repeatedValues}from"./chunk-7UB4I3JF.js";import"./chunk-IU5P6MY5.js";import"./chunk-EXT4AIDF.js";import{ApiError,MultipartBody}from"./chunk-IF2K4PM5.js";import"./chunk-QQRJLH6B.js";import{nonEmpty}from"./chunk-MI6HVYR2.js";import{requireResolved,withResolved}from"./chunk-PS5QFKHB.js";import{isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiRejectedError,ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";
|
|
4
4
|
import"./chunk-J7QYPKVK.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";import fs from"fs";import path from"path";var PATH="/api/v2/budget";var ANALYSIS_FORBIDDEN=analysisForbidden("");function budgetForbidden(body){if(body?.error==="forbidden")return"\u3053\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3092\u95B2\u89A7\u3067\u304D\u307E\u305B\u3093\uFF08\u30E1\u30F3\u30D0\u30FC\u3067\u306A\u3044\u304B\u3001\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u6A29\u9650\u304C\u8DB3\u308A\u307E\u305B\u3093\uFF09\u3002\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u7BA1\u7406\u8005\u306B\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002";
|
|
5
5
|
return ANALYSIS_FORBIDDEN(body)}var FORBIDDEN=budgetForbidden;var EDIT_HINT="\u76EE\u6A19\u306E\u8A2D\u5B9A\u30FB\u30B3\u30D4\u30FC\u30FB\u53D6\u308A\u8FBC\u307F\u306F\u3001\u5168\u4F53\u7BA1\u7406\u8005\u304B\u5206\u6790\u306E\u6A29\u9650\u304C\u300C\u7BA1\u7406\u8005\u300D\u306E\u4EBA\u3060\u3051\u304C\u3067\u304D\u307E\u3059\u3002\u6309\u5206\u306F\u305D\u308C\u306B\u52A0\u3048\u3066\u3001\u305D\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u7BA1\u7406\u8005\u3082\u3067\u304D\u307E\u3059\n\uFF08\u3069\u3061\u3089\u3082\u5206\u6790\u306E\u6A29\u9650\u304C\u300C\u306A\u3057\u300D\u3067\u306F\u4F7F\u3048\u307E\u305B\u3093\uFF09\u3002";
|
|
6
6
|
var YEAR_MIN=2e3;var YEAR_MAX=2100;var IMPORT_MAX_BYTES=2048*1024;var SET_FILE_MAX_BYTES=4*1024*1024;var AMOUNT_MAX=999999999999;var SHOWN_OVERWRITES=24;var BOM=new RegExp(`^${String.fromCharCode(65279)}`);function usageOf(op){return`twp budget ${op} help`}function text(value){return typeof value==="string"||typeof value==="number"?String(value):""}function yen(value){return typeof value==="number"?`${value.toLocaleString("ja-JP")} \u5186`:"\uFF08\u306A\u3057\uFF09"}function noArgs(input,op){if(input.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{apiExit,currentRevisionOf,errorDetail,pickNumber,printDiff,readUtf8Strict,shellQuote}from"./chunk-
|
|
3
|
+
import{apiExit,currentRevisionOf,errorDetail,pickNumber,printDiff,readUtf8Strict,shellQuote}from"./chunk-A4LFG7MW.js";import"./chunk-VRBI2NPI.js";import{EXIT_API_SERVER,EXIT_FAILURE,EXIT_OK,EXIT_USAGE}from"./chunk-VFPY2A23.js";import{stripTerminalControls}from"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";import*as fs from"fs";var DEFAULT_CHARTER_FILE="CONSTITUTION.md";async function runCharterCommand(deps,opts){const out=deps.out??(t=>void process.stdout.write(stripTerminalControls(t)));const err=deps.err??(t=>void process.stderr.write(stripTerminalControls(t)));const readFile=deps.readFile??readUtf8Strict;const writeFile=deps.writeFile??((p,c)=>fs.writeFileSync(p,c,"utf8"));const exists=deps.exists??(p=>fs.existsSync(p));return opts.op==="push"?push(deps.api,opts,{out,err,readFile}):pull(deps.api,opts,{out,err,readFile,
|
|
4
4
|
writeFile,exists})}async function push(api,opts,io){if(opts.file===void 0){io.err("--file <\u30D1\u30B9> \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u4F8B: --file CONSTITUTION.md\uFF09\n");return EXIT_USAGE}let expected;if(opts.revision!==void 0){if(!/^\d+$/.test(opts.revision)){io.err(`--revision \u306F0\u4EE5\u4E0A\u306E\u6574\u6570\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044: ${opts.revision}
|
|
5
5
|
`);return EXIT_USAGE}if(!opts.yes){io.err("--revision \u306F --yes \u3068\u4E00\u7DD2\u306B\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08--yes \u306A\u3057\u3067\u306F\u767B\u9332\u3057\u307E\u305B\u3093\uFF09\n");return EXIT_USAGE}expected=Number(opts.revision)}let local;try{local=io.readFile(opts.file)}catch(e){io.err(`\u30D5\u30A1\u30A4\u30EB\u3092\u8AAD\u3081\u307E\u305B\u3093: ${opts.file}\uFF08${e.message}\uFF09
|
|
6
6
|
`);return EXIT_USAGE}const current=await fetchState(api,io.err);if(typeof current==="number")return current;const before=current.charter??"";if(current.charter!==null&¤t.charter===local){io.out(`\u5DEE\u5206\u306F\u3042\u308A\u307E\u305B\u3093\uFF08revision ${current.revision}\uFF09\u3002\u767B\u9332\u3057\u307E\u305B\u3093\u3067\u3057\u305F\u3002
|