@tocca-systems/twp-cli 0.94.2 → 0.96.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 +18 -0
- package/README.md +53 -2
- package/dist/{agent-VWO2M7L6.js → agent-MFCLZCFG.js} +2 -2
- package/dist/{agent-loop-J6YSC5BU.js → agent-loop-P5KTSZZF.js} +36 -37
- package/dist/{ai-dispatch-SJLD7VHR.js → ai-dispatch-FAX42DSC.js} +2 -2
- package/dist/{analysis-KOUABCSN.js → analysis-7SIWYTSU.js} +3 -3
- package/dist/{announcement-B5XGD27Z.js → announcement-XFLWDATJ.js} +1 -1
- package/dist/{api-command-VL4S7EFI.js → api-command-STY4LFJG.js} +25 -22
- package/dist/{api-key-YSHTZPY2.js → api-key-PD3VKBSB.js} +2 -2
- package/dist/{app-SXZKX74L.js → app-4GGGNEAQ.js} +6 -6
- package/dist/{attendance-correct-7YUT2ICL.js → attendance-correct-NKUD5CQM.js} +2 -2
- package/dist/{attendance-lists-DJ6AQH34.js → attendance-lists-5U63THUW.js} +2 -2
- package/dist/{auto-update-worker-XT4VB4LJ.js → auto-update-worker-3GV3BK5P.js} +1 -1
- package/dist/{backlog-ANCHSCHE.js → backlog-73FLZLQW.js} +2 -2
- package/dist/{budget-2O6WSE6I.js → budget-QIFM3KZ3.js} +2 -2
- package/dist/{business-hours-I4X6YQS3.js → business-hours-37MRL53C.js} +1 -1
- package/dist/{capacity-list-command-FFCCFT7N.js → capacity-list-command-DDCYRLGV.js} +1 -1
- package/dist/{chunk-UGBWUAI3.js → chunk-37WVEY6R.js} +1 -1
- package/dist/{chunk-N43TTR2I.js → chunk-37ZCPHYE.js} +1 -1
- package/dist/{chunk-EYEQMRLV.js → chunk-5JUE6FZC.js} +1 -1
- package/dist/{chunk-X3F7DOP5.js → chunk-6FI4ZMZ7.js} +1 -1
- package/dist/{chunk-CRUWTSYP.js → chunk-6HBZRMDD.js} +1 -1
- package/dist/{chunk-QVRWXH6S.js → chunk-7KU2EXEE.js} +1 -1
- package/dist/chunk-BD7O73GK.js +18 -0
- package/dist/chunk-BEUPNDJE.js +13 -0
- package/dist/{chunk-5WJWURQT.js → chunk-CARORVXI.js} +1 -1
- package/dist/{chunk-6EIW4KTU.js → chunk-F36CIBG3.js} +1 -1
- package/dist/{chunk-BFFT4CYG.js → chunk-FBTOIECJ.js} +1 -1
- package/dist/{chunk-QYAP2LAH.js → chunk-FEE6SMGH.js} +1 -1
- package/dist/{chunk-C7MCP63I.js → chunk-FKTYYARF.js} +1 -1
- package/dist/{chunk-5LRVZ2B5.js → chunk-G3N5OQDZ.js} +1 -1
- package/dist/{chunk-HWKHVP23.js → chunk-HEH3PUW2.js} +1 -1
- package/dist/{chunk-7AQIMLEK.js → chunk-HUKKZ252.js} +1 -1
- package/dist/{chunk-4557EX6E.js → chunk-HVBY74Q3.js} +1 -1
- package/dist/{chunk-WTYIFLVB.js → chunk-JULG6KDV.js} +7 -7
- package/dist/{chunk-5B7GR6NM.js → chunk-MC2AHH4Q.js} +1 -1
- package/dist/{chunk-N3N6VIV3.js → chunk-MDZ6IVMB.js} +1 -1
- package/dist/{chunk-AONJZKHQ.js → chunk-NDDFZEBO.js} +1 -1
- package/dist/{chunk-QQRJLH6B.js → chunk-OKATZ4SN.js} +1 -1
- package/dist/{chunk-FEUODLIQ.js → chunk-PBMENZ4V.js} +1 -1
- package/dist/{chunk-LLBLGHHZ.js → chunk-PJ7IKTZI.js} +13 -3
- package/dist/{chunk-TUFWQYKB.js → chunk-PLC52S3V.js} +1 -1
- package/dist/{chunk-JFR7DKVX.js → chunk-QKTEMDDP.js} +10 -5
- package/dist/{chunk-DCZK6A3Z.js → chunk-T6ARS4Y3.js} +11 -9
- package/dist/{chunk-JBWE7SQR.js → chunk-TESDN34O.js} +1 -1
- package/dist/{chunk-QBUVJBZ2.js → chunk-TJQZYYG3.js} +1 -1
- package/dist/{chunk-JJAXQDIW.js → chunk-TQ7TNMW5.js} +1 -1
- package/dist/{chunk-STCWJIAD.js → chunk-U6REFY7T.js} +1 -1
- package/dist/{chunk-AGT2IWAY.js → chunk-VEEZJNOB.js} +1 -1
- package/dist/chunk-VGT2EGH6.js +6 -0
- package/dist/{chunk-DMMSNDDD.js → chunk-X6FAZIQS.js} +1 -1
- package/dist/{chunk-3E7QVTKD.js → chunk-YSVRHBHW.js} +1 -1
- package/dist/{chunk-SIZU47BB.js → chunk-ZEVPGUKL.js} +1 -1
- package/dist/cli.js +31 -10
- package/dist/{commands-ZIGB6CQT.js → commands-CARE564N.js} +1 -1
- package/dist/{commands-EK6AMMIV.js → commands-LQNIOT7B.js} +11 -11
- package/dist/{company-HUP72FGC.js → company-IOQQLLSX.js} +3 -3
- package/dist/{completion-INVEPDAF.js → completion-TQIXRYIP.js} +1 -1
- package/dist/{configure-DONZ3M6N.js → configure-XPULH6FO.js} +1 -1
- package/dist/{contract-CCSCR7BO.js → contract-V6O2IGF4.js} +2 -2
- package/dist/{deposit-XMZZBRSY.js → deposit-CQ7GTE2G.js} +2 -2
- package/dist/{dispatch-ZRC3TVFT.js → dispatch-E3WXF4PH.js} +1 -1
- package/dist/{domain-knowledge-44FQ4EIL.js → domain-knowledge-YZCNJPFF.js} +2 -2
- package/dist/{estimate-3JTW4EES.js → estimate-KTNJQVEX.js} +3 -3
- package/dist/{evaluation-GKPJBSVD.js → evaluation-5INGXWOV.js} +3 -3
- package/dist/{expense-AOUR6AFS.js → expense-Y64AELQA.js} +2 -2
- package/dist/{faq-DLY5YITZ.js → faq-W5MZAWGB.js} +2 -2
- package/dist/{holiday-WLJT7FGH.js → holiday-P6BSJPAX.js} +2 -2
- package/dist/{inquiry-57RLTCK2.js → inquiry-HNUCPZTJ.js} +2 -2
- package/dist/{invoice-XMTJV34B.js → invoice-HSX6BWOM.js} +3 -3
- package/dist/{knowledge-7B2R6UCM.js → knowledge-E6Y4NB6R.js} +2 -2
- package/dist/{leave-O6D4NOMN.js → leave-KJ45TLXB.js} +3 -3
- package/dist/{media-VA7YJ5CR.js → media-GXTZJ5L4.js} +3 -3
- package/dist/{oneshot-BXLRUQQP.js → oneshot-JAA46MUA.js} +2 -2
- package/dist/{outlook-B5QENUVX.js → outlook-DLEA27PZ.js} +2 -2
- package/dist/{plan-submit-X5JFY2ZA.js → plan-submit-JKLAR5US.js} +2 -2
- package/dist/{project-M6XX6QVR.js → project-2MWLBXAB.js} +2 -2
- package/dist/{prospect-C3OWZPUJ.js → prospect-4YJNVVFV.js} +2 -2
- package/dist/{purchase-TEPTOLIR.js → purchase-F5BTLU5F.js} +3 -3
- package/dist/{receivable-N4EMAU2C.js → receivable-Q4GDHNWE.js} +2 -2
- package/dist/{registry-CN27HELV.js → registry-E4TNSUNA.js} +1 -1
- package/dist/{render-HF4OIOXS.js → render-HH2Y6YKX.js} +1 -1
- package/dist/{report-NXYULEVF.js → report-6RE4IZQW.js} +2 -2
- package/dist/{run-A43RYU65.js → run-7Q3XLJFT.js} +2 -2
- package/dist/{runner-command-SUTLCZQB.js → runner-command-UGG7X2KU.js} +1 -1
- package/dist/{sales-ai-review-Q2RFAXUD.js → sales-ai-review-H4VV56YO.js} +2 -2
- package/dist/{sales-master-5JR2TMLK.js → sales-master-G3PPJOV7.js} +9 -9
- package/dist/{sales-numbering-UO4QIZZC.js → sales-numbering-VTK6WTHT.js} +2 -2
- package/dist/{search-65MA22AA.js → search-IJEAEZ42.js} +2 -2
- package/dist/secret-P42JCOI4.js +75 -0
- package/dist/{skill-6AUBIXLM.js → skill-T3K5DD7P.js} +2 -2
- package/dist/{skill-manage-command-ZB4ECK6X.js → skill-manage-command-RACKW7W4.js} +2 -2
- package/dist/{staffing-board-SPXKQ5F2.js → staffing-board-5K35Z4O5.js} +3 -3
- package/dist/{status-command-JG5WY4IX.js → status-command-NP4OGBKY.js} +2 -2
- package/dist/{supplier-payment-KVWJCRWB.js → supplier-payment-ZQNQIJQ6.js} +2 -2
- package/dist/{support-EKI7AATE.js → support-W7HQFZMG.js} +2 -2
- package/dist/{task-T3SQVFJ5.js → task-L5FDVVIT.js} +3 -3
- package/dist/{teams-U7NHSZHY.js → teams-3ZI6ZY3F.js} +2 -2
- package/dist/{update-5NJSC26F.js → update-2N3V64AA.js} +1 -1
- package/dist/{user-WO6CKRNH.js → user-ECG5E32W.js} +69 -15
- package/dist/{user-group-5V3L7WYR.js → user-group-YKFYJ5C2.js} +2 -2
- package/dist/{worker-agent-XHX3D4LT.js → worker-agent-PFN36I6X.js} +2 -2
- package/dist/{workflow-PJ33ZW42.js → workflow-PP3APD56.js} +2 -2
- package/package.json +1 -1
- package/dist/chunk-AKLRVUU2.js +0 -18
- package/dist/chunk-RX5HWI4L.js +0 -6
- package/dist/chunk-WHYQZC2H.js +0 -12
package/CHANGELOG.public.md
CHANGED
|
@@ -11,6 +11,24 @@
|
|
|
11
11
|
`CHANGELOG.md` に残してあります。顧客向けの履歴は public 公開以降を対象とします。
|
|
12
12
|
-->
|
|
13
13
|
|
|
14
|
+
## 0.96.0
|
|
15
|
+
|
|
16
|
+
`twp secret` で、個人・プロジェクトのシークレット(パスと値)を一覧・取り出し・登録・削除できるようになりました。`twp secret run` を使うと、値を画面に出さずに環境変数としてコマンドへ渡せます。
|
|
17
|
+
|
|
18
|
+
`twp project delete` で、不要になったプロジェクトを削除できるようになりました(`--yes` が必要です。タスクなどが残っているプロジェクトは削除できず、理由が表示されます)。
|
|
19
|
+
|
|
20
|
+
`twp api` でシークレットの値を取り出す操作と、オプションの打ち間違いのエラー表示で、シークレットの値が画面やログに出ないようにしました。
|
|
21
|
+
|
|
22
|
+
`twp task-loop item` で、個人タスクのループ(個人キュー)のアイテムも `--project __private__` を付けて一覧・投入・更新・並び替え・削除できるようになりました。
|
|
23
|
+
|
|
24
|
+
## 0.95.0
|
|
25
|
+
|
|
26
|
+
OpenAI の GPT-6 Astra / GPT-6.1 Sol でファイルの読み書きなどのツールを使った会話ができるようになりました(`/model` で選べます)。
|
|
27
|
+
|
|
28
|
+
`twp user seal-impression` で、ユーザーの印影を確認・登録できるようになりました(組織管理者のみ。PNG・2MB まで)。
|
|
29
|
+
|
|
30
|
+
認証ポリシー(パスワード認証を許すか)とアカウントロック設定(何回失敗でロックするか・ロック時間・解除の方法)を、`twp user auth-policy` / `twp user account-lock` で参照・変更できるようになりました。
|
|
31
|
+
|
|
14
32
|
## 0.94.2
|
|
15
33
|
|
|
16
34
|
`twp task-loop history` / `plan-history` の出力で、トークン数(`tokens_in` / `tokens_out`)が伏字にならず数値のまま表示されるようになりました。
|
package/README.md
CHANGED
|
@@ -24,6 +24,7 @@ TWP(Tocca Working Platform)を、ターミナルから使うための CLI
|
|
|
24
24
|
| **できる** | `twp skill` / `twp qualification` によるスキルマスタ・資格マスタの一覧、スキル・スキルカテゴリの作成・更新・削除とカテゴリ内の並び替え、資格マスタの作成・更新・削除と CSV 一括登録・資格制度の説明文の更新(いずれも管理者のみ)、スキルマップの表示(部署で絞り込める)とスキル保有者の横断検索(所属付き)、自分のスキルプロファイルへの自己評価の提出(`--yes` が要ります)、`twp user skills` / `qualifications` / `trainings` / `contracts` によるユーザーのスキル評価・保有資格・研修受講履歴・雇用契約の参照。スキルマップと横断検索は HR管理者、雇用契約は原価管理者か管理者、研修履歴は人事管理の権限が要ります |
|
|
25
25
|
| **できる** | `twp department` / `twp position` / `twp job-title` / `twp segment` / `twp user-contract-type` / `twp fiscal-year` による組織マスタ(部署・役職・職位・セグメント・契約形態・事業年度設定)の一覧・取得・作成・更新・削除、`twp holiday` / `twp business-hours` によるカレンダーマスタ(祝日・営業日)の読み書きと CSV の出し入れと、部署ツリー・部署の所属者の表示。作成・更新・削除は管理者の権限が要ります |
|
|
26
26
|
| **できる** | `twp api-key` によるテナント API キー(外部システムが `X-API-Key` で問い合わせ作成・CMS 公開 API を呼ぶためのキー)の一覧・詳細・作成・更新・有効/無効・削除と、付与できる権限の一覧。組織管理者の権限が要ります |
|
|
27
|
+
| **できる** | `twp secret list` / `get` / `put` / `delete` / `run` による、個人・プロジェクトのシークレット(パスと値)の一覧・取り出し・登録・削除と、環境変数に入れたコマンドの実行(値は画面・パイプへ出す前に止める。管理者でも他人・所属外のものは扱えない) |
|
|
27
28
|
| **できる** | `twp user-group` によるユーザーグループの一覧・取得・作成・更新と、メンバーの一覧・追加・外す操作。取得・作成・更新とメンバーの操作は管理者の権限が要ります(グループの削除はサーバに無いので、表示区分を非表示にして外します) |
|
|
28
29
|
| **できる** | `twp inquiry category` による問い合わせカテゴリの一覧・取得・作成・更新(通知先の設定・末尾への並べ替えを含む)。取得・作成・更新は問い合わせ機能の管理者の権限が要ります |
|
|
29
30
|
| **できる** | `twp evaluation` / `twp goal-sheet` による人事評価と目標シートの読み取り(評価期間・見てよい範囲の評価と目標シートの一覧・部下の評価の状況・評価の詳細とプロジェクト別評価・自分の目標シート・受け取ったフィードバック)と書き込み(目標シートの書き換え・提出、評価段の入力、フィードバックの下書き保存・送信・公開、`twp project evaluation create` によるプロジェクトでの要員評価の作成)、評価期間の作成・変更・削除・締め・締め解除、評価基準(A〜E の説明)の表示・置き換え、`twp role-template` による役割テンプレートの一覧・作成・変更・削除。評価期間・評価基準・役割テンプレートの書き込みは管理者の権限が要ります |
|
|
@@ -65,6 +66,8 @@ TWP(Tocca Working Platform)を、ターミナルから使うための CLI
|
|
|
65
66
|
| **できる** | `twp storage get` によるストレージ使用量の確認(管理者) |
|
|
66
67
|
| **できる** | `twp user permission list` / `twp user permission update` による機能権限の参照と変更(1人・CSV 一括。送る前に変更内容とライセンスの増減を表示し、空きが足りなければ止まる。組織管理者) |
|
|
67
68
|
| **できる** | `twp user default-permission list` / `twp user default-permission update` による、新しく入る人(作成・招待・SSO の自動作成)に付く既定の機能権限の参照と変更(指定しない機能はいまの値のまま。既存ユーザーの権限は変わらない。組織管理者) |
|
|
69
|
+
| **できる** | `twp user auth-policy get` / `update` による認証ポリシー(パスワード認証を許すか)の参照と変更、`twp user account-lock get` / `update` によるアカウントロック設定(何回失敗でロックするか・ロック時間・解除の方法・通知)の参照と変更(送る前に変更前後を表示。自分がログインできなくなる・ロックを解除できなくなる設定は `--yes` が要る。組織管理者) |
|
|
70
|
+
| **できる** | `twp user seal-impression get` / `twp user seal-impression set` によるユーザーの印影の参照と画像の登録(PNG・2MB まで。画面の「組織管理 > ユーザー」の印影設定と同じ。販売管理の印影マスタ `twp seal-impression` とは別。組織管理者) |
|
|
68
71
|
| **できる** | `twp license list` / `twp license assignments` によるシートライセンスの棚卸(機能ごとの枠・使用数・空き・削減予約、割当者の所属・最終ログインと「失効済み・権限 none・長期未ログインなのに割当が残っている」の判定。組織管理者) |
|
|
69
72
|
| **できる** | `twp attendance` による自分の勤怠の参照(いまの打刻状態・打刻の履歴・月の勤怠表)と打刻・打刻修正(過去の時刻での打刻・メモの変更・取り消し・プロジェクトの付け替え)、勤怠連絡の一覧・登録・変更・削除、チームの勤怠状況・フレックス精算の参照、管理者向けの残業サマリ(36協定を含む)・締め状況の参照 |
|
|
70
73
|
| **できる** | `twp leave` による有給の残日数・取得履歴・付与履歴の参照と有給の申請(`twp leave request`)、`twp workchange list` / `twp shift list` による月の勤務変更・シフトの参照(`--me` で自分の分・無ければ全員分=勤怠の管理者) |
|
|
@@ -204,13 +207,14 @@ twp task update <キー|ID> --group <グループ> # 別のグル
|
|
|
204
207
|
twp task list --project ACME --status 進行中 --output json --query '[].{key:key,subject:subject}'
|
|
205
208
|
```
|
|
206
209
|
|
|
207
|
-
###
|
|
210
|
+
### プロジェクトを作成・更新・削除する
|
|
208
211
|
|
|
209
|
-
|
|
212
|
+
作成にはプロジェクト機能の管理者権限が、更新・削除には編集者以上かつそのプロジェクトのマネージャー(または管理者)権限が要ります。
|
|
210
213
|
|
|
211
214
|
```
|
|
212
215
|
twp project create --name <名前> --code <コード> [--start-date <日付>] [--end-date <日付>] [--manager <ユーザー>] [--leader <ユーザー>] [--department <部署>] [--memo-file <パス>]
|
|
213
216
|
twp project update <ID|コード> [--name <名前>] [--code <コード>] [--end-date <日付>|none] [--no-leader] … # 指定した項目だけを変える
|
|
217
|
+
twp project delete <ID|コード> --yes # 取り消せない。--dry-run で送る内容だけを確かめられる
|
|
214
218
|
```
|
|
215
219
|
|
|
216
220
|
- **ステータスは指定できません。** 終了日からサーバが決めます(過去日ならクローズ、今日以降か `none` ならアクティブ)
|
|
@@ -218,6 +222,7 @@ twp project update <ID|コード> [--name <名前>] [--code <コード>] [--end-
|
|
|
218
222
|
- タスクの既定の期日(`--default-due-days`)は作成時には指定できません。作成後に `update` で設定してください
|
|
219
223
|
- Wiki の新規ページの既定の形式は `--wiki-default-format <html|markdown>` で設定します。`twp wiki create` で `--content-format` を省き、`--content-file` の拡張子からも形式が決まらないときにこの形式で作られます(未設定なら HTML。作成済みのページの形式は変わりません)
|
|
220
224
|
- **`update --code` はそのプロジェクトのタスクキーを全件書き換えます。** 送る前に件数を表示し、タスクがあれば `--yes` が無い限り送りません(`--dry-run` で件数だけ確かめられます)
|
|
225
|
+
- **`delete` は、タスク・有効な打刻・販売管理からの参照・業務データ(議事録・Wiki 等)が残っているとサーバが断ります**(理由をそのまま表示し、何も消えません)。閉じるだけなら削除せず `update --end-date <過去日>` でクローズできます
|
|
221
226
|
|
|
222
227
|
### プロジェクトメンバーをアサインする
|
|
223
228
|
|
|
@@ -339,6 +344,21 @@ twp user unlock yamada@example.com
|
|
|
339
344
|
- ロックされていないユーザーを指定しても止めません(サーバは成功を返し、失敗回数が 0 に戻るだけです)
|
|
340
345
|
- 組織管理者だけが使えます。組織管理者でも、組織設定のアカウントロック「管理者による手動解除」が無効なテナントでは解除できません(その旨を案内します。ロック時間の経過かパスワードリセットで解除してください。どちらも組織設定で有効なときだけ解除されます)
|
|
341
346
|
|
|
347
|
+
#### 認証ポリシー・アカウントロック設定を見る・変える
|
|
348
|
+
|
|
349
|
+
組織管理者向けです。画面の「テナント設定 > 認証連携」の「パスワード認証を許可」と「組織設定 > アカウントロック」と同じ値を読み書きします(同じ API を使います)。どちらもテナント全員のログインに効きます。
|
|
350
|
+
|
|
351
|
+
```bash
|
|
352
|
+
twp user auth-policy get # password_auth_enabled
|
|
353
|
+
twp user auth-policy update --password-auth false --dry-run
|
|
354
|
+
twp user account-lock get # 何回失敗でロックするか・ロック時間・解除の方法・通知
|
|
355
|
+
twp user account-lock update --max-attempts 10 --lockout-minutes 60 [--dry-run]
|
|
356
|
+
```
|
|
357
|
+
|
|
358
|
+
- 送る前にいまの値を読み、変更前後を stderr に出します(`--dry-run` でも出ます)。送ったあとはサーバに保存された値を確かめ、元に戻すコマンドを出します
|
|
359
|
+
- **パスワード認証を `false` にすると、次のログインからパスワードではログインできなくなります(自分や `twp login --password` も同じ。パスワードリセットも使えなくなります)。** そのため `--yes` が要ります。Microsoft 365 / Google のどちらも有効でないテナントではサーバが断ります
|
|
360
|
+
- `account-lock update` は指定した項目だけを変えます(`--enabled` `--max-attempts`(1〜100) `--lockout-minutes`(0〜10080・0 は自動解除しない) `--reset-minutes`(0〜10080・0 は累積) `--auto-unlock` `--admin-unlock` `--password-reset-unlock` `--notify-admin` `--notify-user`)。ロックされた人を戻す手段が無くなる組み合わせ(自動解除・管理者による解除・パスワードリセットでの解除がすべて効かない。パスワード認証が無効ならリセットは数えない)は `--yes` が要ります
|
|
361
|
+
|
|
342
362
|
### 所属を付け替える(異動)・作成する・終了する
|
|
343
363
|
|
|
344
364
|
組織管理者向けです。
|
|
@@ -491,6 +511,19 @@ twp user default-permission update --feature inquiry=member --feature workflow=n
|
|
|
491
511
|
- 送ったあとはサーバが保存した値を**全機能で**確かめ、元に戻すコマンドを出します。保存された値が送った値と違う機能があれば(指定しなかった機能を含む)終了コード 3 で終わります
|
|
492
512
|
- 読んでから送るまでの間に別の管理者が画面で変えた値は、読んだ時点の値で上書きされます(サーバに競合の検出はありません)
|
|
493
513
|
|
|
514
|
+
### ユーザーの印影を見る・登録する
|
|
515
|
+
|
|
516
|
+
組織管理者向けです。画面の「組織管理 > ユーザー」の印影設定と同じ値を読み書きします(同じ API を使います)。見積・請求に押す販売管理の印影マスタ(`twp seal-impression`)とは別物です。
|
|
517
|
+
|
|
518
|
+
```
|
|
519
|
+
twp user seal-impression get <ユーザー> # attachment_id が空なら未登録・preview_url は画像の表示先
|
|
520
|
+
twp user seal-impression set <ユーザー> --file <画像> [--dry-run]
|
|
521
|
+
```
|
|
522
|
+
|
|
523
|
+
- 受ける画像は画面と同じ **PNG・2MB まで**です(販売管理の印影の PNG / JPEG / GIF・5MB とは違います)。それ以外は送る前に止まります
|
|
524
|
+
- いま印影があれば今回の画像に置き換わります(前の画像はサーバに残ります)。送る前にいまの印影を読み、置き換える対象を stderr に出します(`--dry-run` でも出ます)
|
|
525
|
+
- サーバは画像の確定に失敗しても登録を成功として返すため、登録のあとで画像が確定したことを確かめ、確定していなければ終了コード 4 で終わります(未確定の画像は一定時間後に失効し、印影が表示されなくなります)
|
|
526
|
+
|
|
494
527
|
### テナントの操作記録(監査ログ)を見る・CSV に書き出す
|
|
495
528
|
|
|
496
529
|
組織管理者向けです。画面の「組織管理 > 監査ログ」と同じ記録(タスクの作成・更新・削除とコメント、プロジェクト本体・メンバーの変更)を引きます。CLI 自身の判断記録(下の「監査ログ」= `~/.twp/logs/`)とは別物です。
|
|
@@ -574,6 +607,23 @@ twp user-group member delete <グループ> --user <ユーザー> [--user <ユ
|
|
|
574
607
|
- **グループの削除はできません**(サーバにも画面にも削除が無い)。使わなくなったグループは `update --display hidden` で選択肢から外してください
|
|
575
608
|
- ヘルプは `twp user-group help` / `twp user-group member help`
|
|
576
609
|
|
|
610
|
+
### シークレットを扱う
|
|
611
|
+
|
|
612
|
+
個人(`--me`)かプロジェクト(`--project <プロジェクト>`)単位で、パス(例 `/db/password`)と値を保管します。値はサーバで暗号化され、取り出すたびに監査ログに残ります。テナント管理者でも、他人の個人シークレット・所属外のプロジェクトのシークレットは扱えません(プロジェクトの一覧と取り出しはメンバー、登録・削除は manager)。
|
|
613
|
+
|
|
614
|
+
```
|
|
615
|
+
twp secret list (--me | --project <プロジェクト>) [--path <prefix>]
|
|
616
|
+
twp secret get (--me | --project <プロジェクト>) <path> [--plain]
|
|
617
|
+
twp secret put (--me | --project <プロジェクト>) <path> --value-file <パス|-> [--description <説明>] [--reveal-policy hidden|click_to_reveal|visible]
|
|
618
|
+
twp secret delete (--me | --project <プロジェクト>) <path> --yes
|
|
619
|
+
twp secret run (--me | --project <プロジェクト>) --path <prefix> -- <コマンド> [引数…]
|
|
620
|
+
```
|
|
621
|
+
|
|
622
|
+
- **コマンドに渡すなら `run` を使ってください。** `--path` の配下を環境変数に入れて `--` の後のコマンドを起動し、値は twp の画面にもログにも出ません(終了コードは子のもの)。名前はパスから `--path` を除き、`/` `.` `-` を `_` にして大文字にします(`--path /app` で `/app/db/password` → `DB_PASSWORD`)。同じ名前になるパスがある・該当が0件のときは起動しません
|
|
623
|
+
- **`get` は、画面(端末)以外へ出すときは `--plain` が要ります。** パイプ・リダイレクト・AI のツール実行で `--plain` が無ければ、値を出さず・取り出しもせずに終了コード 2 で止まります(値がログや AI のトランスクリプトに残るのを防ぐため)。`--plain` は登録したバイト列をそのまま(改行を足さずに)出します。`--output` / `--query` は効きません
|
|
624
|
+
- **`put` は値を引数で受けません**(シェル履歴に残るため)。`--value-file` にファイルを、`-` で標準入力を渡します。中身はそのまま値になるので、末尾の改行も含まれます(`printf '%s' "$V" | twp secret put --me /x --value-file -`)。UTF-8 のテキストで 4096 バイトまで。値は画面・`--dry-run`・`--debug` に出ません
|
|
625
|
+
- ヘルプは `twp secret help` / `twp secret <操作> help`
|
|
626
|
+
|
|
577
627
|
### テナント API キーを扱う
|
|
578
628
|
|
|
579
629
|
外部システム(問い合わせフォーム・CMS の公開 API を呼ぶサイト等)に渡すキーです。組織管理者だけが使えます。個人の API キーとは別物です。
|
|
@@ -1924,6 +1974,7 @@ twp task-loop plan-history list --since 2026-09-01
|
|
|
1924
1974
|
- `create` のラベル(`[<優先度>] <ラベル> #ai:<カテゴリ>`)とカテゴリ・1番手の AI は、ループが計画から投入するときと同じ規則で、この端末のループ設定(`twp task-loop setup` が作る `~/.twp/loops/<プロジェクトID>.json`)から決まります。設定が無い端末では既定のカテゴリになり、その旨を表示します
|
|
1925
1975
|
- `create` は同じタスクのアイテムが既に並んでいても弾きません。確かめるには `twp task-loop item list --status pending --query "[?task_key=='ABC-123']"`
|
|
1926
1976
|
- `update` / `move` / `delete` はテナントの管理者だけが行えます(実行記録は監査の正本のため)。`create` はプロジェクトのメンバーなら行えます
|
|
1977
|
+
- 個人キュー(個人タスクのループ)は `--project __private__` で指定します(`item` / `history` / `plan-history` すべて。対象は常にログイン中の本人の個人キュー)。`private:<ユーザーID>` は受け付けません。個人キューの `create` は `~/.twp/loops/private-<ユーザーID>.json` のループ設定でカテゴリ・1番手を決めます。個人キューの `update` / `move` / `delete` は管理者でなくても行えます
|
|
1927
1978
|
|
|
1928
1979
|
**モデル取次には `cli` 権限付きトークンが必要。** `twp login`(ブラウザ委譲)と `twp login --password` が発行する。`twp login --token` で保存した通常トークンは TWP API には使えるが会話は 401 になる。
|
|
1929
1980
|
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{SCHEDULE_HELP,parseSchedule}from"./chunk-
|
|
3
|
+
import{SCHEDULE_HELP,parseSchedule}from"./chunk-NDDFZEBO.js";import"./chunk-WVCEKC7V.js";import{charCount,readBody}from"./chunk-HEH3PUW2.js";import"./chunk-W4NLJ2YK.js";import"./chunk-BD7O73GK.js";import"./chunk-VGT2EGH6.js";import{AGENT_REPOSITORIES_PATH,AGENT_SCHEDULES_PATH,AGENT_SESSIONS_PATH}from"./chunk-4DOPQ74T.js";import{isSafePathSegment}from"./chunk-HVZUXLQ4.js";import{ApiError}from"./chunk-JA5A6UJ2.js";import"./chunk-MMVXE2CJ.js";
|
|
4
4
|
import"./chunk-II5RVJQN.js";import{LIST_FLAGS,LIST_PAGING_HELP,envelopePaging,nonEmpty,positiveInteger}from"./chunk-MI6HVYR2.js";import{requireResolved,withResolved}from"./chunk-PS5QFKHB.js";import{isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiRejectedError,ApiResponseError,NetworkError,UsageError,WaitTimeoutError}from"./chunk-VFPY2A23.js";import{NotLoggedInError,SessionExpiredError}from"./chunk-XNLIEUAW.js";import"./chunk-J7QYPKVK.js";import"./chunk-EDF4U5BT.js";
|
|
5
|
-
import"./chunk-RZVI6PMW.js";import"./chunk-
|
|
5
|
+
import"./chunk-RZVI6PMW.js";import"./chunk-OKATZ4SN.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var LABEL="\u5B9A\u671F\u5B9F\u884C";var LIST_COLUMNS=["schedule_id","name","enabled","schedule","repository_full_name","next_run_at","last_run_at","disabled_reason","owner_user_id"];var GET_COLUMNS=["schedule_id","name","enabled","schedule","repository_full_name","base_branch","ai_provider","ai_model","next_run_at","last_run_at","last_session_id","consecutive_failures","disabled_reason","owner_user_id","can_edit","can_disable","created_at","updated_at"];var RUN_COLUMNS=["run_id","created_at","t\
|
|
6
6
|
rigger","result","skip_reason","session_id","pr_url","error_message"];var NAME_MAX_CHARS=100;var INSTRUCTION_MAX_CHARS=1e4;var RUNS_MAX_LIMIT=100;var FORBIDDEN="AI\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u6A5F\u80FD\u306E\u30E9\u30A4\u30BB\u30F3\u30B9\uFF08agent\uFF09\u304C\u3042\u306A\u305F\u306E\u30A2\u30AB\u30A6\u30F3\u30C8\u306B\u5272\u308A\u5F53\u3066\u3089\u308C\u3066\u3044\u306A\u3044\u304B\u3001\u4ED6\u30E6\u30FC\u30B6\u30FC\u306E\u5B9A\u671F\u5B9F\u884C\u3092\u5909\u66F4\u3057\u3088\u3046\u3068\u3057\u3066\u3044\u307E\u3059\u3002\u7DE8\u96C6\u30FB\u524A\u9664\u30FB\u6709\u52B9\u5316\u30FB\u4ECA\u3059\u3050\u5B9F\u884C\u306F\u30AA\u30FC\u30CA\u30FC\u672C\u4EBA\u3060\u3051\u3001\u7121\u52B9\u5316\u306F\u30AA\u30FC\u30CA\u30FC\u3068\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u7BA1\u7406\u8005\u304C\u3067\u304D\u307E\u3059\u3002";
|
|
7
7
|
var SCHEDULE_REF_HELP="<\u5B9A\u671F\u5B9F\u884C> \u306F\u5B9A\u671F\u5B9F\u884C ID\uFF08twp agent schedule list \u306E schedule_id \u5217\uFF09\u3067\u3059\u3002";var CREDIT_CONFIRMATION="AI \u30AF\u30EC\u30B8\u30C3\u30C8\u3092\u6D88\u8CBB\u3059\u308B\u64CD\u4F5C";function usageOf(op){return`twp agent schedule ${op} help`}function noArgs(input,op){if(input.args.length>0)throw new UsageError(`schedule ${op} \u306F\u4F4D\u7F6E\u5F15\u6570\u3092\u53D6\u308A\u307E\u305B\u3093: ${input.args.join(" ")}`,
|
|
8
8
|
usageOf(op))}function scheduleId(input,op){const values=input.args.map(arg=>arg.trim());if(values.length>1)throw new UsageError(`schedule ${op} \u304C\u53D7\u3051\u53D6\u308C\u308B\u5F15\u6570\u306F <\u5B9A\u671F\u5B9F\u884C> \u3060\u3051\u3067\u3059: ${values.slice(1).join(" ")}`,usageOf(op));const value=values[0]??"";if(value==="")throw new UsageError("<\u5B9A\u671F\u5B9F\u884C>\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",usageOf(op));if(!isSafePathSegment(value))throw new UsageError(
|
|
@@ -1,15 +1,17 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{stepToItem}from"./chunk-
|
|
4
|
-
isPrivateProjectRef}from"./chunk-RMFLTSOV.js";import"./chunk-
|
|
3
|
+
import{stepToItem}from"./chunk-HUKKZ252.js";import"./chunk-VEEZJNOB.js";import{loadLocalConfig}from"./chunk-INS77QHY.js";import{parseOperations}from"./chunk-CVX2YWHC.js";import"./chunk-VYDPW2YO.js";import"./chunk-TTST7UDR.js";import{loadAiConfig}from"./chunk-FABDZBDZ.js";import{SKILL_PREFIX_RE,setSkillPrefix}from"./chunk-6CS5L24D.js";import"./chunk-N2UVRM3Z.js";import"./chunk-UZUV5FYG.js";import{PRIVATE_PROJECT_PREFIX,PRIVATE_PROJECT_REF,
|
|
4
|
+
isPrivateProjectRef,privateProjectId}from"./chunk-RMFLTSOV.js";import"./chunk-BD7O73GK.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,isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";import"./chunk-PMOUHEJQ.js";import"./chunk-J7QYPKVK.js";
|
|
5
5
|
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\
|
|
6
6
|
er_id","attempt_count","reclaim_count","error_message","created_by_name","created_at","started_at","completed_at"];var HISTORY_COLUMNS=["item_id","status","task_key","skill","ai_type","runner_id","duration_ms","cost_usd","created_at"];var PLAN_RESULTS=["enqueued","empty","json_not_found","ai_failed","error","skipped","gated","locked","abandoned"];var PLAN_HISTORY_COLUMNS=["plan_run_id","result","runner_id","ai_type","duration_ms","cost_usd","step_count","started_at"];var PROJECT_FLAG={name:"--pr\
|
|
7
|
-
oject",summary
|
|
8
|
-
<\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";var CREATE_HINT="\u30A2\u30A4\u30C6\u30E0\u306E\u6295\u5165\uFF08twp task-loop item 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";
|
|
9
|
-
|
|
10
|
-
var FORBIDDEN_DELETE=`\u30AD\u30E5\u30FC\u306E\u30A2\u30A4\u30C6\u30E0\u306E\u524A\u9664\u306B\u306F${FORBIDDEN_CORE}\u3002${CREATE_HINT}`;var PROJECT_HELP
|
|
11
|
-
|
|
12
|
-
|
|
7
|
+
oject",summary:`\u30AD\u30E5\u30FC\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\uFF08\u30B3\u30FC\u30C9\u307E\u305F\u306F ID\u3002\u7701\u7565\u6642\u306F TWP_PROJECT / .twp/config.json / ~/.twp/config.json\uFF09\u3002\u500B\u4EBA\u30AD\u30E5\u30FC\u306F ${PRIVATE_PROJECT_REF}`,takesValue:true,placeholder:`<\u30B3\u30FC\u30C9|ID|${PRIVATE_PROJECT_REF}>`};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",
|
|
8
|
+
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";var CREATE_HINT="\u30A2\u30A4\u30C6\u30E0\u306E\u6295\u5165\uFF08twp task-loop item 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";
|
|
9
|
+
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`+CREATE_HINT;var FORBIDDEN_MOVE=`\u30AD\u30E5\u30FC\u306E\u4E26\u3073\u66FF\u3048\u306B\u306F${FORBIDDEN_CORE}\
|
|
10
|
+
\u3002${CREATE_HINT}`;var FORBIDDEN_DELETE=`\u30AD\u30E5\u30FC\u306E\u30A2\u30A4\u30C6\u30E0\u306E\u524A\u9664\u306B\u306F${FORBIDDEN_CORE}\u3002${CREATE_HINT}`;var PROJECT_HELP=`\u30AD\u30E5\u30FC\u306F\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3054\u3068\u306B\u3042\u308A\u307E\u3059\u3002--project \u3092\u7701\u304F\u3068\u65E2\u5B9A\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\uFF08TWP_PROJECT / .twp/config.json / ~/.twp/config.json\uFF09\u306E\u30AD\u30E5\u30FC\u3092\u64CD\u4F5C\u3057\u307E\u3059\u3002
|
|
11
|
+
\u500B\u4EBA\u30AD\u30E5\u30FC\uFF08\u500B\u4EBA\u30BF\u30B9\u30AF\u306E\u30EB\u30FC\u30D7\uFF09\u306F --project ${PRIVATE_PROJECT_REF} \u3067\u6307\u5B9A\u3057\u307E\u3059\uFF08\u81EA\u5206\u306E\u500B\u4EBA\u30AD\u30E5\u30FC\u3060\u3051\u304C\u5BFE\u8C61\u3067\u3059\uFF09\u3002`;var PRIVATE_QUEUE_PATH="/api/v2/tasks/private/agent-loop";function basePath(input){return requireResolved(input,"queuePath")}function itemPath(input){return`${basePath(input)}/${encodeURIComponent(requireResolved(input,
|
|
12
|
+
"itemId"))}`}function isPrivateQueue(input){return input.resolved?.["queuePath"]===PRIVATE_QUEUE_PATH}async function prepareQueue(input,ctx){const project=input.flags.get("--project");if(project!==void 0&&isPrivateProjectRef(project)){return withResolved(input,{queuePath:PRIVATE_QUEUE_PATH})}if(project!==void 0&&project.trim().toLowerCase().startsWith(PRIVATE_PROJECT_PREFIX)){throw new UsageError(`--project ${project.trim()} \u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093`,`\u500B\u4EBA\u30AD\u30E5\u30FC\u306F --project ${PRIVATE_PROJECT_REF}\
|
|
13
|
+
\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u5BFE\u8C61\u306F\u5E38\u306B\u30ED\u30B0\u30A4\u30F3\u4E2D\u306E\u672C\u4EBA\u306E\u500B\u4EBA\u30AD\u30E5\u30FC\u3067\u3059\uFF09\u3002`)}const projectId=await ctx.projectId(project);return withResolved(input,{projectId,queuePath:`/api/v2/projects/${encodeURIComponent(projectId)}/agent-loop`})}async function prepareItem(input,ctx,usage){const itemId=singleRef(input,{flag:ITEM_FLAG.name,label:"\u30A2\u30A4\u30C6\u30E0",usage});return withResolved(
|
|
14
|
+
await prepareQueue(input,ctx),{itemId})}function rejectArgs(input,operation){if(input.args.length>0){throw new UsageError(`${operation} \u306F\u4F4D\u7F6E\u5F15\u6570\u3092\u53D6\u308A\u307E\u305B\u3093: ${input.args.join(" ")}`,`twp task-loop item ${operation} help`)}}function oneOf(flags,name,values){const raw=nonEmpty(flags,name);if(raw===void 0)return void 0;if(!values.includes(raw)){throw new UsageError(`${name} \u306B\u306F ${values.join(" / ")} \u306E\u3044\u305A\u308C\u304B\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u53D7\u3051\u53D6\u3063\u305F\u5024: ${raw}\
|
|
13
15
|
\uFF09`)}return raw}function oneOfOrNone(flags,name,values){if(flags.get(name)?.trim()==="none")return null;return oneOf(flags,name,values)}function itemObject(body){const item=isRecord(body)?body["item"]:void 0;if(!isRecord(item)){throw new ApiResponseError(`${LABEL}\u306E\u5FDC\u7B54\u306B item \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}return item}var listPaging=envelopePaging({label:`${LABEL}\u4E00\u89A7`});var historyPaging=envelopePaging(
|
|
14
16
|
{label:"\u5B9F\u884C\u5C65\u6B74"});var planHistoryPaging=envelopePaging({label:"\u8A08\u753B\u306E\u5B9F\u884C\u8A18\u9332"});function parseSkillPrompt(prompt,prefix=""){const m=/^\/([a-z0-9][a-z0-9-]*)(?:\s+([\s\S]*))?$/.exec(prompt.trim());if(!m){throw new UsageError(`--prompt \u306F /${prefix}<\u30B9\u30AD\u30EB\u540D> \u3067\u59CB\u3081\u3066\u304F\u3060\u3055\u3044\uFF08\u53D7\u3051\u53D6\u3063\u305F\u5024: ${prompt}\uFF09`,`\u4F8B: twp task-loop item create --prompt "/${prefix}fix-bug ABC\
|
|
15
17
|
-123"`)}const name=m[1]??"";if(prefix!==""&&(!name.startsWith(prefix)||name.length===prefix.length)){throw new UsageError(`\u3053\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u30B9\u30AD\u30EB\u63A5\u982D\u8F9E\u306F '/${prefix}' \u3067\u3059\u3002--prompt \u306F /${prefix}<\u30B9\u30AD\u30EB\u540D> \u3067\u59CB\u3081\u3066\u304F\u3060\u3055\u3044\uFF08\u53D7\u3051\u53D6\u3063\u305F\u5024: ${prompt}\uFF09`,`\u4F8B: twp task-loop item create --prompt "/${prefix}fix-bug ABC-123"`)}return{skill:name.
|
|
@@ -17,8 +19,8 @@ slice(prefix.length),args:(m[2]??"").trim()}}function skillPrefixFromLocalConfig
|
|
|
17
19
|
function assignFromLocalConfig(projectId,step,prefix){const local=loadLocalConfig(projectId);const configured=local.ai!==void 0||(local.ai_config_file??"").trim()!=="";const{config,warnings}=loadAiConfig(local.ai,local.ai_config_file,local.workspace??process.cwd());const category=config.categoryForSkill(step.skill);const item=stepToItem(step,{categoryForSkill:()=>category,selectPrimary:(c,s,p,display)=>config.selectPrimary(c,s,p,display)},prefix);return{category,primary:item?.ai_type??"",configured,
|
|
18
20
|
warnings}}function createStep(input,prefix=resolvedPrefix(input)){const prompt=nonEmpty(input.flags,"--prompt");if(prompt===void 0){throw new UsageError("--prompt \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",'twp task-loop item create --prompt "/<\u30B9\u30AD\u30EB\u540D> <\u5F15\u6570>"')}const{skill,args}=parseSkillPrompt(prompt,prefix);return{skill,args,priority:oneOf(input.flags,"--priority",PRIORITIES)??"P2",label:nonEmpty(input.flags,"--label")??""}}function createBody(input){const step=createStep(
|
|
19
21
|
input);const category=requireResolved(input,"category");const primary=input.resolved?.["primary"]??"";const item=stepToItem(step,fixedAssignment(category,primary),resolvedPrefix(input));if(item===null)throw new Error("\u5185\u90E8\u30A8\u30E9\u30FC: \u30B9\u30AD\u30EB\u540D\u304C\u7A7A\u306E\u307E\u307E stepToItem \u306B\u6E21\u308A\u307E\u3057\u305F");const body={label:item.label,prompt:item.prompt};if(item.task_key!=="")body["task_key"]=item.task_key;if(item.ai_type!==void 0)body["ai_type"]=item.
|
|
20
|
-
ai_type;const effort=oneOf(input.flags,"--ai-effort",EFFORTS);if(effort!==void 0)body["ai_effort"]=effort;return body}var createOperation={name:"create",summary:"\u30AD\u30E5\u30FC\u306B\u30A2\u30A4\u30C6\u30E0\u3092\u6295\u5165\u3059\u308B",usage:'twp task-loop item create --prompt "/<\u63A5\u982D\u8F9E><\u30B9\u30AD\u30EB\u540D> <\u5F15\u6570>" [--priority P2] [--label <\u30E9\u30D9\u30EB>] [--ai-effort <effort>] [--project <\u30B3\u30FC\u30C9|ID>]',description:`\u30EB\u30FC\u30D7\u306E\u8A08\u753B\u6295\u5165\u3068\u540C\u3058\u898F\u5247\u3067\u30A2\u30A4\u30C6\u30E0\u3092\
|
|
21
|
-
|
|
22
|
+
ai_type;const effort=oneOf(input.flags,"--ai-effort",EFFORTS);if(effort!==void 0)body["ai_effort"]=effort;return body}var createOperation={name:"create",summary:"\u30AD\u30E5\u30FC\u306B\u30A2\u30A4\u30C6\u30E0\u3092\u6295\u5165\u3059\u308B",usage:'twp task-loop item create --prompt "/<\u63A5\u982D\u8F9E><\u30B9\u30AD\u30EB\u540D> <\u5F15\u6570>" [--priority P2] [--label <\u30E9\u30D9\u30EB>] [--ai-effort <effort>] [--project <\u30B3\u30FC\u30C9|ID|__private__>]',description:`\u30EB\u30FC\u30D7\u306E\u8A08\u753B\u6295\u5165\u3068\u540C\u3058\u898F\u5247\u3067\u30A2\u30A4\u30C6\u30E0\u3092\
|
|
23
|
+
\u4F5C\u308A\u307E\u3059\uFF08\u30E9\u30D9\u30EB\u66F8\u5F0F\u30FBtask_key \u306E\u62BD\u51FA\u306F\u8A08\u753B\u6295\u5165\u3068\u5171\u901A\uFF09:
|
|
22
24
|
\u30E9\u30D9\u30EB [<\u512A\u5148\u5EA6>] <\u30BF\u30B9\u30AF\u30AD\u30FC> <\u30E9\u30D9\u30EB> #ai:<\u30AB\u30C6\u30B4\u30EA>\uFF08200\u5B57\u3067\u5207\u308B\u3002--label \u7701\u7565\u6642\u306F\u30D7\u30ED\u30F3\u30D7\u30C8\uFF09
|
|
23
25
|
task_key \u30D7\u30ED\u30F3\u30D7\u30C8\u306E\u5F15\u6570\u306E\u5148\u982D\u306B\u3042\u308B\u30BF\u30B9\u30AF\u30AD\u30FC\uFF08\u4F8B ABC-123\uFF09
|
|
24
26
|
1\u756A\u624B \u3053\u306E\u6A5F\u4F53\u306E\u30EB\u30FC\u30D7\u8A2D\u5B9A\uFF08~/.twp/loops/<\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8ID>.json\uFF09\u306E\u30AB\u30C6\u30B4\u30EA\u8868\u3068 primary_rotation \u3067\u6C7A\u3081\u308B
|
|
@@ -30,13 +32,13 @@ ask_key \u306E\u62BD\u51FA\u306F\u8A08\u753B\u6295\u5165\u3068\u5171\u901A\uFF09
|
|
|
30
32
|
twp task-loop item list --status pending --query "[?task_key=='ABC-123']"
|
|
31
33
|
|
|
32
34
|
${PROJECT_HELP}`,flags:[{name:"--prompt",summary:"\u5B9F\u884C\u3059\u308B\u30B9\u30AD\u30EB\u3068\u5F15\u6570\uFF08/<\u63A5\u982D\u8F9E><\u30B9\u30AD\u30EB\u540D> \u3067\u59CB\u3081\u308B\uFF09",takesValue:true,placeholder:'"/<\u63A5\u982D\u8F9E><\u30B9\u30AD\u30EB\u540D> <\u5F15\u6570>"'},{name:"--priority",summary:`\u512A\u5148\u5EA6\uFF08${PRIORITIES.join(" / ")}\u3002\u65E2\u5B9A P2\uFF09\u3002\u30E9\u30D9\u30EB\u306E\u5148\u982D\u306B\u5165\u308B`,takesValue:true,placeholder:"<P0-P3>"},{name:"\
|
|
33
|
-
--label",summary:"\u30E9\u30D9\u30EB\u306E\u672C\u6587\uFF08\u7701\u7565\u6642\u306F\u30D7\u30ED\u30F3\u30D7\u30C8\uFF09",takesValue:true,placeholder:"<\u30E9\u30D9\u30EB>"},{name:"--ai-effort",summary:`\u3053\u306E\u30A2\u30A4\u30C6\u30E0\u306E effort\uFF08${EFFORTS.join(" / ")}\uFF09\u3002\u30AB\u30C6\u30B4\u30EA\u65E2\u5B9A\u3088\u308A\u512A\u5148\u3059\u308B`,takesValue:true,placeholder:"<effort>"},PROJECT_FLAG],async prepare(input,ctx){rejectArgs(input,"create");createStep(input,"");const
|
|
34
|
-
projectId(
|
|
35
|
-
resolved?.["aiWarnings"]??"";if(warnings!=="")notes.push(`\u30EB\u30FC\u30D7\u8A2D\u5B9A\u306E\u8AAD\u307F\u8FBC\u307F\u3067\u554F\u984C\u304C\u3042\u308A\u307E\u3057\u305F: ${warnings}`);if(input.resolved?.["aiConfigured"]==="no"){notes.push(`\u3053\u306E\u6A5F\u4F53\u306B\u30EB\u30FC\u30D7\u8A2D\u5B9A\uFF08ai / ai_config_file\uFF09\u304C\u7121\u3044\u305F\u3081\u3001\u30AB\u30C6\u30B4\u30EA\u306F\u7D44\u307F\u8FBC\u307F\u65E2\u5B9A\uFF08${input.
|
|
36
|
-
\u81EA\u5206\u306E\u8A2D\u5B9A\u3067\u30AB\u30C6\u30B4\u30EA\u3092\u5F15\u304D\u76F4\u3057\u307E\u3059\u304C\u3001\u30E9\u30D9\u30EB\u306E #ai: \u30BF\u30B0\u306F\u6295\u5165\u6642\u306E\u5024\u306E\u307E\u307E\u3067\u3059\u3002`)}return notes},summarize:body=>pick(itemObject(body),GET_COLUMNS),raw:itemObject};function updateBody(input){const body={};const label=nonEmpty(input.flags,
|
|
37
|
-
parseSkillPrompt(prompt);body["prompt"]=prompt.trim()}const taskKey=input.flags.get("--task-key");if(taskKey!==void 0)body["task_key"]=taskKey.trim()==="none"?null:nonEmpty(input.flags,"--task-key");const aiType=oneOfOrNone(input.flags,"--ai-type",AI_TYPES);if(aiType!==void 0)body["ai_type"]=aiType;const effort=oneOfOrNone(input.flags,"--ai-effort",EFFORTS);if(effort!==void 0)body["
|
|
38
|
-
key / --ai-type / --ai-effort \u306E\u3044\u305A\u308C\u304B\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF09","twp task-loop item update help")}return body}var updateOperation={name:"update",summary:"\u30A2\u30A4\u30C6\u30E0\u306E\u30E9\u30D9\u30EB\u30FB\u30D7\u30ED\u30F3\u30D7\u30C8\u30FBAI \u6307\u5B9A\u3092\u66F4\u65B0\u3059\u308B\uFF08\u7BA1\u7406\u8005\u306E\u307F\uFF09",
|
|
39
|
-
|
|
35
|
+
--label",summary:"\u30E9\u30D9\u30EB\u306E\u672C\u6587\uFF08\u7701\u7565\u6642\u306F\u30D7\u30ED\u30F3\u30D7\u30C8\uFF09",takesValue:true,placeholder:"<\u30E9\u30D9\u30EB>"},{name:"--ai-effort",summary:`\u3053\u306E\u30A2\u30A4\u30C6\u30E0\u306E effort\uFF08${EFFORTS.join(" / ")}\uFF09\u3002\u30AB\u30C6\u30B4\u30EA\u65E2\u5B9A\u3088\u308A\u512A\u5148\u3059\u308B`,takesValue:true,placeholder:"<effort>"},PROJECT_FLAG],async prepare(input,ctx){rejectArgs(input,"create");createStep(input,"");const queue=await prepareQueue(
|
|
36
|
+
input,ctx);const projectId=isPrivateQueue(queue)?privateProjectId((await ctx.resolver.currentUser()).id):requireResolved(queue,"projectId");const skillPrefix=skillPrefixFromLocalConfig(projectId);const step=createStep(input,skillPrefix);const assign=assignFromLocalConfig(projectId,step,skillPrefix);return withResolved(queue,{projectId,skillPrefix,category:assign.category,primary:assign.primary,aiConfigured:assign.configured?"yes":"no",aiWarnings:assign.warnings.join("\n")})},plan:input=>({method:"\
|
|
37
|
+
POST",path:basePath(input),body:createBody(input)}),plannedNotes(input){const notes=[];const warnings=input.resolved?.["aiWarnings"]??"";if(warnings!=="")notes.push(`\u30EB\u30FC\u30D7\u8A2D\u5B9A\u306E\u8AAD\u307F\u8FBC\u307F\u3067\u554F\u984C\u304C\u3042\u308A\u307E\u3057\u305F: ${warnings}`);if(input.resolved?.["aiConfigured"]==="no"){notes.push(`\u3053\u306E\u6A5F\u4F53\u306B\u30EB\u30FC\u30D7\u8A2D\u5B9A\uFF08ai / ai_config_file\uFF09\u304C\u7121\u3044\u305F\u3081\u3001\u30AB\u30C6\u30B4\u30EA\u306F\u7D44\u307F\u8FBC\u307F\u65E2\u5B9A\uFF08${input.
|
|
38
|
+
resolved?.["category"]??"?"}\uFF09\u3067\u6C7A\u3081\u307E\u3057\u305F\u3002\u5B9F\u884C\u6A5F\u306F claim \u6642\u306B\u81EA\u5206\u306E\u8A2D\u5B9A\u3067\u30AB\u30C6\u30B4\u30EA\u3092\u5F15\u304D\u76F4\u3057\u307E\u3059\u304C\u3001\u30E9\u30D9\u30EB\u306E #ai: \u30BF\u30B0\u306F\u6295\u5165\u6642\u306E\u5024\u306E\u307E\u307E\u3067\u3059\u3002`)}return notes},summarize:body=>pick(itemObject(body),GET_COLUMNS),raw:itemObject};function updateBody(input){const body={};const label=nonEmpty(input.flags,
|
|
39
|
+
"--label");if(label!==void 0)body["label"]=label;const prompt=nonEmpty(input.flags,"--prompt");if(prompt!==void 0){parseSkillPrompt(prompt);body["prompt"]=prompt.trim()}const taskKey=input.flags.get("--task-key");if(taskKey!==void 0)body["task_key"]=taskKey.trim()==="none"?null:nonEmpty(input.flags,"--task-key");const aiType=oneOfOrNone(input.flags,"--ai-type",AI_TYPES);if(aiType!==void 0)body["ai_type"]=aiType;const effort=oneOfOrNone(input.flags,"--ai-effort",EFFORTS);if(effort!==void 0)body["\
|
|
40
|
+
ai_effort"]=effort;if(Object.keys(body).length===0){throw new UsageError("\u66F4\u65B0\u3059\u308B\u9805\u76EE\u304C\u3042\u308A\u307E\u305B\u3093\uFF08--label / --prompt / --task-key / --ai-type / --ai-effort \u306E\u3044\u305A\u308C\u304B\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF09","twp task-loop item update help")}return body}var updateOperation={name:"update",summary:"\u30A2\u30A4\u30C6\u30E0\u306E\u30E9\u30D9\u30EB\u30FB\u30D7\u30ED\u30F3\u30D7\u30C8\u30FBAI \u6307\u5B9A\u3092\u66F4\u65B0\u3059\u308B\uFF08\u7BA1\u7406\u8005\u306E\u307F\uFF09",
|
|
41
|
+
usage:"twp task-loop item update <\u30A2\u30A4\u30C6\u30E0ID> [--label <\u30E9\u30D9\u30EB>] [--prompt <\u30D7\u30ED\u30F3\u30D7\u30C8>] [--task-key <\u30AD\u30FC|none>] [--ai-type <AI|none>] [--ai-effort <effort|none>] [--project <\u30B3\u30FC\u30C9|ID|__private__>]",description:`\u6307\u5B9A\u3057\u305F\u9805\u76EE\u3060\u3051\u3092\u9001\u308A\u307E\u3059\u3002none \u3092\u6E21\u3059\u3068\u305D\u306E\u9805\u76EE\u3092\u6D88\u3057\u307E\u3059\uFF08--task-key / --ai-type / --ai-effort\uFF09\u3002
|
|
40
42
|
--label \u306F\u66F8\u5F0F\u3092\u7D44\u307F\u7ACB\u3066\u76F4\u3055\u305A\u3001\u6E21\u3057\u305F\u6587\u5B57\u5217\u3092\u305D\u306E\u307E\u307E\u4FDD\u5B58\u3057\u307E\u3059\uFF08#ai: \u30BF\u30B0\u3082\u81EA\u5206\u3067\u66F8\u3044\u3066\u304F\u3060\u3055\u3044\uFF09\u3002
|
|
41
43
|
|
|
42
44
|
\u66F4\u65B0\u306B\u306F\u66F8\u304D\u8FBC\u307F\u30B2\u30FC\u30C8\u304C\u639B\u304B\u308A\u307E\u3059: ${FORBIDDEN_UPDATE}\u3002
|
|
@@ -44,7 +46,7 @@ e <AI|none>] [--ai-effort <effort|none>]",description:`\u6307\u5B9A\u3057\u305F\
|
|
|
44
46
|
`+PROJECT_HELP,forbidden:FORBIDDEN_UPDATE,flags:[ITEM_FLAG,{name:"--label",summary:"\u30E9\u30D9\u30EB\uFF08\u305D\u306E\u307E\u307E\u4FDD\u5B58\u3059\u308B\uFF09",takesValue:true,placeholder:"<\u30E9\u30D9\u30EB>"},{name:"--prompt",summary:"\u30D7\u30ED\u30F3\u30D7\u30C8\uFF08/<\u63A5\u982D\u8F9E><\u30B9\u30AD\u30EB\u540D> \u3067\u59CB\u3081\u308B\uFF09",takesValue:true,placeholder:'"/<\u63A5\u982D\u8F9E><\u30B9\u30AD\u30EB\u540D> <\u5F15\u6570>"'},{name:"--task-key",summary:"\u30BF\u30B9\u30AF\u30AD\u30FC\uFF08none \u3067\u6D88\u3059\uFF09",
|
|
45
47
|
takesValue:true,placeholder:"<\u30AD\u30FC|none>"},{name:"--ai-type",summary:`1\u756A\u624B\u306E AI\uFF08${AI_TYPES.join(" / ")}\u3002none \u3067\u6D88\u3059\uFF09`,takesValue:true,placeholder:"<AI|none>"},{name:"--ai-effort",summary:`effort\uFF08${EFFORTS.join(" / ")}\u3002none \u3067\u6D88\u3059\uFF09`,takesValue:true,placeholder:"<effort|none>"},PROJECT_FLAG],async prepare(input,ctx){updateBody(input);return prepareItem(input,ctx,"twp task-loop item update help")},plan:input=>({method:"PUT",
|
|
46
48
|
path:itemPath(input),body:updateBody(input)}),summarize:body=>pick(itemObject(body),GET_COLUMNS),raw:itemObject};function movedItems(body){const items=isRecord(body)?body["items"]:void 0;if(!Array.isArray(items)){throw new ApiResponseError("\u4E26\u3073\u66FF\u3048\u306E\u5FDC\u7B54\u306B items \u914D\u5217\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002")}return items}var moveOperation={name:"move",summary:"\u30A2\u30A4\u30C6\u30E0\u3092\u30AD\u30E5\u30FC\u306E\u5148\u982D\u3078\u79FB\u3059\uFF08-\
|
|
47
|
-
-yes \u304C\u8981\u308B\u30FB\u7BA1\u7406\u8005\u306E\u307F\uFF09",usage:"twp task-loop item move <\u30A2\u30A4\u30C6\u30E0ID> --yes [--project <\u30B3\u30FC\u30C9|ID>]",description:`\u6B21\u306B claim \u3055\u308C\u308B\u306E\u304C\u3053\u306E\u30A2\u30A4\u30C6\u30E0\u306B\u306A\u308A\u307E\u3059\uFF08\u7A3C\u50CD\u4E2D\u306E\u30EB\u30FC\u30D7\u306E\u5B9F\u884C\u9806\u304C\u5909\u308F\u308B\u306E\u3067 --yes \u304C\u8981\u308A\u307E\u3059\uFF09\u3002
|
|
49
|
+
-yes \u304C\u8981\u308B\u30FB\u7BA1\u7406\u8005\u306E\u307F\uFF09",usage:"twp task-loop item move <\u30A2\u30A4\u30C6\u30E0ID> --yes [--project <\u30B3\u30FC\u30C9|ID|__private__>]",description:`\u6B21\u306B claim \u3055\u308C\u308B\u306E\u304C\u3053\u306E\u30A2\u30A4\u30C6\u30E0\u306B\u306A\u308A\u307E\u3059\uFF08\u7A3C\u50CD\u4E2D\u306E\u30EB\u30FC\u30D7\u306E\u5B9F\u884C\u9806\u304C\u5909\u308F\u308B\u306E\u3067 --yes \u304C\u8981\u308A\u307E\u3059\uFF09\u3002
|
|
48
50
|
\u52D5\u304B\u305B\u308B\u306E\u306F pending \u306E\u30A2\u30A4\u30C6\u30E0\u3060\u3051\u3067\u3059\u3002processing / completed / failed \u306E\u30A2\u30A4\u30C6\u30E0\u306F\u4F4D\u7F6E\u304C\u5909\u308F\u308A\u307E\u305B\u3093
|
|
49
51
|
\uFF08\u305D\u306E\u5834\u5408\u306F stderr \u3067\u305D\u3046\u4F1D\u3048\u307E\u3059\uFF09\u3002
|
|
50
52
|
|
|
@@ -52,45 +54,42 @@ path:itemPath(input),body:updateBody(input)}),summarize:body=>pick(itemObject(bo
|
|
|
52
54
|
|
|
53
55
|
`+PROJECT_HELP,destructive:true,forbidden:FORBIDDEN_MOVE,flags:[ITEM_FLAG,PROJECT_FLAG],prepare:(input,ctx)=>prepareItem(input,ctx,"twp task-loop item move help"),plan:input=>({method:"PUT",path:`${basePath(input)}/reorder`,body:{item_ids:[requireResolved(input,"itemId")]}}),summarize:body=>movedItems(body).map(row=>pick(row,LIST_COLUMNS)),raw:movedItems,notes(body){return movedItems(body).filter(row=>isRecord(row)&&row["status"]!=="pending").map(row=>{const r=row;return`\u30A2\u30A4\u30C6\u30E0 ${String(
|
|
54
56
|
r["item_id"])} \u306F ${String(r["status"])} \u306E\u305F\u3081\u3001\u4E26\u3073\u306F\u5909\u308F\u3063\u3066\u3044\u307E\u305B\u3093\uFF08\u5148\u982D\u3078\u79FB\u305B\u308B\u306E\u306F pending \u3060\u3051\u3067\u3059\uFF09\u3002`})}};var deleteOperation={name:"delete",summary:"\u30A2\u30A4\u30C6\u30E0\u3092\u30AD\u30E5\u30FC\u304B\u3089\u524A\u9664\u3059\u308B\uFF08--yes \u304C\u8981\u308B\u30FB\u7BA1\u7406\u8005\u306E\u307F\uFF09",usage:"twp task-loop item delete <\u30A2\u30A4\u30C6\u30E0ID> --yes [--project\
|
|
55
|
-
<\u30B3\u30FC\u30C9|ID>]",description:`\u524A\u9664\u306F\u53D6\u308A\u6D88\u305B\u307E\u305B\u3093\u3002\u30A2\u30A4\u30C6\u30E0\u306F\u5B9F\u884C\u8A18\u9332\uFF08\u53F0\u5E33\uFF09\u3067\u3082\u3042\u308B\u306E\u3067\u3001\u7D42\u308F\u3063\u305F\u30A2\u30A4\u30C6\u30E0\u306F\u6D88\u3055\u305A\u306B\u6B8B\u3059\u306E\u304C\u65E2\u5B9A\u3067\u3059\u3002
|
|
57
|
+
<\u30B3\u30FC\u30C9|ID|__private__>]",description:`\u524A\u9664\u306F\u53D6\u308A\u6D88\u305B\u307E\u305B\u3093\u3002\u30A2\u30A4\u30C6\u30E0\u306F\u5B9F\u884C\u8A18\u9332\uFF08\u53F0\u5E33\uFF09\u3067\u3082\u3042\u308B\u306E\u3067\u3001\u7D42\u308F\u3063\u305F\u30A2\u30A4\u30C6\u30E0\u306F\u6D88\u3055\u305A\u306B\u6B8B\u3059\u306E\u304C\u65E2\u5B9A\u3067\u3059\u3002
|
|
56
58
|
\u5B9A\u671F\u67A0\u306B\u7D10\u3065\u304F\u30A2\u30A4\u30C6\u30E0\u3092\u6D88\u3059\u3068\u3001\u30B5\u30FC\u30D0\u304C\u305D\u306E\u67A0\u3092\u89E3\u653E\u3057\u307E\u3059\uFF08\u5FDC\u7B54\u306E schedule_window_released\uFF09\u3002
|
|
57
59
|
|
|
58
60
|
\u524A\u9664\u306B\u306F\u66F8\u304D\u8FBC\u307F\u30B2\u30FC\u30C8\u304C\u639B\u304B\u308A\u307E\u3059: ${FORBIDDEN_DELETE}\u3002
|
|
59
61
|
|
|
60
|
-
`+PROJECT_HELP,destructive:true,forbidden:FORBIDDEN_DELETE,flags:[ITEM_FLAG,PROJECT_FLAG],prepare:(input,ctx)=>prepareItem(input,ctx,"twp task-loop item delete help"),plan:input=>({method:"DELETE",path:itemPath(input)}),summarize:body=>acknowledgement(body,"\u30A2\u30A4\u30C6\u30E0\u524A\u9664"),raw:body=>({...acknowledgement(body,"\u30A2\u30A4\u30C6\u30E0\u524A\u9664"),schedule_window_released:isRecord(body)?body["schedule_window_released"]??null:null})};
|
|
61
|
-
|
|
62
|
-
\
|
|
63
|
-
void 0&&project.trim().toLowerCase().startsWith(PRIVATE_PROJECT_PREFIX)){throw new UsageError(`--project ${project.trim()} \u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093`,`\u500B\u4EBA\u30AD\u30E5\u30FC\u306F --project ${PRIVATE_PROJECT_REF} \u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u5BFE\u8C61\u306F\u5E38\u306B\u30ED\u30B0\u30A4\u30F3\u4E2D\u306E\u672C\u4EBA\u306E\u500B\u4EBA\u30AD\u30E5\u30FC\u3067\u3059\uFF09\u3002`)}const resolved=await prepareProject(input,ctx);return withResolved(
|
|
64
|
-
resolved,{queuePath:basePath(resolved)})}function historyBound(raw){return/^\d{4}-\d{2}-\d{2}$/.test(raw.trim())?`${raw.trim()}T00:00:00Z`:raw.trim()}var historyResource={name:"history",commandPath:"task-loop history",summary:"\u5B9F\u884C\u5C65\u6B74\uFF08\u671F\u9593\u6307\u5B9A\u30FB\u53F0\u5E33\u306E\u6B63\u672C\uFF09",operations:[{name:"list",summary:"\u671F\u9593\u3092\u6307\u5B9A\u3057\u3066\u5B9F\u884C\u5C65\u6B74\u3092\u4E00\u89A7\u3059\u308B",usage:"twp task-loop history list --since <\
|
|
65
|
-
\u65E5\u4ED8|\u65E5\u6642> [--until <\u65E5\u4ED8|\u65E5\u6642>] [--status <\u72B6\u614B>] [--task-key <\u30AD\u30FC>] [--runner <ID>] [--skill <\u30B9\u30AD\u30EB>] [--full] [--project <\u30B3\u30FC\u30C9|ID|__private__>]",description:`\u4F5C\u6210\u6642\u523B\uFF08sort_order\uFF09\u3067\u671F\u9593\u3092\u5207\u308A\u307E\u3059\u3002--since \u306F\u305D\u306E\u6642\u523B\u3092\u542B\u307F\u3001--until \u306F\u542B\u307F\u307E\u305B\u3093\uFF08\u7701\u7565\u6642\u306F\u73FE\u5728\uFF09\u3002
|
|
62
|
+
`+PROJECT_HELP,destructive:true,forbidden:FORBIDDEN_DELETE,flags:[ITEM_FLAG,PROJECT_FLAG],prepare:(input,ctx)=>prepareItem(input,ctx,"twp task-loop item delete help"),plan:input=>({method:"DELETE",path:itemPath(input)}),summarize:body=>acknowledgement(body,"\u30A2\u30A4\u30C6\u30E0\u524A\u9664"),raw:body=>({...acknowledgement(body,"\u30A2\u30A4\u30C6\u30E0\u524A\u9664"),schedule_window_released:isRecord(body)?body["schedule_window_released"]??null:null})};function historyBound(raw){return/^\d{4}-\d{2}-\d{2}$/.
|
|
63
|
+
test(raw.trim())?`${raw.trim()}T00:00:00Z`:raw.trim()}var historyResource={name:"history",commandPath:"task-loop history",summary:"\u5B9F\u884C\u5C65\u6B74\uFF08\u671F\u9593\u6307\u5B9A\u30FB\u53F0\u5E33\u306E\u6B63\u672C\uFF09",operations:[{name:"list",summary:"\u671F\u9593\u3092\u6307\u5B9A\u3057\u3066\u5B9F\u884C\u5C65\u6B74\u3092\u4E00\u89A7\u3059\u308B",usage:"twp task-loop history list --since <\u65E5\u4ED8|\u65E5\u6642> [--until <\u65E5\u4ED8|\u65E5\u6642>] [--status <\u72B6\u614B>] [--task-key <\u30AD\u30FC>] [--runner <ID>] [--skill <\u30B9\u30AD\u30EB>] [--fu\
|
|
64
|
+
ll] [--project <\u30B3\u30FC\u30C9|ID|__private__>]",description:`\u4F5C\u6210\u6642\u523B\uFF08sort_order\uFF09\u3067\u671F\u9593\u3092\u5207\u308A\u307E\u3059\u3002--since \u306F\u305D\u306E\u6642\u523B\u3092\u542B\u307F\u3001--until \u306F\u542B\u307F\u307E\u305B\u3093\uFF08\u7701\u7565\u6642\u306F\u73FE\u5728\uFF09\u3002
|
|
66
65
|
YYYY-MM-DD \u306F UTC \u306E 0 \u6642\u3068\u3057\u3066\u6271\u3044\u307E\u3059\u3002ISO8601\uFF082026-09-01T09:00:00+09:00\uFF09\u3082\u6E21\u305B\u307E\u3059\u3002
|
|
67
66
|
\u65E2\u5B9A\u3067\u306F result / prompt \u3092\u8FD4\u3057\u307E\u305B\u3093\uFF08--full \u3067\u8FD4\u3057\u307E\u3059\u3002\u5FDC\u7B54\u304C\u6570\u5341\u500D\u306B\u306A\u308A\u307E\u3059\uFF09\u3002
|
|
68
67
|
|
|
69
|
-
${
|
|
68
|
+
${PROJECT_HELP}
|
|
70
69
|
|
|
71
70
|
`+LIST_PAGING_HELP,flags:[...LIST_FLAGS,{name:"--since",summary:"\u671F\u9593\u306E\u958B\u59CB\uFF08\u3053\u306E\u6642\u523B\u3092\u542B\u3080\u30FB\u5FC5\u9808\uFF09",takesValue:true,placeholder:"<\u65E5\u4ED8|\u65E5\u6642>"},{name:"--until",summary:"\u671F\u9593\u306E\u7D42\u4E86\uFF08\u3053\u306E\u6642\u523B\u3092\u542B\u307E\u306A\u3044\u30FB\u7701\u7565\u6642\u306F\u73FE\u5728\uFF09",takesValue:true,placeholder:"<\u65E5\u4ED8|\u65E5\u6642>"},{name:"--status",summary:`\u72B6\u614B\u3067\u7D5E\u308A\u8FBC\u3080\uFF08${STATUSES.
|
|
72
71
|
join(" / ")}\uFF09`,takesValue:true,placeholder:"<\u72B6\u614B>"},{name:"--task-key",summary:"\u30BF\u30B9\u30AF\u30AD\u30FC\u3067\u7D5E\u308A\u8FBC\u3080\uFF08\u5B8C\u5168\u4E00\u81F4\uFF09",takesValue:true,placeholder:"<\u30AD\u30FC>"},{name:"--runner",summary:"\u5B9F\u884C\u6A5F\uFF08runner_id\uFF09\u3067\u7D5E\u308A\u8FBC\u3080",takesValue:true,placeholder:"<runner_id>"},{name:"--skill",summary:"\u30B9\u30AD\u30EB\uFF08\u63A5\u982D\u8F9E\u7121\u3057\uFF09\u3067\u7D5E\u308A\u8FBC\u3080",takesValue:true,
|
|
73
|
-
placeholder:"<\u30B9\u30AD\u30EB>"},{name:"--ai-type",summary:"AI \u3067\u7D5E\u308A\u8FBC\u3080",takesValue:true,placeholder:"<AI>"},{name:"--full",summary:"result / prompt \u3082\u8FD4\u3059",takesValue:false},
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
72
|
+
placeholder:"<\u30B9\u30AD\u30EB>"},{name:"--ai-type",summary:"AI \u3067\u7D5E\u308A\u8FBC\u3080",takesValue:true,placeholder:"<AI>"},{name:"--full",summary:"result / prompt \u3082\u8FD4\u3059",takesValue:false},PROJECT_FLAG],paging:historyPaging,async prepare(input,ctx){rejectArgs(input,"history list");if(nonEmpty(input.flags,"--since")===void 0){throw new UsageError("--since \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044","twp task-loop history list --since 2026-09-01")}oneOf(input.flags,
|
|
73
|
+
"--status",STATUSES);return prepareQueue(input,ctx)},plan(input){const until=nonEmpty(input.flags,"--until");return{method:"GET",path:`${basePath(input)}/history`,query:{from:historyBound(nonEmpty(input.flags,"--since")),to:until===void 0?void 0:historyBound(until),fields:input.flags.has("--full")?"full":void 0,status:oneOf(input.flags,"--status",STATUSES),task_key:nonEmpty(input.flags,"--task-key"),runner_id:nonEmpty(input.flags,"--runner"),skill:nonEmpty(input.flags,"--skill"),ai_type:nonEmpty(
|
|
74
|
+
input.flags,"--ai-type"),limit:positiveInteger(input.flags,"--limit"),cursor:nonEmpty(input.flags,"--cursor")}}},summarize:body=>historyPaging.items(body).map(row=>pick(row,HISTORY_COLUMNS)),raw:body=>historyPaging.items(body)}]};var planHistoryResource={name:"plan-history",commandPath:"task-loop plan-history",summary:"\u8A08\u753B\u30D5\u30A7\u30FC\u30BA\u306E\u5B9F\u884C\u8A18\u9332\uFF08\u671F\u9593\u6307\u5B9A\uFF09",operations:[{name:"list",summary:"\u671F\u9593\u3092\u6307\u5B9A\u3057\u3066\u8A08\u753B\u306E\u5B9F\u884C\u8A18\u9332\u3092\u4E00\u89A7\u3059\u308B",
|
|
75
|
+
usage:"twp task-loop plan-history list --since <\u65E5\u4ED8|\u65E5\u6642> [--until <\u65E5\u4ED8|\u65E5\u6642>] [--result <\u7D50\u679C>] [--runner <ID>] [--full] [--project <\u30B3\u30FC\u30C9|ID|__private__>]",description:`\u8A08\u753B\u306E\u958B\u59CB\u6642\u523B\u3067\u671F\u9593\u3092\u5207\u308A\u307E\u3059\u3002--since \u306F\u305D\u306E\u6642\u523B\u3092\u542B\u307F\u3001--until \u306F\u542B\u307F\u307E\u305B\u3093\uFF08\u7701\u7565\u6642\u306F\u73FE\u5728\uFF09\u3002
|
|
77
76
|
YYYY-MM-DD \u306F UTC \u306E 0 \u6642\u3068\u3057\u3066\u6271\u3044\u307E\u3059\u3002ISO8601\uFF082026-09-01T09:00:00+09:00\uFF09\u3082\u6E21\u305B\u307E\u3059\u3002
|
|
78
77
|
--result \u306F ${PLAN_RESULTS.join(" / ")} \u306E\u3044\u305A\u308C\u304B\u3002
|
|
79
78
|
\u65E2\u5B9A\u3067\u306F\u6700\u7D42\u5831\u544A\u3068 steps \u306E\u672C\u6587\u3092\u8FD4\u3057\u307E\u305B\u3093\uFF08--full \u3067\u8FD4\u3057\u307E\u3059\uFF09\u3002
|
|
80
79
|
AI \u306E\u6570\u5024\uFF08cost_usd \u7B49\uFF09\u306F claude \u4EE5\u5916\u3067\u306F null \u3067\u3059\u3002\u5408\u8A08\u3059\u308B\u3068\u304D\u306F 0 \u3068\u3057\u3066\u8DB3\u3055\u306A\u3044\u3067\u304F\u3060\u3055\u3044\u3002
|
|
81
80
|
|
|
82
|
-
${
|
|
81
|
+
${PROJECT_HELP}
|
|
83
82
|
|
|
84
83
|
`+LIST_PAGING_HELP,flags:[...LIST_FLAGS,{name:"--since",summary:"\u671F\u9593\u306E\u958B\u59CB\uFF08\u3053\u306E\u6642\u523B\u3092\u542B\u3080\u30FB\u5FC5\u9808\uFF09",takesValue:true,placeholder:"<\u65E5\u4ED8|\u65E5\u6642>"},{name:"--until",summary:"\u671F\u9593\u306E\u7D42\u4E86\uFF08\u3053\u306E\u6642\u523B\u3092\u542B\u307E\u306A\u3044\u30FB\u7701\u7565\u6642\u306F\u73FE\u5728\uFF09",takesValue:true,placeholder:"<\u65E5\u4ED8|\u65E5\u6642>"},{name:"--result",summary:`\u7D50\u679C\u3067\u7D5E\u308A\u8FBC\u3080\uFF08${PLAN_RESULTS.
|
|
85
|
-
join(" / ")}\uFF09`,takesValue:true,placeholder:"<\u7D50\u679C>"},{name:"--runner",summary:"\u5B9F\u884C\u6A5F\uFF08runner_id\uFF09\u3067\u7D5E\u308A\u8FBC\u3080",takesValue:true,placeholder:"<runner_id>"},{name:"--full",summary:"\u6700\u7D42\u5831\u544A\u3068 steps \u306E\u672C\u6587\u3082\u8FD4\u3059",takesValue:false},
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
operations:[{name:"list",summary:"\u30AD\u30E5\u30FC\u306E\u30A2\u30A4\u30C6\u30E0\u3092\u4E00\u89A7\u3059\u308B\uFF08\u65B0\u3057\u3044\u9806\uFF09",usage:"twp task-loop item list [--status <\u72B6\u614B>] [--limit <\u4EF6\u6570>] [--all] [--project <\u30B3\u30FC\u30C9|ID>]",description:`--status \u306F ${STATUSES.join(" / ")} \u306E\u3044\u305A\u308C\u304B\u3002\u7701\u7565\u3059\u308B\u3068\u5168\u72B6\u614B\u3092\u65B0\u3057\u3044\u9806\u306B\u8FD4\u3057\u307E\u3059\u3002
|
|
84
|
+
join(" / ")}\uFF09`,takesValue:true,placeholder:"<\u7D50\u679C>"},{name:"--runner",summary:"\u5B9F\u884C\u6A5F\uFF08runner_id\uFF09\u3067\u7D5E\u308A\u8FBC\u3080",takesValue:true,placeholder:"<runner_id>"},{name:"--full",summary:"\u6700\u7D42\u5831\u544A\u3068 steps \u306E\u672C\u6587\u3082\u8FD4\u3059",takesValue:false},PROJECT_FLAG],paging:planHistoryPaging,async prepare(input,ctx){rejectArgs(input,"plan-history list");if(nonEmpty(input.flags,"--since")===void 0){throw new UsageError("--since \
|
|
85
|
+
\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044","twp task-loop plan-history list --since 2026-10-01")}oneOf(input.flags,"--result",PLAN_RESULTS);return prepareQueue(input,ctx)},plan(input){const until=nonEmpty(input.flags,"--until");return{method:"GET",path:`${basePath(input)}/plan/history`,query:{from:historyBound(nonEmpty(input.flags,"--since")),to:until===void 0?void 0:historyBound(until),fields:input.flags.has("--full")?"full":void 0,result:oneOf(input.flags,"--result",PLAN_RESULTS),
|
|
86
|
+
runner_id:nonEmpty(input.flags,"--runner"),limit:positiveInteger(input.flags,"--limit"),cursor:nonEmpty(input.flags,"--cursor")}}},summarize:body=>planHistoryPaging.items(body).map(row=>pick(row,PLAN_HISTORY_COLUMNS)),raw:body=>planHistoryPaging.items(body)}]};var agentLoopDomain={name:"agent-loop",commandPath:"task-loop item",summary:"\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u30EB\u30FC\u30D7\u306E\u30AD\u30E5\u30FC\uFF08\u30A2\u30A4\u30C6\u30E0\u306E\u4E00\u89A7\u30FB\u6295\u5165\u30FB\u66F4\u65B0\u30FB\u4E26\u3073\u66FF\u3048\u30FB\u524A\u9664\u30FB\u5B9F\u884C\u5C65\u6B74\uFF09",
|
|
87
|
+
operations:[{name:"list",summary:"\u30AD\u30E5\u30FC\u306E\u30A2\u30A4\u30C6\u30E0\u3092\u4E00\u89A7\u3059\u308B\uFF08\u65B0\u3057\u3044\u9806\uFF09",usage:"twp task-loop item list [--status <\u72B6\u614B>] [--limit <\u4EF6\u6570>] [--all] [--project <\u30B3\u30FC\u30C9|ID|__private__>]",description:`--status \u306F ${STATUSES.join(" / ")} \u306E\u3044\u305A\u308C\u304B\u3002\u7701\u7565\u3059\u308B\u3068\u5168\u72B6\u614B\u3092\u65B0\u3057\u3044\u9806\u306B\u8FD4\u3057\u307E\u3059\u3002
|
|
89
88
|
\u671F\u9593\u3067\u5207\u3063\u305F\u5B9F\u884C\u5C65\u6B74\u306F twp task-loop history list \u3092\u4F7F\u3063\u3066\u304F\u3060\u3055\u3044\uFF08\u3053\u3061\u3089\u306F\u5B8C\u4E86\u6E08\u307F\u3092\u5927\u91CF\u306B\u6301\u3064\u3068\u9045\u304F\u306A\u308A\u307E\u3059\uFF09\u3002
|
|
90
89
|
|
|
91
90
|
${PROJECT_HELP}
|
|
92
91
|
|
|
93
|
-
`+LIST_PAGING_HELP,flags:[...LIST_FLAGS,{name:"--status",summary:`\u72B6\u614B\u3067\u7D5E\u308A\u8FBC\u3080\uFF08${STATUSES.join(" / ")}\uFF09`,takesValue:true,placeholder:"<\u72B6\u614B>"},PROJECT_FLAG],paging:listPaging,async prepare(input,ctx){rejectArgs(input,"list");oneOf(input.flags,"--status",STATUSES);return
|
|
94
|
-
limit:positiveInteger(input.flags,"--limit"),cursor:nonEmpty(input.flags,"--cursor")}}},summarize:body=>listPaging.items(body).map(row=>pick(row,LIST_COLUMNS)),raw:body=>listPaging.items(body)},{name:"get",summary:"\u30A2\u30A4\u30C6\u30E01\u4EF6\u306E\u8A73\u7D30\u3092\u8868\u793A\u3059\u308B",usage:"twp task-loop item get <\u30A2\u30A4\u30C6\u30E0ID> [--project <\u30B3\u30FC\u30C9|ID>]",description:`\u30B9\u30C6\u30C3\u30D7\u30ED\u30B0\u5168\u6587\uFF08result\uFF09\u306F --output json \u304B --query result \u3067\u8AAD\u3081\u307E\u3059\u3002
|
|
92
|
+
`+LIST_PAGING_HELP,flags:[...LIST_FLAGS,{name:"--status",summary:`\u72B6\u614B\u3067\u7D5E\u308A\u8FBC\u3080\uFF08${STATUSES.join(" / ")}\uFF09`,takesValue:true,placeholder:"<\u72B6\u614B>"},PROJECT_FLAG],paging:listPaging,async prepare(input,ctx){rejectArgs(input,"list");oneOf(input.flags,"--status",STATUSES);return prepareQueue(input,ctx)},plan(input){const status=oneOf(input.flags,"--status",STATUSES);return{method:"GET",path:basePath(input),query:{status,paginated:status===void 0?"1":void 0,
|
|
93
|
+
limit:positiveInteger(input.flags,"--limit"),cursor:nonEmpty(input.flags,"--cursor")}}},summarize:body=>listPaging.items(body).map(row=>pick(row,LIST_COLUMNS)),raw:body=>listPaging.items(body)},{name:"get",summary:"\u30A2\u30A4\u30C6\u30E01\u4EF6\u306E\u8A73\u7D30\u3092\u8868\u793A\u3059\u308B",usage:"twp task-loop item get <\u30A2\u30A4\u30C6\u30E0ID> [--project <\u30B3\u30FC\u30C9|ID|__private__>]",description:`\u30B9\u30C6\u30C3\u30D7\u30ED\u30B0\u5168\u6587\uFF08result\uFF09\u306F --output json \u304B --query result \u3067\u8AAD\u3081\u307E\u3059\u3002
|
|
95
94
|
|
|
96
95
|
${PROJECT_HELP}`,flags:[ITEM_FLAG,PROJECT_FLAG],prepare:(input,ctx)=>prepareItem(input,ctx,"twp task-loop item get help"),plan:input=>({method:"GET",path:itemPath(input)}),summarize:body=>pick(itemObject(body),GET_COLUMNS),raw:itemObject},createOperation,updateOperation,moveOperation,deleteOperation],subresources:[historyResource,planHistoryResource]};export{agentLoopDomain,createBody,historyResource,parseSkillPrompt,planHistoryResource,updateBody};
|
|
@@ -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-MBPJV745.js";import{detectAiClis}from"./chunk-5SONMN6K.js";import{expandServerSkills,prepareSkillOverlay}from"./chunk-3OCV6SOR.js";import"./chunk-MYBIPHZ7.js";import"./chunk-A4LFG7MW.js";import"./chunk-VRBI2NPI.js";import{ClaudeStreamRenderer}from"./chunk-
|
|
4
|
-
detectClaudeAutoSwitch,isClaudeAi,isUsableModelId,modelFitsRoute,resolveSpawnTarget,usesBedrock,wrapWithAutoSwitch}from"./chunk-FABDZBDZ.js";import"./chunk-6CS5L24D.js";import{isForceOnly,killProcessTree,system32}from"./chunk-N2UVRM3Z.js";import"./chunk-UZUV5FYG.js";import"./chunk-RMFLTSOV.js";import"./chunk-
|
|
3
|
+
import{failureHint,isAuthError,isCliFatalText,isRateLimited,isServerAiType,isUntrusted,maxTurnsReached,rateLimitWaitSeconds,tailForScan}from"./chunk-MBPJV745.js";import{detectAiClis}from"./chunk-5SONMN6K.js";import{expandServerSkills,prepareSkillOverlay}from"./chunk-3OCV6SOR.js";import"./chunk-MYBIPHZ7.js";import"./chunk-A4LFG7MW.js";import"./chunk-VRBI2NPI.js";import{ClaudeStreamRenderer}from"./chunk-VEEZJNOB.js";import{DEFAULT_CLAUDE_LAUNCHER,activeSlotPath,
|
|
4
|
+
detectClaudeAutoSwitch,isClaudeAi,isUsableModelId,modelFitsRoute,resolveSpawnTarget,usesBedrock,wrapWithAutoSwitch}from"./chunk-FABDZBDZ.js";import"./chunk-6CS5L24D.js";import{isForceOnly,killProcessTree,system32}from"./chunk-N2UVRM3Z.js";import"./chunk-UZUV5FYG.js";import"./chunk-RMFLTSOV.js";import"./chunk-BD7O73GK.js";import"./chunk-VFPY2A23.js";import{findExecutable,isWindowsDriveAbsolute}from"./chunk-PMOUHEJQ.js";import"./chunk-J7QYPKVK.js";
|
|
5
5
|
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 DEFAULT_AI_TIMING={abortGraceMs:5e3,abortReapMs:2e3,pollIntervalMs:5e3};function resolveTiming(over){return{abortGraceMs:over?.abortGraceMs??DEFAULT_AI_TIMING.abortGraceMs,abortReapMs:over?.abortReapMs??DEFAULT_AI_TIMING.abortReapMs,pollIntervalMs:over?.pollIntervalMs??DEFAULT_AI_TIMING.pollIntervalMs}}var MAX_RETAINED_BYTES=4*1024*1024;function closeStream(stream){return new Promise(resolve=>{if(stream===null)return resolve();stream.once("error",()=>resolve());stream.end(()=>resolve())})}function buildArgs(req,cfg,env,workspace){
|
|
6
6
|
const warnings=[];const requested=(req.model??"").trim();const usable=requested!==""&&isUsableModelId(requested);if(requested!==""&&!usable){warnings.push(`ai_model '${requested}' \u306F\u4F7F\u3048\u306A\u3044\u5F62\u3067\u3059 \u2192 \u30AB\u30C6\u30B4\u30EA\u65E2\u5B9A\u306E\u30E2\u30C7\u30EB\u3092\u4F7F\u3044\u307E\u3059`)}const fitsRoute=!usable||!isClaudeAi(req.ai)||modelFitsRoute(requested,env);if(usable&&!fitsRoute){warnings.push(`ai_model '${requested}' \u306F\u73FE\u5728\u306E\u5B9F\u884C\u7D4C\u8DEF\u3067\u306F\u89E3\u6C7A\u3067\u304D\u307E\u305B\u3093\uFF08\u3053\u306E\u6A5F\u4F53\u306F ${usesBedrock(
|
|
7
7
|
env)?"Bedrock":"Anthropic \u76F4"}\uFF09 \u2192 \u30AB\u30C6\u30B4\u30EA\u65E2\u5B9A\u306E\u30E2\u30C7\u30EB\u3092\u4F7F\u3044\u307E\u3059`)}const fallback=cfg.modelFor(req.ai,req.category,env);const safeFallback=fallback===""||!isClaudeAi(req.ai)||modelFitsRoute(fallback,env)?fallback:"";if(fallback!==""&&safeFallback===""){warnings.push(`CLAUDE_MODEL '${fallback}' \u3082\u73FE\u5728\u306E\u5B9F\u884C\u7D4C\u8DEF\u3067\u306F\u89E3\u6C7A\u3067\u304D\u307E\u305B\u3093 \u2192 \u30E2\u30C7\u30EB\u3092\u6307\u5B9A\u3057\u307E\u305B\u3093`)}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{DEPARTMENT_FLAG,FROM_FLAG,MANHOUR_DESCRIPTION,MANHOUR_FROM_FLAG,MANHOUR_TO_FLAG,MONTH_FLAG,TO_FLAG,USER_FLAG,analysisDomain,analysisForbidden,currentMonth,dataOf,levelGuidance,listIn,manhourNotes,manhourQuery,manhourRows,monthColumns,monthRange,monthsBetween,noArgs,periodNote,profitRows,rangeNotes,recordOf,resolveFilters,resolvedOrUndefined,responseMonths,staffKpiRows,workloadDistributionNotes,workloadDistributionRows}from"./chunk-
|
|
4
|
-
import"./chunk-45WIRMGL.js";import"./chunk-EXT4AIDF.js";import"./chunk-JJSBBWJ5.js";import"./chunk-
|
|
5
|
-
import"./chunk-VFPY2A23.js";import"./chunk-J7QYPKVK.js";import"./chunk-EDF4U5BT.js";import"./chunk-RZVI6PMW.js";import"./chunk-
|
|
3
|
+
import{DEPARTMENT_FLAG,FROM_FLAG,MANHOUR_DESCRIPTION,MANHOUR_FROM_FLAG,MANHOUR_TO_FLAG,MONTH_FLAG,TO_FLAG,USER_FLAG,analysisDomain,analysisForbidden,currentMonth,dataOf,levelGuidance,listIn,manhourNotes,manhourQuery,manhourRows,monthColumns,monthRange,monthsBetween,noArgs,periodNote,profitRows,rangeNotes,recordOf,resolveFilters,resolvedOrUndefined,responseMonths,staffKpiRows,workloadDistributionNotes,workloadDistributionRows}from"./chunk-TQ7TNMW5.js";import"./chunk-7KU2EXEE.js";import"./chunk-UVCJXHWN.js";
|
|
4
|
+
import"./chunk-45WIRMGL.js";import"./chunk-EXT4AIDF.js";import"./chunk-JJSBBWJ5.js";import"./chunk-HEH3PUW2.js";import"./chunk-W4NLJ2YK.js";import"./chunk-BD7O73GK.js";import"./chunk-VGT2EGH6.js";import"./chunk-4DOPQ74T.js";import"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";import"./chunk-MMVXE2CJ.js";import"./chunk-II5RVJQN.js";import"./chunk-MI6HVYR2.js";import"./chunk-PS5QFKHB.js";import"./chunk-3ZRMMBP5.js";
|
|
5
|
+
import"./chunk-VFPY2A23.js";import"./chunk-J7QYPKVK.js";import"./chunk-EDF4U5BT.js";import"./chunk-RZVI6PMW.js";import"./chunk-OKATZ4SN.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";export{DEPARTMENT_FLAG,FROM_FLAG,MANHOUR_DESCRIPTION,MANHOUR_FROM_FLAG,MANHOUR_TO_FLAG,MONTH_FLAG,TO_FLAG,USER_FLAG,analysisDomain,analysisForbidden,currentMonth,dataOf,levelGuidance,listIn,manhourNotes,manhourQuery,manhourRows,monthColumns,monthRange,monthsBetween,noArgs,periodNote,profitRows,rangeNotes,recordOf,resolveFilters,resolvedOrUndefined,responseMonths,staffKpiRows,workloadDistributionNotes,workloadDistributionRows};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{composeDocument,htmlToText,metaLine}from"./chunk-62GRAKUD.js";import{boundedText}from"./chunk-JJSBBWJ5.js";import{readBody}from"./chunk-
|
|
3
|
+
import{composeDocument,htmlToText,metaLine}from"./chunk-62GRAKUD.js";import{boundedText}from"./chunk-JJSBBWJ5.js";import{readBody}from"./chunk-HEH3PUW2.js";import"./chunk-W4NLJ2YK.js";import"./chunk-BD7O73GK.js";import{ANNOUNCEMENTS_PATH}from"./chunk-4DOPQ74T.js";import{isSafePathSegment}from"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";import"./chunk-MMVXE2CJ.js";import"./chunk-II5RVJQN.js";import{LIST_FLAGS,LIST_PAGING_HELP,envelopePaging,
|
|
4
4
|
positiveInteger}from"./chunk-MI6HVYR2.js";import{requireResolved,withResolved}from"./chunk-PS5QFKHB.js";import{isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";import"./chunk-J7QYPKVK.js";import"./chunk-EDF4U5BT.js";import"./chunk-RZVI6PMW.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var LABEL="\u304A\u77E5\u3089\u305B";var LIST_COLUMNS=["id","publish_start_at","sender_name","category_name","title","is_read","require_confirmation","is_confirmed"];var UNCONFIRMED_COLUMNS=["id","publish_start_at","publish_end_at","importance","title"];var GET_COLUMNS=["id","title","sender_name","category_name","importance_name","publish_start_at","publish_end_at","is_organization","is_read","require_confirmation","is_confirmed","allow_replies","link_url"];var REPLY_COLUMNS=["id","created_at","\
|
|
5
5
|
user_name","is_mine","content"];var REPLY_MAX_CHARS=2e3;function noArgs(input,op){if(input.args.length>0){throw new UsageError(`${op} \u306F\u4F4D\u7F6E\u5F15\u6570\u3092\u53D6\u308A\u307E\u305B\u3093: ${input.args.join(" ")}`,`twp announcement ${op} help`)}}function checkId(raw,help){const id=raw.trim();if(id==="")throw new UsageError("\u304A\u77E5\u3089\u305B\u306E ID \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",help);if(!isSafePathSegment(id)){throw new UsageError(`\u304A\u77E5\u3089\u305B\u306E ID \u3068\u3057\u3066\u4F7F\u3048\u306A\u3044\
|
|
6
6
|
\u5024\u3067\u3059: ${id}`,"\u304A\u77E5\u3089\u305B\u306E ID \u306F twp announcement list \u306E id \u5217\u3067\u78BA\u8A8D\u3067\u304D\u307E\u3059\u3002")}return id}function announcementId(input,op){const help=`twp announcement ${op} help`;const[raw,...rest]=input.args;if(rest.length>0)throw new UsageError(`${op} \u304C\u53D7\u3051\u53D6\u308C\u308B\u304A\u77E5\u3089\u305B ID \u306F1\u3064\u3060\u3051\u3067\u3059: ${rest.join(" ")}`,help);return checkId(raw??"",help)}function announcementIds(input){
|