@tocca-systems/twp-cli 0.71.0 → 0.73.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 +20 -0
- package/README.md +76 -7
- package/dist/{agent-SFX3ZVOB.js → agent-WJ4JMQMQ.js} +1 -1
- package/dist/{agent-loop-OW6ZMQKN.js → agent-loop-XFYCEK5S.js} +3 -2
- package/dist/{ai-dispatch-YABGNMHQ.js → ai-dispatch-GONY4JAY.js} +2 -2
- package/dist/{analysis-HMOECNWG.js → analysis-MVKADQHU.js} +2 -2
- package/dist/{announcement-Q642UMYK.js → announcement-UYVAY54K.js} +1 -1
- package/dist/{api-command-4HXHTIQT.js → api-command-WMT5U2VG.js} +3 -3
- package/dist/{app-JCUJJQGB.js → app-LPO4HFRV.js} +4 -4
- package/dist/{attendance-correct-DWVFYL2Y.js → attendance-correct-WDQM63AH.js} +1 -1
- package/dist/{attendance-lists-772Y3ZWA.js → attendance-lists-6RP7UGA5.js} +1 -1
- package/dist/{backlog-FG3Y5JTE.js → backlog-RYESVWII.js} +1 -1
- package/dist/{budget-5RPOQZN7.js → budget-BF3P55KH.js} +1 -1
- package/dist/{capacity-report-command-ACWK2MR5.js → capacity-report-command-QSV3A6EX.js} +1 -1
- package/dist/charter-command-A4MFFBGE.js +3 -0
- package/dist/{chunk-7EJOKJLV.js → chunk-2YVJ3QVJ.js} +1 -1
- package/dist/chunk-35MQ27I6.js +4 -0
- package/dist/{chunk-HNG6MF26.js → chunk-4B6GJBYP.js} +59 -52
- package/dist/{chunk-NVMJXFBT.js → chunk-4NZG4FJQ.js} +1 -1
- package/dist/{chunk-DAOC7VRM.js → chunk-5P22UEUF.js} +1 -1
- package/dist/{chunk-P2DSHLHD.js → chunk-5SPWQAUX.js} +2 -2
- package/dist/{chunk-GLKZ4ZZY.js → chunk-7SYIYLHX.js} +1 -1
- package/dist/{chunk-F4PGPJOI.js → chunk-B6FHTFUJ.js} +1 -1
- package/dist/{chunk-CCBNU5Y3.js → chunk-BKE3BFIQ.js} +9 -8
- package/dist/{chunk-OREF2S43.js → chunk-BYUV3D5Z.js} +2 -2
- package/dist/{chunk-HPPIVCK3.js → chunk-C7MO3RHJ.js} +7 -4
- package/dist/chunk-CCHPF23L.js +31 -0
- package/dist/{chunk-WBUYPDJH.js → chunk-D37WSWBT.js} +1 -1
- package/dist/{chunk-DLY2IN3G.js → chunk-DPIJF3EN.js} +1 -1
- package/dist/{chunk-VIWQMDGG.js → chunk-DYNNGNXR.js} +1 -1
- package/dist/{chunk-QJAZLPA3.js → chunk-DZQFMC4U.js} +1 -1
- package/dist/{chunk-XGYOJHZC.js → chunk-FHOJFKR3.js} +12 -11
- package/dist/{chunk-XCPZ4R65.js → chunk-J3KV6LAX.js} +1 -1
- package/dist/{chunk-LUBON4AA.js → chunk-JOQKYENT.js} +2 -2
- package/dist/{charter-command-LIX2JXRJ.js → chunk-LH4AZKLT.js} +1 -1
- package/dist/{chunk-WMEGP2BT.js → chunk-MNJYY3PR.js} +1 -1
- package/dist/{chunk-HBEOI456.js → chunk-MSVJ53VZ.js} +1 -1
- package/dist/{chunk-RRHAX7RK.js → chunk-MYBIPHZ7.js} +1 -1
- package/dist/{chunk-BRE7D5AY.js → chunk-NBOA4T7F.js} +1 -1
- package/dist/{chunk-MAAICW7T.js → chunk-QS5VWTI3.js} +1 -1
- package/dist/chunk-R3WFIQPJ.js +11 -0
- package/dist/chunk-RCRFLVJ6.js +117 -0
- package/dist/{chunk-OMWCSE4P.js → chunk-SCHQHPI2.js} +2 -2
- package/dist/chunk-T3C2BAVA.js +49 -0
- package/dist/chunk-TTST7UDR.js +20 -0
- package/dist/{chunk-G4TZFGNN.js → chunk-VYDPW2YO.js} +2 -19
- package/dist/{chunk-JA7HEJOU.js → chunk-WYYHMKF7.js} +1 -1
- package/dist/{chunk-LJVAOWZI.js → chunk-XMPHGOW4.js} +4 -32
- package/dist/{chunk-APPYZQNC.js → chunk-YA7W7OV4.js} +1 -1
- package/dist/cli.js +53 -9
- package/dist/{commands-4C6TJ4WG.js → commands-GMUQCBFQ.js} +1 -1
- package/dist/{commands-HH2DW2QJ.js → commands-MYGPEYBE.js} +20 -19
- package/dist/{company-4DHVAW25.js → company-4J4BZMZ4.js} +2 -2
- package/dist/{completion-JDD3SNUO.js → completion-EMY4WDII.js} +3 -3
- package/dist/{contract-PT7VW4IE.js → contract-55LGGLGZ.js} +2 -2
- package/dist/{department-C6WIZPBS.js → department-5FADSH5C.js} +1 -1
- package/dist/{deposit-OEYFPEZG.js → deposit-YSCEG5QY.js} +1 -1
- package/dist/domain-knowledge-LGBPHMWX.js +79 -0
- package/dist/{estimate-4BUJQ3TP.js → estimate-KNQ5T7KZ.js} +3 -3
- package/dist/{evaluation-GLXQ54F6.js → evaluation-MQ7USYDU.js} +1 -1
- package/dist/{expense-QE3WIJTN.js → expense-HCX2L5BN.js} +1 -1
- package/dist/{fiscal-year-YJWFQN4P.js → fiscal-year-W3JOTNNF.js} +1 -1
- package/dist/{inquiry-ORB3ROAJ.js → inquiry-WM4FEQFW.js} +1 -1
- package/dist/{invoice-XLX5KS2T.js → invoice-PYROWI6V.js} +2 -2
- package/dist/{job-title-UDF6I3BP.js → job-title-PFLVTRNO.js} +1 -1
- package/dist/{knowledge-6A3MCIRY.js → knowledge-ZUC67H2H.js} +110 -53
- package/dist/{leave-3BJMXI7Q.js → leave-4ITLO6SD.js} +2 -2
- package/dist/{license-OMIZUUTW.js → license-PAFHCG2V.js} +1 -1
- package/dist/{logout-guard-2Y7HPIKN.js → logout-guard-3B767ADS.js} +2 -2
- package/dist/{media-FGEV2OI2.js → media-BAMQWQ4H.js} +3 -3
- package/dist/{notification-2IESSY5E.js → notification-HJP3LWU7.js} +1 -1
- package/dist/{oneshot-4XO5HIJR.js → oneshot-TMUK55OV.js} +1 -1
- package/dist/plan-submit-YBTGYQD7.js +4 -0
- package/dist/{position-CR6P4WC5.js → position-YFC6XZQL.js} +1 -1
- package/dist/{project-JJEMEO2W.js → project-3RTD63II.js} +1 -1
- package/dist/{prospect-QG6X7ALK.js → prospect-ZGNWEQN7.js} +2 -2
- package/dist/{purchase-Z6ENEOZM.js → purchase-ZNMJHMP6.js} +3 -3
- package/dist/{receivable-ZBDXXMHX.js → receivable-LF3DYPOO.js} +1 -1
- package/dist/{redmine-EIFHMLNE.js → redmine-OTZNVLZY.js} +1 -1
- package/dist/{registry-DC75DVLY.js → registry-I3BPWCZE.js} +1 -1
- package/dist/{report-TTXGXSR3.js → report-H4OJWUQP.js} +1 -1
- package/dist/{revision-command-TYBPPUAF.js → revision-command-KT7NMRES.js} +1 -1
- package/dist/{run-R5CU36O3.js → run-DGBJ2EHB.js} +2 -2
- package/dist/{sales-ai-review-6TDJFHDL.js → sales-ai-review-WIVJOOFW.js} +1 -1
- package/dist/{sales-master-H5HMVBJV.js → sales-master-FR3ZJQXG.js} +2 -2
- package/dist/{sales-numbering-Q5KRM63Y.js → sales-numbering-EWYVI3RF.js} +1 -1
- package/dist/{schedule-command-4UBCTNRI.js → schedule-command-RVKP6QQS.js} +1 -1
- package/dist/{search-OSV6TA6Q.js → search-IX67TAAB.js} +1 -1
- package/dist/{segment-YOUY4PZC.js → segment-3Q64YOMR.js} +1 -1
- package/dist/server-settings-ELHHMBBK.js +4 -0
- package/dist/{server-skills-JEFNP63E.js → server-skills-EEPBSOPO.js} +1 -1
- package/dist/{setup-HHPKB6N4.js → setup-74LO2SXN.js} +2 -2
- package/dist/skill-MWYX74XM.js +4 -0
- package/dist/skill-check-2ILLHGDQ.js +29 -0
- package/dist/skill-command-4VMZ2H6A.js +3 -0
- package/dist/{skill-manage-command-S2RLIHTA.js → skill-manage-command-HPJQOTQK.js} +1 -1
- package/dist/{supplier-payment-EJTFKAKY.js → supplier-payment-NR6KRZ7V.js} +2 -2
- package/dist/{support-FR3KY63E.js → support-3UK7KKKI.js} +1 -1
- package/dist/{task-AQSKV7VL.js → task-CPKP4DOL.js} +41 -23
- package/dist/{user-PRGHG3HM.js → user-BHDF42QA.js} +2 -2
- package/dist/{user-contract-type-K7CLKCEE.js → user-contract-type-FXV6WYC4.js} +1 -1
- package/dist/{worker-agent-WDYZTQ5C.js → worker-agent-BEH65D3X.js} +1 -1
- package/dist/{workflow-S25JXGWN.js → workflow-EBAADQLR.js} +1 -1
- package/package.json +1 -1
- package/dist/chunk-6UPLPTBP.js +0 -58
- package/dist/chunk-D5EYI7S3.js +0 -48
- package/dist/chunk-KDH3KWPO.js +0 -4
- package/dist/chunk-YUS4VPNA.js +0 -11
- package/dist/plan-submit-SRQJHV2X.js +0 -4
- package/dist/server-settings-BGVJNHAV.js +0 -4
- package/dist/skill-RH5MBRXZ.js +0 -4
- package/dist/skill-command-4V2GT73D.js +0 -3
package/CHANGELOG.public.md
CHANGED
|
@@ -11,6 +11,26 @@
|
|
|
11
11
|
`CHANGELOG.md` に残してあります。顧客向けの履歴は public 公開以降を対象とします。
|
|
12
12
|
-->
|
|
13
13
|
|
|
14
|
+
## 0.73.0
|
|
15
|
+
|
|
16
|
+
スキルマスタを CLI から管理できるようになりました。`twp skill create` / `update` / `delete` でスキルを、`twp skill category …` でスキルカテゴリを作成・変更・削除でき、`twp skill reorder` でカテゴリ内の並び順をまとめて変えられます(`--dry-run` で変更前後の並びを確認できます)。
|
|
17
|
+
|
|
18
|
+
タスクのステータス等に「設定時応答メッセージ」が設定されている場合、`twp task create` / `twp task update` でその値に変えると結果の先頭に案内が表示されるようになりました。ステータスの案内文は `twp task status update <ステータス> --response-message "<案内文>"` で設定できます。
|
|
19
|
+
|
|
20
|
+
`twp wiki get` に `--outline`(見出しの一覧)と `--section <見出し>`(その節だけ)を追加しました。長い wiki ページを全文読まずに、必要な節だけを確認できます。
|
|
21
|
+
|
|
22
|
+
`twp wiki digest` で、wiki のページの件名・冒頭の段落・タグ・更新日を索引として1回で読めるようになりました。`--max-chars` で出力量の上限を指定できます。
|
|
23
|
+
|
|
24
|
+
## 0.72.0
|
|
25
|
+
|
|
26
|
+
`twp task-loop skill check` を追加しました。サーバに登録したスキル・憲章について、存在しないスキルへの参照・ループ設定や定期実行が呼ぶスキルの不在・古いファイルパスの残りを読み取りだけで検査し、問題があれば終了コード 1 で知らせます(`--output json` 対応)。
|
|
27
|
+
|
|
28
|
+
`twp wiki create` / `update` でページに最終実測日(`--verified-at`)・根拠タスク(`--evidence-task`)・種別(`--kind`)を記録でき、`twp wiki list --stale-days <日数>` で一定期間確認されていないページを洗い出せるようになりました。
|
|
29
|
+
|
|
30
|
+
`twp knowledge` を追加しました。ドメイン知識のナレッジベースの一覧・作成・設定変更・削除と、記事の一覧・本文(Markdown)の表示・作成・更新・移動・削除ができます。ナレッジベースは ID でも slug でも指定できます。
|
|
31
|
+
|
|
32
|
+
プロジェクトごとに Wiki の新規ページの既定の形式(HTML / Markdown)を `twp project update --wiki-default-format` で設定できるようになりました。`twp wiki create` で形式を省くと、その形式でページが作られます。
|
|
33
|
+
|
|
14
34
|
## 0.71.0
|
|
15
35
|
|
|
16
36
|
`twp agent-loop plan-history list` で、エージェントループの計画フェーズ1回ごとの記録(何を積み・何をなぜ見送ったか・AI のコスト)を期間を指定して引けるようになりました。
|
package/README.md
CHANGED
|
@@ -21,7 +21,7 @@ TWP(Tocca Working Platform)を、ターミナルから使うための CLI
|
|
|
21
21
|
| **できる** | AI との会話(ストリーミング表示)。手元のファイルの読み書き・検索、コマンド実行、git の読み取り——いずれも**実行前に確認**します |
|
|
22
22
|
| **できる** | `twp project` / `twp task` によるプロジェクト・タスクの読み書き(一覧・取得・作成・更新・削除・コメント) |
|
|
23
23
|
| **できる** | `twp user` によるテナントのユーザーの作成・更新・失効(退社)と招待(1件・CSV 一括・再送・取消)、ユーザーと所属(部署・役職)の参照(一覧・取得・所属の履歴)、所属の付け替え(異動)・作成・更新・終了・削除、在籍者の棚卸と人事台帳 CSV との突き合わせ。作成・更新・招待と取得、所属の書き込み、他人の所属の参照、棚卸は組織管理者の権限が要ります |
|
|
24
|
-
| **できる** | `twp skill` / `twp qualification`
|
|
24
|
+
| **できる** | `twp skill` / `twp qualification` によるスキルマスタ・資格マスタの一覧、スキル・スキルカテゴリの作成・更新・削除とカテゴリ内の並び替え(管理者のみ)、スキルマップの表示(部署で絞り込める)とスキル保有者の横断検索(所属付き)、自分のスキルプロファイルへの自己評価の提出(`--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` による組織マスタ(部署・役職・職位・セグメント・契約形態・事業年度設定)の一覧・取得・作成・更新・削除と、部署ツリー・部署の所属者の表示。作成・更新・削除は管理者の権限が要ります |
|
|
26
26
|
| **できる** | `twp inquiry category` による問い合わせカテゴリの一覧・取得・作成・更新(通知先の設定・末尾への並べ替えを含む)。取得・作成・更新は問い合わせ機能の管理者の権限が要ります |
|
|
27
27
|
| **できる** | `twp evaluation` / `twp goal-sheet` による人事評価と目標シートの読み取り(評価期間・見てよい範囲の評価と目標シートの一覧・部下の評価の状況・評価の詳細とプロジェクト別評価・自分の目標シート・受け取ったフィードバック)。書き込みはまだありません |
|
|
@@ -68,7 +68,8 @@ TWP(Tocca Working Platform)を、ターミナルから使うための CLI
|
|
|
68
68
|
| **できる** | `twp budget` による予実管理(年度の予実ダッシュボード・サマリー・部署行の内訳と未割当・CSV 出力、目標の一覧・JSON でのまとめ登録・前年度からのコピー・CSV の取り込みと雛形、プロジェクトの部署按分の参照と全件置換)。分析の権限と予実管理ページの閲覧対象への登録が要り、目標の書き込みは全体管理者か分析の権限が「管理者」の人です |
|
|
69
69
|
| **できる** | `twp workflow` による、自分が申請できる申請書・申請書の定義(管理者)・自分の申請・承認履歴・自分の承認待ちの参照(申請書は名前でも指定できます)と、申請の起票・提出・更新・削除、承認・却下・差し戻し・取下げ、承認画面の AIチェックの結果の表示と承認者コメント |
|
|
70
70
|
| **できる** | `twp report` による自分のレポート(日報)の一覧(フォーマット・状態・語で絞り込み)・詳細と、下書きの作成(フォーマットの入力項目から雛形を出せます)・更新・提出・AI アドバイス、使えるレポートフォーマットの一覧。確認者としての一覧(未読・書いた人・作成日で絞り込み)・既読・コメント・確認済み・確認の取り消し・差し戻し |
|
|
71
|
-
| **できる** | `twp wiki` / `twp note` / `twp meeting` による、wiki ページ(親ページ直下の子の一覧を含む)・ノート・議事録(開催日の期間で絞り込み)の一覧と、本文を `--output text` で文書として読むこと。wiki
|
|
71
|
+
| **できる** | `twp wiki` / `twp note` / `twp meeting` による、wiki ページ(親ページ直下の子の一覧を含む)・ノート・議事録(開催日の期間で絞り込み)の一覧と、本文を `--output text` で文書として読むこと。wiki ページの作成・更新・移動・削除と、親子構造・タグ・版の履歴と差分・被リンク・関連タスクの読み取り、索引(`twp wiki digest`)の出力 |
|
|
72
|
+
| **できる** | `twp knowledge` によるドメイン知識(社内 Wiki 相当のナレッジベース)の一覧・詳細・作成・設定変更・削除と、記事の一覧(ディレクトリ・深さで絞り込み)・本文(Markdown)を読む・作成・更新・移動・削除。KB は ID でも slug でも指定できます。KB の作成・設定変更・削除はドメイン知識の管理者だけです |
|
|
72
73
|
| **できる** | `twp outlook` / `twp teams` / `twp onedrive` による Microsoft 365 の読み取り(メール・添付・予定、Teams のチーム・チャネル・チャット・メッセージ・スレッド返信・自分宛てメンション、OneDrive のファイルの一覧・情報・ダウンロード)。TWP に Microsoft アカウントでログインしたことがあるユーザーが対象です。書き込みはメールの送信・返信・全員返信・転送(`twp outlook mail send` / `reply` / `reply-all` / `forward`)、Teams のチャット送信・チャネル投稿・スレッド返信(`twp teams message send` / `reply send`)、予定の作成・更新・削除(`twp outlook event create` / `update` / `delete`)、共有リンクの作成(`twp onedrive link create`)ができ(いずれも `--yes` が必要)、OneDrive へのアップロード(`twp onedrive item upload`)もできます |
|
|
73
74
|
| **できる** | `twp task-loop` による、TWP のタスクキューを手元の AI CLI に実行させる常駐ループ |
|
|
74
75
|
| **できる** | `twp agent-loop` による、エージェントループのキューの一覧・投入・更新・先頭への移動・削除と、期間を指定した実行履歴の参照。更新・移動・削除はテナントの管理者の権限が要ります |
|
|
@@ -158,14 +159,15 @@ twp task milestone list [--project <コード>]
|
|
|
158
159
|
twp task label list [--project <コード>]
|
|
159
160
|
|
|
160
161
|
# ステータスを追加・変更・削除する(個人タスクの面にはありません)
|
|
161
|
-
twp task status create --name <名前> [--color <色>] [--is-completed <true|false>] [--is-default <true|false>] [--sort-order <整数>] [--project <コード>]
|
|
162
|
-
twp task status update <ステータス> [--name <名前>] [--color <色>] [--is-completed <true|false>] [--is-default <true|false>] [--sort-order <整数>] [--project <コード>]
|
|
162
|
+
twp task status create --name <名前> [--color <色>] [--is-completed <true|false>] [--is-default <true|false>] [--sort-order <整数>] [--response-message <案内文>] [--project <コード>]
|
|
163
|
+
twp task status update <ステータス> [--name <名前>] [--color <色>] [--is-completed <true|false>] [--is-default <true|false>] [--sort-order <整数>] [--response-message <案内文>] [--project <コード>]
|
|
163
164
|
twp task status delete <ステータス> --yes [--project <コード>]
|
|
164
165
|
```
|
|
165
166
|
|
|
166
167
|
- **個人タスク(プロジェクトに属さない自分だけのタスク)は `--project __private__` で操作します**(`twp task list --project __private__`)。キーは `PRIVATE-<番号>` です。担当者(`--assignee`)とコメント(`twp task comment`)は個人タスクにはありません
|
|
167
168
|
- **`--status` / `--type` / `--assignee` は名前で指定できます**(`--assignee me` は自分)。候補が絞れないときは候補を出して止まります
|
|
168
169
|
- **渡せる名前は `twp task status list` / `type list` / `category list` / `milestone list` / `label list` で確認できます**(`name` 列の値をそのまま `--status` 等へ渡せます)。`is_default` が立っているものが、`twp task create` で省略したときに使われる値です。結果は名前解決と同じキャッシュ(既定10分)から返るので続けて打っても往復は増えません(最新にするなら `--refresh`)。個人タスク(`--project __private__`)にマイルストーンはありません。ステータスを作成・更新・削除すると手元の一覧キャッシュを捨てます(サーバ側の反映に時間がかかり新しい名前が見つからないときは、少し置いて `--refresh`)。標準ステータス(`default:*`)と、タスクが使っているステータスは削除できません
|
|
170
|
+
- **設定時応答メッセージ**: ステータスに `--response-message "<案内文>"`(500字まで・`""` で解除)を設定すると、`twp task create` / `update` でタスクがそのステータスに変わったとき、結果の先頭に `⚠ 設定時メッセージ(status=<値>): <案内文>` が出ます(`--output json` ではキー `notices`)。種別・カテゴリ・マイルストーン・ラベルの案内文は TWP の画面のタスク設定から設定でき、設定されていれば同じように出ます
|
|
169
171
|
- **`delete` には `--yes` が必要です。** 対話中でも確認プロンプトには落ちません(自動実行と手動実行で必要な引数を変えないため)
|
|
170
172
|
- **本文は `--body-file` / `--description-file` を主経路にしてください**(`-` で標準入力)。引数に直接書くと改行と Markdown が壊れます
|
|
171
173
|
- 一覧は `--limit <件数>` / `--all` / `--cursor` で辿れます(`task subtasks` と `project members` はページングがありません)
|
|
@@ -198,6 +200,7 @@ twp project update <ID|コード> [--name <名前>] [--code <コード>] [--end-
|
|
|
198
200
|
- **ステータスは指定できません。** 終了日からサーバが決めます(過去日ならクローズ、今日以降か `none` ならアクティブ)
|
|
199
201
|
- 値を外すときは、日付は `none`、ユーザー・部署・メモ・既定の期日は `--no-manager` / `--no-leader` / `--no-department` / `--no-memo` / `--no-default-due-days` です
|
|
200
202
|
- タスクの既定の期日(`--default-due-days`)は作成時には指定できません。作成後に `update` で設定してください
|
|
203
|
+
- Wiki の新規ページの既定の形式は `--wiki-default-format <html|markdown>` で設定します。`twp wiki create` で `--content-format` を省くとこの形式で作られます(未設定なら HTML。作成済みのページの形式は変わりません)
|
|
201
204
|
- **`update --code` はそのプロジェクトのタスクキーを全件書き換えます。** 送る前に件数を表示し、タスクがあれば `--yes` が無い限り送りません(`--dry-run` で件数だけ確かめられます)
|
|
202
205
|
|
|
203
206
|
### プロジェクトメンバーをアサインする
|
|
@@ -422,6 +425,18 @@ twp skill who --skill <スキル> [--min-level <1〜5>] [--fiscal-year <年度>]
|
|
|
422
425
|
twp skill self-evaluate <プロファイルID> --content-file <JSON> --yes # 自分の自己評価を提出する
|
|
423
426
|
twp qualification list [--keyword <語>] [--recommended] [--category <分類>] [--difficulty <難易度>]
|
|
424
427
|
|
|
428
|
+
# スキルマスタの管理(管理者のみ)
|
|
429
|
+
twp skill get <スキル>
|
|
430
|
+
twp skill create --category <カテゴリ> --name <スキル名> [--description …] [--skill-code …] [--sub-group-label …] [--sort-order <n>] [--active true|false]
|
|
431
|
+
twp skill update <スキル> [--category <カテゴリ>] [項目…]
|
|
432
|
+
twp skill delete <スキル> --yes
|
|
433
|
+
twp skill reorder --category <カテゴリ> --file <パス> # 並び順の一括変更(--dry-run で差分だけ見る)
|
|
434
|
+
twp skill category list [--active true|false] [--keyword <語>]
|
|
435
|
+
twp skill category get <カテゴリ>
|
|
436
|
+
twp skill category create --name <カテゴリ名> [--description …] [--sort-order <n>] [--active true|false] [--department-scope system|sales|admin] [--iso-standard ISO9001|ISO27001|both]
|
|
437
|
+
twp skill category update <カテゴリ> [項目…]
|
|
438
|
+
twp skill category delete <カテゴリ> --yes
|
|
439
|
+
|
|
425
440
|
twp user skills <ユーザー> [--fiscal-year <年度>] # スキル評価(自己・一次・二次・確定レベル)
|
|
426
441
|
twp user qualifications <ユーザー> # 保有資格
|
|
427
442
|
twp user trainings <ユーザー> [--from <日付>] [--to <日付>] # 研修受講履歴
|
|
@@ -432,7 +447,10 @@ twp user contracts <ユーザー> # 雇用契約
|
|
|
432
447
|
- `--department` は主所属の部署で絞ります(スキルマップの API に部署の絞り込みが無いため、ユーザー一覧を引いて絞ります。ユーザー一覧が引けなければ絞らずに出すことはせず止まります)
|
|
433
448
|
- `twp skill who` の `--skill` は ID か名前です(完全一致 → 部分一致で1件に絞れたときだけ受け付け、複数に当たれば候補を出して止まります)。所属はユーザー一覧から足すので、引けない権限のときは空欄にして理由を stderr に出します
|
|
434
449
|
- **`twp skill self-evaluate` は送信後に自分では直せず、上長へ通知が届きます**(`--yes` が要ります)。内容は `{"skills": [{"skill_id": "…", "self_level": 1〜5, "self_comment": "…"}], "skill_up_policy": "…"}` の JSON で、プロファイル ID と `skill_id` は `twp user skills me` で確認できます。プロファイルに無いスキルや知らないキーは送る前に止め、送らなかったスキルは stderr で挙げます
|
|
435
|
-
- 一次・二次評価と確定(評価者の操作)、資格の保有者の横断検索(`twp qualification who
|
|
450
|
+
- 一次・二次評価と確定(評価者の操作)、資格の保有者の横断検索(`twp qualification who`)、資格マスタの作成・更新・削除・CSV 取り込みはまだありません(`twp api` では届きます)
|
|
451
|
+
- **`twp skill delete` は、各ユーザーのスキルプロファイルにあるそのスキルの評価(自己評価・一次・二次評価)も一緒に消します**(取り消せません・`--yes` が要ります)。今後使わないだけなら `twp skill update <スキル> --active false` で無効化してください
|
|
452
|
+
- `twp skill reorder` の `--file` は新しい並び順を先頭から1行1スキル(ID・スキルコード・名前。名前はそのカテゴリの中で照合します)で書いた CSV / テキスト、または JSON 配列です。カテゴリ内のスキル(無効化したものを含む)を過不足なく並べてください。送る前に今の並びとの差分を stderr に出し、過不足があれば送りません
|
|
453
|
+
- スキルが紐づいているスキルカテゴリは削除できません(サーバが断ります。スキルを別のカテゴリへ移すか削除してから実行します)
|
|
436
454
|
- 権限が無いときは、誰の権限が要るかを先に案内します(終了コード 3)
|
|
437
455
|
- ヘルプは `twp skill help` / `twp qualification help` / `twp user help`
|
|
438
456
|
|
|
@@ -1334,16 +1352,20 @@ twp report reject <レポートID> --comment-file reason.md --yes # 差し戻
|
|
|
1334
1352
|
```bash
|
|
1335
1353
|
twp wiki list [--project <コード|ID>] [--status <draft|published>] [--tag <タグ>] [--keyword <語>] [--all]
|
|
1336
1354
|
twp wiki list [--project <コード|ID>] --parent <ページID>|root # 親ページ直下の子(root で最上位)
|
|
1355
|
+
twp wiki list [--project <コード|ID>] --stale-days <日数> # N 日以上実測されていないページ(古い順)
|
|
1337
1356
|
twp wiki get <ページID> [<ページID> ...] --output text # 複数並べると1件ずつ取得
|
|
1357
|
+
twp wiki get <ページID> --outline # 見出しの一覧(階層・節の文字数・版)
|
|
1358
|
+
twp wiki get <ページID> --section <見出し> # その見出しの節だけ(版つき)
|
|
1338
1359
|
twp wiki tree [--project <コード|ID>] # 親子構造(本文は出さない)
|
|
1339
1360
|
twp wiki tags [--project <コード|ID>]
|
|
1361
|
+
twp wiki digest [--project <コード|ID>] [--parent <ページID>] [--tag <タグ>] [--max-chars <文字数>] --output text # 索引
|
|
1340
1362
|
twp wiki versions <ページID> [--limit <件数>] # 版の履歴(新しい順・最大100件)
|
|
1341
1363
|
twp wiki version <ページID> <版> --output text
|
|
1342
1364
|
twp wiki diff <ページID> <版1> [<版2>] # 版2を省くといまのページと比べる
|
|
1343
1365
|
twp wiki backlinks <ページID> # このページへリンクしているページ(前後の抜粋つき)
|
|
1344
1366
|
twp wiki linked-tasks <ページID> # このページに紐づいたタスク
|
|
1345
|
-
twp wiki create [--project <コード|ID>] --title <件名> --content-file <パス|-> [--content-format <html|markdown>] [--parent <ページID>] [--status <draft|published>] [--tag <タグ>]...
|
|
1346
|
-
twp wiki update <ページID> [--title <件名>] [--content-file <パス|->] [--content-format <html|markdown>] [--status <draft|published>] [--tag <タグ>]... [--clear-tags] [--if-version <版>]
|
|
1367
|
+
twp wiki create [--project <コード|ID>] --title <件名> --content-file <パス|-> [--content-format <html|markdown>] [--parent <ページID>] [--status <draft|published>] [--tag <タグ>]... [--verified-at <日付|today>] [--evidence-task <キー>]... [--kind <種別>]
|
|
1368
|
+
twp wiki update <ページID> [--title <件名>] [--content-file <パス|->] [--content-format <html|markdown>] [--status <draft|published>] [--tag <タグ>]... [--clear-tags] [--verified-at <日付|today>|--clear-verified-at] [--evidence-task <キー>...|--clear-evidence-tasks] [--kind <種別>|--clear-kind] [--if-version <版>]
|
|
1347
1369
|
twp wiki move <ページID> [--parent <ページID>|root] [--sort-order <順>]
|
|
1348
1370
|
twp wiki delete <ページID> --yes
|
|
1349
1371
|
twp note list [--mine] [--favorite] [--status <draft|published>] [--visibility <private|tenant|external|public>] [--keyword <語>] [--all]
|
|
@@ -1355,16 +1377,43 @@ twp meeting get <議事録ID> --output text
|
|
|
1355
1377
|
- `get --output text` は本文を読むための文書(見出し・メタ情報・本文)を出します。HTML と議事録エディタの内容は平文にし、見出し・箇条書き・リンクは Markdown 風に残します。サーバの原文は `--output json` で取れます
|
|
1356
1378
|
- 議事録の文書にはアジェンダ・議事メモ・決定事項・アクションアイテム・AI 要約が入ります。文字起こしは長いので入れません(`--query transcript` で取れます)
|
|
1357
1379
|
- wiki はプロジェクトごとです(`--project` を省くと既定のプロジェクト)。`--parent` は他の絞り込み・ページングと併用できません
|
|
1380
|
+
- `wiki digest` は各ページの件名・ID・本文の冒頭の段落(200文字まで)・タグ・更新日・版を1回で出します。`--parent` はそのページの配下、`--tag` はそのタグのページだけです。`--max-chars` は `--output text` の出力全体の文字数の上限で、収まらないページは後ろから落とし「省略 N 件」と必ず出します(json は `omitted`)
|
|
1358
1381
|
- `twp wiki get` に ID を複数並べると1件ずつ取得します。`--output json` はページの配列、`--output text` はページごとに `=== <n>/<件数> <件名>(ID: <ID>) ===` の区切り行を挟みます。見つからない・権限が無いページがあっても他のページは出し、取れなかった ID と理由を stderr に出して終了コード 3(サーバの 5xx が混じれば 4)で終わります(`--output json` では stderr のエラーに `target` として ID が入ります)。ログインの失効(401)と回数制限(429)のときは途中で止め、何も出しません
|
|
1382
|
+
- `wiki get --outline` / `--section`(ID は1つだけ)は長いページを全文読まずに済ませるための口です。見出しは HTML・Markdown・共同編集エディタの JSON のどれでも同じ規則で探し(完全一致・空白の違いと大文字小文字は無視)、見つからなければ候補の見出しを出して終了コード 2 で止まります。どの出力形式でも版を出すので、そのまま `wiki update --if-version` に渡せます
|
|
1359
1383
|
- `wiki tree` は `--output json` でも本文を出しません(構造だけを1往復で読むため)。`wiki diff` は本文を平文にしてから行単位で比べるので、HTML のタグだけの違いは出ません。件名が変わっていれば件名の違いも出します
|
|
1360
1384
|
- `twp meeting list` の `--from` / `--to` は開催日(日本時間の日付)の期間で、両端の日を含み、片方だけでも指定できます。`--keyword` はタイトルの語です
|
|
1361
1385
|
- `twp note get` で開くと、画面で開いたときと同じくノートの閲覧数が1増えます
|
|
1362
1386
|
- wiki の本文は `--content-file` のファイル(`-` で標準入力)から読み、加工せずに送ります。Markdown で書いた本文は `--content-format markdown` を付けて作成してください(画面で Markdown として表示されます)。省くと HTML のページになり(そのことを stderr で知らせます)、Markdown を渡しても変換されず記号のまま表示されます。`create` で `--status` を省くと下書きになります
|
|
1363
1387
|
- ページの形式(`html` / `markdown`)は作成後に変えられません。`update` で違う形式を指定するとサーバの拒否をそのまま出して終了コード 3 です。`twp wiki get` は形式を `content_format` 列(`--output text` では「形式:」)に出し、Markdown のページの本文は Markdown のまま出します
|
|
1364
1388
|
- `twp wiki update --if-version <版>` は送る直前にページの版(`twp wiki get` の `version`)を照合し、違えば何も送らずに終了コード 3 で止まります(照合と送信の間の他人の更新までは防げません)。`--tag` はタグを置き換え、`--clear-tags` で空にします
|
|
1389
|
+
- ナレッジの鮮度は `--verified-at`(最終実測日。`today` は日本時間の今日)・`--evidence-task`(根拠タスクのキー・複数回可・置き換え)・`--kind`(種別)でページに記録します。`twp wiki list --stale-days <N>` は最終実測日が N 日以上前のページと未設定のページを、実測日の古い順に出します(要約列は `status` / `verified_at` / `knowledge_kind` / `evidence_task_keys`)。サーバがこの属性を返さない古い版だと絞り込みが効かないので、そのときは stderr で知らせます
|
|
1365
1390
|
- 編集・移動・削除できるのはページの作成者・wiki の管理者・組織の管理者です。権限が無ければサーバの文面をそのまま出して終了コード 3 です
|
|
1366
1391
|
- ノート・議事録の書き込みはまだできません(`twp api /api/v2/notes/...`・`/api/v2/meetings/...` で到達できます)。ヘルプは `twp wiki help` / `twp note help` / `twp meeting help`
|
|
1367
1392
|
|
|
1393
|
+
### ドメイン知識(ナレッジベース)を操作する
|
|
1394
|
+
|
|
1395
|
+
```bash
|
|
1396
|
+
twp knowledge list
|
|
1397
|
+
twp knowledge get <KB>
|
|
1398
|
+
twp knowledge create --name <名前> --slug <slug> [--description <説明>] [--access-level <tenant|authenticated|public>] [--status <draft|active|archived>]
|
|
1399
|
+
twp knowledge update <KB> [--name <名前>] [--slug <slug>] [--description <説明>|--clear-description] [--access-level <公開範囲>] [--status <状態>]
|
|
1400
|
+
twp knowledge delete <KB> --yes
|
|
1401
|
+
twp knowledge doc list <KB> [--prefix <ディレクトリ>] [--depth <深さ>]
|
|
1402
|
+
twp knowledge doc get <KB> <パス> --output text
|
|
1403
|
+
twp knowledge doc create <KB> <パス> --title <件名> --content-file <パス|-> [--summary <要約>] [--tag <タグ>]...
|
|
1404
|
+
twp knowledge doc update <KB> <パス> [--title <件名>] [--content-file <パス|->] [--summary <要約>|--clear-summary] [--tag <タグ>]... [--clear-tags]
|
|
1405
|
+
twp knowledge doc move <KB> <移動元のパス> <移動先のパス>
|
|
1406
|
+
twp knowledge doc delete <KB> <パス> --yes
|
|
1407
|
+
```
|
|
1408
|
+
|
|
1409
|
+
- プロジェクトの wiki(`twp wiki`)とは別の機能です。`<KB>` はナレッジベースの ID か slug です
|
|
1410
|
+
- 記事の `<パス>` は `/guide/setup.md` のように指定します(先頭の `/` は省けます)。各階層は英数字で始まり、英数字・`.` `_` `-` だけを使えます。`..` や末尾の `/` は送る前に止めます
|
|
1411
|
+
- 本文は `--content-file` のファイル(`-` で標準入力)から読み、Markdown のまま加工せずに送ります(上限 300KB)。サーバは保存時に本文の前後の空白(末尾の改行を含む)を落とします。`doc get --output text` は本文の Markdown をそのまま出します
|
|
1412
|
+
- `doc list` は本文を含みません。サーバが1回に読む上限(5,000 件)を超える KB では、出てこない記事があることを stderr で知らせます
|
|
1413
|
+
- `twp knowledge delete` は配下の記事もまとめて削除します。送る前に KB の名前と記事の件数を stderr に出します
|
|
1414
|
+
- KB の作成・設定変更・削除はドメイン知識の管理者(admin)だけ、記事の作成・編集は member 以上です。権限が無ければサーバの文面をそのまま出して終了コード 3 です
|
|
1415
|
+
- 検索・MCP 公開はまだできません。ヘルプは `twp knowledge help` / `twp knowledge doc help`
|
|
1416
|
+
|
|
1368
1417
|
### TWP 内を横断して検索する
|
|
1369
1418
|
|
|
1370
1419
|
```bash
|
|
@@ -1935,6 +1984,26 @@ twp task-loop skill delete --project <キー|UUID> <名前> # サーバから削
|
|
|
1935
1984
|
- **ループはキュー項目の `/<名前>` をサーバ版で実行します。** サーバに登録されたスキルはサーバ版が、登録されていないスキル(または本文を取得できなかったとき)は作業ディレクトリのファイルが使われます。サーバ版は作業ディレクトリへ書き出さずに実行します(claude にはプロンプト内で展開して渡します)
|
|
1936
1985
|
- どちらで走ったかはループのログとステップログに `skill=server@rev<番号>` / `skill=file` として残ります。一覧はサイクルごとに1回だけ取得し、本文は内容が変わったスキルだけを取り直します
|
|
1937
1986
|
|
|
1987
|
+
### 指示コーパスの整合を検査する(`skill check`)
|
|
1988
|
+
|
|
1989
|
+
サーバに登録したスキル・憲章が、互いに・ループ設定と食い違っていないかを読み取りだけで検査します。
|
|
1990
|
+
|
|
1991
|
+
```bash
|
|
1992
|
+
twp task-loop skill check --project <キー|UUID> # この機体のループ設定(~/.twp/loops/<project>.json)で
|
|
1993
|
+
twp task-loop skill check --project <キー|UUID> --config loop.json # 別のループ設定ファイルで
|
|
1994
|
+
twp task-loop skill check --project <キー|UUID> --output json # JSON(problems / candidates / checked / notes)
|
|
1995
|
+
```
|
|
1996
|
+
|
|
1997
|
+
- 報告する問題(1件1行: 場所・種類・該当行):
|
|
1998
|
+
- **壊れた参照** — スキル・憲章の本文が `/<接頭辞><名前>`(行頭・本文中)や「スキル `<接頭辞><名前>`」で参照するスキルがサーバに無い。パス・URL の途中(`.claude/commands/twp-x.md`)とワイルドカード表記(`/twp-x-*-review`)は参照と見なしません。接頭辞が空のときは行頭の `/<名前>` だけを見ます
|
|
1999
|
+
- **計画スキル・リリース回収・後続投入・定期枠のスキルが無い** — ループ設定の `operations.plan_skill`・`release_recovery_skill`・`post_success_enqueue`(起点と後続)・有効な定期枠の `skill` がサーバに無い(引数付きの呼び出しは名前だけで照合)
|
|
2000
|
+
- **古いパス** — 本文に `.claude/commands/…`(`skill push|pull` の既定ディレクトリ)や `CONSTITUTION.md`(`charter pull` の既定ファイル)へのリンクが残っている
|
|
2001
|
+
- コードブロックの中も区別せずに見ます(実際の呼び出しを手順として書くことが多いため)。説明のために存在しない名前を書くときは、`/<接頭辞>` で始まる形を避けてください
|
|
2002
|
+
- **どこからも参照されないスキルは「棚卸し候補」として併記します**(終了コードには数えません。手で打つスキルもあるため)
|
|
2003
|
+
- 接頭辞はループ設定の `operations.skill_prefix`(無ければ既定の `twp-`)に従います。ループ設定が無いときは計画スキル・後続投入を検査せず、その旨を表示します(`--config` で明示したファイルが無いときは終了コード 2)
|
|
2004
|
+
- **このコマンドはサーバの登録だけを見ます。** ループはサーバに無いスキルを作業ディレクトリのファイルで実行するので、移行途中のプロジェクトではファイルで動いているスキルも「無い」と出ます(1件も登録していないときはその旨を表示します)。ループがコードの中で直接呼ぶスキルは検査の対象外で、棚卸し候補に出ることがあります
|
|
2005
|
+
- `--output json` の JSON は検査を最後まで行えたときだけ出ます。取得の失敗・引数の誤りは標準エラーと終了コードで返します
|
|
2006
|
+
- 終了コード: `0` 問題なし / `1` 問題あり / `2` 引数・設定ファイルの誤り / `3` 4xx / `4` 5xx・通信失敗 / `5` 認証失敗
|
|
1938
2007
|
### 定期枠の定義をファイルとサーバで受け渡す
|
|
1939
2008
|
|
|
1940
2009
|
ループが定期的に投入する枠(定期スケジュール)の定義と、全体設定(1サイクルの上限 `max_per_cycle`・時間帯ゲート `gates`・件数ゲートが数えるステータス `require_zero_statuses`)を読み書きできます。引数なしの `twp task-loop schedule` はこれまでどおり「いま発火する枠」の表示です。
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{SCHEDULE_HELP,parseSchedule}from"./chunk-
|
|
3
|
+
import{SCHEDULE_HELP,parseSchedule}from"./chunk-MSVJ53VZ.js";import"./chunk-WVCEKC7V.js";import{LIST_FLAGS,LIST_PAGING_HELP,envelopePaging,nonEmpty,positiveInteger}from"./chunk-MI6HVYR2.js";import"./chunk-RX5HWI4L.js";import{charCount,readBody}from"./chunk-6LSQCOCJ.js";import{AGENT_REPOSITORIES_PATH,AGENT_SCHEDULES_PATH,AGENT_SESSIONS_PATH}from"./chunk-4B6GJBYP.js";import{isSafePathSegment}from"./chunk-HVZUXLQ4.js";import{ApiError}from"./chunk-JA5A6UJ2.js";
|
|
4
4
|
import"./chunk-H4CDX4TX.js";import{requireResolved,withResolved}from"./chunk-PS5QFKHB.js";import"./chunk-II5RVJQN.js";import{isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiRejectedError,ApiResponseError,NetworkError,UsageError,WaitTimeoutError}from"./chunk-VFPY2A23.js";import{NotLoggedInError,SessionExpiredError}from"./chunk-XNLIEUAW.js";import"./chunk-J7QYPKVK.js";import"./chunk-4VZKNEVN.js";import"./chunk-RZVI6PMW.js";import"./chunk-QQRJLH6B.js";
|
|
5
5
|
import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var LABEL="\u5B9A\u671F\u5B9F\u884C";var LIST_COLUMNS=["schedule_id","name","enabled","schedule","repository_full_name","next_run_at","last_run_at","disabled_reason","owner_user_id"];var GET_COLUMNS=["schedule_id","name","enabled","schedule","repository_full_name","base_branch","ai_provider","ai_model","next_run_at","last_run_at","last_session_id","consecutive_failures","disabled_reason","owner_user_id","can_edit","can_disable","created_at","updated_at"];var RUN_COLUMNS=["run_id","created_at","t\
|
|
6
6
|
rigger","result","skip_reason","session_id","pr_url","error_message"];var NAME_MAX_CHARS=100;var INSTRUCTION_MAX_CHARS=1e4;var RUNS_MAX_LIMIT=100;var FORBIDDEN="AI\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u6A5F\u80FD\u306E\u30E9\u30A4\u30BB\u30F3\u30B9\uFF08agent\uFF09\u304C\u3042\u306A\u305F\u306E\u30A2\u30AB\u30A6\u30F3\u30C8\u306B\u5272\u308A\u5F53\u3066\u3089\u308C\u3066\u3044\u306A\u3044\u304B\u3001\u4ED6\u30E6\u30FC\u30B6\u30FC\u306E\u5B9A\u671F\u5B9F\u884C\u3092\u5909\u66F4\u3057\u3088\u3046\u3068\u3057\u3066\u3044\u307E\u3059\u3002\u7DE8\u96C6\u30FB\u524A\u9664\u30FB\u6709\u52B9\u5316\u30FB\u4ECA\u3059\u3050\u5B9F\u884C\u306F\u30AA\u30FC\u30CA\u30FC\u672C\u4EBA\u3060\u3051\u3001\u7121\u52B9\u5316\u306F\u30AA\u30FC\u30CA\u30FC\u3068\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u7BA1\u7406\u8005\u304C\u3067\u304D\u307E\u3059\u3002";
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{stepToItem}from"./chunk-
|
|
4
|
-
import{requireResolved,singleRef,withResolved}from"./chunk-PS5QFKHB.js";import"./chunk-II5RVJQN.js";import{acknowledgement,isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";import"./chunk-PMOUHEJQ.js";import"./chunk-J7QYPKVK.js";import"./chunk-5WGOHFAS.js";import"./chunk-RZVI6PMW.js";import"./chunk-NHYMHCAT.js";
|
|
3
|
+
import{stepToItem}from"./chunk-QS5VWTI3.js";import"./chunk-DXUFECE7.js";import{loadLocalConfig}from"./chunk-CCHPF23L.js";import{parseOperations}from"./chunk-XMPHGOW4.js";import"./chunk-VYDPW2YO.js";import"./chunk-TTST7UDR.js";import{loadAiConfig}from"./chunk-FABDZBDZ.js";import{SKILL_PREFIX_RE,setSkillPrefix}from"./chunk-6CS5L24D.js";import"./chunk-N2UVRM3Z.js";import"./chunk-5KAWCLYN.js";import"./chunk-GY7KI5E5.js";import{LIST_FLAGS,
|
|
4
|
+
LIST_PAGING_HELP,envelopePaging,nonEmpty,positiveInteger}from"./chunk-MI6HVYR2.js";import{requireResolved,singleRef,withResolved}from"./chunk-PS5QFKHB.js";import"./chunk-II5RVJQN.js";import{acknowledgement,isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";import"./chunk-PMOUHEJQ.js";import"./chunk-J7QYPKVK.js";import"./chunk-5WGOHFAS.js";import"./chunk-RZVI6PMW.js";import"./chunk-NHYMHCAT.js";
|
|
5
|
+
import"./chunk-VSJBJXZO.js";var LABEL="\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u30EB\u30FC\u30D7\u306E\u30A2\u30A4\u30C6\u30E0";var STATUSES=["pending","processing","completed","failed"];var AI_TYPES=["claude","gemini","codex","copilot"];var EFFORTS=["low","medium","high","xhigh","max"];var PRIORITIES=["P0","P1","P2","P3"];var LIST_COLUMNS=["item_id","status","task_key","label","ai_type","ai_effort","runner_id","created_at"];var GET_COLUMNS=["item_id","status","task_key","label","prompt","ai_type","ai_model","ai_effort","runn\
|
|
5
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\
|
|
6
7
|
oject",summary:"\u30AD\u30E5\u30FC\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\uFF08\u30B3\u30FC\u30C9\u307E\u305F\u306F ID\u3002\u7701\u7565\u6642\u306F TWP_PROJECT / .twp/config.json / ~/.twp/config.json\uFF09",takesValue:true,placeholder:"<\u30B3\u30FC\u30C9|ID>"};var ITEM_FLAG={name:"--item",summary:"\u30A2\u30A4\u30C6\u30E0\u306E ID\uFF08item_id\uFF09\u3002\u4F4D\u7F6E\u5F15\u6570\u3068\u540C\u3058\u610F\u5473\uFF08\u4E21\u65B9\u6307\u5B9A\u306F\u30A8\u30E9\u30FC\uFF09",takesValue:true,placeholder:"\
|
|
7
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 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=`\
|
|
@@ -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{expandServerSkills,prepareSkillOverlay}from"./chunk-
|
|
4
|
-
|
|
3
|
+
import{failureHint,isAuthError,isCliFatalText,isRateLimited,isServerAiType,isUntrusted,maxTurnsReached,rateLimitWaitSeconds,tailForScan}from"./chunk-ZOOEH7ZE.js";import{expandServerSkills,prepareSkillOverlay}from"./chunk-DPIJF3EN.js";import"./chunk-MYBIPHZ7.js";import"./chunk-A4LFG7MW.js";import{detectAiClis}from"./chunk-5SONMN6K.js";import"./chunk-VRBI2NPI.js";import{ClaudeStreamRenderer}from"./chunk-DXUFECE7.js";import{DEFAULT_CLAUDE_LAUNCHER,activeSlotPath,
|
|
4
|
+
detectClaudeAutoSwitch,isClaudeAi,isUsableModelId,modelFitsRoute,resolveSpawnTarget,usesBedrock,wrapWithAutoSwitch}from"./chunk-FABDZBDZ.js";import"./chunk-6CS5L24D.js";import{isForceOnly,killProcessTree,system32}from"./chunk-N2UVRM3Z.js";import"./chunk-5KAWCLYN.js";import"./chunk-GY7KI5E5.js";import"./chunk-VFPY2A23.js";import{findExecutable,isWindowsDriveAbsolute}from"./chunk-PMOUHEJQ.js";import"./chunk-J7QYPKVK.js";import"./chunk-5WGOHFAS.js";
|
|
5
5
|
import{stripTerminalControls}from"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";import{spawnSync}from"child_process";import fs2 from"fs";import path2 from"path";import{spawn}from"child_process";import fs from"fs";import path from"path";var DEFAULT_AI_TIMING={abortGraceMs:5e3,abortReapMs:2e3,pollIntervalMs:5e3};function resolveTiming(over){return{abortGraceMs:over?.abortGraceMs??DEFAULT_AI_TIMING.abortGraceMs,abortReapMs:over?.abortReapMs??DEFAULT_AI_TIMING.abortReapMs,pollIntervalMs:over?.pollIntervalMs??DEFAULT_AI_TIMING.pollIntervalMs}}var MAX_RETAINED_BYTES=4*1024*1024;function closeStream(stream){return new Promise(resolve=>{if(stream===null)return resolve();stream.once("error",()=>resolve());stream.end(()=>resolve())})}function buildArgs(req,cfg,env,workspace){
|
|
6
6
|
const warnings=[];const requested=(req.model??"").trim();const usable=requested!==""&&isUsableModelId(requested);if(requested!==""&&!usable){warnings.push(`ai_model '${requested}' \u306F\u4F7F\u3048\u306A\u3044\u5F62\u3067\u3059 \u2192 \u30AB\u30C6\u30B4\u30EA\u65E2\u5B9A\u306E\u30E2\u30C7\u30EB\u3092\u4F7F\u3044\u307E\u3059`)}const fitsRoute=!usable||!isClaudeAi(req.ai)||modelFitsRoute(requested,env);if(usable&&!fitsRoute){warnings.push(`ai_model '${requested}' \u306F\u73FE\u5728\u306E\u5B9F\u884C\u7D4C\u8DEF\u3067\u306F\u89E3\u6C7A\u3067\u304D\u307E\u305B\u3093\uFF08\u3053\u306E\u6A5F\u4F53\u306F ${usesBedrock(
|
|
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{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-
|
|
4
|
-
import"./chunk-RX5HWI4L.js";import"./chunk-6LSQCOCJ.js";import"./chunk-
|
|
3
|
+
import{FROM_FLAG,MANHOUR_DESCRIPTION,MANHOUR_FROM_FLAG,MANHOUR_TO_FLAG,MONTH_FLAG,TO_FLAG,analysisDomain,analysisForbidden,currentMonth,dataOf,listIn,manhourNotes,manhourQuery,manhourRows,monthRange,monthsBetween,noArgs,profitRows,rangeNotes,recordOf,staffKpiRows,workloadDistributionNotes,workloadDistributionRows}from"./chunk-YA7W7OV4.js";import"./chunk-2YVJ3QVJ.js";import"./chunk-EXT4AIDF.js";import"./chunk-FHOJFKR3.js";import"./chunk-JJSBBWJ5.js";import"./chunk-MI6HVYR2.js";
|
|
4
|
+
import"./chunk-RX5HWI4L.js";import"./chunk-6LSQCOCJ.js";import"./chunk-4B6GJBYP.js";import"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";import"./chunk-PS5QFKHB.js";import"./chunk-II5RVJQN.js";import"./chunk-3ZRMMBP5.js";import"./chunk-VFPY2A23.js";import"./chunk-J7QYPKVK.js";import"./chunk-4VZKNEVN.js";import"./chunk-RZVI6PMW.js";import"./chunk-QQRJLH6B.js";import"./chunk-NHYMHCAT.js";
|
|
5
5
|
import"./chunk-VSJBJXZO.js";export{FROM_FLAG,MANHOUR_DESCRIPTION,MANHOUR_FROM_FLAG,MANHOUR_TO_FLAG,MONTH_FLAG,TO_FLAG,analysisDomain,analysisForbidden,currentMonth,dataOf,listIn,manhourNotes,manhourQuery,manhourRows,monthRange,monthsBetween,noArgs,profitRows,rangeNotes,recordOf,staffKpiRows,workloadDistributionNotes,workloadDistributionRows};
|
|
@@ -1,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-
|
|
3
|
+
import{composeDocument,htmlToText,metaLine}from"./chunk-C7MO3RHJ.js";import{boundedText}from"./chunk-JJSBBWJ5.js";import{LIST_FLAGS,LIST_PAGING_HELP,envelopePaging,positiveInteger}from"./chunk-MI6HVYR2.js";import{readBody}from"./chunk-6LSQCOCJ.js";import{ANNOUNCEMENTS_PATH}from"./chunk-4B6GJBYP.js";import{isSafePathSegment}from"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";import{requireResolved,withResolved}from"./chunk-PS5QFKHB.js";
|
|
4
4
|
import"./chunk-II5RVJQN.js";import{isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";import"./chunk-J7QYPKVK.js";import"./chunk-4VZKNEVN.js";import"./chunk-RZVI6PMW.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var LABEL="\u304A\u77E5\u3089\u305B";var LIST_COLUMNS=["id","publish_start_at","sender_name","category_name","title","is_read","require_confirmation","is_confirmed"];var UNCONFIRMED_COLUMNS=["id","publish_start_at","publish_end_at","importance","title"];var GET_COLUMNS=["id","title","sender_name","category_name","importance_name","publish_start_at","publish_end_at","is_organization","is_read","require_confirmation","is_confirmed","allow_replies","link_url"];var REPLY_COLUMNS=["id","created_at","\
|
|
5
5
|
user_name","is_mine","content"];var REPLY_MAX_CHARS=2e3;function noArgs(input,op){if(input.args.length>0){throw new UsageError(`${op} \u306F\u4F4D\u7F6E\u5F15\u6570\u3092\u53D6\u308A\u307E\u305B\u3093: ${input.args.join(" ")}`,`twp announcement ${op} help`)}}function checkId(raw,help){const id=raw.trim();if(id==="")throw new UsageError("\u304A\u77E5\u3089\u305B\u306E ID \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",help);if(!isSafePathSegment(id)){throw new UsageError(`\u304A\u77E5\u3089\u305B\u306E ID \u3068\u3057\u3066\u4F7F\u3048\u306A\u3044\
|
|
6
6
|
\u5024\u3067\u3059: ${id}`,"\u304A\u77E5\u3089\u305B\u306E ID \u306F twp announcement list \u306E id \u5217\u3067\u78BA\u8A8D\u3067\u304D\u307E\u3059\u3002")}return id}function announcementId(input,op){const help=`twp announcement ${op} help`;const[raw,...rest]=input.args;if(rest.length>0)throw new UsageError(`${op} \u304C\u53D7\u3051\u53D6\u308C\u308B\u304A\u77E5\u3089\u305B ID \u306F1\u3064\u3060\u3051\u3067\u3059: ${rest.join(" ")}`,help);return checkId(raw??"",help)}function announcementIds(input){
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{CommandModelMissingError,MAX_REPORTED_VIOLATIONS,loadCommandModelDomain,loadCommandModelRoutes,validateBody,validateQuery}from"./chunk-NZ7WI4RZ.js";import{NO_REDACT_FLAG,NO_REDACT_NOTICE,exitCodeFor,fetchAllPages,reportError}from"./chunk-
|
|
4
|
-
import{describeWaitResult,parseWaitOptions,waitUntilTerminal}from"./chunk-WVCEKC7V.js";import{DEFAULT_MAX_ITEMS,DEFAULT_MAX_PAGES,envelopePaging,isPageNumberEnvelope,pageRangeNotes,positiveInteger,readEnvelopeCursor,readPageNumberCursor,shellQuote}from"./chunk-MI6HVYR2.js";import{parseOperationArgs,repeatedValues}from"./chunk-RX5HWI4L.js";import{readBody}from"./chunk-6LSQCOCJ.js";import"./chunk-
|
|
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-JOQKYENT.js";import"./chunk-R3WFIQPJ.js";import"./chunk-Q3B65OFC.js";import{evaluateQuery}from"./chunk-GFLGXGWE.js";import{renderOutput}from"./chunk-YXVN6OCH.js";import{redactSecretValues,redactSecrets,withDebug}from"./chunk-UFGJSWKU.js";
|
|
4
|
+
import{describeWaitResult,parseWaitOptions,waitUntilTerminal}from"./chunk-WVCEKC7V.js";import{DEFAULT_MAX_ITEMS,DEFAULT_MAX_PAGES,envelopePaging,isPageNumberEnvelope,pageRangeNotes,positiveInteger,readEnvelopeCursor,readPageNumberCursor,shellQuote}from"./chunk-MI6HVYR2.js";import{parseOperationArgs,repeatedValues}from"./chunk-RX5HWI4L.js";import{readBody}from"./chunk-6LSQCOCJ.js";import"./chunk-4B6GJBYP.js";import"./chunk-HVZUXLQ4.js";import{ApiError,TwpApiClient,
|
|
5
5
|
appendQuery}from"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";import"./chunk-II5RVJQN.js";import"./chunk-3ZRMMBP5.js";import{ApiResponseError,EXIT_OK,EXIT_WAIT_TIMEOUT,NetworkError,UsageError}from"./chunk-VFPY2A23.js";import{GLOBAL_OPTIONS_HELP}from"./chunk-PECIBNFD.js";import{AuthSession,NotLoggedInError,SessionExpiredError,loadCredentials}from"./chunk-XNLIEUAW.js";import{httpFetch}from"./chunk-J7QYPKVK.js";import{effectiveApiUrl,resolveConfiguredOutput,
|
|
6
|
-
resolveProfile}from"./chunk-4VZKNEVN.js";import"./chunk-RZVI6PMW.js";import{HELP_TOKEN}from"./chunk-
|
|
6
|
+
resolveProfile}from"./chunk-4VZKNEVN.js";import"./chunk-RZVI6PMW.js";import{HELP_TOKEN}from"./chunk-35MQ27I6.js";import"./chunk-QQRJLH6B.js";import{OUTPUT_FORMATS,resolveOutputFormat}from"./chunk-74BPZOKU.js";import"./chunk-UREA4ZIG.js";import{stripTerminalControls}from"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var MIN_SEGMENT_CHARS=3;var parsedCache=new WeakMap;function splitSegments(path){return path.split("/").filter(segment=>segment!=="")}function parseRoutes(routes){const cached=parsedCache.get(routes);if(cached!==void 0)return cached;const parsed=[];for(const[key,domain]of Object.entries(routes.routes)){const space=key.indexOf(" ");if(space<=0)continue;const template=key.slice(space+1);parsed.push({method:key.slice(0,space),template,domain,segments:splitSegments(template).map(segment=>/^\{[^/{}]+\}$/.
|
|
7
7
|
test(segment)?null:segment)})}parsedCache.set(routes,parsed);return parsed}function matches(route,segments){if(route.segments.length!==segments.length)return false;return route.segments.every((literal,i)=>literal===null||literal===segments[i])}function compareSpecificity(a,b){const literals=route=>route.segments.filter(segment=>segment!==null).length;const diff=literals(b)-literals(a);if(diff!==0)return diff;for(let i=0;i<a.segments.length;i+=1){const aLiteral=a.segments[i]!==null;const bLiteral=b.
|
|
8
8
|
segments[i]!==null;if(aLiteral!==bLiteral)return aLiteral?-1:1}return 0}function lookupRoute(routes,method,path){const segments=splitSegments(path);const hits=parseRoutes(routes).filter(route=>matches(route,segments));const sameMethod=hits.filter(route=>route.method===method).sort(compareSpecificity);const best=sameMethod[0];if(best!==void 0)return{kind:"matched",domain:best.domain,template:best.template};if(hits.length>0){const[top]=[...hits].sort(compareSpecificity);const template=top.template;
|
|
9
9
|
const methods=[...new Set(hits.filter(route=>route.template===template).map(route=>route.method))].sort();return{kind:"method-mismatch",template,methods}}return{kind:"unknown"}}function pickOperation(operations,method,template){return operations.find(op=>op.method===method&&op.path===template)??null}async function suggestRoutes(routes,path,limit=5){const{default:fuzzysort}=await import("./fuzzysort-DFVKV4B4.js");const parsed=parseRoutes(routes);const templates=[...new Set(parsed.map(route=>route.
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{RESIDENT_TOKEN_CAP,activateModeFiles,activatePermissionSettings,buildResidentSet,buildSystemPrompt,createAuditLogger,createTwpToolkit,currentBranch,describeAuditLog,describeToolCatalog,displayCwd,executeTool,findProjectTwpSubdir,localTools,lstatOrNull,parseFrontMatter,parseRule,persistProjectAllow,projectPermissionsPath,projectRootFor,readFileTool,residentInputs,resolveGitExecutable,runTurn,secretReason}from"./chunk-7PDUN5MS.js";import"./chunk-NZ7WI4RZ.js";import
|
|
4
|
-
|
|
5
|
-
import"./chunk-XNLIEUAW.js";import{proxyDiagnostics}from"./chunk-J7QYPKVK.js";import{checkMinSupportedVersion,isBelowMinSupported,minSupportedBlockMessage}from"./chunk-DXXFUNYN.js";import"./chunk-4VZKNEVN.js";import{configReadDirs,twpHomeDir}from"./chunk-RZVI6PMW.js";import{parseArgv}from"./chunk-
|
|
3
|
+
import{RESIDENT_TOKEN_CAP,activateModeFiles,activatePermissionSettings,buildResidentSet,buildSystemPrompt,createAuditLogger,createTwpToolkit,currentBranch,describeAuditLog,describeToolCatalog,displayCwd,executeTool,findProjectTwpSubdir,localTools,lstatOrNull,parseFrontMatter,parseRule,persistProjectAllow,projectPermissionsPath,projectRootFor,readFileTool,residentInputs,resolveGitExecutable,runTurn,secretReason}from"./chunk-7PDUN5MS.js";import"./chunk-NZ7WI4RZ.js";import{buildDiffLines,
|
|
4
|
+
diffStat}from"./chunk-VRBI2NPI.js";import"./chunk-UFGJSWKU.js";import"./chunk-N2UVRM3Z.js";import"./chunk-4B6GJBYP.js";import"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";import"./chunk-II5RVJQN.js";import"./chunk-VFPY2A23.js";import{RelayError,builtinCatalog,createRuntime,loadCachedCatalog,modelLabel,pickModel,toModelInfos}from"./chunk-5WTFZJT7.js";import"./chunk-D233KKXW.js";import"./chunk-PMOUHEJQ.js";
|
|
5
|
+
import"./chunk-XNLIEUAW.js";import{proxyDiagnostics}from"./chunk-J7QYPKVK.js";import{checkMinSupportedVersion,isBelowMinSupported,minSupportedBlockMessage}from"./chunk-DXXFUNYN.js";import"./chunk-4VZKNEVN.js";import{configReadDirs,twpHomeDir}from"./chunk-RZVI6PMW.js";import{parseArgv}from"./chunk-T3C2BAVA.js";import{applyPermissionMode,checkPermission,describePermissionMode,getMode,isModeId,modeSource,nextMode}from"./chunk-2LOT54OO.js";import"./chunk-35MQ27I6.js";
|
|
6
6
|
import"./chunk-QQRJLH6B.js";import{isFullWidth,isWide,stringWidth,stripAnsi}from"./chunk-UREA4ZIG.js";import{stripTerminalControls}from"./chunk-NHYMHCAT.js";import{require_fuzzysort}from"./chunk-DIMZRTLE.js";import{__commonJS,__export,__require,__toESM}from"./chunk-VSJBJXZO.js";var require_react_production=__commonJS({"node_modules/react/cjs/react.production.js"(exports){"use strict";var REACT_ELEMENT_TYPE=Symbol.for("react.transitional.element");var REACT_PORTAL_TYPE=Symbol.for("react.portal");var REACT_FRAGMENT_TYPE=Symbol.for("react.fragment");var REACT_STRICT_MODE_TYPE=Symbol.for("react.strict_mode");var REACT_PROFILER_TYPE=Symbol.for("react.profiler");var REACT_CONSUMER_TYPE=Symbol.for("react.consumer");var REACT_CONTEXT_TYPE=Symbol.for("react.context");var REACT_FORWARD_REF_TYPE=Symbol.
|
|
7
7
|
for("react.forward_ref");var REACT_SUSPENSE_TYPE=Symbol.for("react.suspense");var REACT_MEMO_TYPE=Symbol.for("react.memo");var REACT_LAZY_TYPE=Symbol.for("react.lazy");var REACT_ACTIVITY_TYPE=Symbol.for("react.activity");var REACT_VIEW_TRANSITION_TYPE=Symbol.for("react.view_transition");var MAYBE_ITERATOR_SYMBOL=Symbol.iterator;function getIteratorFn(maybeIterable){if(null===maybeIterable||"object"!==typeof maybeIterable)return null;maybeIterable=MAYBE_ITERATOR_SYMBOL&&maybeIterable[MAYBE_ITERATOR_SYMBOL]||
|
|
8
8
|
maybeIterable["@@iterator"];return"function"===typeof maybeIterable?maybeIterable:null}var ReactNoopUpdateQueue={isMounted:function(){return false},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}};var assign=Object.assign;var emptyObject={};function Component(props,context,updater){this.props=props;this.context=context;this.refs=emptyObject;this.updater=updater||ReactNoopUpdateQueue}Component.prototype.isReactComponent={};Component.prototype.setState=
|
|
@@ -1212,7 +1212,7 @@ cwd()){const listed=await gitListFiles(cwd2);const raw=listed??await walkFiles(c
|
|
|
1212
1212
|
1;const after=/^[^\s]*/.exec(text.slice(cursor))?.[0]??"";return{query,start,end:cursor+after.length}}var TWP_SLASH_ROUTES={"/tasks":{domain:"task",operation:"list"},"/task":{domain:"task",operation:"get"},"/projects":{domain:"project",operation:"list"}};function isTwpSlashCommand(name){return Object.hasOwn(TWP_SLASH_ROUTES,name)}async function runTwpSlashCommand(name,args,deps){const route=TWP_SLASH_ROUTES[name];if(!Object.hasOwn(TWP_SLASH_ROUTES,name)||route===void 0){return{code:2,out:"",err:`\u4E0D\u660E\u306A\u30B3\u30DE\u30F3\u30C9: ${name}
|
|
1213
1213
|
`}}const parsed=parseArgv([route.domain,route.operation,...args]);if(parsed.command!=="domain"||parsed.domain!==route.domain){return{code:2,out:"",err:`${name}: \u3053\u306E\u5F15\u6570\u306F\u4F7F\u3048\u307E\u305B\u3093\uFF08${args.join(" ")}\uFF09
|
|
1214
1214
|
`}}if(parsed.unknown.length>0){return{code:2,out:"",err:`\u4E0D\u660E\u306A\u5F15\u6570: ${parsed.unknown.join(" ")}
|
|
1215
|
-
`}}let out="";let err="";const io={out:text=>void(out+=text),err:text=>void(err+=text),isTty:true};const globals={profile:parsed.profile??deps.profile,...parsed.output!==void 0?{output:parsed.output}:{},...parsed.query!==void 0?{query:parsed.query}:{},dryRun:parsed.dryRun,debug:parsed.debug,yes:parsed.yes,refresh:parsed.refresh};const{runDomain}=await import("./run-
|
|
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-DGBJ2EHB.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,6 +1,6 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{PUNCH_TYPES,assertMonthOpen,attendanceDomain}from"./chunk-
|
|
3
|
+
import{PUNCH_TYPES,assertMonthOpen,attendanceDomain}from"./chunk-2YVJ3QVJ.js";import{dateFlag,monthFlag}from"./chunk-EXT4AIDF.js";import"./chunk-FHOJFKR3.js";import"./chunk-JJSBBWJ5.js";import"./chunk-MI6HVYR2.js";import"./chunk-RX5HWI4L.js";import"./chunk-6LSQCOCJ.js";import"./chunk-4B6GJBYP.js";import{isSafePathSegment}from"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";import{requireResolved,withResolved}from"./chunk-PS5QFKHB.js";
|
|
4
4
|
import"./chunk-II5RVJQN.js";import{isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiRejectedError,ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";import"./chunk-J7QYPKVK.js";import"./chunk-4VZKNEVN.js";import"./chunk-RZVI6PMW.js";import"./chunk-QQRJLH6B.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var CREATE_USAGE="twp attendance record create --date <YYYY-MM-DD> --time <HH:MM> --type <clock-in|clock-out|break-start|break-end|switch> [--project <\u30B3\u30FC\u30C9|ID>] [--task <\u30BF\u30B9\u30AFID>] [--memo <\u30E1\u30E2>]";var UPDATE_USAGE="twp attendance record update <\u8A18\u9332ID> --memo <\u30E1\u30E2> [--month <YYYY-MM>]";var DELETE_USAGE="twp attendance record delete <\u8A18\u9332ID> --reason <\u7406\u7531> --yes [--month <YYYY-MM>]";var MOVE_USAGE="twp attendance record move <\u8A18\u9332\
|
|
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\
|
|
@@ -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-2YVJ3QVJ.js";import{monthFlag}from"./chunk-EXT4AIDF.js";import"./chunk-FHOJFKR3.js";import"./chunk-JJSBBWJ5.js";import"./chunk-MI6HVYR2.js";import"./chunk-RX5HWI4L.js";import"./chunk-6LSQCOCJ.js";import"./chunk-4B6GJBYP.js";import"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";import"./chunk-PS5QFKHB.js";import"./chunk-II5RVJQN.js";import{isRecord,pick}from"./chunk-3ZRMMBP5.js";
|
|
4
4
|
import{ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";import"./chunk-J7QYPKVK.js";import"./chunk-4VZKNEVN.js";import"./chunk-RZVI6PMW.js";import"./chunk-QQRJLH6B.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var MONTH_FLAG={name:"--month",summary:"\u5BFE\u8C61\u306E\u5E74\u6708\uFF08YYYY-MM\uFF09",takesValue:true,placeholder:"<YYYY-MM>"};var ME_FLAG={name:"--me",summary:"\u81EA\u5206\u306E\u5206\u3060\u3051\u3092\u8868\u793A\u3059\u308B\uFF08\u7121\u3051\u308C\u3070\u5168\u54E1\u5206\u30FB\u7BA1\u7406\u8005\uFF09",takesValue:false};var FORBIDDEN_ADMIN="\u6A29\u9650\u304C\u8DB3\u308A\u307E\u305B\u3093\u3002\u5168\u54E1\u5206\uFF08--me \u306A\u3057\uFF09\u306F\u52E4\u6020\u306E\u7BA1\u7406\u8005\u6A29\u9650\uFF08\u52E4\u6020: \u7BA1\u7406\u8005\uFF09\u3001\u81EA\u5206\u306E\u5206\uFF08--me\uFF09\u306F\u52E4\u6020\u306E\u5229\u7528\u6A29\u9650\u304C\u8981\u308A\u307E\u3059\u3002\u30C6\u30CA\u30F3\u30C8\u306E\u7BA1\u7406\u8005\u306B\u6A29\u9650\u306E\u4ED8\u4E0E\u3092\u4F9D\u983C\u3057\u3066\u304F\u3060\u3055\u3044";
|
|
5
5
|
function listBody(spec,body){if(!isRecord(body)||!Array.isArray(body[spec.key])){throw new ApiResponseError(`${spec.label}\u306E\u5FDC\u7B54\u306B ${spec.key} \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}return body}function monthListOperation(spec){const usage=`twp ${spec.domain} list [--month <YYYY-MM>] [--me]`;return{name:"list",summary:`\u6708\u306E${spec.label}\u3092\u4E00\u89A7\u3059\u308B\uFF08--me \u3067\u81EA\u5206\u306E\u5206\u30FB\u7121\u3051\u308C\u3070\u5168\u54E1\u5206\uFF1D\u7BA1\u7406\u8005\uFF09`,
|
|
6
6
|
usage,description:`GET ${spec.path} \u3092\u8868\u793A\u3057\u307E\u3059\uFF08\u5168\u54E1\u5206\u30FB\u52E4\u6020\u306E\u7BA1\u7406\u8005\u6A29\u9650\u304C\u5FC5\u8981\uFF09\u3002--me \u3092\u4ED8\u3051\u308B\u3068 GET ${spec.path}/me\uFF08\u81EA\u5206\u306E\u5206\uFF09\u3067\u3059\u3002
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{repeatedValues}from"./chunk-RX5HWI4L.js";import{readBody}from"./chunk-6LSQCOCJ.js";import{BACKLOG_BASE_PATH,BACKLOG_PROJECT_SCOPE_LABEL,BACKLOG_SCOPE_LABEL,backlogSpacePath,isExactNumericId,resolveNamed}from"./chunk-
|
|
3
|
+
import{repeatedValues}from"./chunk-RX5HWI4L.js";import{readBody}from"./chunk-6LSQCOCJ.js";import{BACKLOG_BASE_PATH,BACKLOG_PROJECT_SCOPE_LABEL,BACKLOG_SCOPE_LABEL,backlogSpacePath,isExactNumericId,resolveNamed}from"./chunk-4B6GJBYP.js";import"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";import{requireResolved,singleRef,withResolved}from"./chunk-PS5QFKHB.js";import"./chunk-II5RVJQN.js";import{isRecord,pick}from"./chunk-3ZRMMBP5.js";
|
|
4
4
|
import{ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";import"./chunk-J7QYPKVK.js";import"./chunk-4VZKNEVN.js";import"./chunk-RZVI6PMW.js";import"./chunk-QQRJLH6B.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var DEFAULT_COUNT=20;var MAX_COUNT=100;var NUMERIC=/^[0-9]+$/;var ISSUE_REF=/^(?:[A-Za-z0-9_]+-[0-9]+|[0-9]+)$/;var DATE=/^[0-9]{4}-[0-9]{2}-[0-9]{2}$/;var SPACE_COLUMNS=["id","space_url"];var PROJECT_COLUMNS=["id","projectKey","name"];var ISSUE_LIST_COLUMNS=["issueKey","summary","status","assignee","priority","dueDate","updated","descriptionTruncated"];var ISSUE_GET_COLUMNS=["id","issueKey","projectId","summary","description","descriptionTruncated","status","issueType","priority","assignee","cr\
|
|
5
5
|
eatedUser","parentIssueId","startDate","dueDate","estimatedHours","actualHours","created","updated"];var ISSUE_JSON_SHAPE_HELP='--output json \u306E\u5F62\uFF08Backlog API \u306E\u5F62\u3067\u306F\u3042\u308A\u307E\u305B\u3093\uFF09:\n TWP \u30B5\u30FC\u30D0\u304C\u6574\u3048\u305F\u5F62\u3067\u8FD4\u308A\u307E\u3059\u3002Backlog API \u306E\u8AB2\u984C\u3092\u305D\u306E\u307E\u307E\u8AAD\u3080\u524D\u63D0\u3067\u66F8\u304F\u3068\u58CA\u308C\u307E\u3059\u3002\n - status / priority / resolution / issueType / assignee / createdUser / updatedUser \u306F\n \u540D\u524D\u306E\u6587\u5B57\u5217\u3067\u3059\uFF08{id, name} \u3067\u306F\u3042\u308A\u307E\u305B\u3093\uFF09\u3002ID \u306F statusId / issueTypeId /\n assigneeId \u2026 \u306E\u3088\u3046\u306B\u672B\u5C3E Id \u306E\u5225\u30AD\u30FC\u306B\u3042\u308A\u307E\u3059\u3002\u672A\u8A2D\u5B9A\u306A\u3089\u4E21\u65B9 null \u3067\u3059\u3002\n - category / versions / milestone \u306F {id, name} \u306E\u914D\u5217\u306E\u307E\u307E\u3067\u3059\uFF08\u8907\u6570\u4ED8\u3051\u3089\u308C\u308B\u305F\u3081\u3001\n \
|
|
6
6
|
\u540D\u524D\u3068 ID \u3092\u5225\u30AD\u30FC\u3078\u5206\u3051\u308B\u3068\u5BFE\u5FDC\u304C\u5D29\u308C\u307E\u3059\uFF09\u3002customFields \u3082\u914D\u5217\u3067\u3059\u3002\n \u4F8B\uFF081\u4EF6\u30FB\u629C\u7C8B\uFF09:\n {"id": 1234, "issueKey": "PRJ-12", "summary": "\u2026",\n "statusId": 1, "status": "\u672A\u5BFE\u5FDC", "issueTypeId": 56, "issueType": "\u30BF\u30B9\u30AF",\n "assigneeId": 91, "assignee": "\u8C37 \u6A39",\n "category": [{"id": 7, "name": "\u8A2D\u8A08"}], "milestone": [], ...}\n --query \u3082\u3053\u306E\u5F62\u306B\u5F53\u305F\u308A\u307E\u3059\uFF08issue list \u306E\u4F8B: --query "[].{key: issueKey, type: issueType}"\uFF09\u3002';
|
|
@@ -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-YA7W7OV4.js";import"./chunk-2YVJ3QVJ.js";import"./chunk-EXT4AIDF.js";import"./chunk-FHOJFKR3.js";import"./chunk-JJSBBWJ5.js";import{nonEmpty}from"./chunk-MI6HVYR2.js";import{repeatedValues}from"./chunk-RX5HWI4L.js";import"./chunk-6LSQCOCJ.js";import"./chunk-4B6GJBYP.js";import"./chunk-HVZUXLQ4.js";import{ApiError,MultipartBody}from"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";import{
|
|
4
4
|
requireResolved,withResolved}from"./chunk-PS5QFKHB.js";import"./chunk-II5RVJQN.js";import{isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiRejectedError,ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";import"./chunk-J7QYPKVK.js";import"./chunk-4VZKNEVN.js";import"./chunk-RZVI6PMW.js";import"./chunk-QQRJLH6B.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";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{
|
|
3
|
+
import{REUSE_LAST_SUCCESS_MS,capacityError,probeCapacityOutcome}from"./chunk-VYDPW2YO.js";import"./chunk-TTST7UDR.js";import"./chunk-N2UVRM3Z.js";import{pick}from"./chunk-5KAWCLYN.js";import{projectFileKey}from"./chunk-GY7KI5E5.js";import"./chunk-PMOUHEJQ.js";import"./chunk-J7QYPKVK.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";import fs from"fs";import os from"os";import path from"path";function lastSuccessPath(stateDir,projectId){return path.join(stateDir,`capacity-report-${projectFileKey(projectId)}.json`)}function readLastSuccess(file){try{const v=JSON.parse(fs.readFileSync(file,"utf8"));if(typeof v!=="object"||v===null)return null;const{payload,at}=v;if(typeof payload!=="string"||typeof at!=="number"||!Number.isFinite(at))return null;return{payload,at}}catch{return null}}function writeLastSuccess(file,value,stderr){try{fs.mkdirSync(path.dirname(file),{recursive:true,mode:448});
|
|
4
4
|
fs.writeFileSync(file,JSON.stringify(value),{mode:384})}catch(err){stderr(`\u26A0\uFE0F \u76F4\u524D\u306E\u6210\u529F\u5024\u3092 ${file} \u3078\u4FDD\u5B58\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08${err.message}\uFF09
|
|
5
5
|
`)}}async function registeredAsLoop(api,runnerId){const res=await api.runners();if(!res.ok)return false;const runners=pick(res.json,"runners");if(!Array.isArray(runners))return false;return runners.some(r=>{if(typeof r!=="object"||r===null)return false;const row=r;return row["runner_id"]===runnerId&&(row["kind"]??"loop")==="loop"})}function loopRegisteredMessage(runnerId){return`\u3053\u306E\u30DE\u30B7\u30F3\uFF08runner_id: ${runnerId}\uFF09\u306F\u540C\u3058\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3067\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u30EB\u30FC\u30D7\u3068\u3057\u3066\u767B\u9332\u3055\u308C\u3066\u3044\u308B\u305F\u3081\u3001\u9001\u308A\u307E\u305B\u3093\u3067\u3057\u305F\u3002
|
|
6
6
|
\u30EB\u30FC\u30D7\u304C\u52D5\u3044\u3066\u3044\u308B\u9593\u306F\u3001\u67A0\u60C5\u5831\u306F\u30EB\u30FC\u30D7\u306E heartbeat \u3067\u9001\u3089\u308C\u307E\u3059\uFF08capacity_probe \u306E\u8A2D\u5B9A\u306F\u30EB\u30FC\u30D7\u3068\u5171\u901A\u3067\u3059\uFF09
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
|
+
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
+
import{DEFAULT_CHARTER_FILE,runCharterCommand}from"./chunk-LH4AZKLT.js";import"./chunk-A4LFG7MW.js";import"./chunk-VRBI2NPI.js";import"./chunk-VFPY2A23.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";export{DEFAULT_CHARTER_FILE,runCharterCommand};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{dateFlag,monthFlag}from"./chunk-EXT4AIDF.js";import{STATUS_VALUES,createFlags,fieldBody,hasAnyField,idSegment,masterItem,masterRows,targetId,truncationNotes,updateFlags}from"./chunk-
|
|
3
|
+
import{dateFlag,monthFlag}from"./chunk-EXT4AIDF.js";import{STATUS_VALUES,createFlags,fieldBody,hasAnyField,idSegment,masterItem,masterRows,targetId,truncationNotes,updateFlags}from"./chunk-FHOJFKR3.js";import{nonEmpty,positiveInteger}from"./chunk-MI6HVYR2.js";import{repeatedValues}from"./chunk-RX5HWI4L.js";import{readBody}from"./chunk-6LSQCOCJ.js";import{ATTENDANCE_REPORTS_PATH,ATTENDANCE_REPORT_MASTER_LABELS,ATTENDANCE_REPORT_MASTER_PATHS,ORG_MASTER_LIMIT,resolveNamed}from"./chunk-4B6GJBYP.js";
|
|
4
4
|
import{isSafePathSegment}from"./chunk-HVZUXLQ4.js";import{ApiError}from"./chunk-JA5A6UJ2.js";import{requireResolved,singleRef,withResolved}from"./chunk-PS5QFKHB.js";import{acknowledgement,isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiRejectedError,ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";var USER_REF_HELP="<\u30E6\u30FC\u30B6\u30FC> \u306F ID\u30FB\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\u30FB\u793E\u54E1\u756A\u53F7\u30FB\u6C0F\u540D\u30FBme\uFF08\u81EA\u5206\uFF09\u306E\u3069\u308C\u3067\u3082\u6307\u5B9A\u3067\u304D\u307E\u3059\u3002\n\u6C0F\u540D\u306F\u5B8C\u5168\u4E00\u81F4\u30671\u4EBA\u306B\u7D5E\u308C\u305F\u3068\u304D\u3060\u3051\u53D7\u3051\u4ED8\u3051\u307E\u3059\uFF08\u540C\u59D3\u540C\u540D\u306A\u3089\u5019\u88DC\u3092\u51FA\u3057\u3066\u6B62\u307E\u308B\u306E\u3067\u3001\n\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\u304B\u793E\u54E1\u756A\u53F7\u3067\u6307\u5B9A\u3057\u76F4\u3057\u3066\u304F\u3060\u3055\u3044\uFF09\u3002ID \u4EE5\u5916\u306F\u3001\u30C6\u30CA\u30F3\u30C8\u306E\u30E6\u30FC\u30B6\u30FC\u4E00\u89A7\n\uFF08\u65E2\u5B9A10\u5206\u30AD\u30E3\u30C3\u30B7\u30E5\u30FB--refresh \u3067\u53D6\u308A\u76F4\u3057\uFF09\u3068\u7167\u5408\u3057\u307E\u3059\u3002\n\u8868\u793A\u30D5\u30E9\u30B0\u3092\u5916\u3057\u305F\u30E6\u30FC\u30B6\u30FC\u306F\u793E\u54E1\u756A\u53F7\u3067\u306F\u5F15\u3051\u307E\u305B\u3093\u3002\u7D44\u7E54\u7BA1\u7406\u8005\u3067\u306A\u3044\u5834\u5408\u306F ID \u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002";
|
|
5
5
|
function userPath(input,suffix=""){const userId=requireResolved(input,"userId");if(!isSafePathSegment(userId)){throw new ApiResponseError(`\u30B5\u30FC\u30D0\u304C\u8FD4\u3057\u305F\u30E6\u30FC\u30B6\u30FC ID \u3092\u30D1\u30B9\u306B\u4F7F\u3048\u307E\u305B\u3093: ${userId}\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}return`${encodeURIComponent(userId)}${suffix}`}var USER_REF_FLAG={name:"--user",summary:"\u5BFE\u8C61\u306E\u30E6\u30FC\u30B6\u30FC\uFF08\u4F4D\u7F6E\u5F15\u6570\u306E\u4EE3\u308F\u308A\u306B\u4F7F\u3048\u308B\uFF09",
|
|
6
6
|
takesValue:true,placeholder:"<\u30E6\u30FC\u30B6\u30FC>"};async function prepareUser(input,ctx,usage){const ref=singleRef(input,{flag:"--user",label:"\u30E6\u30FC\u30B6\u30FC",usage});const user=await ctx.resolver.user(ref);return withResolved(input,{userId:user.id})}var COMMAND="twp attendance";function label(kind){return ATTENDANCE_REPORT_MASTER_LABELS[kind]}function commonFields(name){return[{kind:"text",flag:"--code",key:"code",label:`${name}\u30B3\u30FC\u30C9`,maxChars:50,summary:`${name}\u30B3\u30FC\u30C9\uFF08\u30C6\u30CA\u30F3\u30C8\u5185\u3067\u4E00\u610F\uFF09`},{kind:"text",flag:"--name",key:"name",label:`${name}\u540D`,maxChars:255,summary:`${name}\u540D`}]}function tailFields(){return[{kind:"integer",flag:"--sort",key:"sort",label:"\u8868\u793A\u9806",
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
|
+
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
+
var DOMAIN_NAMES=["agent","agent-loop","ai-review-reason","analysis","announcement","attendance","backlog","budget","business-place","company","contract","customer","department","deposit","estimate","evaluation","expense","fiscal-year","goal-sheet","inquiry","invoice","job-title","knowledge","leave","license","media","meeting","note","notification","onedrive","outlook","payee","position","project","prospect","purchase","qualification","receivable","redmine","report","rounding-setting","seal-impr\
|
|
4
|
+
ession","search","segment","shift","skill","storage","supplier-payment","support","task","teams","user","user-contract-type","wiki","workchange","worker-agent","workflow"];function isDomainName(value){return value!==void 0&&DOMAIN_NAMES.includes(value)}var HELP_TOKEN="help";var API_TOKEN="api";export{DOMAIN_NAMES,isDomainName,HELP_TOKEN,API_TOKEN};
|