@tocca-systems/twp-cli 0.56.0 → 0.58.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (86) hide show
  1. package/CHANGELOG.public.md +12 -0
  2. package/README.md +16 -0
  3. package/command-model/unified-search.json +1 -1
  4. package/dist/{agent-QFI6UOVQ.js → agent-VNXVD6RC.js} +1 -1
  5. package/dist/{agent-loop-5JBWS3JN.js → agent-loop-NBO56BVW.js} +1 -1
  6. package/dist/{ai-dispatch-3JJ4ICJF.js → ai-dispatch-37MUHKHU.js} +1 -1
  7. package/dist/{analysis-MWPZKAUA.js → analysis-QKYJFPGB.js} +2 -2
  8. package/dist/{announcement-4PDYMC6K.js → announcement-VIPUV4NC.js} +1 -1
  9. package/dist/{api-command-CLD7KOUM.js → api-command-AOKHJONZ.js} +3 -3
  10. package/dist/{app-DJP2ECD2.js → app-BIEIFWMW.js} +4 -4
  11. package/dist/{attendance-correct-CSAET72A.js → attendance-correct-QYUMTKPG.js} +1 -1
  12. package/dist/{attendance-lists-E6WHZPIH.js → attendance-lists-JDQX4GIC.js} +1 -1
  13. package/dist/{backlog-YQKUID7L.js → backlog-XK4BUZBI.js} +1 -1
  14. package/dist/{budget-WKPD5GPG.js → budget-NKSYQOBP.js} +1 -1
  15. package/dist/chunk-2LOT54OO.js +10 -0
  16. package/dist/{chunk-VJLD6YGF.js → chunk-2N4JNFMB.js} +1 -1
  17. package/dist/{chunk-ZVEMJWRR.js → chunk-5BDE3A3N.js} +1 -1
  18. package/dist/{chunk-A56FFATZ.js → chunk-5UJD2E2T.js} +1 -1
  19. package/dist/{chunk-3744RCNM.js → chunk-6UPLPTBP.js} +1 -1
  20. package/dist/{chunk-X2P7N7WO.js → chunk-7OPBZYIZ.js} +2 -2
  21. package/dist/{chunk-DZWIABLW.js → chunk-7PDUN5MS.js} +14 -14
  22. package/dist/{chunk-CHQTAPIE.js → chunk-BO2E5QLR.js} +25 -22
  23. package/dist/{chunk-X6KRLHSG.js → chunk-BVREBTDJ.js} +1 -1
  24. package/dist/{chunk-5M7QCXPY.js → chunk-CX56K7NH.js} +1 -1
  25. package/dist/{chunk-3UYVUEV4.js → chunk-DCMIATYI.js} +1 -1
  26. package/dist/{chunk-4WWAHGXU.js → chunk-DZZ7HK5H.js} +12 -11
  27. package/dist/{chunk-FK2GOGJZ.js → chunk-EOYQ56LM.js} +2 -2
  28. package/dist/chunk-HVZUXLQ4.js +9 -0
  29. package/dist/{chunk-PCSADROQ.js → chunk-I4TR55UF.js} +1 -1
  30. package/dist/{chunk-HIJQJXRB.js → chunk-JDLYOCH7.js} +2 -2
  31. package/dist/{chunk-OTIR4GES.js → chunk-JJSBBWJ5.js} +3 -2
  32. package/dist/{chunk-Q76QFEF3.js → chunk-K7WIC5SH.js} +1 -1
  33. package/dist/{chunk-MIQUD3B6.js → chunk-KZHVWTZB.js} +1 -1
  34. package/dist/{chunk-GIUINGC7.js → chunk-LOTNN4VY.js} +1 -1
  35. package/dist/{chunk-DDCERTPP.js → chunk-O7XM54CL.js} +1 -1
  36. package/dist/{chunk-6A2JSS76.js → chunk-QZBE4KC2.js} +2 -2
  37. package/dist/{chunk-TGPTS4LF.js → chunk-SCSHU6AD.js} +1 -1
  38. package/dist/chunk-SQ2IHDDM.js +10 -0
  39. package/dist/{chunk-QL2YKREQ.js → chunk-TRNS45SB.js} +1 -1
  40. package/dist/{chunk-3LWQO2ZK.js → chunk-VELLV6DJ.js} +1 -1
  41. package/dist/{chunk-QGX7L6HN.js → chunk-ZQG4IEBX.js} +2 -2
  42. package/dist/cli.js +12 -9
  43. package/dist/{commands-RNDJXESY.js → commands-F356Y767.js} +1 -1
  44. package/dist/{commands-LXGAEYPN.js → commands-XSP6CAQT.js} +26 -26
  45. package/dist/{company-5UXV23NX.js → company-MM7RMYG3.js} +2 -2
  46. package/dist/{completion-RWWCIR6G.js → completion-65XEFN5L.js} +1 -1
  47. package/dist/{contract-6CR57KCS.js → contract-542CVLOG.js} +2 -2
  48. package/dist/{department-JF7KTFQX.js → department-ONWETRFN.js} +1 -1
  49. package/dist/{deposit-KXGMK66O.js → deposit-Q2LJYA2P.js} +1 -1
  50. package/dist/{estimate-T3X5GFUO.js → estimate-QG7UDIXA.js} +3 -3
  51. package/dist/{evaluation-GKSJ5ZHU.js → evaluation-VHYRW3OL.js} +1 -1
  52. package/dist/{expense-32QOHO6C.js → expense-FRSJQ43Y.js} +1 -1
  53. package/dist/{inquiry-PAPJCGKO.js → inquiry-LPATWSTM.js} +1 -1
  54. package/dist/{invoice-RJ7M2FY2.js → invoice-NMEPTMJ2.js} +2 -2
  55. package/dist/{job-title-B7VMIZ2H.js → job-title-2BITEYIJ.js} +1 -1
  56. package/dist/{knowledge-YPXOGA2U.js → knowledge-J5NYT7M7.js} +1 -1
  57. package/dist/{leave-4AFSQ2IP.js → leave-TDXLDGQB.js} +2 -2
  58. package/dist/{logout-guard-IIKNV3VD.js → logout-guard-DJMJ56SG.js} +1 -1
  59. package/dist/{media-2HZ5CWQM.js → media-DJAJWKMX.js} +3 -3
  60. package/dist/{notification-CMWQ6JZQ.js → notification-2YYO4OOJ.js} +1 -1
  61. package/dist/{oneshot-P75VON6Q.js → oneshot-VS52YK26.js} +2 -2
  62. package/dist/{position-IKF3SR3O.js → position-2KKBZTPJ.js} +1 -1
  63. package/dist/{project-WHVEIPH5.js → project-AYQUMBJD.js} +1 -1
  64. package/dist/{prospect-LRIEJUP3.js → prospect-MW4URE6T.js} +2 -2
  65. package/dist/{purchase-3Z5THEYQ.js → purchase-IJCP43IQ.js} +3 -3
  66. package/dist/{receivable-6A2OVBZN.js → receivable-PD3KXJA5.js} +1 -1
  67. package/dist/{registry-AQUX2SCL.js → registry-TX55ZCY7.js} +1 -1
  68. package/dist/{report-5WTMGPDN.js → report-3LW27YHM.js} +1 -1
  69. package/dist/{run-G6NI24PO.js → run-NFBTP5NA.js} +2 -2
  70. package/dist/{sales-ai-review-7U2EBEYX.js → sales-ai-review-ISVBOO3X.js} +1 -1
  71. package/dist/{sales-master-3OFAYV3U.js → sales-master-EPMRXFKQ.js} +2 -2
  72. package/dist/{sales-numbering-E53EMSMI.js → sales-numbering-U6DSHKKM.js} +1 -1
  73. package/dist/search-LU5ELPON.js +26 -0
  74. package/dist/{server-settings-IJZLGF6N.js → server-settings-2M63F3KB.js} +1 -1
  75. package/dist/{setup-N5YGBEJF.js → setup-QS46NJJW.js} +1 -1
  76. package/dist/{skill-76QF44O3.js → skill-OAUTVWTM.js} +1 -1
  77. package/dist/{supplier-payment-HQQVWIQW.js → supplier-payment-OYIOW7NR.js} +2 -2
  78. package/dist/{support-VLYXNR5L.js → support-JG43SGOY.js} +1 -1
  79. package/dist/{task-CPPFGVDS.js → task-Y4DRBFXE.js} +21 -20
  80. package/dist/{user-XTQNSWP4.js → user-C2M3K236.js} +2 -2
  81. package/dist/{worker-agent-PDAQVQKO.js → worker-agent-QREMLOKU.js} +1 -1
  82. package/dist/{workflow-TRHRVMUK.js → workflow-YKVB5A6Y.js} +1 -1
  83. package/package.json +1 -1
  84. package/dist/chunk-273FWTWL.js +0 -10
  85. package/dist/chunk-GMBJTG6A.js +0 -9
  86. package/dist/chunk-NAUH75MM.js +0 -10
@@ -11,6 +11,18 @@
11
11
  `CHANGELOG.md` に残してあります。顧客向けの履歴は public 公開以降を対象とします。
12
12
  -->
13
13
 
14
+ ## 0.58.0
15
+
16
+ `twp search` で TWP 内のタスク・Wiki・ノート・議事録・FAQ などを横断して検索できるようになりました。`--ai` を付けると AI検索(意味検索)になります。検索できる種類は `twp search types` で確認できます。
17
+
18
+ `twp task-loop` で、ID が ULID 形式のプロジェクトを指定してループや憲章の取得を起動できるようになりました。
19
+
20
+ ## 0.57.0
21
+
22
+ task-loop の `operations.post_success_enqueue` に `{ "skill": "...", "keys_line": "..." }` 形式を追加しました。後続を投入するキー列の行の接頭辞を設定で指定します。文字列だけの指定ではキー単位の後続投入を行わず、ループ起動時にその旨を表示します。
23
+
24
+ `twp task create / update` でタスクの進捗率(0〜100)を設定できるようになりました。`twp task update --clear progress` で未設定に戻せます。
25
+
14
26
  ## 0.56.0
15
27
 
16
28
  task-loop に `operations.contract_lines` を追加しました。スキルごとに出力契約行の接頭辞(`line`)と、状態を進めたとみなす値とその後のステータス(`advances`)を指定します。未設定の場合、ターン上限時は `*_RESULT:` 形式の行を契約行として扱い、直近に状態を進めたタスクの再投入抑止は行いません。
package/README.md CHANGED
@@ -28,6 +28,7 @@ TWP(Tocca Working Platform)を、ターミナルから使うための CLI
28
28
  | **できる** | `twp support` によるシステムサポートへの依頼(依頼者側)の一覧・詳細(コメントの経過を含む)・起票(添付3件まで)・コメント・完了・再問い合わせ・取り下げと、カテゴリの一覧。運営側(回答・ステータス変更)は扱いません |
29
29
  | **できる** | `twp notification` による自分宛ての通知の一覧(未読・カテゴリ・語で絞り込み)・詳細・未読件数・カテゴリ一覧と、1件ずつ・まとめての既読化 |
30
30
  | **できる** | `twp worker-agent` によるワーカーエージェント(AIエージェント)の参照(一覧・詳細・スケジュールと次回実行予定・許可できるツールのカタログ・実行回数の上限と今日の使用数)と、実行履歴・実行結果(最終要約を先頭に)・ステップログ・ステップの集計の読み取りと、作成・更新(スケジュール指定込み)・削除・有効化/無効化・今すぐ実行(`--wait` で終わるまで待つ)・実行の取消 |
31
+ | **できる** | `twp search` による TWP 内のコンテンツ(タスク・Wiki・ノート・議事録・FAQ・サポート・ワークフロー等)の横断検索(通常検索と `--ai` の AI検索・種類/状態/カテゴリで絞り込み)と、検索できる種類の一覧。閲覧権限の無いものは出ません |
31
32
  | **できる** | `twp announcement` による自分に届いているお知らせ(運営・組織)の一覧(未読・確認待ち・語で絞り込み)・本文と返信の表示・未読件数、既読化(1件ずつ・まとめて)・「確認しました」の記録・返信の一覧と投稿 |
32
33
  | **できる** | `twp agent session` によるコンテナエージェント(リポジトリで作業する AI セッション)の起動・追加の指示・再開・停止・削除と、状態・作業ブランチ・PR・会話・実行ログ・変更ファイル(差分)の参照、`twp agent repository` による起動できるリポジトリとブランチの一覧。`--wait` で作業が止まるまで待ち、最後のアシスタント発言・作業ブランチ・PR URL を出します。起動・指示・再開は AI クレジットを消費します |
33
34
  | **できる** | `twp estimate` / `twp invoice` による販売管理の見積・請求の一覧(語・ステータス・取引先・プロジェクト・担当者・日付・回収状況で絞り込み)と詳細。販売管理・顧客管理の権限が要ります |
@@ -1282,6 +1283,21 @@ twp meeting get <議事録ID> --output text
1282
1283
  - `twp note get` で開くと、画面で開いたときと同じくノートの閲覧数が1増えます
1283
1284
  - 書き込み(作成・更新)はまだできません(`twp api /api/v2/wiki/...`・`/api/v2/notes/...`・`/api/v2/meetings/...` で到達できます)。ヘルプは `twp wiki help` / `twp note help` / `twp meeting help`
1284
1285
 
1286
+ ### TWP 内を横断して検索する
1287
+
1288
+ ```bash
1289
+ twp search "<語>" [--ai] [--type <種類>[,<種類>...]] [--status <状態>] [--category <カテゴリコード>] [--limit <件数>] [--cursor <ページ番号>]
1290
+ twp search query "<語>" # 「types」など操作名と同じ語を検索するとき
1291
+ twp search types # --type に渡せる種類(doc_type とラベル)
1292
+ ```
1293
+
1294
+ - 画面のナビバー検索と同じです。`--ai` を付けると AI検索(意味の近いものを探す)になり、使った方式は stderr の「検索方式」に出ます
1295
+ - 語は1つの引数で渡します。空白を含む語は引用符で囲んでください(`twp search "経費 精算"`)
1296
+ - table / tsv / text は doc_type・ref(タスクはキー・プロジェクトはコード・それ以外は ID)・タイトル・プロジェクト・更新日時・抜粋・`next`(詳細を取るコマンド。取得コマンドがある種類だけ)を出します。`--output json` は応答の `data` です
1297
+ - 検索は読み取りなので `--yes` は要りません。会話中の AI も確認なしで呼べます
1298
+ - `--cursor` はページ番号です(`--all` はありません)。続きがあるときは次に打つ行を stderr に出します
1299
+ - 検索サービスが一時的に使えないときは終了コード 4 で失敗します(0件の終了コード 0 とは区別できます)
1300
+
1285
1301
  ### Backlog の課題を読む・書く
1286
1302
 
1287
1303
  TWP に登録した Backlog スペースを通して、課題とコメントを読み、課題へ書きます。
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "domain": "unified-search",
3
3
  "operations": [
4
- {"name":"search","domain":"unified-search","operationId":"unifiedSearch.search","method":"POST","path":"/v2/search/unified","summary":"統合検索を実行","pathParams":[],"queryParams":[],"body":{"schema":{"type":"object","properties":{"keyword":{"type":["string","null"],"maxLength":200},"types":{"type":["array","null"],"items":{"type":"string","enum":["inquiry","support","content_draft","content_published","project","note","wiki","media_file","hearing","workflow","task","agent","user","training_masters","report","meeting_minutes","faq"]}},"page":{"type":["integer","null"],"minimum":1},"limit":{"type":["integer","null"],"minimum":1,"maximum":100},"filters":{"type":"object","properties":{"status":{"type":["string","null"]},"category_code":{"type":["string","null"]}}},"use_vector_search":{"type":["boolean","null"]}}}},"resultPath":null,"risk":"write","aliases":[]},
4
+ {"name":"search","domain":"unified-search","operationId":"unifiedSearch.search","method":"POST","path":"/v2/search/unified","summary":"統合検索を実行","pathParams":[],"queryParams":[],"body":{"schema":{"type":"object","properties":{"keyword":{"type":["string","null"],"maxLength":200},"types":{"type":["array","null"],"items":{"type":"string","enum":["inquiry","support","content_draft","content_published","project","note","wiki","media_file","hearing","workflow","task","agent","user","training_masters","report","meeting_minutes","faq"]}},"page":{"type":["integer","null"],"minimum":1},"limit":{"type":["integer","null"],"minimum":1,"maximum":100},"filters":{"type":"object","properties":{"status":{"type":["string","null"]},"category_code":{"type":["string","null"]}}},"use_vector_search":{"type":["boolean","null"]}}}},"resultPath":null,"risk":"read","aliases":[]},
5
5
  {"name":"types","domain":"unified-search","operationId":"unifiedSearch.types","method":"GET","path":"/v2/search/types","summary":"検索可能なドキュメントタイプ一覧を取得","pathParams":[],"queryParams":[{"name":"limit","type":"integer","required":false,"description":"1ページあたりの件数","source":"curation"},{"name":"cursor","type":"string","required":false,"description":"次ページの取得に使うカーソル","source":"curation"}],"body":null,"resultPath":"data","risk":"read","aliases":[]}
6
6
  ]
7
7
  }
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{LIST_FLAGS,LIST_PAGING_HELP,envelopePaging,nonEmpty,positiveInteger}from"./chunk-MI6HVYR2.js";import{readBody}from"./chunk-6LSQCOCJ.js";import{AGENT_REPOSITORIES_PATH,AGENT_SESSIONS_PATH}from"./chunk-3LWQO2ZK.js";import{isSafePathSegment}from"./chunk-GMBJTG6A.js";import{ApiError}from"./chunk-JA5A6UJ2.js";import"./chunk-QBGEYQ2I.js";import{requireResolved,withResolved}from"./chunk-PS5QFKHB.js";import"./chunk-II5RVJQN.js";import{isRecord,pick}from"./chunk-3ZRMMBP5.js";
3
+ import{LIST_FLAGS,LIST_PAGING_HELP,envelopePaging,nonEmpty,positiveInteger}from"./chunk-MI6HVYR2.js";import{readBody}from"./chunk-6LSQCOCJ.js";import{AGENT_REPOSITORIES_PATH,AGENT_SESSIONS_PATH}from"./chunk-VELLV6DJ.js";import{isSafePathSegment}from"./chunk-HVZUXLQ4.js";import{ApiError}from"./chunk-JA5A6UJ2.js";import"./chunk-QBGEYQ2I.js";import{requireResolved,withResolved}from"./chunk-PS5QFKHB.js";import"./chunk-II5RVJQN.js";import{isRecord,pick}from"./chunk-3ZRMMBP5.js";
4
4
  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-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var SESSION_COLUMNS=["sessionId","status","repositoryFullName","baseBranch","workBranch","prUrl","aiModel","myRole","createdAt"];var SESSION_GET_COLUMNS=["sessionId","status","repositoryFullName","repositoryId","baseBranch","workBranch","branchName","prUrl","errorMessage","aiProvider","aiModel","sessionMode","executionMode","masterUserName","myRole","createdAt","updatedAt","completedAt","instructions"];var CHAT_COLUMNS=["timestamp","role","user_name","content"];var REPOSITORY_COLUMNS=["id","full\
5
5
  _name","default_branch","private"];var BRANCH_COLUMNS=["name","protected"];var DIFF_COLUMNS=["path","status","additions","deletions"];var INSTRUCTION_MAX_CHARS=1e4;var ACTIVE=new Set(["created","pending","provisioning","running"]);var FAILED=new Set(["failed","cancelled","expired"]);var WAIT_POLL_INTERVAL_MS=5e3;var WAIT_DEFAULT_SECONDS=300;var WAIT_MAX_SECONDS=540;var WAIT_CHAT_SCAN_LIMIT=2e3;var sleep=ms=>new Promise(resolve=>setTimeout(resolve,ms));var SESSION_REF_HELP="<\u30BB\u30C3\u30B7\u30E7\u30F3> \u306F\u30BB\u30C3\u30B7\u30E7\u30F3 ID\uFF08twp \
6
6
  agent session list \u306E sessionId \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 ${op} help`}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(" ")}`,usageOf(op))}function single(input,op,label,hint){const values=input.args.map(arg=>arg.trim());if(values.length>
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{stepToItem}from"./chunk-LUQ2KE6Y.js";import{loadLocalConfig}from"./chunk-CHQTAPIE.js";import{loadAiConfig}from"./chunk-AEJHDFXB.js";import"./chunk-N2UVRM3Z.js";import"./chunk-JTJWDV5U.js";import"./chunk-GY7KI5E5.js";import{LIST_FLAGS,LIST_PAGING_HELP,envelopePaging,nonEmpty,positiveInteger}from"./chunk-MI6HVYR2.js";import{requireResolved,singleRef,withResolved}from"./chunk-PS5QFKHB.js";import"./chunk-II5RVJQN.js";import{acknowledgement,
3
+ import{stepToItem}from"./chunk-LUQ2KE6Y.js";import{loadLocalConfig}from"./chunk-BO2E5QLR.js";import{loadAiConfig}from"./chunk-AEJHDFXB.js";import"./chunk-N2UVRM3Z.js";import"./chunk-JTJWDV5U.js";import"./chunk-GY7KI5E5.js";import{LIST_FLAGS,LIST_PAGING_HELP,envelopePaging,nonEmpty,positiveInteger}from"./chunk-MI6HVYR2.js";import{requireResolved,singleRef,withResolved}from"./chunk-PS5QFKHB.js";import"./chunk-II5RVJQN.js";import{acknowledgement,
4
4
  isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";import"./chunk-PMOUHEJQ.js";import"./chunk-J7QYPKVK.js";import"./chunk-5WGOHFAS.js";import"./chunk-RZVI6PMW.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var LABEL="\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u30EB\u30FC\u30D7\u306E\u30A2\u30A4\u30C6\u30E0";var STATUSES=["pending","processing","completed","failed"];var AI_TYPES=["claude","gemini","codex","copilot"];var EFFORTS=["low","medium","high","xhigh","max"];var PRIORITIES=["P0","P1","P2","P3"];var LIST_COLUMNS=["item_id","status","task_key","label","ai_type","ai_effort","runner_id","created_at"];var GET_COLUMNS=["item_id","status","task_key","label","prompt","ai_type","ai_model","ai_effort","runn\
5
5
  er_id","attempt_count","reclaim_count","error_message","created_by_name","created_at","started_at","completed_at"];var HISTORY_COLUMNS=["item_id","status","task_key","skill","ai_type","runner_id","duration_ms","cost_usd","created_at"];var PROJECT_FLAG={name:"--project",summary:"\u30AD\u30E5\u30FC\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\uFF08\u30B3\u30FC\u30C9\u307E\u305F\u306F ID\u3002\u7701\u7565\u6642\u306F TWP_PROJECT / .twp/config.json / ~/.twp/config.json\uFF09",takesValue:true,placeholder:"\
6
6
  <\u30B3\u30FC\u30C9|ID>"};var ITEM_FLAG={name:"--item",summary:"\u30A2\u30A4\u30C6\u30E0\u306E ID\uFF08item_id\uFF09\u3002\u4F4D\u7F6E\u5F15\u6570\u3068\u540C\u3058\u610F\u5473\uFF08\u4E21\u65B9\u6307\u5B9A\u306F\u30A8\u30E9\u30FC\uFF09",takesValue:true,placeholder:"<\u30A2\u30A4\u30C6\u30E0ID>"};var FORBIDDEN_CORE="\u30C6\u30CA\u30F3\u30C8\u306E\u7BA1\u7406\u8005\uFF08admin \u30ED\u30FC\u30EB\uFF09\u306E\u6A29\u9650\u304C\u5FC5\u8981\u3067\u3059\uFF08\u500B\u4EBA\u30AD\u30E5\u30FC\u3092\u9664\u304F\uFF09";
@@ -1,6 +1,6 @@
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-TVODNAPX.js";import"./chunk-YJZT3UD3.js";import"./chunk-A4LFG7MW.js";import"./chunk-VRBI2NPI.js";import{detectAiClis}from"./chunk-T4QZO6RQ.js";import{DEFAULT_CLAUDE_LAUNCHER,activeSlotPath,detectClaudeAutoSwitch,isClaudeAi,isUsableModelId,modelFitsRoute,
3
+ import{failureHint,isAuthError,isCliFatalText,isRateLimited,isServerAiType,isUntrusted,maxTurnsReached,rateLimitWaitSeconds,tailForScan}from"./chunk-ZOOEH7ZE.js";import{detectAiClis}from"./chunk-T4QZO6RQ.js";import{expandServerSkills,prepareSkillOverlay}from"./chunk-TVODNAPX.js";import"./chunk-YJZT3UD3.js";import"./chunk-A4LFG7MW.js";import"./chunk-VRBI2NPI.js";import{DEFAULT_CLAUDE_LAUNCHER,activeSlotPath,detectClaudeAutoSwitch,isClaudeAi,isUsableModelId,modelFitsRoute,
4
4
  resolveSpawnTarget,usesBedrock,wrapWithAutoSwitch}from"./chunk-AEJHDFXB.js";import{isForceOnly,killProcessTree,system32}from"./chunk-N2UVRM3Z.js";import"./chunk-JTJWDV5U.js";import"./chunk-GY7KI5E5.js";import"./chunk-VFPY2A23.js";import{findExecutable,isWindowsDriveAbsolute}from"./chunk-PMOUHEJQ.js";import"./chunk-J7QYPKVK.js";import"./chunk-5WGOHFAS.js";import{stripTerminalControls}from"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";import{spawnSync}from"child_process";import fs2 from"fs";import path2 from"path";import{spawn}from"child_process";import fs from"fs";import path from"path";var FINAL_REPORT_BEGIN="<<<AI_FINAL_REPORT>>>";var FINAL_REPORT_END="<<<END_AI_FINAL_REPORT>>>";var ClaudeStreamRenderer=class{constructor(now=()=>new Date){this.now=now}now;toolNames=new Map;toolCount=0;result={subtype:null,isError:null,numTurns:null,costUsd:null,durationMs:null,tokensIn:null,tokensOut:null,rateLimited:false,resetsAt:null,finalText:""};push(line){const trimmed=line.trim();if(trimmed==="")return[];let event;try{const parsed=JSON.parse(trimmed);if(parsed===null||typeof parsed!=="\
5
5
  object"||Array.isArray(parsed)){return[line]}event=parsed}catch{return[line]}switch(event["type"]){case"rate_limit_event":return this.onRateLimit(event);case"assistant":return this.onAssistant(event);case"user":return this.onUser(event);case"result":return this.onResult(event);default:return event["type"]==="system"?[]:[line]}}sawRateLimit(){return this.result.rateLimited}lastRateLimitNote="";onRateLimit(event){const info=event["rate_limit_info"];if(info===null||typeof info!=="object")return[];const rec=info;
6
6
  const status=typeof rec["status"]==="string"?rec["status"]:"";const resets=typeof rec["resetsAt"]==="number"?rec["resetsAt"]:null;if(status==="")return[];const at=isSaneEpochSec(resets)?` resets=${new Date(resets*1e3).toISOString()}`:"";if(status.startsWith("allowed")){if(status==="allowed")return[];const seen=`${status}|${resets??""}`;if(seen===this.lastRateLimitNote)return[];this.lastRateLimitNote=seen;return[this.line(`\u2139\uFE0F \u4E0A\u9650\u306B\u63A5\u8FD1\uFF08status=${status}${at}\uFF09\u2014 \u5B9F\
@@ -1,4 +1,4 @@
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-DDCERTPP.js";import"./chunk-RX5HWI4L.js";import"./chunk-X6KRLHSG.js";import"./chunk-EXT4AIDF.js";import"./chunk-6LSQCOCJ.js";import"./chunk-3LWQO2ZK.js";
4
- import"./chunk-GMBJTG6A.js";import"./chunk-JA5A6UJ2.js";import"./chunk-QBGEYQ2I.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";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};
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-O7XM54CL.js";import"./chunk-RX5HWI4L.js";import"./chunk-BVREBTDJ.js";import"./chunk-EXT4AIDF.js";import"./chunk-6LSQCOCJ.js";import"./chunk-VELLV6DJ.js";
4
+ import"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";import"./chunk-QBGEYQ2I.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";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-QSXS5SB2.js";import{boundedText}from"./chunk-OTIR4GES.js";import{LIST_FLAGS,LIST_PAGING_HELP,envelopePaging,positiveInteger}from"./chunk-MI6HVYR2.js";import{readBody}from"./chunk-6LSQCOCJ.js";import{ANNOUNCEMENTS_PATH}from"./chunk-3LWQO2ZK.js";import{isSafePathSegment}from"./chunk-GMBJTG6A.js";import"./chunk-JA5A6UJ2.js";import"./chunk-QBGEYQ2I.js";import{requireResolved,withResolved}from"./chunk-PS5QFKHB.js";
3
+ import{composeDocument,htmlToText,metaLine}from"./chunk-QSXS5SB2.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-VELLV6DJ.js";import{isSafePathSegment}from"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";import"./chunk-QBGEYQ2I.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{describeWaitResult,parseWaitOptions,waitUntilTerminal}from"./chunk-WVCEKC7V.js";import{NO_REDACT_FLAG,NO_REDACT_NOTICE,exitCodeFor,fetchAllPages,reportError}from"./chunk-4WWAHGXU.js";import"./chunk-273FWTWL.js";import{evaluateQuery}from"./chunk-GFLGXGWE.js";import{renderOutput}from"./chunk-H6DUSCEZ.js";
4
- import{redactSecretValues,redactSecrets,withDebug}from"./chunk-UFGJSWKU.js";import"./chunk-Q3B65OFC.js";import{parseOperationArgs,repeatedValues}from"./chunk-RX5HWI4L.js";import{DEFAULT_MAX_ITEMS,DEFAULT_MAX_PAGES,envelopePaging,isPageNumberEnvelope,pageRangeNotes,positiveInteger,readEnvelopeCursor,readPageNumberCursor,shellQuote}from"./chunk-MI6HVYR2.js";import{readBody}from"./chunk-6LSQCOCJ.js";import"./chunk-3LWQO2ZK.js";import"./chunk-GMBJTG6A.js";import{
3
+ import{CommandModelMissingError,MAX_REPORTED_VIOLATIONS,loadCommandModelDomain,loadCommandModelRoutes,validateBody,validateQuery}from"./chunk-NZ7WI4RZ.js";import{describeWaitResult,parseWaitOptions,waitUntilTerminal}from"./chunk-WVCEKC7V.js";import{NO_REDACT_FLAG,NO_REDACT_NOTICE,exitCodeFor,fetchAllPages,reportError}from"./chunk-DZZ7HK5H.js";import"./chunk-SQ2IHDDM.js";import{evaluateQuery}from"./chunk-GFLGXGWE.js";import{renderOutput}from"./chunk-H6DUSCEZ.js";
4
+ import{redactSecretValues,redactSecrets,withDebug}from"./chunk-UFGJSWKU.js";import"./chunk-Q3B65OFC.js";import{parseOperationArgs,repeatedValues}from"./chunk-RX5HWI4L.js";import{DEFAULT_MAX_ITEMS,DEFAULT_MAX_PAGES,envelopePaging,isPageNumberEnvelope,pageRangeNotes,positiveInteger,readEnvelopeCursor,readPageNumberCursor,shellQuote}from"./chunk-MI6HVYR2.js";import{readBody}from"./chunk-6LSQCOCJ.js";import"./chunk-VELLV6DJ.js";import"./chunk-HVZUXLQ4.js";import{
5
5
  ApiError,TwpApiClient,appendQuery}from"./chunk-JA5A6UJ2.js";import"./chunk-QBGEYQ2I.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-YLM54X35.js";import{AuthSession,NotLoggedInError,SessionExpiredError,loadCredentials}from"./chunk-XNLIEUAW.js";import{httpFetch}from"./chunk-J7QYPKVK.js";import{effectiveApiUrl,
6
- resolveConfiguredOutput,resolveProfile}from"./chunk-4VZKNEVN.js";import"./chunk-RZVI6PMW.js";import{HELP_TOKEN}from"./chunk-6A2JSS76.js";import"./chunk-QQRJLH6B.js";import{OUTPUT_FORMATS,resolveOutputFormat}from"./chunk-K2ONOH3L.js";import"./chunk-WVS4W5FY.js";import{stripTerminalControls}from"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var MIN_SEGMENT_CHARS=3;var parsedCache=new WeakMap;function splitSegments(path){return path.split("/").filter(segment=>segment!=="")}function parseRoutes(routes){const cached=parsedCache.get(routes);if(cached!==void 0)return cached;const parsed=[];for(const[key,domain]of Object.entries(routes.routes)){const space=key.indexOf(" ");if(space<=0)continue;const template=key.slice(space+1);parsed.push({method:key.slice(0,space),template,domain,segments:splitSegments(template).map(segment=>/^\{[^/{}]+\}$/.
6
+ resolveConfiguredOutput,resolveProfile}from"./chunk-4VZKNEVN.js";import"./chunk-RZVI6PMW.js";import{HELP_TOKEN}from"./chunk-QZBE4KC2.js";import"./chunk-QQRJLH6B.js";import{OUTPUT_FORMATS,resolveOutputFormat}from"./chunk-K2ONOH3L.js";import"./chunk-WVS4W5FY.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-DZWIABLW.js";import"./chunk-NZ7WI4RZ.js";import{buildDiffLines,
4
- diffStat}from"./chunk-VRBI2NPI.js";import"./chunk-UFGJSWKU.js";import"./chunk-N2UVRM3Z.js";import"./chunk-3LWQO2ZK.js";import"./chunk-GMBJTG6A.js";import"./chunk-JA5A6UJ2.js";import"./chunk-QBGEYQ2I.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-ZVEMJWRR.js";import{applyPermissionMode,checkPermission,describePermissionMode,getMode,isModeId,modeSource,nextMode}from"./chunk-NAUH75MM.js";import"./chunk-6A2JSS76.js";
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-VELLV6DJ.js";import"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";import"./chunk-QBGEYQ2I.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-5BDE3A3N.js";import{applyPermissionMode,checkPermission,describePermissionMode,getMode,isModeId,modeSource,nextMode}from"./chunk-2LOT54OO.js";import"./chunk-QZBE4KC2.js";
6
6
  import"./chunk-QQRJLH6B.js";import{isFullWidth,isWide,stringWidth,stripAnsi}from"./chunk-WVS4W5FY.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-G6NI24PO.js");try{const code=await runDomain({domain:route.domain,...parsed.operation!==void 0?{operation:parsed.operation}:
1215
+ `}}let out="";let err="";const io={out:text=>void(out+=text),err:text=>void(err+=text),isTty:true};const globals={profile:parsed.profile??deps.profile,...parsed.output!==void 0?{output:parsed.output}:{},...parsed.query!==void 0?{query:parsed.query}:{},dryRun:parsed.dryRun,debug:parsed.debug,yes:parsed.yes,refresh:parsed.refresh};const{runDomain}=await import("./run-NFBTP5NA.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-X6KRLHSG.js";import{dateFlag,monthFlag}from"./chunk-EXT4AIDF.js";import"./chunk-6LSQCOCJ.js";import"./chunk-3LWQO2ZK.js";import{isSafePathSegment}from"./chunk-GMBJTG6A.js";import"./chunk-JA5A6UJ2.js";import"./chunk-QBGEYQ2I.js";import{requireResolved,withResolved}from"./chunk-PS5QFKHB.js";import"./chunk-II5RVJQN.js";import{isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiRejectedError,
3
+ import{PUNCH_TYPES,assertMonthOpen,attendanceDomain}from"./chunk-BVREBTDJ.js";import{dateFlag,monthFlag}from"./chunk-EXT4AIDF.js";import"./chunk-6LSQCOCJ.js";import"./chunk-VELLV6DJ.js";import{isSafePathSegment}from"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";import"./chunk-QBGEYQ2I.js";import{requireResolved,withResolved}from"./chunk-PS5QFKHB.js";import"./chunk-II5RVJQN.js";import{isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiRejectedError,
4
4
  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 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-X6KRLHSG.js";import{monthFlag}from"./chunk-EXT4AIDF.js";import"./chunk-6LSQCOCJ.js";import"./chunk-3LWQO2ZK.js";import"./chunk-GMBJTG6A.js";import"./chunk-JA5A6UJ2.js";import"./chunk-QBGEYQ2I.js";import"./chunk-PS5QFKHB.js";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";
3
+ import{hoursMinutes}from"./chunk-BVREBTDJ.js";import{monthFlag}from"./chunk-EXT4AIDF.js";import"./chunk-6LSQCOCJ.js";import"./chunk-VELLV6DJ.js";import"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";import"./chunk-QBGEYQ2I.js";import"./chunk-PS5QFKHB.js";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";
4
4
  import"./chunk-RZVI6PMW.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{readBody}from"./chunk-6LSQCOCJ.js";import{BACKLOG_BASE_PATH,BACKLOG_PROJECT_SCOPE_LABEL,BACKLOG_SCOPE_LABEL,backlogSpacePath,isExactNumericId,resolveNamed}from"./chunk-3LWQO2ZK.js";import"./chunk-GMBJTG6A.js";import"./chunk-JA5A6UJ2.js";import"./chunk-QBGEYQ2I.js";import{requireResolved,singleRef,withResolved}from"./chunk-PS5QFKHB.js";import"./chunk-II5RVJQN.js";import{isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";
3
+ import{readBody}from"./chunk-6LSQCOCJ.js";import{BACKLOG_BASE_PATH,BACKLOG_PROJECT_SCOPE_LABEL,BACKLOG_SCOPE_LABEL,backlogSpacePath,isExactNumericId,resolveNamed}from"./chunk-VELLV6DJ.js";import"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";import"./chunk-QBGEYQ2I.js";import{requireResolved,singleRef,withResolved}from"./chunk-PS5QFKHB.js";import"./chunk-II5RVJQN.js";import{isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";
4
4
  import"./chunk-J7QYPKVK.js";import"./chunk-4VZKNEVN.js";import"./chunk-RZVI6PMW.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var DEFAULT_COUNT=20;var MAX_COUNT=100;var NUMERIC=/^[0-9]+$/;var ISSUE_REF=/^(?:[A-Za-z0-9_]+-[0-9]+|[0-9]+)$/;var DATE=/^[0-9]{4}-[0-9]{2}-[0-9]{2}$/;var SPACE_COLUMNS=["id","space_url"];var PROJECT_COLUMNS=["id","projectKey","name"];var ISSUE_LIST_COLUMNS=["issueKey","summary","status","assignee","priority","dueDate","updated","descriptionTruncated"];var ISSUE_GET_COLUMNS=["id","issueKey","projectId","summary","description","descriptionTruncated","status","issueType","priority","assignee","cr\
5
5
  eatedUser","parentIssueId","startDate","dueDate","estimatedHours","actualHours","created","updated"];var COMMENT_COLUMNS=["id","created","createdUserId","createdUser","content","changeLog"];function commentRow(row){const source=isRecord(row)?row:{};const user=isRecord(source["createdUser"])?source["createdUser"]:{};return pick({...source,createdUserId:user["id"]??null,createdUser:user["name"]??null},COMMENT_COLUMNS)}var ATTACHMENT_COLUMNS=["id","name","size","contentType","createdUserId","create\
6
6
  dUser","created"];var STATUS_COLUMNS=["id","name","color"];var USER_COLUMNS=["id","userId","name","mailAddress","roleType"];var SPACE_FLAG={name:"--space",summary:"Backlog \u30B9\u30DA\u30FC\u30B9\uFF08ID / \u30B9\u30DA\u30FC\u30B9URL / \u30B5\u30D6\u30C9\u30E1\u30A4\u30F3\uFF09\u3002\u767B\u9332\u304C1\u4EF6\u306A\u3089\u7701\u7565\u3067\u304D\u307E\u3059",takesValue:true,placeholder:"<ID|URL>"};var BODY_MAX_CHARS=1e5;var BODY_FLAGS=[{name:"--body-file",summary:"\u672C\u6587\u3092\u30D5\u30A1\u30A4\u30EB\u304B\u3089\u8AAD\u3080\uFF08- \u3067\u6A19\u6E96\u5165\u529B\uFF09\u3002\u6539\u884C\u30FBMarkdown\
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{analysisForbidden}from"./chunk-DDCERTPP.js";import{repeatedValues}from"./chunk-RX5HWI4L.js";import{nonEmpty}from"./chunk-MI6HVYR2.js";import"./chunk-X6KRLHSG.js";import"./chunk-EXT4AIDF.js";import"./chunk-6LSQCOCJ.js";import"./chunk-3LWQO2ZK.js";import"./chunk-GMBJTG6A.js";import{ApiError,MultipartBody}from"./chunk-JA5A6UJ2.js";import"./chunk-QBGEYQ2I.js";import{requireResolved,withResolved}from"./chunk-PS5QFKHB.js";import"./chunk-II5RVJQN.js";
3
+ import{analysisForbidden}from"./chunk-O7XM54CL.js";import{repeatedValues}from"./chunk-RX5HWI4L.js";import{nonEmpty}from"./chunk-MI6HVYR2.js";import"./chunk-BVREBTDJ.js";import"./chunk-EXT4AIDF.js";import"./chunk-6LSQCOCJ.js";import"./chunk-VELLV6DJ.js";import"./chunk-HVZUXLQ4.js";import{ApiError,MultipartBody}from"./chunk-JA5A6UJ2.js";import"./chunk-QBGEYQ2I.js";import{requireResolved,withResolved}from"./chunk-PS5QFKHB.js";import"./chunk-II5RVJQN.js";
4
4
  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.
@@ -0,0 +1,10 @@
1
+ import { createRequire as __twpCreateRequire } from 'node:module';
2
+ const require = __twpCreateRequire(import.meta.url);
3
+ var MODE_IDS=["dev","biz","plan"];function isModeId(value){return value!==void 0&&MODE_IDS.includes(value)}var MODES=[{id:"dev",label:"\u958B\u767A",color:"green",description:"\u30ED\u30FC\u30AB\u30EB\u30C4\u30FC\u30EB\u5168\u90E8 \uFF0B \u958B\u767A\u7CFB TWP \u30C9\u30E1\u30A4\u30F3\u5E38\u99D0",tools:["read_file","write_file","edit_file","bash","shell","glob","grep","git","twp_*"],permissions:{read_file:"allow",glob:"allow",grep:"allow",git:"ask","twp_get_project-task":"allow","twp_list_proje\
4
+ ct-task":"allow","twp_search_unified-search":"allow",twp_domains:"allow",twp_search_tools:"allow",twp_describe_tools:"allow",twp_mount:"allow","twp_update_project-task":"ask",bash:"ask",shell:"ask",write_file:"ask",edit_file:"ask","*":"ask"}},{id:"biz",label:"\u696D\u52D9",color:"cyan",description:"TWP \u30C9\u30E1\u30A4\u30F3\u4E2D\u5FC3\u3002bash \u3068 write_file \u306F deny",tools:["twp_*","read_file","glob","grep"],permissions:{read_file:"allow",glob:"allow",grep:"allow","twp_get_project-ta\
5
+ sk":"allow","twp_list_project-task":"allow","twp_search_unified-search":"allow",twp_domains:"allow",twp_search_tools:"allow",twp_describe_tools:"allow",twp_mount:"allow","twp_update_project-task":"ask",bash:"deny",shell:"deny",git:"deny",write_file:"deny",edit_file:"deny","*":"ask"}},{id:"plan",label:"\u30D7\u30E9\u30F3",color:"magenta",description:"\u8AAD\u307F\u53D6\u308A\u306E\u307F\u3002\u5168\u66F8\u304D\u8FBC\u307F deny",tools:["read_file","glob","grep","twp_get_*","twp_list_*","twp_search\
6
+ _unified-search","twp_domains","twp_search_tools","twp_describe_tools","twp_mount"],permissions:{read_file:"allow",glob:"allow",grep:"allow","twp_get_project-task":"allow","twp_list_project-task":"allow","twp_search_unified-search":"allow",twp_domains:"allow",twp_search_tools:"allow",twp_describe_tools:"allow",twp_mount:"allow",bash:"deny",shell:"deny",git:"deny",write_file:"deny",edit_file:"deny","*":"deny"}}];var activeModeList=MODES;var activeModeSources=new Map;function setActiveModes(modes,sources=new Map){
7
+ activeModeList=MODES.map(builtin=>modes.find(m=>m.id===builtin.id)??builtin);activeModeSources=sources}function modeSource(id){return activeModeSources.get(id)??null}function getMode(id){const found=activeModeList.find(m=>m.id===id);if(!found)throw new Error(`unknown mode: ${id}`);return found}function nextMode(id){const i=activeModeList.findIndex(m=>m.id===id);const next=activeModeList[(i+1)%activeModeList.length];return next?next.id:"dev"}function checkPermission(toolName,mode){const own=key=>Object.hasOwn(mode.permissions,key)?mode.permissions[key]:void 0;const found=own(toolName)??own("*");return found==="allow"||found==="ask"||found==="deny"?found:"ask"}var PERMISSION_MODE_IDS=["plan","acceptEdits","denyAll"];function isPermissionModeId(value){return value!==void 0&&PERMISSION_MODE_IDS.includes(value)}function describePermissionMode(permissionMode){if(permissionMode===void 0)return"\u672A\u6307\u5B9A\uFF08\u30E2\u30FC\u30C9\u306E\u65B9\u91DD\u306E\u307E\u307E\uFF09";switch(permissionMode){case"plan":return"plan\uFF08read \u306E\u307F\u8A31\u53EF\u3002write / exec \u306F\u62D2\u5426\uFF09";case"acceptEdits":return"acceptEdits\uFF08write \u306E\u78BA\u8A8D\u3092\u81EA\u52D5\u627F\u8A8D\u3002read\
8
+ / exec \u306F\u30E2\u30FC\u30C9\u306E\u307E\u307E\uFF09";case"denyAll":return"denyAll\uFF08read \u3092\u542B\u3080\u5168\u30C4\u30FC\u30EB\u3092\u62D2\u5426\uFF09";default:{const exhaustive=permissionMode;return`${String(exhaustive)}\uFF08\u4E0D\u660E\u306A\u5024\u3002\u5B89\u5168\u5074\u3067\u5168\u62D2\u5426\uFF09`}}}function applyPermissionMode(decision,risk,permissionMode){if(permissionMode===void 0)return{decision,reason:null};if(decision==="deny")return{decision,reason:null};switch(permissionMode){case"\
9
+ denyAll":return{decision:"deny",reason:"permission-mode=denyAll\uFF08\u5168\u30C4\u30FC\u30EB\u3092\u62D2\u5426\uFF09"};case"plan":if(risk==="read")return{decision,reason:null};return{decision:"deny",reason:`permission-mode=plan\uFF08${risk} \u30C4\u30FC\u30EB\u3092\u62D2\u5426\uFF09`};case"acceptEdits":if(risk==="write"&&decision==="ask"){return{decision:"allow",reason:"permission-mode=acceptEdits\uFF08write \u3092\u81EA\u52D5\u627F\u8A8D\uFF09"}}return{decision,reason:null};default:return{decision:"\
10
+ deny",reason:"\u4E0D\u660E\u306A permission-mode\uFF08\u5B89\u5168\u5074\u3067\u62D2\u5426\uFF09"}}}export{isModeId,MODES,setActiveModes,modeSource,getMode,nextMode,checkPermission,isPermissionModeId,describePermissionMode,applyPermissionMode};
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{FORCE_FLAG,OUT_FLAG,REV_FLAG,revOf,singleId,uploadStaged}from"./chunk-MIQUD3B6.js";import{CUSTOMER_LICENSE,childForbidden,levelForbidden}from"./chunk-FK2GOGJZ.js";import{inspectLocalFile}from"./chunk-PCSADROQ.js";import{createFlags,fieldBody,hasAnyField,updateFlags}from"./chunk-QL2YKREQ.js";import{nonEmpty}from"./chunk-MI6HVYR2.js";import{SALES_ESTIMATES_PATH,isExactNumericId}from"./chunk-3LWQO2ZK.js";import{requireResolved,withResolved}from"./chunk-PS5QFKHB.js";
3
+ import{FORCE_FLAG,OUT_FLAG,REV_FLAG,revOf,singleId,uploadStaged}from"./chunk-KZHVWTZB.js";import{CUSTOMER_LICENSE,childForbidden,levelForbidden}from"./chunk-EOYQ56LM.js";import{inspectLocalFile}from"./chunk-I4TR55UF.js";import{createFlags,fieldBody,hasAnyField,updateFlags}from"./chunk-TRNS45SB.js";import{nonEmpty}from"./chunk-MI6HVYR2.js";import{SALES_ESTIMATES_PATH,isExactNumericId}from"./chunk-VELLV6DJ.js";import{requireResolved,withResolved}from"./chunk-PS5QFKHB.js";
4
4
  import{acknowledgement,isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";import fs from"fs";import path from"path";var DOCUMENT_TYPES=["order_form","individual_contract","other"];var DOCUMENT_TYPE_HELP="order_form\uFF1D\u6CE8\u6587\u66F8 / individual_contract\uFF1D\u500B\u5225\u5951\u7D04\u66F8 / other\uFF1D\u305D\u306E\u4ED6\u6848\u4EF6\u66F8\u985E";var MAGIC_BYTES={pdf:["%PDF-"],jpg:["\xFF\xD8\xFF"],jpeg:["\xFF\xD8\xFF"],png:["\x89PNG\r\n\n"],xlsx:["PK","PK","PK\x07\b"],docx:["PK","PK","PK\x07\b"],xls:["\xD0\xCF\xE0\xA1\xB1\xE1"],doc:["\xD0\xCF\xE0\xA1\xB1\xE1"]};var FILE_NAME_MAX_CHARS=255;var FIELDS=[
5
5
  {kind:"text",flag:"--name",key:"document_name",label:"\u66F8\u985E\u540D",maxChars:255,summary:"\u66F8\u985E\u540D\uFF08create \u3067\u306F\u5FC5\u9808\uFF09"},{kind:"enum",flag:"--type",key:"document_type",values:DOCUMENT_TYPES,summary:`\u66F8\u985E\u7A2E\u5225\uFF08${DOCUMENT_TYPE_HELP}\u30FBcreate \u3067\u306F\u5FC5\u9808\uFF09`}];var COLUMNS=["document_id","estimate_id","document_type","document_type_label","document_name","current_version","updated_by_name","updated_at"];var VERSION_COLUMNS=[
6
6
  "version_number","file_name","file_size","is_current","created_by_name","created_at"];var ESTIMATE_FLAG={name:"--estimate",summary:"\u898B\u7A4D\u306E ID\uFF08twp estimate list \u306E id \u5217\u306E\u6570\u5B57\u30FB\u5FC5\u9808\uFF09",takesValue:true,placeholder:"<\u898B\u7A4DID>"};var FILE_FLAG={name:"--file",summary:"\u30A2\u30C3\u30D7\u30ED\u30FC\u30C9\u3059\u308B\u30D5\u30A1\u30A4\u30EB\uFF08PDF\u30FBJPEG\u30FBPNG\u30FBWord\u30FBExcel\u3002\u5FC5\u9808\uFF09",takesValue:true,placeholder:"<\
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{isModeId,isPermissionModeId}from"./chunk-NAUH75MM.js";import{API_TOKEN,HELP_TOKEN,isDomainName}from"./chunk-6A2JSS76.js";import{splitFlagToken}from"./chunk-QQRJLH6B.js";var BUILTIN_COMMANDS=["login","logout","whoami","update","task-loop"];var TASK_LOOP_ACTIONS=["run","status","stop","schedule","setup","charter","skill"];var VALUE_FLAGS=new Set(["-p","--print","--profile","--tenant","--mode","--permission-mode","--model","--allowed-tools","--disallowed-tools","--project","--engine","--interval","--max-cycles","--ai","--workspace","--ai-config-file","--now","--counts","--gate","--file","--out","--revision","--dir","--output","--query"]);var BOOLEAN_FLAGS=new Set(
3
+ import{isModeId,isPermissionModeId}from"./chunk-2LOT54OO.js";import{API_TOKEN,HELP_TOKEN,isDomainName}from"./chunk-QZBE4KC2.js";import{splitFlagToken}from"./chunk-QQRJLH6B.js";var BUILTIN_COMMANDS=["login","logout","whoami","update","task-loop"];var TASK_LOOP_ACTIONS=["run","status","stop","schedule","setup","charter","skill"];var VALUE_FLAGS=new Set(["-p","--print","--profile","--tenant","--mode","--permission-mode","--model","--allowed-tools","--disallowed-tools","--project","--engine","--interval","--max-cycles","--ai","--workspace","--ai-config-file","--now","--counts","--gate","--file","--out","--revision","--dir","--output","--query"]);var BOOLEAN_FLAGS=new Set(
4
4
  ["-h","--help","-v","--version","--no-tui","--doctor","--password","--token","--no-browser","--safe","--daemon","--force-runner","--force","--drain","--yes","-y","--no-ai-config-file","--verbose","--all","--dry-run","--debug","--refresh"]);function dispatch(argv,limit=2){const tokens=[];const indexes=[];let truncated=false;for(let i=0;i<argv.length;i++){const arg=argv[i];if(arg===void 0)continue;if(arg.startsWith("-")&&arg!=="-"){const{name,value:inline}=splitFlagToken(arg);if(BOOLEAN_FLAGS.has(
5
5
  name)){if(inline!==void 0){truncated=true;break}continue}if(VALUE_FLAGS.has(name)){if(inline!==void 0)continue;const next=argv[i+1];if(next!==void 0&&(!next.startsWith("-")||next==="-"))i++;continue}truncated=true;break}if(arg===""||arg==="-")continue;if(tokens.length>=limit)break;tokens.push(arg);indexes.push(i)}return{tokens,indexes,truncated}}function isBuiltin(token){return token!==void 0&&BUILTIN_COMMANDS.includes(token)}function isTaskLoopAction(token){return token!==void 0&&TASK_LOOP_ACTIONS.
6
6
  includes(token)}function resolveRoute(result){const{tokens,indexes}=result;const[first,second]=tokens;const firstIndex=indexes[0];if(first===void 0||firstIndex===void 0)return{kind:"none",consumed:[]};const consumed=[firstIndex];const secondIndex=indexes[1];if(isBuiltin(first)){if(first==="task-loop"&&isTaskLoopAction(second)){if(secondIndex!==void 0)consumed.push(secondIndex);return{kind:"builtin",command:first,action:second,consumed}}return{kind:"builtin",command:first,...first==="task-loop"?{
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{CRITERION_RE,checkCounts,checksOf,envelope,reasonsMap,reviewOf,withoutResult}from"./chunk-GIUINGC7.js";import{LIST_FLAGS,LIST_PAGING_HELP,envelopePaging,nonEmpty,positiveInteger}from"./chunk-MI6HVYR2.js";import{readBody}from"./chunk-6LSQCOCJ.js";import{WORKFLOWS_PATH}from"./chunk-3LWQO2ZK.js";import{UUID_RE,isSafePathSegment}from"./chunk-GMBJTG6A.js";import{requireResolved,singleRef,withResolved}from"./chunk-PS5QFKHB.js";import{acknowledgement,isRecord,
3
+ import{CRITERION_RE,checkCounts,checksOf,envelope,reasonsMap,reviewOf,withoutResult}from"./chunk-LOTNN4VY.js";import{LIST_FLAGS,LIST_PAGING_HELP,envelopePaging,nonEmpty,positiveInteger}from"./chunk-MI6HVYR2.js";import{readBody}from"./chunk-6LSQCOCJ.js";import{WORKFLOWS_PATH}from"./chunk-VELLV6DJ.js";import{UUID_RE,isSafePathSegment}from"./chunk-HVZUXLQ4.js";import{requireResolved,singleRef,withResolved}from"./chunk-PS5QFKHB.js";import{acknowledgement,isRecord,
4
4
  pick}from"./chunk-3ZRMMBP5.js";import{ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";var INSTANCES_PATH=`${WORKFLOWS_PATH}/instances`;var COMMENT_MAX_CHARS=2e3;var IN_FLIGHT=new Set(["pending","processing"]);var GET_USAGE="twp workflow ai-review get <\u7533\u8ACBID>";var UPDATE_USAGE="twp workflow ai-review-comment update <\u6307\u6458ID> --instance <\u7533\u8ACBID> (--text <\u672C\u6587> | --text-file <\u30D1\u30B9>)";var DELETE_USAGE="twp workflow ai-review-comment delete <\u6307\u6458ID> --instance <\u7533\u8ACBID> --yes";function instanceUuid(raw,usage,what){const id=raw?.trim()??
5
5
  "";if(id==="")throw new UsageError(`\u7533\u8ACBID \u3092${what}\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044`,usage);if(!UUID_RE.test(id))throw new UsageError(`\u7533\u8ACBID \u306F UUID \u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044: ${id}`,`${usage}
6
6
  \u7533\u8ACBID \u306F twp workflow approval pending \u306E id \u5217\u3067\u3059\u3002`);return id}function workflowReviewPath(instanceId){return`${INSTANCES_PATH}/${encodeURIComponent(instanceId)}/ai-review`}function reviewTarget(input){if(input.args.length>1)throw new UsageError(`\u4F59\u5206\u306A\u5F15\u6570\u304C\u3042\u308A\u307E\u3059: ${input.args.slice(1).join(" ")}`,GET_USAGE);return workflowReviewPath(instanceUuid(input.args[0],GET_USAGE,"\u4F4D\u7F6E\u5F15\u6570"))}function commentTarget(input,usage){
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{nonEmpty}from"./chunk-MI6HVYR2.js";import{readBody}from"./chunk-6LSQCOCJ.js";import{isSafePathSegment}from"./chunk-GMBJTG6A.js";import{ApiError}from"./chunk-JA5A6UJ2.js";import{withResolved}from"./chunk-PS5QFKHB.js";import{isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiRejectedError,ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";var GROUPED_PATH="/api/v2/organization/skills/grouped";var SKILL_MAP_PATH="/api/v2/organization/skill-map";var QUALIFICATIONS_PATH="/api/v2/organization/qualifications";var USERS_LIST_PATH="/api/v2/admin/users/list";var USERS_PAGE_LIMIT=100;var USERS_MAX_PAGES=50;var HR_FORBIDDEN="HR\u7BA1\u7406\u8005\u306E\u6A29\u9650\u304C\u5FC5\u8981\u3067\u3059\u3002\u30B9\u30AD\u30EB\u30DE\u30C3\u30D7\uFF08twp skill map / who\uFF09\u306F\u4EBA\u4E8B\u7BA1\u7406\u306E\u7BA1\u7406\u8005\u3060\u3051\u304C\u53C2\u7167\u3067\u304D\u307E\u3059";
3
+ import{nonEmpty}from"./chunk-MI6HVYR2.js";import{readBody}from"./chunk-6LSQCOCJ.js";import{isSafePathSegment}from"./chunk-HVZUXLQ4.js";import{ApiError}from"./chunk-JA5A6UJ2.js";import{withResolved}from"./chunk-PS5QFKHB.js";import{isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiRejectedError,ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";var GROUPED_PATH="/api/v2/organization/skills/grouped";var SKILL_MAP_PATH="/api/v2/organization/skill-map";var QUALIFICATIONS_PATH="/api/v2/organization/qualifications";var USERS_LIST_PATH="/api/v2/admin/users/list";var USERS_PAGE_LIMIT=100;var USERS_MAX_PAGES=50;var HR_FORBIDDEN="HR\u7BA1\u7406\u8005\u306E\u6A29\u9650\u304C\u5FC5\u8981\u3067\u3059\u3002\u30B9\u30AD\u30EB\u30DE\u30C3\u30D7\uFF08twp skill map / who\uFF09\u306F\u4EBA\u4E8B\u7BA1\u7406\u306E\u7BA1\u7406\u8005\u3060\u3051\u304C\u53C2\u7167\u3067\u304D\u307E\u3059";
4
4
  function groupedSkillRows(body){const categories=isRecord(body)?body["categories"]:void 0;if(!Array.isArray(categories)){throw new ApiResponseError("\u30B9\u30AD\u30EB\u4E00\u89A7\u306E\u5FDC\u7B54\u306B categories \u914D\u5217\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002")}return categories.flatMap(group=>{const category=isRecord(group)&&isRecord(group["category"])?group["category"]:{};const skills=isRecord(group)&&Array.
5
5
  isArray(group["skills"])?group["skills"]:[];return skills.filter(isRecord).map(skill=>({...skill,category_id:skill["category_id"]??category["id"]??null,category_name:category["name"]??null}))})}function groupedCategories(body){groupedSkillRows(body);return body["categories"]}function skillMatrix(body){const matrix=isRecord(body)?body["matrix"]:void 0;if(!Array.isArray(matrix)){throw new ApiResponseError("\u30B9\u30AD\u30EB\u30DE\u30C3\u30D7\u306E\u5FDC\u7B54\u306B matrix \u914D\u5217\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002")}
6
6
  return matrix.filter(isRecord)}function qualificationRows(body){const list=isRecord(body)?body["list"]:void 0;if(!Array.isArray(list)){throw new ApiResponseError("\u8CC7\u683C\u30DE\u30B9\u30BF\u306E\u5FDC\u7B54\u306B list \u914D\u5217\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002")}return list}var SKILLS_PATH="/api/v2/organization/skills";async function skillNames(ctx,ids=[]){const map={};try{for(const row of groupedSkillRows(
@@ -1,7 +1,7 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{createFlags,fieldBody,hasAnyField,resolveRefFields,updateFlags}from"./chunk-QL2YKREQ.js";import{boundedText,isoDate}from"./chunk-OTIR4GES.js";import{FROM_FLAG,MANHOUR_DESCRIPTION,MANHOUR_FROM_FLAG,MANHOUR_TO_FLAG,MONTH_FLAG,TO_FLAG,dataOf,listIn,manhourNotes,manhourQuery,manhourRows,monthRange,rangeNotes,recordOf,workloadDistributionNotes,workloadDistributionRows}from"./chunk-DDCERTPP.js";import{LIST_FLAGS,LIST_PAGING_HELP,envelopePaging,nonEmpty,positiveInteger}from"./chunk-MI6HVYR2.js";
4
- import{USER_REF_FLAG,USER_REF_HELP,userPath}from"./chunk-X6KRLHSG.js";import{readBody}from"./chunk-6LSQCOCJ.js";import{PROJECT_MEMBERS_LIMIT,resolveNamed}from"./chunk-3LWQO2ZK.js";import{collapsesInUrlPath,safeProjectIdPolicy}from"./chunk-GMBJTG6A.js";import{requireResolved,singleRef,withResolved}from"./chunk-PS5QFKHB.js";import{isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";var PROJECT_FLAG={name:"--project",summary:"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u30B3\u30FC\u30C9\u307E\u305F\u306F ID\uFF08\u7701\u7565\u6642\u306F TWP_PROJECT / .twp/config.json / ~/.twp/config.json\uFF09",takesValue:true,placeholder:"<\u30B3\u30FC\u30C9|ID>"};var ROLE_FLAG={name:"--role",summary:"\u5F79\u5272\uFF08member / manager \u306A\u3069\u30FB\u5024\u306F\u30B5\u30FC\u30D0\u304C\u691C\u67FB\u3059\u308B\uFF09",takesValue:true,placeholder:"<\u5F79\u5272>"};var START_DATE_FLAG={name:"\
3
+ import{createFlags,fieldBody,hasAnyField,resolveRefFields,updateFlags}from"./chunk-TRNS45SB.js";import{boundedText,isoDate}from"./chunk-JJSBBWJ5.js";import{FROM_FLAG,MANHOUR_DESCRIPTION,MANHOUR_FROM_FLAG,MANHOUR_TO_FLAG,MONTH_FLAG,TO_FLAG,dataOf,listIn,manhourNotes,manhourQuery,manhourRows,monthRange,rangeNotes,recordOf,workloadDistributionNotes,workloadDistributionRows}from"./chunk-O7XM54CL.js";import{LIST_FLAGS,LIST_PAGING_HELP,envelopePaging,nonEmpty,positiveInteger}from"./chunk-MI6HVYR2.js";
4
+ import{USER_REF_FLAG,USER_REF_HELP,userPath}from"./chunk-BVREBTDJ.js";import{readBody}from"./chunk-6LSQCOCJ.js";import{PROJECT_MEMBERS_LIMIT,resolveNamed}from"./chunk-VELLV6DJ.js";import{collapsesInUrlPath,safeProjectIdPolicy}from"./chunk-HVZUXLQ4.js";import{requireResolved,singleRef,withResolved}from"./chunk-PS5QFKHB.js";import{isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";var PROJECT_FLAG={name:"--project",summary:"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u30B3\u30FC\u30C9\u307E\u305F\u306F ID\uFF08\u7701\u7565\u6642\u306F TWP_PROJECT / .twp/config.json / ~/.twp/config.json\uFF09",takesValue:true,placeholder:"<\u30B3\u30FC\u30C9|ID>"};var ROLE_FLAG={name:"--role",summary:"\u5F79\u5272\uFF08member / manager \u306A\u3069\u30FB\u5024\u306F\u30B5\u30FC\u30D0\u304C\u691C\u67FB\u3059\u308B\uFF09",takesValue:true,placeholder:"<\u5F79\u5272>"};var START_DATE_FLAG={name:"\
5
5
  --start-date",summary:"\u53C2\u753B\u958B\u59CB\u65E5\uFF08YYYY-MM-DD\uFF09",takesValue:true,placeholder:"<YYYY-MM-DD>"};var END_DATE_FLAG={name:"--end-date",summary:"\u53C2\u753B\u7D42\u4E86\u65E5\uFF08YYYY-MM-DD\uFF09",takesValue:true,placeholder:"<YYYY-MM-DD>"};var PERIOD_FILE_FLAG={name:"--period-file",summary:"\u7A3C\u50CD\u671F\u9593\uFF08assignment_periods\uFF09\u306E JSON \u914D\u5217\u30D5\u30A1\u30A4\u30EB\uFF08- \u3067\u6A19\u6E96\u5165\u529B\uFF09",takesValue:true,placeholder:"<\u30D1\u30B9>"};
6
6
  var MEMO_FLAG={name:"--memo",summary:"\u30E1\u30E2\uFF0810,000 \u6587\u5B57\u307E\u3067\uFF09",takesValue:true,placeholder:"<\u6587\u5B57\u5217>"};var CLEAR_FLAG={name:"--clear",summary:"\u5225\u540D\u3092\u6D88\u3059",takesValue:false};var MEMO_MAX_CHARS=1e4;var PERIOD_FILE_MAX_CHARS=2e5;var ALIAS_MAX_CHARS=255;var PERIOD_KEYS=["id","start_date","end_date","daily_hours","total_hours","input_mode"];var PERIOD_REQUIRED=["start_date","end_date","daily_hours"];var ROLE_HELP="--role \u306E\u5024\u306F\u30B5\u30FC\u30D0\u304C\u691C\u67FB\u3057\u307E\u3059\uFF08CLI\
7
7
  \u306F\u691C\u67FB\u3057\u307E\u305B\u3093\uFF09\u30022026-10-01 \u6642\u70B9\u306E\u5024\u306F\n member\uFF08\u30E1\u30F3\u30D0\u30FC\uFF09/ manager\uFF08\u7BA1\u7406\u8005\uFF09/ approver\uFF08\u7BA1\u7406\u8005\uFF08\u627F\u8A8D\u8005\uFF09\uFF09/ manager_no_punch\uFF08\u7BA1\u7406\u8005\uFF08\u6253\u523B\u7121\uFF09\uFF09\u3067\u3059\u3002\n \u5024\u306F\u5897\u3048\u308B\u3053\u3068\u304C\u3042\u308A\u307E\u3059\u3002\u4ECA\u306E\u30E1\u30F3\u30D0\u30FC\u306E\u5024\u306F twp project members \u306E role \u5217\u3067\u78BA\u304B\u3081\u3089\u308C\u307E\u3059\u3002";
@@ -1,7 +1,7 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{CommandModelMissingError,MAX_REPORTED_VIOLATIONS,loadCommandModelDomain,loadCommandModelIndex,validateBody,validateQuery}from"./chunk-NZ7WI4RZ.js";import{redactSecretValues}from"./chunk-UFGJSWKU.js";import{isForceOnly,killProcessTree,system32}from"./chunk-N2UVRM3Z.js";import{isSafePathSegment}from"./chunk-GMBJTG6A.js";import{ApiError,TwpApiClient,appendQuery}from"./chunk-JA5A6UJ2.js";import{DEFAULT_MAX_TOKENS,emptyUsage}from"./chunk-5WTFZJT7.js";import{
4
- isPrivateTwpHome,isTrustworthyCacheFile,writePrivateFileAtomic}from"./chunk-D233KKXW.js";import{findExecutable,isWindowsDriveAbsolute}from"./chunk-PMOUHEJQ.js";import{AuthSession,NotLoggedInError,SessionExpiredError,withFileLock}from"./chunk-XNLIEUAW.js";import{httpFetch}from"./chunk-J7QYPKVK.js";import{configReadDirs,ensureTwpHome,twpHomeDir}from"./chunk-RZVI6PMW.js";import{MODES,applyPermissionMode,checkPermission,isModeId,setActiveModes}from"./chunk-NAUH75MM.js";
3
+ import{CommandModelMissingError,MAX_REPORTED_VIOLATIONS,loadCommandModelDomain,loadCommandModelIndex,validateBody,validateQuery}from"./chunk-NZ7WI4RZ.js";import{redactSecretValues}from"./chunk-UFGJSWKU.js";import{isForceOnly,killProcessTree,system32}from"./chunk-N2UVRM3Z.js";import{isSafePathSegment}from"./chunk-HVZUXLQ4.js";import{ApiError,TwpApiClient,appendQuery}from"./chunk-JA5A6UJ2.js";import{DEFAULT_MAX_TOKENS,emptyUsage}from"./chunk-5WTFZJT7.js";import{
4
+ isPrivateTwpHome,isTrustworthyCacheFile,writePrivateFileAtomic}from"./chunk-D233KKXW.js";import{findExecutable,isWindowsDriveAbsolute}from"./chunk-PMOUHEJQ.js";import{AuthSession,NotLoggedInError,SessionExpiredError,withFileLock}from"./chunk-XNLIEUAW.js";import{httpFetch}from"./chunk-J7QYPKVK.js";import{configReadDirs,ensureTwpHome,twpHomeDir}from"./chunk-RZVI6PMW.js";import{MODES,applyPermissionMode,checkPermission,isModeId,setActiveModes}from"./chunk-2LOT54OO.js";
5
5
  import{stripTerminalControls}from"./chunk-NHYMHCAT.js";import fs2 from"fs";import path3 from"path";import os2 from"os";import{realpathSync}from"fs";import{homedir}from"os";import{dirname,isAbsolute,relative,resolve,sep}from"path";var PathDeniedError=class extends Error{constructor(message){super(message);this.name="PathDeniedError"}};function resolveToolPath(input,cwd,home=homedir()){if(typeof input!=="string"||input.trim()===""){throw new PathDeniedError("path must be a non-empty string")}const expanded=expandHome(input,home);const abs=isAbsolute(expanded)?resolve(expanded):resolve(cwd,expanded);const root=realOrSelf(resolve(cwd));assertInside(abs,resolve(cwd),abs);assertNotSecret(abs,home);const real=realOrSelf(abs);if(real!==
6
6
  abs){assertInside(real,root,abs);assertNotSecret(real,home)}return abs}function realToolPath(input,cwd,home=homedir()){return realOrSelf(resolveToolPath(input,cwd,home))}function assertInside(target,root,reported){const rel=relative(root,target);const outside=rel===".."||rel.startsWith(`..${sep}`)||isAbsolute(rel);if(outside){throw new PathDeniedError(`path escapes the working directory (${reported}). Only paths under ${root} can be accessed.`)}}function realOrSelf(target){let current=target;const rest=[];
7
7
  for(;;){try{const real=realpathSync(current);return rest.length===0?real:resolve(real,...rest.reverse())}catch{const parent=dirname(current);if(parent===current)return target;rest.push(current.slice(parent.length+1));current=parent}}}function assertNotSecret(absPath,home=homedir(),env=process.env){const reason=secretReason(absPath,home,env);if(reason!==null)throw new PathDeniedError(`refusing to access ${absPath}: ${reason}`)}function secretReason(absPath,_home=homedir(),env=process.env){const lower=absPath.
@@ -213,18 +213,18 @@ fetched_at==="string"?raw.fetched_at:"",checked_at:typeof raw.checked_at==="stri
213
213
  ."||segment===".")}var RISKS=new Set(["read","write","destructive"]);function isParam(value){if(typeof value!=="object"||value===null)return false;const p=value;return typeof p["name"]==="string"&&(typeof p["type"]==="string"||Array.isArray(p["type"])&&p["type"].every(t=>typeof t==="string"))&&typeof p["required"]==="boolean"&&(p["description"]===void 0||typeof p["description"]==="string")}function isCatalogOperation(value){if(typeof value!=="object"||value===null)return false;const o=value;const body=o["\
214
214
  body"];return typeof o["name"]==="string"&&typeof o["domain"]==="string"&&DOMAIN_RE.test(o["domain"])&&typeof o["operationId"]==="string"&&typeof o["method"]==="string"&&METHODS.has(o["method"])&&typeof o["path"]==="string"&&isSafeOperationPath(o["path"])&&typeof o["summary"]==="string"&&Array.isArray(o["pathParams"])&&o["pathParams"].every(isParam)&&Array.isArray(o["queryParams"])&&o["queryParams"].every(isParam)&&(body===null||typeof body==="object"&&!Array.isArray(body))&&(o["resultPath"]===null||
215
215
  typeof o["resultPath"]==="string")&&typeof o["risk"]==="string"&&RISKS.has(o["risk"])&&Array.isArray(o["aliases"])&&o["aliases"].every(a=>typeof a==="string")}function parseToolCatalog(raw){if(typeof raw!=="object"||raw===null)return null;const r=raw;const version=r["version"];const tools=r["tools"];if(typeof version!=="string"||!isVersionToken(version)||!Array.isArray(tools))return null;if(!tools.every(isCatalogOperation))return null;const names=new Set;for(const op of tools){const key=`${op.domain}\
216
- ${op.name}`;if(names.has(key))return null;names.add(key)}return{version,catalogVersion:typeof r["catalog_version"]==="string"?r["catalog_version"]:null,tools}}var RISK_ORDER={read:0,write:1,destructive:2};function methodFloor(method){if(method==="GET")return"read";return method==="DELETE"?"destructive":"write"}function stronger(a,b){return RISK_ORDER[a]>=RISK_ORDER[b]?a:b}function readerFromTools(tools,bundled=bundledReader){const byDomain=new Map;for(const op of tools){const list=byDomain.get(
217
- op.domain);if(list)list.push(op);else byDomain.set(op.domain,[op])}let indexCache=null;const domainCache=new Map;return{index:async()=>{if(indexCache!==null)return indexCache;const summaries=new Map;try{for(const entry of(await bundled.index()).domains)summaries.set(entry.domain,entry.summary)}catch{}const domains=[...byDomain.entries()].map(([domain,ops])=>({domain,summary:summaries.get(domain)??"",operationCount:ops.length}));indexCache={schemaVersion:1,specVersion:"",domains,totals:{domains:domains.
218
- length,operations:tools.length}};return indexCache},domain:async domain=>{const cached=domainCache.get(domain);if(cached!==void 0)return cached;const ops=byDomain.get(domain);if(ops===void 0){throw new CommandModelMissingError(`\u30C9\u30E1\u30A4\u30F3 ${domain} \u306F\u3053\u306E\u30A2\u30AB\u30A6\u30F3\u30C8\u306E\u30AB\u30BF\u30ED\u30B0\u306B\u3042\u308A\u307E\u305B\u3093`)}const floor=new Map;try{for(const op of(await bundled.domain(domain)).operations)floor.set(op.operationId,op.risk)}catch{}
219
- const file={domain,operations:ops.map(op=>{const risk=stronger(stronger(op.risk,methodFloor(op.method)),floor.get(op.operationId)??"read");return risk===op.risk?op:{...op,risk}})};domainCache.set(domain,file);return file}}}var ToolCatalog=class{profile;apiUrl;env;bundled;now;account;decided=null;refreshState;refreshPromise=null;constructor(opts){this.profile=opts.profile;this.apiUrl=opts.apiUrl;this.env=opts.env??process.env;this.bundled=opts.bundled??bundledReader;this.now=opts.now??Date.now;this.
220
- account=opts.account??(()=>null)}meta(){return readMeta(this.profile,this.apiUrl,this.account(),this.env)}index(){return this.decide().reader.index()}domain(domain){return this.decide().reader.domain(domain)}status(){const refresh=this.refreshState!==void 0?{refresh:this.refreshState}:{};if(this.decided!==null){const{origin,reason,meta:meta2}=this.decided;return{origin,...reason!==void 0?{reason}:{},...metaFields(meta2),...refresh}}if(!homeIsPrivate(this.env))return{origin:"undecided",next:"bund\
221
- led",reason:REASON_UNTRUSTED_HOME,...refresh};const meta=this.meta();if(meta!==null&&!isTrustworthyCacheFile(toolCatalogCachePaths(this.profile,this.apiUrl,this.env).body)){return{origin:"undecided",next:"bundled",reason:REASON_BROKEN,...refresh}}return meta!==null?{origin:"undecided",next:"server-cache",...metaFields(meta),...refresh}:{origin:"undecided",next:"bundled",reason:REASON_NO_CACHE,...refresh}}decide(){if(this.decided!==null)return this.decided;this.decided=this.loadCache()??{reader:this.
222
- bundled,origin:"bundled",reason:homeIsPrivate(this.env)?REASON_NO_CACHE:REASON_UNTRUSTED_HOME};return this.decided}loadCache(){const meta=this.meta();if(meta===null)return null;const paths=toolCatalogCachePaths(this.profile,this.apiUrl,this.env);const parsed=parseToolCatalog(readTrustedJson(paths.body,this.env));if(parsed===null||parsed.version!==meta.version){removeQuietly(paths.meta);return{reader:this.bundled,origin:"bundled",reason:REASON_BROKEN}}return{reader:readerFromTools(parsed.tools,this.
223
- bundled),origin:"server-cache",meta}}refresh(get){this.refreshPromise??=this.doRefresh(get).then(outcome=>{this.refreshState=outcome;return outcome});if(this.refreshState===void 0)this.refreshState="running";return this.refreshPromise}async doRefresh(get){if(!homeIsPrivate(this.env))return{result:"failed",detail:REASON_UNTRUSTED_HOME};const account=this.account();const meta=this.meta();const paths=toolCatalogCachePaths(this.profile,this.apiUrl,this.env);const since=meta!==null&&isTrustworthyCacheFile(
224
- paths.body)?meta.version:null;let raw;try{raw=await get(TOOL_CATALOG_PATH,since!==null?{since}:void 0)}catch(err){const status=statusOf(err);if(status===304&&meta!==null){try{await this.locked(paths.lock,async()=>{if(this.meta()?.version===meta.version)this.writeMeta(paths.meta,{...meta,checked_at:this.iso(),last_result:"not-modified"})})}catch{}return{result:"not-modified"}}if(status===404||status===401||status===403||isAuthError(err)){removeQuietly(paths.meta);removeQuietly(paths.body);return{
225
- result:"unavailable",detail:status!==null?`\u30B5\u30FC\u30D0\u304C ${status} \u3092\u8FD4\u3057\u307E\u3057\u305F`:"\u30ED\u30B0\u30A4\u30F3\u3057\u3066\u3044\u307E\u305B\u3093"}}return{result:"failed",detail:status!==null?`\u30B5\u30FC\u30D0\u304C ${status} \u3092\u8FD4\u3057\u307E\u3057\u305F`:`\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\uFF08${messageOf(err)}\uFF09`}}const parsed=parseToolCatalog(raw);if(parsed===null)return{result:"failed",detail:"\u30B5\u30FC\u30D0\u306E\u5FDC\u7B54\u306E\u5F62\u304C\u9055\u3044\u307E\u3059"};
226
- try{ensureTwpHome(this.env);await this.locked(paths.lock,async()=>{writePrivateFileAtomic(paths.body,JSON.stringify({version:parsed.version,catalog_version:parsed.catalogVersion,tools:parsed.tools}));const at=this.iso();this.writeMeta(paths.meta,{version:parsed.version,profile:this.profile,api_url:this.apiUrl,account,catalog_version:parsed.catalogVersion,tool_count:parsed.tools.length,fetched_at:at,checked_at:at,last_result:"updated"})})}catch(err){return{result:"failed",detail:`\u30AD\u30E3\u30C3\u30B7\u30E5\u3092\u66F8\u3051\u307E\u305B\u3093\uFF08${messageOf(
227
- err)}\uFF09`}}return{result:"updated"}}async locked(lockPath,fn){await withFileLock(lockPath,fn,CACHE_LOCK_WAIT_MS)}writeMeta(file,meta){try{ensureTwpHome(this.env);writePrivateFileAtomic(file,`${JSON.stringify(meta,null,2)}
216
+ ${op.name}`;if(names.has(key))return null;names.add(key)}return{version,catalogVersion:typeof r["catalog_version"]==="string"?r["catalog_version"]:null,tools}}var RISK_ORDER={read:0,write:1,destructive:2};function methodFloor(method){if(method==="GET")return"read";return method==="DELETE"?"destructive":"write"}function floorOf(op,bundledOp){if(bundledOp!==void 0&&bundledOp.method===op.method&&bundledOp.path===op.path)return bundledOp.risk;return stronger(methodFloor(op.method),bundledOp?.risk??
217
+ "read")}function stronger(a,b){return RISK_ORDER[a]>=RISK_ORDER[b]?a:b}function readerFromTools(tools,bundled=bundledReader){const byDomain=new Map;for(const op of tools){const list=byDomain.get(op.domain);if(list)list.push(op);else byDomain.set(op.domain,[op])}let indexCache=null;const domainCache=new Map;return{index:async()=>{if(indexCache!==null)return indexCache;const summaries=new Map;try{for(const entry of(await bundled.index()).domains)summaries.set(entry.domain,entry.summary)}catch{}const domains=[
218
+ ...byDomain.entries()].map(([domain,ops])=>({domain,summary:summaries.get(domain)??"",operationCount:ops.length}));indexCache={schemaVersion:1,specVersion:"",domains,totals:{domains:domains.length,operations:tools.length}};return indexCache},domain:async domain=>{const cached=domainCache.get(domain);if(cached!==void 0)return cached;const ops=byDomain.get(domain);if(ops===void 0){throw new CommandModelMissingError(`\u30C9\u30E1\u30A4\u30F3 ${domain} \u306F\u3053\u306E\u30A2\u30AB\u30A6\u30F3\u30C8\u306E\u30AB\u30BF\u30ED\u30B0\u306B\u3042\u308A\u307E\u305B\u3093`)}
219
+ const floor=new Map;try{for(const op of(await bundled.domain(domain)).operations)floor.set(op.operationId,op)}catch{}const file={domain,operations:ops.map(op=>{const risk=stronger(op.risk,floorOf(op,floor.get(op.operationId)));return risk===op.risk?op:{...op,risk}})};domainCache.set(domain,file);return file}}}var ToolCatalog=class{profile;apiUrl;env;bundled;now;account;decided=null;refreshState;refreshPromise=null;constructor(opts){this.profile=opts.profile;this.apiUrl=opts.apiUrl;this.env=opts.
220
+ env??process.env;this.bundled=opts.bundled??bundledReader;this.now=opts.now??Date.now;this.account=opts.account??(()=>null)}meta(){return readMeta(this.profile,this.apiUrl,this.account(),this.env)}index(){return this.decide().reader.index()}domain(domain){return this.decide().reader.domain(domain)}status(){const refresh=this.refreshState!==void 0?{refresh:this.refreshState}:{};if(this.decided!==null){const{origin,reason,meta:meta2}=this.decided;return{origin,...reason!==void 0?{reason}:{},...metaFields(
221
+ meta2),...refresh}}if(!homeIsPrivate(this.env))return{origin:"undecided",next:"bundled",reason:REASON_UNTRUSTED_HOME,...refresh};const meta=this.meta();if(meta!==null&&!isTrustworthyCacheFile(toolCatalogCachePaths(this.profile,this.apiUrl,this.env).body)){return{origin:"undecided",next:"bundled",reason:REASON_BROKEN,...refresh}}return meta!==null?{origin:"undecided",next:"server-cache",...metaFields(meta),...refresh}:{origin:"undecided",next:"bundled",reason:REASON_NO_CACHE,...refresh}}decide(){
222
+ if(this.decided!==null)return this.decided;this.decided=this.loadCache()??{reader:this.bundled,origin:"bundled",reason:homeIsPrivate(this.env)?REASON_NO_CACHE:REASON_UNTRUSTED_HOME};return this.decided}loadCache(){const meta=this.meta();if(meta===null)return null;const paths=toolCatalogCachePaths(this.profile,this.apiUrl,this.env);const parsed=parseToolCatalog(readTrustedJson(paths.body,this.env));if(parsed===null||parsed.version!==meta.version){removeQuietly(paths.meta);return{reader:this.bundled,
223
+ origin:"bundled",reason:REASON_BROKEN}}return{reader:readerFromTools(parsed.tools,this.bundled),origin:"server-cache",meta}}refresh(get){this.refreshPromise??=this.doRefresh(get).then(outcome=>{this.refreshState=outcome;return outcome});if(this.refreshState===void 0)this.refreshState="running";return this.refreshPromise}async doRefresh(get){if(!homeIsPrivate(this.env))return{result:"failed",detail:REASON_UNTRUSTED_HOME};const account=this.account();const meta=this.meta();const paths=toolCatalogCachePaths(
224
+ this.profile,this.apiUrl,this.env);const since=meta!==null&&isTrustworthyCacheFile(paths.body)?meta.version:null;let raw;try{raw=await get(TOOL_CATALOG_PATH,since!==null?{since}:void 0)}catch(err){const status=statusOf(err);if(status===304&&meta!==null){try{await this.locked(paths.lock,async()=>{if(this.meta()?.version===meta.version)this.writeMeta(paths.meta,{...meta,checked_at:this.iso(),last_result:"not-modified"})})}catch{}return{result:"not-modified"}}if(status===404||status===401||status===
225
+ 403||isAuthError(err)){removeQuietly(paths.meta);removeQuietly(paths.body);return{result:"unavailable",detail:status!==null?`\u30B5\u30FC\u30D0\u304C ${status} \u3092\u8FD4\u3057\u307E\u3057\u305F`:"\u30ED\u30B0\u30A4\u30F3\u3057\u3066\u3044\u307E\u305B\u3093"}}return{result:"failed",detail:status!==null?`\u30B5\u30FC\u30D0\u304C ${status} \u3092\u8FD4\u3057\u307E\u3057\u305F`:`\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\uFF08${messageOf(err)}\uFF09`}}const parsed=parseToolCatalog(raw);if(parsed===
226
+ null)return{result:"failed",detail:"\u30B5\u30FC\u30D0\u306E\u5FDC\u7B54\u306E\u5F62\u304C\u9055\u3044\u307E\u3059"};try{ensureTwpHome(this.env);await this.locked(paths.lock,async()=>{writePrivateFileAtomic(paths.body,JSON.stringify({version:parsed.version,catalog_version:parsed.catalogVersion,tools:parsed.tools}));const at=this.iso();this.writeMeta(paths.meta,{version:parsed.version,profile:this.profile,api_url:this.apiUrl,account,catalog_version:parsed.catalogVersion,tool_count:parsed.tools.length,
227
+ fetched_at:at,checked_at:at,last_result:"updated"})})}catch(err){return{result:"failed",detail:`\u30AD\u30E3\u30C3\u30B7\u30E5\u3092\u66F8\u3051\u307E\u305B\u3093\uFF08${messageOf(err)}\uFF09`}}return{result:"updated"}}async locked(lockPath,fn){await withFileLock(lockPath,fn,CACHE_LOCK_WAIT_MS)}writeMeta(file,meta){try{ensureTwpHome(this.env);writePrivateFileAtomic(file,`${JSON.stringify(meta,null,2)}
228
228
  `)}catch{}}iso(){return new Date(this.now()).toISOString()}};function metaFields(meta){if(meta===void 0)return{};return{version:meta.version,toolCount:meta.tool_count,...meta.fetched_at!==""?{fetchedAt:meta.fetched_at}:{},...meta.checked_at!==""?{checkedAt:meta.checked_at}:{}}}function statusOf(err){const status=err?.status;return typeof status==="number"?status:null}function isAuthError(err){return err instanceof NotLoggedInError||err instanceof SessionExpiredError}function messageOf(err){return err instanceof
229
229
  Error?err.message:String(err)}function removeQuietly(file){try{fs5.rmSync(file,{force:true})}catch{}}function describeToolCatalog(status){const origin=status.origin==="undecided"?status.next:status.origin;const head=origin==="server-cache"?`\u30B5\u30FC\u30D0\u914D\u4FE1\uFF08${status.toolCount??"?"} \u64CD\u4F5C\u30FB\u7248 ${status.version?.slice(0,12)??"?"}\u30FB\u53D6\u5F97 ${status.fetchedAt??"?"}\uFF09`:`\u540C\u68B1\u7248\uFF08${status.reason??"\u7406\u7531\u4E0D\u660E"}\uFF09`;const when=status.
230
230
  origin==="undecided"?"\uFF08\u3053\u306E\u30BB\u30C3\u30B7\u30E7\u30F3\u3067\u306F\u307E\u3060\u672A\u4F7F\u7528\u30FB\u6B21\u306B\u4F7F\u3046\u51FA\u3069\u3053\u308D\uFF09":"";const refresh=status.refresh;const tail=refresh===void 0?"\u66F4\u65B0: \u672A\u5B9F\u884C":refresh==="running"?"\u66F4\u65B0: \u53D6\u5F97\u4E2D":`\u66F4\u65B0: ${REFRESH_LABEL[refresh.result]}${refresh.detail!==void 0?`\uFF08${refresh.detail}\uFF09`:""}`;return`TWP \u30C4\u30FC\u30EB\u30AB\u30BF\u30ED\u30B0: ${head}${when}\