@tocca-systems/twp-cli 0.79.0 → 0.81.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.
@@ -11,6 +11,18 @@
11
11
  `CHANGELOG.md` に残してあります。顧客向けの履歴は public 公開以降を対象とします。
12
12
  -->
13
13
 
14
+ ## 0.81.0
15
+
16
+ `twp project member create` / `update` の `--wiki-role admin|member` で、プロジェクトごとの Wiki 権限(そのプロジェクトの Wiki だけで管理者にするか)を設定できるようになりました。`twp project members` の一覧に Wiki 権限(`wiki_role`)の列が加わり、誰がそのプロジェクトの Wiki 管理者かを確かめられます。
17
+
18
+ TUI の `/model` で接続先の異なるモデル(例: Anthropic 直と Bedrock)へ切り替えるときは、確認のうえ新しい会話から始めるようになりました。同じ接続先のモデル同士は、これまでどおり会話を保ったまま切り替わります。会話の残量表示は、モデルごとのコンテキストの大きさに合わせて計算されます。
19
+
20
+ ## 0.80.0
21
+
22
+ ドメイン知識の記事の更新・移動・削除で `--if-revision <版>` を指定できるようになりました。`twp knowledge doc get` で読んだ版から記事が変わっていれば、上書きせずに止まります。
23
+
24
+ `twp task-loop` は、前回の実行が待ち条件(`resume_after=` / `blocked_by=` / `pr_head=`)を契約行に書いて据え置いたタスクを、条件が成立するまで同じスキルで再投入しなくなりました(最長6時間)。
25
+
14
26
  ## 0.79.0
15
27
 
16
28
  要員調整ボードを CLI から参照・更新できるようになりました(`twp staffing-board`)。表の表示、工数の更新、仮アサイン・メモの登録、時点スナップショットの保存と前回との差分の確認ができます。
package/README.md CHANGED
@@ -212,8 +212,8 @@ twp project update <ID|コード> [--name <名前>] [--code <コード>] [--end-
212
212
  twp project mine # 自分がメンバーのプロジェクト(役割・参画期間つき)
213
213
  twp user projects <ユーザー> # 指定したユーザーのプロジェクト(組織管理者のみ)
214
214
 
215
- twp project member create <ユーザー> --role <役割> [--project <コード>] [--period-file <パス>] [--start-date <日付>] [--end-date <日付>] [--memo <文字列>]
216
- twp project member update <メンバー> [--project <コード>] [--role <役割>] [--period-file <パス>] [--start-date <日付>] [--end-date <日付>] [--memo <文字列>]
215
+ twp project member create <ユーザー> --role <役割> [--wiki-role <admin|member>] [--project <コード>] [--period-file <パス>] [--start-date <日付>] [--end-date <日付>] [--memo <文字列>]
216
+ twp project member update <メンバー> [--project <コード>] [--role <役割>] [--wiki-role <admin|member>] [--period-file <パス>] [--start-date <日付>] [--end-date <日付>] [--memo <文字列>]
217
217
  twp project member delete <メンバー> [--project <コード>] --yes
218
218
  twp project member promote <メンバー> [--project <コード>] # 管理者(manager)にする
219
219
  twp project member demote <メンバー> [--project <コード>] # manager をメンバーに戻す
@@ -223,6 +223,7 @@ twp project member alias <別名> | --clear [--project <コード>] # 自分
223
223
  - **稼働期間は `--period-file` の JSON 配列で渡します**(例: `[{"start_date":"2026-10-01","end_date":"2026-12-31","daily_hours":8,"input_mode":"hours"}]`。`-` で標準入力)。期間を渡すと参画開始日・終了日はサーバが期間から決めるので、`--start-date` / `--end-date` とは同時に指定できません
224
224
  - **`update --period-file` は稼働期間を丸ごと置き換えます。** 送る前に今の期間を読み、消える期間を表示します(`--dry-run` でも出ます)。残す期間は `twp project members --output json` の `assignment_periods` から `id` を付けたまま送ってください
225
225
  - **`--role` の値はサーバが検査します**(`member` / `manager` など。値は `twp project member create help` に載せています)
226
+ - **`--wiki-role` はそのプロジェクトの Wiki 権限です**(`admin`=そのプロジェクトの Wiki だけで管理者/`member`=一般・既定)。役割(`--role`)とは独立で、今の値は `twp project members` の `wiki_role` 列で確かめられます
226
227
  - `create` の相手はテナントのユーザー(`twp user` と同じ指定方法)、それ以外の相手はそのプロジェクトのメンバー(氏名・メールアドレス・ID・`me`。別名では指定できません)です。誰に送るかは送る前に表示します
227
228
  - `delete` は担当中のタスクの担当者を変えません。参画を終えるだけなら `update --end-date` を使ってください
228
229
 
@@ -1490,14 +1491,15 @@ twp knowledge delete <KB> --yes
1490
1491
  twp knowledge doc list <KB> [--prefix <ディレクトリ>] [--depth <深さ>]
1491
1492
  twp knowledge doc get <KB> <パス> --output text
1492
1493
  twp knowledge doc create <KB> <パス> --title <件名> --content-file <パス|-> [--summary <要約>] [--tag <タグ>]...
1493
- twp knowledge doc update <KB> <パス> [--title <件名>] [--content-file <パス|->] [--summary <要約>|--clear-summary] [--tag <タグ>]... [--clear-tags]
1494
- twp knowledge doc move <KB> <移動元のパス> <移動先のパス>
1495
- twp knowledge doc delete <KB> <パス> --yes
1494
+ twp knowledge doc update <KB> <パス> [--title <件名>] [--content-file <パス|->] [--summary <要約>|--clear-summary] [--tag <タグ>]... [--clear-tags] [--if-revision <版>]
1495
+ twp knowledge doc move <KB> <移動元のパス> <移動先のパス> [--if-revision <版>]
1496
+ twp knowledge doc delete <KB> <パス> --yes [--if-revision <版>]
1496
1497
  ```
1497
1498
 
1498
1499
  - プロジェクトの wiki(`twp wiki`)とは別の機能です。`<KB>` はナレッジベースの ID か slug です
1499
1500
  - 記事の `<パス>` は `/guide/setup.md` のように指定します(先頭の `/` は省けます)。各階層は英数字で始まり、英数字・`.` `_` `-` だけを使えます。`..` や末尾の `/` は送る前に止めます
1500
1501
  - 本文は `--content-file` のファイル(`-` で標準入力)から読み、Markdown のまま加工せずに送ります(上限 300KB)。サーバは保存時に本文の前後の空白(末尾の改行を含む)を落とします。`doc get --output text` は本文の Markdown をそのまま出します
1502
+ - `doc update` / `move` / `delete` の `--if-revision <版>` は、記事の版(`doc get` の `revision`。どの出力形式でも出ます)が一致するときだけ書き込みます。送る直前に照合し、違えば何も送らずに終了コード 3 で止まります。書き込み時にもサーバが照合し、間に他の更新が入っていれば 409(「ほかの人がこの記事を更新しました」)で何も変えずに終了コード 3 です。`move` は移動元の版を照合します。版の導入前に作られた記事の版は 0 です。`--if-revision` を付けない `doc update` も、サーバが読んだ版を条件に書くので、読んでから書くまでの間の他の更新は消しません
1501
1503
  - `doc list` は本文を含みません。サーバが1回に読む上限(5,000 件)を超える KB では、出てこない記事があることを stderr で知らせます
1502
1504
  - `twp knowledge delete` は配下の記事もまとめて削除します。送る前に KB の名前と記事の件数を stderr に出します
1503
1505
  - KB の作成・設定変更・削除はドメイン知識の管理者(admin)だけ、記事の作成・編集は member 以上です。権限が無ければサーバの文面をそのまま出して終了コード 3 です
@@ -1835,6 +1837,8 @@ twp configure --profile dev # プロファイルを指定して設定
1835
1837
 
1836
1838
  **モデルはモードと直交する。** 業務モードに切り替えてもモデルは変わらない(`/model` で別に切り替える)。
1837
1839
 
1840
+ **`/model` で接続先の異なるモデル(例: Anthropic 直 `claude-*` と Bedrock `bedrock:*`)を選ぶと、会話中なら確認のうえ新しい会話から始める**(前の会話は引き継がない)。同じ接続先のモデル同士は会話を保ったまま次のターンから切り替わる。
1841
+
1838
1842
  #### モードを自分で調整する
1839
1843
 
1840
1844
  モードは markdown ファイルで上書きできる。置き場所は**プロジェクトの `.twp/modes/<モード名>.md`**(そのリポジトリで作業する全員に効く)と、**`~/.twp/modes/<モード名>.md`**(自分の全プロジェクトに効く)。プロジェクト側が強い。
@@ -1,6 +1,6 @@
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-DJ5OD2HW.js";import"./chunk-64VHXDB6.js";import{renderOutput}from"./chunk-PO35MCYP.js";import"./chunk-Q3B65OFC.js";import{evaluateQuery}from"./chunk-GFLGXGWE.js";import{describeWaitResult,parseWaitOptions,waitUntilTerminal}from"./chunk-WVCEKC7V.js";
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-AK7CNRVB.js";import"./chunk-YPULDSJ3.js";import{renderOutput}from"./chunk-PO35MCYP.js";import"./chunk-Q3B65OFC.js";import{evaluateQuery}from"./chunk-GFLGXGWE.js";import{describeWaitResult,parseWaitOptions,waitUntilTerminal}from"./chunk-WVCEKC7V.js";
4
4
  import{redactSecretValues,redactSecrets,withDebug}from"./chunk-LDBYJPRD.js";import{parseOperationArgs,repeatedValues}from"./chunk-RX5HWI4L.js";import{readBody}from"./chunk-6LSQCOCJ.js";import"./chunk-RSSPNFSK.js";import"./chunk-HVZUXLQ4.js";import{ApiError,TwpApiClient,appendQuery}from"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";import{DEFAULT_MAX_ITEMS,DEFAULT_MAX_PAGES,envelopePaging,isPageNumberEnvelope,pageRangeNotes,positiveInteger,readEnvelopeCursor,
5
5
  readPageNumberCursor,shellQuote}from"./chunk-MI6HVYR2.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,resolveProfile}from"./chunk-EDF4U5BT.js";
6
6
  import"./chunk-RZVI6PMW.js";import{HELP_TOKEN}from"./chunk-MLRBDF44.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=>/^\{[^/{}]+\}$/.
@@ -1,7 +1,7 @@
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-DLJQE2B5.js";import"./chunk-NZ7WI4RZ.js";import{buildDiffLines,
4
- diffStat}from"./chunk-VRBI2NPI.js";import{require_fuzzysort}from"./chunk-DIMZRTLE.js";import"./chunk-N2UVRM3Z.js";import"./chunk-LDBYJPRD.js";import"./chunk-RSSPNFSK.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-JQBXLZTJ.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-TH3NVRAU.js";import"./chunk-NZ7WI4RZ.js";import{buildDiffLines,
4
+ diffStat}from"./chunk-VRBI2NPI.js";import{require_fuzzysort}from"./chunk-DIMZRTLE.js";import"./chunk-N2UVRM3Z.js";import"./chunk-LDBYJPRD.js";import"./chunk-RSSPNFSK.js";import"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";import"./chunk-II5RVJQN.js";import"./chunk-VFPY2A23.js";import{RelayError,builtinCatalog,classifyModelSwitch,createRuntime,loadCachedCatalog,modelLabel,pickModel,specFor,toModelInfos}from"./chunk-TVTJRNUC.js";
5
5
  import"./chunk-D233KKXW.js";import"./chunk-PMOUHEJQ.js";import"./chunk-XNLIEUAW.js";import{proxyDiagnostics}from"./chunk-J7QYPKVK.js";import{checkMinSupportedVersion,isBelowMinSupported,minSupportedBlockMessage}from"./chunk-DXXFUNYN.js";import"./chunk-EDF4U5BT.js";import{configReadDirs,twpHomeDir}from"./chunk-RZVI6PMW.js";import{parseArgv}from"./chunk-IVFSEXD3.js";import{applyPermissionMode,checkPermission,describePermissionMode,getMode,isModeId,modeSource,
6
6
  nextMode}from"./chunk-2LOT54OO.js";import"./chunk-MLRBDF44.js";import"./chunk-VERYHAWV.js";import"./chunk-QQRJLH6B.js";import{isFullWidth,isWide,stringWidth,stripAnsi}from"./chunk-UREA4ZIG.js";import{stripTerminalControls}from"./chunk-NHYMHCAT.js";import{__commonJS,__export,__require,__toESM}from"./chunk-VSJBJXZO.js";var require_react_production=__commonJS({"node_modules/react/cjs/react.production.js"(exports){"use strict";var REACT_ELEMENT_TYPE=Symbol.for("react.transitional.element");var REACT_PORTAL_TYPE=Symbol.for("react.portal");var REACT_FRAGMENT_TYPE=Symbol.for("react.fragment");var REACT_STRICT_MODE_TYPE=Symbol.for("react.strict_mode");var REACT_PROFILER_TYPE=Symbol.for("react.profiler");var REACT_CONSUMER_TYPE=Symbol.for("react.consumer");var REACT_CONTEXT_TYPE=Symbol.for("react.context");var REACT_FORWARD_REF_TYPE=Symbol.
7
7
  for("react.forward_ref");var REACT_SUSPENSE_TYPE=Symbol.for("react.suspense");var REACT_MEMO_TYPE=Symbol.for("react.memo");var REACT_LAZY_TYPE=Symbol.for("react.lazy");var REACT_ACTIVITY_TYPE=Symbol.for("react.activity");var REACT_VIEW_TRANSITION_TYPE=Symbol.for("react.view_transition");var MAYBE_ITERATOR_SYMBOL=Symbol.iterator;function getIteratorFn(maybeIterable){if(null===maybeIterable||"object"!==typeof maybeIterable)return null;maybeIterable=MAYBE_ITERATOR_SYMBOL&&maybeIterable[MAYBE_ITERATOR_SYMBOL]||
@@ -1212,7 +1212,7 @@ cwd()){const listed=await gitListFiles(cwd2);const raw=listed??await walkFiles(c
1212
1212
  1;const after=/^[^\s]*/.exec(text.slice(cursor))?.[0]??"";return{query,start,end:cursor+after.length}}var TWP_SLASH_ROUTES={"/tasks":{domain:"task",operation:"list"},"/task":{domain:"task",operation:"get"},"/projects":{domain:"project",operation:"list"}};function isTwpSlashCommand(name){return Object.hasOwn(TWP_SLASH_ROUTES,name)}async function runTwpSlashCommand(name,args,deps){const route=TWP_SLASH_ROUTES[name];if(!Object.hasOwn(TWP_SLASH_ROUTES,name)||route===void 0){return{code:2,out:"",err:`\u4E0D\u660E\u306A\u30B3\u30DE\u30F3\u30C9: ${name}
1213
1213
  `}}const parsed=parseArgv([route.domain,route.operation,...args]);if(parsed.command!=="domain"||parsed.domain!==route.domain){return{code:2,out:"",err:`${name}: \u3053\u306E\u5F15\u6570\u306F\u4F7F\u3048\u307E\u305B\u3093\uFF08${args.join(" ")}\uFF09
1214
1214
  `}}if(parsed.unknown.length>0){return{code:2,out:"",err:`\u4E0D\u660E\u306A\u5F15\u6570: ${parsed.unknown.join(" ")}
1215
- `}}let out="";let err="";const io={out:text=>void(out+=text),err:text=>void(err+=text),isTty:true};const globals={profile:parsed.profile??deps.profile,...parsed.output!==void 0?{output:parsed.output}:{},...parsed.query!==void 0?{query:parsed.query}:{},dryRun:parsed.dryRun,debug:parsed.debug,yes:parsed.yes,refresh:parsed.refresh};const{runDomain}=await import("./run-EO7J3QYK.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-SUYWHFJS.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",
@@ -1289,26 +1289,27 @@ persistOptions??[];return{name:target.tool.name,input:fullInputFor(request),...r
1289
1289
  const bufferRef=(0,import_react38.useRef)({text:"",cursor:0});const[buffer,setBufferState]=(0,import_react38.useState)(bufferRef.current);const[mode,setMode]=(0,import_react38.useState)(initialMode);const[model,setModel]=(0,import_react38.useState)(initialModel);const[catalog,setCatalog]=(0,import_react38.useState)(initialCatalog);const[busy,setBusy]=(0,import_react38.useState)(false);const[context,setContext]=(0,import_react38.useState)(()=>runtime.context.snapshot());const[runningTool,setRunningTool]=(0,import_react38.useState)(
1290
1290
  null);const[overlay,setOverlay]=(0,import_react38.useState)(startInDoctor?"doctor":"none");const[pendingPermission,setPendingPermissionState]=(0,import_react38.useState)(null);const pendingPermissionRef=(0,import_react38.useRef)(null);const setPendingPermission=(0,import_react38.useCallback)(next=>{pendingPermissionRef.current=next;setPendingPermissionState(next)},[]);const[keyLog,setKeyLog]=(0,import_react38.useState)([]);const[ctrlCArmed,setCtrlCArmed]=(0,import_react38.useState)(false);const[
1291
1291
  pasting,setPasting]=(0,import_react38.useState)(false);const[fileIndex,setFileIndex]=(0,import_react38.useState)(null);const fileIndexRef=(0,import_react38.useRef)(null);fileIndexRef.current=fileIndex;const fileIndexLoading=(0,import_react38.useRef)(false);const setBuffer=(0,import_react38.useCallback)(fn=>{bufferRef.current=fn(bufferRef.current);setBufferState(bufferRef.current)},[]);const clearBuffer=(0,import_react38.useCallback)(()=>setBuffer(()=>({text:"",cursor:0})),[setBuffer]);const selectedRef=(0,import_react38.useRef)(
1292
- 0);const[selectedState,setSelectedState]=(0,import_react38.useState)(0);const setSelected=(0,import_react38.useCallback)(next=>{selectedRef.current=typeof next==="function"?next(selectedRef.current):next;setSelectedState(selectedRef.current)},[]);const modeRef=(0,import_react38.useRef)(mode);modeRef.current=mode;const modelRef=(0,import_react38.useRef)(model);modelRef.current=model;const busyRef=(0,import_react38.useRef)(false);const abortRef=(0,import_react38.useRef)(false);const streamAbortRef=(0,import_react38.useRef)(
1293
- null);const sleepRef=(0,import_react38.useRef)(null);const permissionResolver=(0,import_react38.useRef)(null);const permStateRef=(0,import_react38.useRef)(INITIAL_DIALOG_STATE);const[permState,setPermStateRaw]=(0,import_react38.useState)(INITIAL_DIALOG_STATE);const setPermState=(0,import_react38.useCallback)(next=>{permStateRef.current=next;setPermStateRaw(next)},[]);const sessionAllow=(0,import_react38.useRef)(new Set);const toolkitRef=(0,import_react38.useRef)(null);toolkitRef.current??=createTwpToolkit(
1294
- runtime,version);const toolkit=toolkitRef.current;const sessionRules=(0,import_react38.useRef)([]);const demoSessionAllow=(0,import_react38.useRef)(new Set);const lastToolRef=(0,import_react38.useRef)(null);(0,import_react38.useEffect)(()=>()=>{abortRef.current=true;streamAbortRef.current?.abort();toolkitRef.current?.cancelCatalogRefresh();const s=sleepRef.current;if(s){clearTimeout(s.timer);sleepRef.current=null;s.resolve()}},[]);const modeDef=getMode(mode);const branch=(0,import_react38.useMemo)(
1295
- ()=>currentBranch(),[]);const cwd2=(0,import_react38.useMemo)(()=>displayCwd(),[]);const networkDiagnostics=(0,import_react38.useMemo)(()=>proxyDiagnostics(),[]);const fixedChrome=1+2+(busy?1:0)+(pasting?1:0)+1+1;const liveTotal=Math.max(MIN_LIVE_ROWS,size.rows-1);const inputContentWidth=Math.max(1,size.columns-6);const inputMaxRows=Math.max(1,Math.min(6,liveTotal-fixedChrome-1));const inputWindow=layoutInputWindow(buffer.text,buffer.cursor,inputContentWidth,inputMaxRows);const budget=liveAreaBudget(
1296
- size.rows,fixedChrome+inputWindow.shownRows);const commit=(0,import_react38.useCallback)(item=>{setItems(prev=>[...prev,{...item,id:nextId()}])},[]);const catalogFetchRef=(0,import_react38.useRef)(null);const blockOnMinSupported=(0,import_react38.useCallback)(floor=>{const text=minSupportedBlockMessage(version,floor??"");commit({kind:"notice",tone:"error",text});process.exitCode=1;exit();process.stderr.write(stripTerminalControls(text))},[commit,exit,version]);(0,import_react38.useEffect)(()=>{if(!runtime.
1297
- loggedIn){commit({kind:"notice",tone:"warn",text:"\u30ED\u30B0\u30A4\u30F3\u3057\u3066\u3044\u307E\u305B\u3093\u3002\u4F1A\u8A71\u3092\u59CB\u3081\u308B\u306B\u306F\u5225\u306E\u7AEF\u672B\u3067 `twp login` \u3092\u5B9F\u884C\u3057\u3066\u304F\u3060\u3055\u3044\u3002"});return}if(initialModelWarning!==null){commit({kind:"notice",tone:"warn",text:initialModelWarning})}void toolkit.refreshCatalog();let cancelled=false;const pending=runtime.loadCatalog();catalogFetchRef.current=pending;void pending.
1298
- then(fetched=>{if(cancelled)return;if(isBelowMinSupported(version,fetched.minSupportedVersion)){blockOnMinSupported(fetched.minSupportedVersion);return}setCatalog(fetched);const picked=pickModel(fetched,modelRef.current);if(picked.model!==modelRef.current){setModel(picked.model);if(picked.warning!==void 0)commit({kind:"notice",tone:"warn",text:picked.warning})}});return()=>{cancelled=true}},[blockOnMinSupported,commit,initialModelWarning,runtime,version]);const sleep=ms=>new Promise(resolve=>{const timer=setTimeout(
1299
- ()=>{sleepRef.current=null;resolve()},ms);sleepRef.current={timer,resolve}});const abortSleep=()=>{const s=sleepRef.current;if(!s)return;clearTimeout(s.timer);sleepRef.current=null;s.resolve()};const askPermission=spec=>new Promise(resolve=>{setPendingPermission(spec);setSelected(0);setPermState(INITIAL_DIALOG_STATE);setOverlay("permission");permissionResolver.current=choice=>{setOverlay("none");setPendingPermission(null);permissionResolver.current=null;resolve(choice)}});const persistAllow=isAbsolute(
1300
- twpHomeDir())?rule=>{const result=persistProjectAllow(rule,{cwd:process.cwd()});if(result.ok){commit({kind:"notice",tone:"info",text:`\u300C${stripTerminalControls(rule)}\u300D\u3092 ${stripTerminalControls(result.file)} \u306B\u4FDD\u5B58\u3057\u307E\u3057\u305F\uFF08${stripTerminalControls(result.root)} \u3067\u306F\u4ECA\u5F8C\u805E\u304D\u307E\u305B\u3093\uFF09`})}else{commit({kind:"notice",tone:"warn",text:`\u4ECA\u5F8C\u805E\u304B\u306A\u3044\u306E\u4FDD\u5B58\u306B\u5931\u6557\u3057\u307E\u3057\u305F\uFF08\u4ECA\u56DE\u3060\u3051\u8A31\u53EF\u3057\u307E\u3057\u305F\uFF09: ${stripTerminalControls(
1301
- result.reason)}`})}return result.ok}:void 0;const runTurn2=(0,import_react38.useCallback)(async(text,opts={})=>{if(busyRef.current){commit({kind:"notice",tone:"warn",text:"\u5B9F\u884C\u4E2D\u3067\u3059\u3002Ctrl+C \u3067\u4E2D\u65AD\u3057\u3066\u304B\u3089\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044"});return}busyRef.current=true;abortRef.current=false;setBusy(true);commit({kind:"user",text:opts.display??text});const startupCatalog=await catalogFetchRef.current;if(startupCatalog&&isBelowMinSupported(
1302
- version,startupCatalog.minSupportedVersion)){blockOnMinSupported(startupCatalog.minSupportedVersion);return}const controller=new AbortController;streamAbortRef.current=controller;try{const expandMode=getMode(modeRef.current);const expandDeps={aborted:()=>abortRef.current,isFile:p=>{const cwdNow=process.cwd();if(isAbsolute(p)||p.startsWith("~")||/^[\\/]{2}/.test(p))return false;const abs=resolvePath(cwdNow,p);const rel=relativePath(cwdNow,abs);if(rel===""||rel===".."||rel.startsWith(`..${sep}`)||
1303
- isAbsolute(rel))return false;try{return statSync(abs).isFile()}catch{return false}},readFile:async p=>{try{const size2=statSync(resolvePath(process.cwd(),p)).size;if(size2>MAX_ATTACHED_BYTES)return{ok:false,reason:`${size2} \u30D0\u30A4\u30C8\u3042\u308A\u3001\u6DFB\u4ED8\u306E\u4E0A\u9650 ${MAX_ATTACHED_BYTES} \u30D0\u30A4\u30C8\u3092\u8D85\u3048\u307E\u3059`}}catch{}const result2=await executeTool(readFileTool,{path:p},{mode:expandMode,ctx:{cwd:process.cwd()},sessionAllow:sessionAllow.current,
1304
- sessionRules:sessionRules.current,...persistAllow?{persistAllow}:{},permissionLayers,...permissionMode!==void 0?{permissionMode}:{},audit,askPermission:request=>askPermission({...promptFor(request),allowInstead:false})});if(result2.isError===true||result2.denied===true){const reason=stripTerminalControls(result2.content.split("\n")[0]??"").slice(0,200);return{ok:false,reason:reason===""?"\u8AAD\u3081\u307E\u305B\u3093\u3067\u3057\u305F":reason}}return{ok:true,content:result2.content,truncated:/\[truncated/.
1305
- test(result2.content)}},fetchTask:async key=>{const got=await runTwpSlashCommand("/task",[key,"--output","json"],{profile:runtime.profileName,version});if(got.code!==0){const reason=stripTerminalControls(got.err.trim().split("\n")[0]??"").slice(0,200);return{ok:false,reason:reason===""?`\u7D42\u4E86\u30B3\u30FC\u30C9 ${got.code}`:reason}}try{const parsed=JSON.parse(got.out);if(parsed!==null&&typeof parsed==="object"&&!Array.isArray(parsed)){return{ok:true,task:parsed}}}catch{}return{ok:false,reason:"\
1306
- \u5FDC\u7B54\u3092\u8AAD\u3081\u307E\u305B\u3093\u3067\u3057\u305F"}}};const expanded=await expandInput(text,expandDeps);for(const note of expanded.notices)commit({kind:"notice",tone:"info",text:note});if(abortRef.current){commit({kind:"notice",tone:"warn",text:"\u4E2D\u65AD\u3057\u307E\u3057\u305F\uFF08Ctrl+C\uFF09\u2014 \u9001\u4FE1\u3057\u3066\u3044\u307E\u305B\u3093"});return}stream.begin();const turnMode=getMode(modeRef.current);const resident=buildResidentSet(turnMode,{...residentInputs(toolkit),
1307
- ...permissionMode!==void 0?{permissionMode}:{},permissionLayers});const turnTools=opts.allowedTools===void 0?resident.tools:resident.tools.filter(t=>opts.allowedTools?.includes(t.name)===true);const result=await runTurn(runtime.client,runtime.context,{input:expanded.input,model:modelRef.current,system:buildSystemPrompt({cwd:cwd2,branch,modeLabel:turnMode.label,cliVersion:version,toolNames:turnTools.map(t=>t.name),...turnMode.prompt!==void 0?{modePrompt:turnMode.prompt}:{}}),signal:controller.signal,
1308
- onTextDelta:delta=>stream.push(stripTerminalControls(delta)),tools:turnTools,execute:{mode:turnMode,ctx:{cwd:process.cwd()},sessionAllow:sessionAllow.current,sessionRules:sessionRules.current,...persistAllow?{persistAllow}:{},permissionLayers,...permissionMode!==void 0?{permissionMode}:{},resolveTool:toolkit.resolveTool,prepareIndirect:toolkit.prepareIndirect,audit,askPermission:request=>askPermission(promptFor(request)),onStart:(tool,preview)=>{const safe=stripTerminalControls(preview);setRunningTool(
1309
- {name:stripTerminalControls(tool.name),summary:safe,input:safe,output:"",status:"running"})}},onToolUse:()=>{const partial=stream.end();stream.clear();if(partial.trim()!=="")commit({kind:"assistant",text:partial})},onToolResult:(call,toolResult)=>{setRunningTool(null);const label=stripTerminalControls(toolResult.summary??call.name);const run={name:stripTerminalControls(call.name),summary:label,input:label,output:stripTerminalControls(toolResult.content),status:toolResult.denied===true?"denied":toolResult.
1310
- isError===true?"error":"done",...toolResult.diff?{diff:toolResult.diff}:{}};lastToolRef.current=run;commit({kind:"tool",run});stream.begin()}});const full=stream.end();stream.clear();if(full.trim()!=="")commit({kind:"assistant",text:full});if(result.maxStepsReached){commit({kind:"notice",tone:"warn",text:"\u30C4\u30FC\u30EB\u5B9F\u884C\u306E\u5F80\u5FA9\u304C\u4E0A\u9650\u306B\u9054\u3057\u305F\u305F\u3081\u6253\u3061\u5207\u308A\u307E\u3057\u305F\u3002\u7D9A\u304D\u306F\u540C\u3058\u4F1A\u8A71\u3067\u6307\u793A\u3057\u3066\u304F\u3060\u3055\u3044"})}
1311
- if(result.droppedMessages>0){commit({kind:"notice",tone:"warn",text:`\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u4E0A\u9650\u306B\u8FD1\u3065\u3044\u305F\u305F\u3081\u3001\u53E4\u3044\u3084\u308A\u53D6\u308A ${result.droppedMessages} \u4EF6\u3092\u5C65\u6B74\u304B\u3089\u843D\u3068\u3057\u307E\u3057\u305F\uFF08/clear \u3067\u660E\u793A\u7684\u306B\u6D88\u305B\u307E\u3059\uFF09`})}if(result.upstreamError!==null){commit({kind:"notice",tone:"error",text:`\u30E2\u30C7\u30EB\u306E\u5FDC\u7B54\u304C\u9014\u4E2D\u3067\u7D42\u308F\u308A\u307E\u3057\u305F: ${result.
1292
+ 0);const[selectedState,setSelectedState]=(0,import_react38.useState)(0);const setSelected=(0,import_react38.useCallback)(next=>{selectedRef.current=typeof next==="function"?next(selectedRef.current):next;setSelectedState(selectedRef.current)},[]);const modeRef=(0,import_react38.useRef)(mode);modeRef.current=mode;const modelRef=(0,import_react38.useRef)(model);modelRef.current=model;const catalogRef=(0,import_react38.useRef)(catalog);catalogRef.current=catalog;(0,import_react38.useEffect)(()=>{runtime.
1293
+ context.setContextWindow(specFor(catalog,model).contextWindow);setContext(runtime.context.snapshot())},[catalog,model,runtime]);const busyRef=(0,import_react38.useRef)(false);const[pendingSwitch,setPendingSwitch]=(0,import_react38.useState)(null);const abortRef=(0,import_react38.useRef)(false);const streamAbortRef=(0,import_react38.useRef)(null);const sleepRef=(0,import_react38.useRef)(null);const permissionResolver=(0,import_react38.useRef)(null);const permStateRef=(0,import_react38.useRef)(INITIAL_DIALOG_STATE);
1294
+ const[permState,setPermStateRaw]=(0,import_react38.useState)(INITIAL_DIALOG_STATE);const setPermState=(0,import_react38.useCallback)(next=>{permStateRef.current=next;setPermStateRaw(next)},[]);const sessionAllow=(0,import_react38.useRef)(new Set);const toolkitRef=(0,import_react38.useRef)(null);toolkitRef.current??=createTwpToolkit(runtime,version);const toolkit=toolkitRef.current;const sessionRules=(0,import_react38.useRef)([]);const demoSessionAllow=(0,import_react38.useRef)(new Set);const lastToolRef=(0,import_react38.useRef)(
1295
+ null);(0,import_react38.useEffect)(()=>()=>{abortRef.current=true;streamAbortRef.current?.abort();toolkitRef.current?.cancelCatalogRefresh();const s=sleepRef.current;if(s){clearTimeout(s.timer);sleepRef.current=null;s.resolve()}},[]);const modeDef=getMode(mode);const branch=(0,import_react38.useMemo)(()=>currentBranch(),[]);const cwd2=(0,import_react38.useMemo)(()=>displayCwd(),[]);const networkDiagnostics=(0,import_react38.useMemo)(()=>proxyDiagnostics(),[]);const fixedChrome=1+2+(busy?1:0)+(pasting?
1296
+ 1:0)+1+1;const liveTotal=Math.max(MIN_LIVE_ROWS,size.rows-1);const inputContentWidth=Math.max(1,size.columns-6);const inputMaxRows=Math.max(1,Math.min(6,liveTotal-fixedChrome-1));const inputWindow=layoutInputWindow(buffer.text,buffer.cursor,inputContentWidth,inputMaxRows);const budget=liveAreaBudget(size.rows,fixedChrome+inputWindow.shownRows);const commit=(0,import_react38.useCallback)(item=>{setItems(prev=>[...prev,{...item,id:nextId()}])},[]);const catalogFetchRef=(0,import_react38.useRef)(null);
1297
+ const blockOnMinSupported=(0,import_react38.useCallback)(floor=>{const text=minSupportedBlockMessage(version,floor??"");commit({kind:"notice",tone:"error",text});process.exitCode=1;exit();process.stderr.write(stripTerminalControls(text))},[commit,exit,version]);(0,import_react38.useEffect)(()=>{if(!runtime.loggedIn){commit({kind:"notice",tone:"warn",text:"\u30ED\u30B0\u30A4\u30F3\u3057\u3066\u3044\u307E\u305B\u3093\u3002\u4F1A\u8A71\u3092\u59CB\u3081\u308B\u306B\u306F\u5225\u306E\u7AEF\u672B\u3067 `twp login` \u3092\u5B9F\u884C\u3057\u3066\u304F\u3060\u3055\u3044\u3002"});
1298
+ return}if(initialModelWarning!==null){commit({kind:"notice",tone:"warn",text:initialModelWarning})}void toolkit.refreshCatalog();let cancelled=false;const pending=runtime.loadCatalog();catalogFetchRef.current=pending;void pending.then(fetched=>{if(cancelled)return;if(isBelowMinSupported(version,fetched.minSupportedVersion)){blockOnMinSupported(fetched.minSupportedVersion);return}catalogRef.current=fetched;setCatalog(fetched);const picked=pickModel(fetched,modelRef.current);if(picked.model!==modelRef.
1299
+ current){modelRef.current=picked.model;setModel(picked.model);if(picked.warning!==void 0)commit({kind:"notice",tone:"warn",text:picked.warning})}});return()=>{cancelled=true}},[blockOnMinSupported,commit,initialModelWarning,runtime,version]);const sleep=ms=>new Promise(resolve=>{const timer=setTimeout(()=>{sleepRef.current=null;resolve()},ms);sleepRef.current={timer,resolve}});const abortSleep=()=>{const s=sleepRef.current;if(!s)return;clearTimeout(s.timer);sleepRef.current=null;s.resolve()};const askPermission=spec=>new Promise(
1300
+ resolve=>{setPendingPermission(spec);setSelected(0);setPermState(INITIAL_DIALOG_STATE);setOverlay("permission");permissionResolver.current=choice=>{setOverlay("none");setPendingPermission(null);permissionResolver.current=null;resolve(choice)}});const persistAllow=isAbsolute(twpHomeDir())?rule=>{const result=persistProjectAllow(rule,{cwd:process.cwd()});if(result.ok){commit({kind:"notice",tone:"info",text:`\u300C${stripTerminalControls(rule)}\u300D\u3092 ${stripTerminalControls(result.file)} \u306B\u4FDD\u5B58\u3057\
1301
+ \u307E\u3057\u305F\uFF08${stripTerminalControls(result.root)} \u3067\u306F\u4ECA\u5F8C\u805E\u304D\u307E\u305B\u3093\uFF09`})}else{commit({kind:"notice",tone:"warn",text:`\u4ECA\u5F8C\u805E\u304B\u306A\u3044\u306E\u4FDD\u5B58\u306B\u5931\u6557\u3057\u307E\u3057\u305F\uFF08\u4ECA\u56DE\u3060\u3051\u8A31\u53EF\u3057\u307E\u3057\u305F\uFF09: ${stripTerminalControls(result.reason)}`})}return result.ok}:void 0;const runTurn2=(0,import_react38.useCallback)(async(text,opts={})=>{if(busyRef.current){commit(
1302
+ {kind:"notice",tone:"warn",text:"\u5B9F\u884C\u4E2D\u3067\u3059\u3002Ctrl+C \u3067\u4E2D\u65AD\u3057\u3066\u304B\u3089\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044"});return}busyRef.current=true;abortRef.current=false;setBusy(true);commit({kind:"user",text:opts.display??text});const startupCatalog=await catalogFetchRef.current;if(startupCatalog&&isBelowMinSupported(version,startupCatalog.minSupportedVersion)){blockOnMinSupported(startupCatalog.minSupportedVersion);return}const controller=new AbortController;
1303
+ streamAbortRef.current=controller;try{const expandMode=getMode(modeRef.current);const expandDeps={aborted:()=>abortRef.current,isFile:p=>{const cwdNow=process.cwd();if(isAbsolute(p)||p.startsWith("~")||/^[\\/]{2}/.test(p))return false;const abs=resolvePath(cwdNow,p);const rel=relativePath(cwdNow,abs);if(rel===""||rel===".."||rel.startsWith(`..${sep}`)||isAbsolute(rel))return false;try{return statSync(abs).isFile()}catch{return false}},readFile:async p=>{try{const size2=statSync(resolvePath(process.
1304
+ cwd(),p)).size;if(size2>MAX_ATTACHED_BYTES)return{ok:false,reason:`${size2} \u30D0\u30A4\u30C8\u3042\u308A\u3001\u6DFB\u4ED8\u306E\u4E0A\u9650 ${MAX_ATTACHED_BYTES} \u30D0\u30A4\u30C8\u3092\u8D85\u3048\u307E\u3059`}}catch{}const result2=await executeTool(readFileTool,{path:p},{mode:expandMode,ctx:{cwd:process.cwd()},sessionAllow:sessionAllow.current,sessionRules:sessionRules.current,...persistAllow?{persistAllow}:{},permissionLayers,...permissionMode!==void 0?{permissionMode}:{},audit,askPermission:request=>askPermission(
1305
+ {...promptFor(request),allowInstead:false})});if(result2.isError===true||result2.denied===true){const reason=stripTerminalControls(result2.content.split("\n")[0]??"").slice(0,200);return{ok:false,reason:reason===""?"\u8AAD\u3081\u307E\u305B\u3093\u3067\u3057\u305F":reason}}return{ok:true,content:result2.content,truncated:/\[truncated/.test(result2.content)}},fetchTask:async key=>{const got=await runTwpSlashCommand("/task",[key,"--output","json"],{profile:runtime.profileName,version});if(got.code!==
1306
+ 0){const reason=stripTerminalControls(got.err.trim().split("\n")[0]??"").slice(0,200);return{ok:false,reason:reason===""?`\u7D42\u4E86\u30B3\u30FC\u30C9 ${got.code}`:reason}}try{const parsed=JSON.parse(got.out);if(parsed!==null&&typeof parsed==="object"&&!Array.isArray(parsed)){return{ok:true,task:parsed}}}catch{}return{ok:false,reason:"\u5FDC\u7B54\u3092\u8AAD\u3081\u307E\u305B\u3093\u3067\u3057\u305F"}}};const expanded=await expandInput(text,expandDeps);for(const note of expanded.notices)commit(
1307
+ {kind:"notice",tone:"info",text:note});if(abortRef.current){commit({kind:"notice",tone:"warn",text:"\u4E2D\u65AD\u3057\u307E\u3057\u305F\uFF08Ctrl+C\uFF09\u2014 \u9001\u4FE1\u3057\u3066\u3044\u307E\u305B\u3093"});return}stream.begin();const turnMode=getMode(modeRef.current);const resident=buildResidentSet(turnMode,{...residentInputs(toolkit),...permissionMode!==void 0?{permissionMode}:{},permissionLayers});const turnSpec=specFor(catalogRef.current,modelRef.current);const turnTools=!turnSpec.tools?
1308
+ []:opts.allowedTools===void 0?resident.tools:resident.tools.filter(t=>opts.allowedTools?.includes(t.name)===true);const result=await runTurn(runtime.client,runtime.context,{input:expanded.input,model:modelRef.current,spec:turnSpec,system:buildSystemPrompt({cwd:cwd2,branch,modeLabel:turnMode.label,cliVersion:version,toolNames:turnTools.map(t=>t.name),...turnMode.prompt!==void 0?{modePrompt:turnMode.prompt}:{}}),signal:controller.signal,onTextDelta:delta=>stream.push(stripTerminalControls(delta)),
1309
+ tools:turnTools,execute:{mode:turnMode,ctx:{cwd:process.cwd()},sessionAllow:sessionAllow.current,sessionRules:sessionRules.current,...persistAllow?{persistAllow}:{},permissionLayers,...permissionMode!==void 0?{permissionMode}:{},resolveTool:toolkit.resolveTool,prepareIndirect:toolkit.prepareIndirect,audit,askPermission:request=>askPermission(promptFor(request)),onStart:(tool,preview)=>{const safe=stripTerminalControls(preview);setRunningTool({name:stripTerminalControls(tool.name),summary:safe,input:safe,
1310
+ output:"",status:"running"})}},onToolUse:()=>{const partial=stream.end();stream.clear();if(partial.trim()!=="")commit({kind:"assistant",text:partial})},onToolResult:(call,toolResult)=>{setRunningTool(null);const label=stripTerminalControls(toolResult.summary??call.name);const run={name:stripTerminalControls(call.name),summary:label,input:label,output:stripTerminalControls(toolResult.content),status:toolResult.denied===true?"denied":toolResult.isError===true?"error":"done",...toolResult.diff?{diff:toolResult.
1311
+ diff}:{}};lastToolRef.current=run;commit({kind:"tool",run});stream.begin()}});const full=stream.end();stream.clear();if(full.trim()!=="")commit({kind:"assistant",text:full});if(result.maxStepsReached){commit({kind:"notice",tone:"warn",text:"\u30C4\u30FC\u30EB\u5B9F\u884C\u306E\u5F80\u5FA9\u304C\u4E0A\u9650\u306B\u9054\u3057\u305F\u305F\u3081\u6253\u3061\u5207\u308A\u307E\u3057\u305F\u3002\u7D9A\u304D\u306F\u540C\u3058\u4F1A\u8A71\u3067\u6307\u793A\u3057\u3066\u304F\u3060\u3055\u3044"})}if(result.
1312
+ droppedMessages>0){commit({kind:"notice",tone:"warn",text:`\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u4E0A\u9650\u306B\u8FD1\u3065\u3044\u305F\u305F\u3081\u3001\u53E4\u3044\u3084\u308A\u53D6\u308A ${result.droppedMessages} \u4EF6\u3092\u5C65\u6B74\u304B\u3089\u843D\u3068\u3057\u307E\u3057\u305F\uFF08/clear \u3067\u660E\u793A\u7684\u306B\u6D88\u305B\u307E\u3059\uFF09`})}if(result.upstreamError!==null){commit({kind:"notice",tone:"error",text:`\u30E2\u30C7\u30EB\u306E\u5FDC\u7B54\u304C\u9014\u4E2D\u3067\u7D42\u308F\u308A\u307E\u3057\u305F: ${result.
1312
1313
  upstreamError}`})}if(result.aborted){commit({kind:"notice",tone:"warn",text:"\u4E2D\u65AD\u3057\u307E\u3057\u305F\uFF08Ctrl+C\uFF09\u2014 \u3053\u3053\u307E\u3067\u306E\u6D88\u8CBB\u306F\u30C6\u30CA\u30F3\u30C8\u306E\u30AF\u30EC\u30B8\u30C3\u30C8\u306B\u8A08\u4E0A\u3055\u308C\u307E\u3059"})}else if(result.emptyResponse){commit({kind:"notice",tone:"warn",text:"\u30E2\u30C7\u30EB\u304B\u3089\u30C6\u30AD\u30B9\u30C8\u5FDC\u7B54\u304C\u3042\u308A\u307E\u305B\u3093\u3067\u3057\u305F"})}}catch(err){const partial=stream.
1313
1314
  end();stream.clear();if(partial.trim()!=="")commit({kind:"assistant",text:partial});commit({kind:"notice",tone:"error",text:err instanceof RelayError?err.message:`\u30E2\u30C7\u30EB\u53D6\u6B21\u3067\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F: ${err.message}`})}finally{streamAbortRef.current=null;setRunningTool(null);setContext(runtime.context.snapshot());busyRef.current=false;setBusy(false)}},[audit,blockOnMinSupported,branch,commit,cwd2,permissionLayers,permissionMode,runtime,
1314
1315
  stream,version]);const runDemo=(0,import_react38.useCallback)(async text=>{if(busyRef.current){commit({kind:"notice",tone:"warn",text:"\u5B9F\u884C\u4E2D\u3067\u3059\u3002Ctrl+C \u3067\u4E2D\u65AD\u3057\u3066\u304B\u3089\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044"});return}busyRef.current=true;abortRef.current=false;setBusy(true);commit({kind:"user",text});for(const step of buildScenario(text)){if(abortRef.current)break;if(step.type==="text"){await stream.start(step.text);stream.clear();if(!abortRef.
@@ -1333,20 +1334,24 @@ current?c:null},[buffer,fileIndex]);(0,import_react38.useEffect)(()=>{if(fileInd
1333
1334
  err.message)}`})})},[buffer,commit]);const onKey=(0,import_react38.useCallback)(ev=>{setKeyLog(prev=>[...prev.slice(-49),ev]);if(ev.name==="ctrl-d"){exit();return}if(ev.name==="ctrl-c"){if(busyRef.current){if(abortRef.current){permissionResolver.current?.("no");return}abortRef.current=true;streamAbortRef.current?.abort();permissionResolver.current?.("no");stream.cancel();abortSleep();setRunningTool(null);if(!streamAbortRef.current){commit({kind:"notice",tone:"warn",text:"\u4E2D\u65AD\u3057\u307E\u3057\u305F\uFF08Ctrl+C\uFF09"})}
1334
1335
  return}if(bufferRef.current.text!==""){clearBuffer();return}if(ctrlCArmed){exit();return}setCtrlCArmed(true);commit({kind:"notice",tone:"info",text:"\u3082\u3046\u4E00\u5EA6 Ctrl+C \u3067\u7D42\u4E86\u3057\u307E\u3059\uFF08Ctrl+D \u3067\u3082\u7D42\u4E86\uFF09"});return}setCtrlCArmed(false);if(ev.name==="shift-tab"||ev.name==="alt-m"){const to=nextMode(modeRef.current);setMode(to);return}if(ev.name==="ctrl-r"){const last=lastToolRef.current;if(last)commit({kind:"tool",run:{...last,summary:`${last.
1335
1336
  summary}\uFF08\u5C55\u958B\uFF09`},expanded:true});return}if(overlay==="permission"){const resolve=permissionResolver.current;if(!resolve)return;if(ev.name==="paste"&&ev.value&&permStateRef.current.stage!=="instead"){const pasted=ev.value.replace(/\r\n?/g,"\n");setBuffer(b=>insert(b,pasted));return}const step=stepDialog(permStateRef.current,ev,pendingPermissionRef.current??{name:""});if("answer"in step)resolve(step.answer);else setPermState(step.state);return}if(overlay==="doctor"){if(ev.name===
1336
- "escape")setOverlay("none");return}if(overlay==="model"){if(ev.name==="up")setSelected(s=>Math.max(0,s-1));else if(ev.name==="down")setSelected(s=>Math.min(catalog.ids.length-1,s+1));else if(ev.name==="escape")setOverlay("none");else if(ev.name==="enter"){const pickedId=catalog.ids[selectedRef.current];if(pickedId!==void 0){setModel(pickedId);commit({kind:"notice",tone:"info",text:`\u30E2\u30C7\u30EB\u3092 ${modelLabel(pickedId)} \u306B\u5207\u308A\u66FF\u3048\u307E\u3057\u305F\uFF08\u30E2\u30FC\u30C9\u306F ${getMode(
1337
- modeRef.current).label} \u306E\u307E\u307E\uFF09`})}setOverlay("none")}return}const mention=mentionAtCursor(bufferRef.current.text,bufferRef.current.cursor);if(mention===null||mention.start!==dismissedMentionRef.current)dismissedMentionRef.current=null;const files=busyRef.current?null:fileCompletionFor(bufferRef.current,fileIndexRef.current);if(files!==null&&files.start!==dismissedMentionRef.current){if(ev.name==="up"){setSelected(s=>Math.max(0,s-1));return}if(ev.name==="down"){setSelected(s=>Math.
1338
- min(files.items.length-1,s+1));return}if(ev.name==="tab"){const picked=files.items[Math.min(selectedRef.current,files.items.length-1)];if(picked!==void 0){const insertText=`@${picked} `;setBuffer(b=>({text:b.text.slice(0,files.start)+insertText+b.text.slice(files.end),cursor:files.start+insertText.length}));setSelected(0)}return}if(ev.name==="escape"){dismissedMentionRef.current=files.start;setBuffer(b=>({...b}));return}}const palette=busyRef.current?[]:paletteFor(bufferRef.current.text,modeRef.
1339
- current);if(palette.length>0){if(ev.name==="up"){setSelected(s=>Math.max(0,s-1));return}if(ev.name==="down"){setSelected(s=>Math.min(palette.length-1,s+1));return}if(ev.name==="tab"){const picked=palette[selectedRef.current];if(picked){setBuffer(()=>({text:picked.name,cursor:picked.name.length}));setSelected(0)}return}if(ev.name==="enter"){const typed=bufferRef.current.text.trim();const exact=palette.find(c=>c.name===typed||c.aliases?.includes(typed));const picked=exact??palette[Math.min(selectedRef.
1340
- current,palette.length-1)];if(picked){if(exact===void 0&&picked.argumentHint?.startsWith("<")===true){setBuffer(()=>({text:`${picked.name} `,cursor:picked.name.length+1}));setSelected(0);return}clearBuffer();runCommand(picked.name)}return}if(ev.name==="escape"){clearBuffer();return}}switch(ev.name){case"char":if(ev.value){setBuffer(b=>insert(b,ev.value??""));setSelected(0)}return;case"paste":if(ev.value){const pasted=ev.value.replace(/\r\n?/g,"\n");setBuffer(b=>insert(b,pasted));setSelected(0)}return;case"\
1341
- newline":setBuffer(b=>insert(b,"\n"));return;case"enter":{const b=bufferRef.current;if(b.cursor>0&&b.text[b.cursor-1]==="\\"){setBuffer(prev=>({text:`${prev.text.slice(0,prev.cursor-1)}
1337
+ "escape")setOverlay("none");return}if(overlay==="model"){if(ev.name==="up")setSelected(s=>Math.max(0,s-1));else if(ev.name==="down")setSelected(s=>Math.min(catalog.ids.length-1,s+1));else if(ev.name==="escape")setOverlay("none");else if(ev.name==="enter"){const pickedId=catalog.ids[selectedRef.current];if(pickedId!==void 0&&classifyModelSwitch(catalog,model,pickedId)==="new_conversation"&&!runtime.context.isEmpty()){if(busyRef.current){commit({kind:"notice",tone:"warn",text:`${modelLabel(pickedId)}\
1338
+ \u306F\u63A5\u7D9A\u5148\u304C\u7570\u306A\u308B\u305F\u3081\u65B0\u3057\u3044\u4F1A\u8A71\u304C\u5FC5\u8981\u3067\u3059\u3002\u5FDC\u7B54\u304C\u7D42\u308F\u3063\u3066\u304B\u3089\u5207\u308A\u66FF\u3048\u3066\u304F\u3060\u3055\u3044`});setOverlay("none");return}setPendingSwitch(pickedId);setSelected(0);setOverlay("model-confirm");return}if(pickedId!==void 0){setModel(pickedId);commit({kind:"notice",tone:"info",text:`\u30E2\u30C7\u30EB\u3092 ${modelLabel(pickedId)} \u306B\u5207\u308A\u66FF\u3048\u307E\u3057\u305F\uFF08\u30E2\u30FC\u30C9\u306F ${getMode(
1339
+ modeRef.current).label} \u306E\u307E\u307E\uFF09`})}setOverlay("none")}return}if(overlay==="model-confirm"){if(ev.name==="up")setSelected(0);else if(ev.name==="down")setSelected(1);else if(ev.name==="escape"||ev.name==="enter"&&selectedRef.current!==0){setPendingSwitch(null);setOverlay("none");commit({kind:"notice",tone:"info",text:`\u30E2\u30C7\u30EB\u306F ${modelLabel(model)} \u306E\u307E\u307E\u3067\u3059`})}else if(ev.name==="enter"&&pendingSwitch!==null){setItems([]);runtime.context.clear();
1340
+ setContext(runtime.context.snapshot());setModel(pendingSwitch);commit({kind:"notice",tone:"info",text:`\u65B0\u3057\u3044\u4F1A\u8A71\u3092\u59CB\u3081\u3001\u30E2\u30C7\u30EB\u3092 ${modelLabel(pendingSwitch)} \u306B\u5207\u308A\u66FF\u3048\u307E\u3057\u305F\uFF08\u63A5\u7D9A\u5148\u304C\u7570\u306A\u308B\u305F\u3081\u524D\u306E\u4F1A\u8A71\u306F\u5F15\u304D\u7D99\u3044\u3067\u3044\u307E\u305B\u3093\uFF09`});setPendingSwitch(null);setOverlay("none")}return}const mention=mentionAtCursor(bufferRef.
1341
+ current.text,bufferRef.current.cursor);if(mention===null||mention.start!==dismissedMentionRef.current)dismissedMentionRef.current=null;const files=busyRef.current?null:fileCompletionFor(bufferRef.current,fileIndexRef.current);if(files!==null&&files.start!==dismissedMentionRef.current){if(ev.name==="up"){setSelected(s=>Math.max(0,s-1));return}if(ev.name==="down"){setSelected(s=>Math.min(files.items.length-1,s+1));return}if(ev.name==="tab"){const picked=files.items[Math.min(selectedRef.current,files.
1342
+ items.length-1)];if(picked!==void 0){const insertText=`@${picked} `;setBuffer(b=>({text:b.text.slice(0,files.start)+insertText+b.text.slice(files.end),cursor:files.start+insertText.length}));setSelected(0)}return}if(ev.name==="escape"){dismissedMentionRef.current=files.start;setBuffer(b=>({...b}));return}}const palette=busyRef.current?[]:paletteFor(bufferRef.current.text,modeRef.current);if(palette.length>0){if(ev.name==="up"){setSelected(s=>Math.max(0,s-1));return}if(ev.name==="down"){setSelected(
1343
+ s=>Math.min(palette.length-1,s+1));return}if(ev.name==="tab"){const picked=palette[selectedRef.current];if(picked){setBuffer(()=>({text:picked.name,cursor:picked.name.length}));setSelected(0)}return}if(ev.name==="enter"){const typed=bufferRef.current.text.trim();const exact=palette.find(c=>c.name===typed||c.aliases?.includes(typed));const picked=exact??palette[Math.min(selectedRef.current,palette.length-1)];if(picked){if(exact===void 0&&picked.argumentHint?.startsWith("<")===true){setBuffer(()=>({
1344
+ text:`${picked.name} `,cursor:picked.name.length+1}));setSelected(0);return}clearBuffer();runCommand(picked.name)}return}if(ev.name==="escape"){clearBuffer();return}}switch(ev.name){case"char":if(ev.value){setBuffer(b=>insert(b,ev.value??""));setSelected(0)}return;case"paste":if(ev.value){const pasted=ev.value.replace(/\r\n?/g,"\n");setBuffer(b=>insert(b,pasted));setSelected(0)}return;case"newline":setBuffer(b=>insert(b,"\n"));return;case"enter":{const b=bufferRef.current;if(b.cursor>0&&b.text[b.
1345
+ cursor-1]==="\\"){setBuffer(prev=>({text:`${prev.text.slice(0,prev.cursor-1)}
1342
1346
  ${prev.text.slice(prev.cursor)}`,cursor:prev.cursor}));return}submit();return}case"backspace":setBuffer(b=>{const prev=prevBoundary(b.text,b.cursor);return prev===b.cursor?b:{text:b.text.slice(0,prev)+b.text.slice(b.cursor),cursor:prev}});setSelected(0);return;case"delete":setBuffer(b=>({text:b.text.slice(0,b.cursor)+b.text.slice(nextBoundary(b.text,b.cursor)),cursor:b.cursor}));return;case"left":setBuffer(b=>({...b,cursor:prevBoundary(b.text,b.cursor)}));return;case"right":setBuffer(b=>({...b,cursor:nextBoundary(
1343
- b.text,b.cursor)}));return;case"home":setBuffer(b=>({...b,cursor:0}));return;case"end":setBuffer(b=>({...b,cursor:b.text.length}));return;case"ctrl-u":clearBuffer();return;default:return}},[busy,clearBuffer,commit,ctrlCArmed,exit,overlay,setBuffer,setSelected,stream,submit,runCommand]);useTerminalInput(onKey,setPasting);const streamRows=fitTailRows(stream.text,size.columns,budget.body).rows;const diffBudget=budget.body-13;const listBudget=Math.max(1,budget.body-6);const doctorBudget=Math.max(1,budget.
1344
- body-11-doctorNetworkRows(networkDiagnostics));return(0,import_jsx_runtime9.jsxs)(Box_default,{flexDirection:"column",children:[(0,import_jsx_runtime9.jsx)(Static,{items,children:item=>(0,import_jsx_runtime9.jsx)(ItemView,{item},item.id)}),(0,import_jsx_runtime9.jsxs)(Box_default,{flexDirection:"column",marginTop:1,children:[stream.streaming||stream.text!==""?(0,import_jsx_runtime9.jsx)(Box_default,{flexDirection:"column",children:streamRows.map((line,i)=>(0,import_jsx_runtime9.jsx)(Text,{wrap:"\
1345
- truncate",children:line===""?" ":line},i))}):null,runningTool?(0,import_jsx_runtime9.jsx)(ToolCard,{run:runningTool,expanded:false,maxLines:budget.body}):null,overlay==="permission"&&pendingPermission?(0,import_jsx_runtime9.jsx)(PermissionDialog,{spec:pendingPermission,state:permState,maxDiffLines:diffBudget}):null,overlay==="model"?(0,import_jsx_runtime9.jsx)(SelectList,{title:`\u30E2\u30C7\u30EB\u3092\u9078\u629E\uFF08\u30E2\u30FC\u30C9\u3068\u306F\u72EC\u7ACB\uFF09${catalogTitleSuffix(catalog.
1346
- source)}`,items:toModelInfos(catalog.ids).map(m=>({key:m.id,label:m.label,hint:m.note})),selected:selectedState,maxRows:Math.min(catalog.ids.length,listBudget),footer:"\u2191\u2193 \u3067\u9078\u629E \xB7 Enter \u3067\u6C7A\u5B9A \xB7 Esc \u3067\u53D6\u6D88"}):null,overlay==="doctor"?(0,import_jsx_runtime9.jsx)(Doctor,{events:keyLog,maxRows:doctorBudget,network:networkDiagnostics}):null,overlay==="none"&&!busy&&fileCompletion!==null?(0,import_jsx_runtime9.jsx)(SelectList,{title:"\u30D5\u30A1\u30A4\u30EB",
1347
- items:fileCompletion.items.map(f=>({key:f,label:stripTerminalControls(f),hint:""})),selected:selectedState,maxRows:Math.min(8,listBudget),footer:"\u2191\u2193 \u9078\u629E \xB7 Tab \u78BA\u5B9A \xB7 Esc \u9589\u3058\u308B\uFF08Enter \u306F\u305D\u306E\u307E\u307E\u9001\u4FE1\uFF09"}):null,overlay==="none"&&!busy&&paletteItems.length>0?(0,import_jsx_runtime9.jsx)(SelectList,{title:"\u30B9\u30E9\u30C3\u30B7\u30E5\u30B3\u30DE\u30F3\u30C9",items:paletteItems.map(c=>({key:c.name,label:`${c.name}${c.argumentHint?
1348
- ` ${c.argumentHint}`:""}`,hint:`${c.description}${originLabel(c)}`})),selected:selectedState,maxRows:Math.min(8,listBudget),footer:"\u2191\u2193 \u9078\u629E \xB7 Tab \u88DC\u5B8C \xB7 Enter \u5B9F\u884C \xB7 Esc \u53D6\u6D88"}):null,(0,import_jsx_runtime9.jsx)(InputBox,{value:buffer.text,window:inputWindow,busy,pasting,width:size.columns}),(0,import_jsx_runtime9.jsx)(StatusLine,{mode:modeDef,model,cwd:cwd2,branch,contextRemaining:context.remainingPercent,width:size.columns}),(0,import_jsx_runtime9.jsx)(
1349
- HintLine,{width:size.columns})]})]})}import fs4 from"fs";import path2 from"path";var KNOWN_KEYS=new Set(["description","argument-hint","allowed-tools","mode"]);var TEXT_MAX=80;var TEMPLATE_MAX_BYTES=16384;var FILE_COUNT_MAX=128;var FILE_BYTES_MAX=64*1024;var DEPTH_MAX=3;var WARNING_MAX=30;var KNOWN_TOOLS=new Set([...localTools().map(t=>t.name),"bash","shell"]);var SEGMENT=/^[A-Za-z0-9][A-Za-z0-9_-]*$/;function samePath(a,b){const real=p=>{try{return fs4.realpathSync(p)}catch{return path2.resolve(p)}};const x=real(a);const y=real(b);return process.platform==="win32"||process.
1347
+ b.text,b.cursor)}));return;case"home":setBuffer(b=>({...b,cursor:0}));return;case"end":setBuffer(b=>({...b,cursor:b.text.length}));return;case"ctrl-u":clearBuffer();return;default:return}},[busy,catalog,clearBuffer,commit,ctrlCArmed,exit,model,overlay,pendingSwitch,runtime,setBuffer,setSelected,stream,submit,runCommand]);useTerminalInput(onKey,setPasting);const streamRows=fitTailRows(stream.text,size.columns,budget.body).rows;const diffBudget=budget.body-13;const listBudget=Math.max(1,budget.body-
1348
+ 6);const doctorBudget=Math.max(1,budget.body-11-doctorNetworkRows(networkDiagnostics));return(0,import_jsx_runtime9.jsxs)(Box_default,{flexDirection:"column",children:[(0,import_jsx_runtime9.jsx)(Static,{items,children:item=>(0,import_jsx_runtime9.jsx)(ItemView,{item},item.id)}),(0,import_jsx_runtime9.jsxs)(Box_default,{flexDirection:"column",marginTop:1,children:[stream.streaming||stream.text!==""?(0,import_jsx_runtime9.jsx)(Box_default,{flexDirection:"column",children:streamRows.map((line,i)=>(0,import_jsx_runtime9.jsx)(
1349
+ Text,{wrap:"truncate",children:line===""?" ":line},i))}):null,runningTool?(0,import_jsx_runtime9.jsx)(ToolCard,{run:runningTool,expanded:false,maxLines:budget.body}):null,overlay==="permission"&&pendingPermission?(0,import_jsx_runtime9.jsx)(PermissionDialog,{spec:pendingPermission,state:permState,maxDiffLines:diffBudget}):null,overlay==="model"?(0,import_jsx_runtime9.jsx)(SelectList,{title:`\u30E2\u30C7\u30EB\u3092\u9078\u629E\uFF08\u30E2\u30FC\u30C9\u3068\u306F\u72EC\u7ACB\uFF09${catalogTitleSuffix(
1350
+ catalog.source)}`,items:toModelInfos(catalog.ids).map(m=>({key:m.id,label:m.label,hint:m.note})),selected:selectedState,maxRows:Math.min(catalog.ids.length,listBudget),footer:"\u2191\u2193 \u3067\u9078\u629E \xB7 Enter \u3067\u6C7A\u5B9A \xB7 Esc \u3067\u53D6\u6D88"}):null,overlay==="model-confirm"&&pendingSwitch!==null?(0,import_jsx_runtime9.jsx)(SelectList,{title:`${modelLabel(pendingSwitch)} \u306F\u63A5\u7D9A\u5148\u304C\u7570\u306A\u308A\u307E\u3059\u3002\u73FE\u5728\u306E\u4F1A\u8A71\u3092\u7D42\u3048\u3066\u65B0\u3057\u3044\u4F1A\u8A71\u3092\u59CB\u3081\u307E\u3059\u304B\uFF1F`,
1351
+ items:[{key:"new",label:"\u65B0\u3057\u3044\u4F1A\u8A71\u3092\u59CB\u3081\u3066\u5207\u308A\u66FF\u3048\u308B",hint:"\u3053\u308C\u307E\u3067\u306E\u4F1A\u8A71\u306F\u5F15\u304D\u7D99\u304C\u308C\u307E\u305B\u3093"},{key:"cancel",label:"\u53D6\u308A\u6D88\u3059",hint:`${modelLabel(model)} \u306E\u307E\u307E\u7D9A\u3051\u308B`}],selected:selectedState,maxRows:2,footer:"\u2191\u2193 \u3067\u9078\u629E \xB7 Enter \u3067\u6C7A\u5B9A \xB7 Esc \u3067\u53D6\u6D88"}):null,overlay==="doctor"?(0,import_jsx_runtime9.jsx)(
1352
+ Doctor,{events:keyLog,maxRows:doctorBudget,network:networkDiagnostics}):null,overlay==="none"&&!busy&&fileCompletion!==null?(0,import_jsx_runtime9.jsx)(SelectList,{title:"\u30D5\u30A1\u30A4\u30EB",items:fileCompletion.items.map(f=>({key:f,label:stripTerminalControls(f),hint:""})),selected:selectedState,maxRows:Math.min(8,listBudget),footer:"\u2191\u2193 \u9078\u629E \xB7 Tab \u78BA\u5B9A \xB7 Esc \u9589\u3058\u308B\uFF08Enter \u306F\u305D\u306E\u307E\u307E\u9001\u4FE1\uFF09"}):null,overlay==="no\
1353
+ ne"&&!busy&&paletteItems.length>0?(0,import_jsx_runtime9.jsx)(SelectList,{title:"\u30B9\u30E9\u30C3\u30B7\u30E5\u30B3\u30DE\u30F3\u30C9",items:paletteItems.map(c=>({key:c.name,label:`${c.name}${c.argumentHint?` ${c.argumentHint}`:""}`,hint:`${c.description}${originLabel(c)}`})),selected:selectedState,maxRows:Math.min(8,listBudget),footer:"\u2191\u2193 \u9078\u629E \xB7 Tab \u88DC\u5B8C \xB7 Enter \u5B9F\u884C \xB7 Esc \u53D6\u6D88"}):null,(0,import_jsx_runtime9.jsx)(InputBox,{value:buffer.text,window:inputWindow,
1354
+ busy,pasting,width:size.columns}),(0,import_jsx_runtime9.jsx)(StatusLine,{mode:modeDef,model,cwd:cwd2,branch,contextRemaining:context.remainingPercent,width:size.columns}),(0,import_jsx_runtime9.jsx)(HintLine,{width:size.columns})]})]})}import fs4 from"fs";import path2 from"path";var KNOWN_KEYS=new Set(["description","argument-hint","allowed-tools","mode"]);var TEXT_MAX=80;var TEMPLATE_MAX_BYTES=16384;var FILE_COUNT_MAX=128;var FILE_BYTES_MAX=64*1024;var DEPTH_MAX=3;var WARNING_MAX=30;var KNOWN_TOOLS=new Set([...localTools().map(t=>t.name),"bash","shell"]);var SEGMENT=/^[A-Za-z0-9][A-Za-z0-9_-]*$/;function samePath(a,b){const real=p=>{try{return fs4.realpathSync(p)}catch{return path2.resolve(p)}};const x=real(a);const y=real(b);return process.platform==="win32"||process.
1350
1355
  platform==="darwin"?x.toLowerCase()===y.toLowerCase():x===y}function userCommandsDirs(env3=process.env){const home=path2.join(twpHomeDir(env3),"commands");const dirs=configReadDirs(env3).map(dir=>path2.join(dir,"commands"));return[home,...dirs.filter(d=>d!==home)]}function listCommandFiles(root,origin){const found=[];const warnings=[];let truncated=false;const walk=(dir,segments)=>{let names;try{names=fs4.readdirSync(dir)}catch(err){const code=err.code;if(code!=="ENOENT")warnings.push(`${dir}: \u8AAD\
1351
1356
  \u307F\u53D6\u308C\u307E\u305B\u3093\u3067\u3057\u305F\uFF08${code??"unknown"}\uFF09`);return}for(const entry of names.sort()){if(truncated)return;if(entry.startsWith("."))continue;const full=path2.join(dir,entry);const stat=lstatOrNull(full);if(stat===null)continue;if(stat.isSymbolicLink()){warnings.push(`${full}: \u30B7\u30F3\u30DC\u30EA\u30C3\u30AF\u30EA\u30F3\u30AF\u306F\u8AAD\u307F\u307E\u305B\u3093\uFF08\u5B9F\u30D5\u30A1\u30A4\u30EB\u3092\u7F6E\u3044\u3066\u304F\u3060\u3055\u3044\uFF09`);
1352
1357
  continue}if(stat.isDirectory()){if(!SEGMENT.test(entry)){warnings.push(`${full}: \u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u540D\u306B\u4F7F\u3048\u306A\u3044\u6587\u5B57\u304C\u3042\u308A\u307E\u3059\uFF08\u82F1\u6570\u5B57\u30FB-\u30FB_ \u306E\u307F\uFF09`);continue}if(segments.length+1>=DEPTH_MAX){warnings.push(`${full}: \u968E\u5C64\u304C\u6DF1\u3059\u304E\u307E\u3059\uFF08${DEPTH_MAX} \u6BB5\u307E\u3067\u8AAD\u307F\u307E\u3059\uFF09`);continue}walk(full,[...segments,entry]);continue}if(!entry.toLowerCase().
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{fetchLatestVersion,isBehindLatest,resolveNpmCommand}from"./chunk-KZQGIM2C.js";import"./chunk-JQBXLZTJ.js";import"./chunk-D233KKXW.js";import"./chunk-PMOUHEJQ.js";import"./chunk-XNLIEUAW.js";import"./chunk-J7QYPKVK.js";import{PARENT_PID_ENV,WORKER_ENV,autoUpdateDisabledReason,classifyInstall,isCheckDue,listRegisteredPids,lockFilePath,readUpdateState,resolveCliPath,runDirPath,writeUpdateState}from"./chunk-CH6QU76P.js";import{PACKAGE_NAME,parseVersionCore}from"./chunk-DXXFUNYN.js";
3
+ import{fetchLatestVersion,isBehindLatest,resolveNpmCommand}from"./chunk-KRPJ4UFW.js";import"./chunk-TVTJRNUC.js";import"./chunk-D233KKXW.js";import"./chunk-PMOUHEJQ.js";import"./chunk-XNLIEUAW.js";import"./chunk-J7QYPKVK.js";import{PARENT_PID_ENV,WORKER_ENV,autoUpdateDisabledReason,classifyInstall,isCheckDue,listRegisteredPids,lockFilePath,readUpdateState,resolveCliPath,runDirPath,writeUpdateState}from"./chunk-CH6QU76P.js";import{PACKAGE_NAME,parseVersionCore}from"./chunk-DXXFUNYN.js";
4
4
  import"./chunk-5WGOHFAS.js";import"./chunk-EDF4U5BT.js";import"./chunk-RZVI6PMW.js";import{stripTerminalControls}from"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";import{execFile}from"child_process";import fs from"fs";import path from"path";var PARENT_WAIT_MAX_MS=12*60*60*1e3;var PARENT_POLL_MS=1e3;var LOCK_STALE_MS=PARENT_WAIT_MAX_MS+60*60*1e3;var INSTALL_TIMEOUT_MS=0;function childEnv(env){const next={...env};delete next[WORKER_ENV];delete next[PARENT_PID_ENV];return next}function createNpmRunner(env=process.env){const cmd=resolveNpmCommand({env});if(cmd===null)return null;return(args,timeoutMs)=>new Promise(resolve=>{execFile(cmd.file,[...cmd.prefix,...args],{timeout:timeoutMs,windowsHide:true,maxBuffer:8*1024*1024,cwd:path.dirname(lockFilePath(env)),env:childEnv(env)},(error,stdout,stderr)=>{if(error===null){resolve({ok:true,stdout:String(stdout),stderr:String(
5
5
  stderr)});return}const e=error;resolve({ok:false,stdout:String(stdout??""),stderr:String(stderr??""),...e.killed?{error:"\u30BF\u30A4\u30E0\u30A2\u30A6\u30C8\u3057\u307E\u3057\u305F"}:typeof e.code==="string"?{error:e.code}:{}})})})}function summarizeNpmFailure(result){const text=`${result.stderr}
6
6
  ${result.stdout}`;const code=/npm (?:ERR!|error) code (\S+)/.exec(text)?.[1]??result.error;let reason;if(code==="EACCES"||code==="EPERM"){reason=`\u30B0\u30ED\u30FC\u30D0\u30EB\u306E\u5C0E\u5165\u5148\u306B\u66F8\u304D\u8FBC\u3080\u6A29\u9650\u304C\u3042\u308A\u307E\u305B\u3093\uFF08${code}\uFF09`}else if(code!==void 0&&/^(ENOTFOUND|ETIMEDOUT|ECONNREFUSED|ECONNRESET|EAI_AGAIN|ENETUNREACH)$/.test(code)){reason=`npm registry \u306B\u63A5\u7D9A\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08${code}\
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{loadDomain}from"./chunk-64VHXDB6.js";import{renderDocument,renderOutput}from"./chunk-PO35MCYP.js";import{JsonBodyWithView}from"./chunk-Q3B65OFC.js";import{evaluateQuery}from"./chunk-GFLGXGWE.js";import{redactSecretValues,redactSecrets,withDebug}from"./chunk-LDBYJPRD.js";import{parseOperationArgs}from"./chunk-RX5HWI4L.js";import{Resolver,requireDefaultProject}from"./chunk-RSSPNFSK.js";import{ResolveError}from"./chunk-HVZUXLQ4.js";import{ApiError,
3
+ import{loadDomain}from"./chunk-YPULDSJ3.js";import{renderDocument,renderOutput}from"./chunk-PO35MCYP.js";import{JsonBodyWithView}from"./chunk-Q3B65OFC.js";import{evaluateQuery}from"./chunk-GFLGXGWE.js";import{redactSecretValues,redactSecrets,withDebug}from"./chunk-LDBYJPRD.js";import{parseOperationArgs}from"./chunk-RX5HWI4L.js";import{Resolver,requireDefaultProject}from"./chunk-RSSPNFSK.js";import{ResolveError}from"./chunk-HVZUXLQ4.js";import{ApiError,
4
4
  MultipartBody,TwpApiClient,appendQuery}from"./chunk-JA5A6UJ2.js";import{DEFAULT_MAX_ITEMS,DEFAULT_MAX_PAGES,nextPageNotes,positiveInteger,shellQuote}from"./chunk-MI6HVYR2.js";import{isRecord}from"./chunk-3ZRMMBP5.js";import{ApiRejectedError,ApiResponseError,EXIT_API_CLIENT,EXIT_API_SERVER,EXIT_AUTH,EXIT_FAILURE,EXIT_OK,EXIT_USAGE,EXIT_WAIT_TIMEOUT,NetworkError,UsageError,WaitTimeoutError}from"./chunk-VFPY2A23.js";import{GLOBAL_OPTIONS_HELP}from"./chunk-PECIBNFD.js";
5
5
  import{AuthSession,NotLoggedInError,SessionExpiredError,loadCredentials}from"./chunk-XNLIEUAW.js";import{httpFetch}from"./chunk-J7QYPKVK.js";import{effectiveApiUrl,loadUserConfig,resolveConfiguredBacklogSpace,resolveConfiguredOutput,resolveProfile}from"./chunk-EDF4U5BT.js";import{HELP_TOKEN}from"./chunk-MLRBDF44.js";import{OUTPUT_FORMATS,resolveOutputFormat}from"./chunk-74BPZOKU.js";import{stringWidth}from"./chunk-UREA4ZIG.js";import{stripTerminalControls}from"./chunk-NHYMHCAT.js";import fs from"fs";import path from"path";var NO_REDACT_FLAG={name:"--no-redact",summary:"\u5FDC\u7B54\u306E\u4F0F\u5B57\u5316\u3092\u89E3\u9664\u3057\u3066\u751F\u306E\u5024\u3092\u51FA\u3059\uFF08\u9375\u306E\u53D7\u3051\u53D6\u308A\u7B49\uFF09",takesValue:false};var NO_REDACT_NOTICE="\u6CE8\u8A18: --no-redact \u306E\u305F\u3081\u51FA\u529B\u3092\u4F0F\u5B57\u5316\u3057\u307E\u305B\u3093\uFF08\u7AEF\u672B\u3068\u30ED\u30B0\u306B\u5E73\u6587\u3067\u6B8B\u308A\u307E\u3059\uFF09\u3002";function withCommonFlags(flags){return flags.some(flag=>flag.
6
6
  name===NO_REDACT_FLAG.name)?flags:[...flags,NO_REDACT_FLAG]}function alignedList(entries,indent=" "){const width=entries.reduce((max,[left])=>Math.max(max,stringWidth(left)),0);return entries.map(([left,right])=>`${indent}${left}${" ".repeat(Math.max(0,width-stringWidth(left)))} ${right}`).join("\n")}function subresourcesOf(resource){return resource.subresources??[]}function renderResourceHelp(resource,path2){const subresources=subresourcesOf(resource);const operationSection=resource.operations.length===0?"":`
@@ -3,8 +3,9 @@ const require = __twpCreateRequire(import.meta.url);
3
3
  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-QXYY7DUV.js";import{USER_REF_FLAG,USER_REF_HELP,userPath}from"./chunk-HKEW6XIC.js";import{createFlags,fieldBody,hasAnyField,resolveRefFields,updateFlags}from"./chunk-CADCERVL.js";import{boundedText,isoDate}from"./chunk-JJSBBWJ5.js";import{
4
4
  readBody}from"./chunk-6LSQCOCJ.js";import{PROJECT_MEMBERS_LIMIT,resolveNamed}from"./chunk-RSSPNFSK.js";import{collapsesInUrlPath,safeProjectIdPolicy}from"./chunk-HVZUXLQ4.js";import{LIST_FLAGS,LIST_PAGING_HELP,envelopePaging,nonEmpty,positiveInteger}from"./chunk-MI6HVYR2.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
- 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
- \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";
6
+ var WIKI_ROLE_FLAG={name:"--wiki-role",summary:"\u3053\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E Wiki \u6A29\u9650\uFF08admin\uFF1DWiki \u7BA1\u7406\u8005 / member\uFF1D\u4E00\u822C\uFF09",takesValue:true,placeholder:"<admin|member>"};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 WIKI_ROLES=["admin",
7
+ "member"];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 \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";
8
+ var WIKI_ROLE_HELP="--wiki-role \u306F\u3053\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E Wiki \u6A29\u9650\u3067\u3059\u3002admin\uFF08Wiki \u7BA1\u7406\u8005\uFF09\u304B member\uFF08\u4E00\u822C\u30FB\u65E2\u5B9A\uFF09\u3092\u6307\u5B9A\u3057\u307E\u3059\u3002\n \u5F79\u5272\uFF08--role\uFF09\u3068\u306F\u72EC\u7ACB\u3067\u3001manager \u3067\u3082\u6307\u5B9A\u3057\u306A\u3051\u308C\u3070 member \u306E\u307E\u307E\u3067\u3059\u3002admin \u306B\u3059\u308B\u3068\u3001\u3053\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\n Wiki \u3060\u3051\u3067\u7BA1\u7406\u8005\u3068\u3057\u3066\u6271\u308F\u308C\u307E\u3059\u3002\u4ECA\u306E\u5024\u306F twp project members \u306E wiki_role \u5217\u3067\u78BA\u304B\u3081\u3089\u308C\u307E\u3059\u3002";
8
9
  var PERIOD_HELP='--period-file \u306F\u7A3C\u50CD\u671F\u9593\uFF08assignment_periods\uFF09\u306E JSON \u914D\u5217\u3067\u3059\u30021\u4EF6\u306F\u6B21\u306E\u30AD\u30FC\u3092\u6301\u3064\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3067\u3059:\n start_date / end_date\uFF08YYYY-MM-DD\u30FB\u5FC5\u9808\uFF09\u30FBdaily_hours\uFF081\u65E5\u3042\u305F\u308A\u306E\u6642\u9593\u30FB\u5FC5\u9808\uFF09\u30FB\n total_hours\u30FBinput_mode\uFF08hours / percentage / person_days / total_hours\uFF09\u30FBid\uFF08\u65E2\u5B58\u306E\u671F\u9593\u3092\u6B8B\u3059\u3068\u304D\uFF09\n \u4F8B: [{"start_date":"2026-10-01","end_date":"2026-12-31","daily_hours":8,"input_mode":"hours"}]\n \u671F\u9593\u30921\u4EF6\u4EE5\u4E0A\u9001\u308B\u3068\u3001\u53C2\u753B\u958B\u59CB\u65E5\u30FB\u7D42\u4E86\u65E5\u306F\u30B5\u30FC\u30D0\u304C\u671F\u9593\u306E\u6700\u5C0F\u30FB\u6700\u5927\u304B\u3089\u6C7A\u3081\u307E\u3059\n \uFF08\u305D\u306E\u305F\u3081 --start-date / --end-date \u3068\u306F\u540C\u6642\u306B\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\uFF09\u3002--period-file - \u3067\u6A19\u6E96\u5165\u529B\u304B\u3089\u8AAD\u3081\u307E\u3059\u3002';
9
10
  var MEMBER_REF_HELP="<\u30E1\u30F3\u30D0\u30FC> \u306F\u305D\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u30E1\u30F3\u30D0\u30FC\u3092\u6C0F\u540D\u30FB\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\u30FBID\u30FBme\uFF08\u81EA\u5206\uFF09\u3067\u6307\u5B9A\u3057\u307E\u3059\uFF08\u5225\u540D\u3067\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\uFF09\u3002\n\u540C\u59D3\u540C\u540D\u306A\u3089\u5019\u88DC\u3092\u51FA\u3057\u3066\u6B62\u307E\u308B\u306E\u3067\u3001\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\u3067\u6307\u5B9A\u3057\u76F4\u3057\u3066\u304F\u3060\u3055\u3044\u3002";
10
11
  var FORBIDDEN="\u3053\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u30E1\u30F3\u30D0\u30FC\u3092\u7BA1\u7406\u3059\u308B\u6A29\u9650\u304C\u5FC5\u8981\u3067\u3059\uFF08\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u7BA1\u7406\u8005\u304B\u3001\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u6A5F\u80FD\u306E\u7BA1\u7406\u8005\u30FB\u7D44\u7E54\u7BA1\u7406\u8005\uFF09\u3002\u30E1\u30F3\u30D0\u30FC\u306E\u8FFD\u52A0\u30FB\u5909\u66F4\u30FB\u524A\u9664\u306F\u3053\u308C\u3089\u306E\u6A29\u9650\u3092\u6301\u3064\u4EBA\u3060\u3051\u304C\u884C\u3048\u307E\u3059";
@@ -13,29 +14,31 @@ function roleRejected(server){return/role/i.test(server)?"\u5F79\u5272\u306E\u50
13
14
  if(unknownKeys.length>0)problems.push(`${at}: \u9001\u308C\u306A\u3044\u9805\u76EE\u304C\u3042\u308A\u307E\u3059: ${unknownKeys.join(", ")}`);const missing=PERIOD_REQUIRED.filter(key=>period[key]===void 0||period[key]===null||period[key]==="");if(missing.length>0)problems.push(`${at}: \u5FC5\u9808\u306E\u9805\u76EE\u304C\u3042\u308A\u307E\u305B\u3093: ${missing.join(", ")}`)});if(problems.length>0){throw new UsageError(`\u7A3C\u50CD\u671F\u9593\u306B\u8AA4\u308A\u304C\u3042\u308A\u307E\u3059\uFF08${source}\
14
15
  \uFF09:
15
16
  ${problems.join("\n ")}`,PERIOD_HELP)}return parsed}async function readPeriods(input,usage){const text2=await readBody(input,{flag:"--periods",fileFlag:PERIOD_FILE_FLAG.name,label:"\u7A3C\u50CD\u671F\u9593",maxChars:PERIOD_FILE_MAX_CHARS,usage});if(text2===void 0)return void 0;return parsePeriods(text2,`${PERIOD_FILE_FLAG.name} ${input.flags.get(PERIOD_FILE_FLAG.name)??""}`)}async function checkFields(input,usage){isoDate(input,START_DATE_FLAG.name);isoDate(input,END_DATE_FLAG.name);boundedText(
16
- input,MEMO_FLAG.name,{maxChars:MEMO_MAX_CHARS,label:"\u30E1\u30E2"});if(input.flags.has(ROLE_FLAG.name)&&nonEmpty(input.flags,ROLE_FLAG.name)===void 0){throw new UsageError(`${ROLE_FLAG.name} \u306B\u7A7A\u306E\u5024\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093`,ROLE_HELP)}const periods=await readPeriods(input,usage);if(periods===void 0)return input;if(periods.length>0&&(input.flags.has(START_DATE_FLAG.name)||input.flags.has(END_DATE_FLAG.name))){throw new UsageError(`${PERIOD_FILE_FLAG.name}\
17
- \u306B\u671F\u9593\u304C\u3042\u308B\u3068\u304D\u306F ${START_DATE_FLAG.name} / ${END_DATE_FLAG.name} \u3092\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093`,"\u30B5\u30FC\u30D0\u304C\u53C2\u753B\u958B\u59CB\u65E5\u30FB\u7D42\u4E86\u65E5\u3092\u671F\u9593\u306E\u6700\u5C0F\u30FB\u6700\u5927\u3067\u4E0A\u66F8\u304D\u3059\u308B\u305F\u3081\u3001\u6307\u5B9A\u3057\u3066\u3082\u52B9\u304D\u307E\u305B\u3093\u3002")}return withResolved(input,{[PERIODS_KEY]:JSON.stringify(periods)})}function memberBody(input){
18
- const body={};const role=nonEmpty(input.flags,ROLE_FLAG.name);if(role!==void 0)body["role"]=role;const startDate=isoDate(input,START_DATE_FLAG.name);if(startDate!==void 0)body["start_date"]=startDate;const endDate=isoDate(input,END_DATE_FLAG.name);if(endDate!==void 0)body["end_date"]=endDate;const periods=input.resolved?.[PERIODS_KEY];if(periods!==void 0)body["assignment_periods"]=JSON.parse(periods);const memo=boundedText(input,MEMO_FLAG.name,{maxChars:MEMO_MAX_CHARS,label:"\u30E1\u30E2"});if(memo!==
19
- void 0)body["memo"]=memo;return body}function membersPath(input,suffix=""){return`/api/v2/projects/${encodeURIComponent(requireResolved(input,"projectId"))}/members${suffix}`}function text(value){return typeof value==="string"&&value.trim()!==""?value:null}async function prepareMember(input,ctx,usage){const ref=singleRef(input,{flag:USER_REF_FLAG.name,label:"\u30E1\u30F3\u30D0\u30FC",usage});const projectId=await ctx.projectId(nonEmpty(input.flags,PROJECT_FLAG.name));const rows=await ctx.resolver.
20
- memberRows(projectId);let userId;if(ref.toLowerCase()==="me"){userId=(await ctx.resolver.currentUser()).id}else{const refs=rows.flatMap(row2=>{const id=text(row2["user_id"]);if(id===null)return[];const email=text(row2["user_email"]);return[{id,name:text(row2["user_name"])??id,code:null,...email!==null?{aliases:[email]}:{}}]});userId=(await resolveNamed(ref,refs,{flag:"<\u30E1\u30F3\u30D0\u30FC>",label:"\u30E1\u30F3\u30D0\u30FC"})).id}const row=rows.find(member=>member["user_id"]===userId);if(row===
21
- void 0){throw new UsageError("\u81EA\u5206\u306F\u3053\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u30E1\u30F3\u30D0\u30FC\u3067\u306F\u3042\u308A\u307E\u305B\u3093","\u30E1\u30F3\u30D0\u30FC\u306F twp project members \u3067\u78BA\u304B\u3081\u3089\u308C\u307E\u3059\u3002")}return withResolved(input,{projectId,userId,memberName:`${text(row["user_name"])??userId}\uFF08${text(row["user_email"])??userId}\u30FB\u5F79\u5272 ${text(row["role"])??"\u4E0D\u660E"}\uFF09`,[MEMBER_ROW_KEY]:JSON.stringify(
22
- row)})}var targetNote=verb=>input=>[`${verb}\u30E1\u30F3\u30D0\u30FC: ${requireResolved(input,"memberName")}`];var invalidates=(input,ctx)=>{const projectId=input.resolved?.["projectId"];if(projectId!==void 0)ctx.resolver.invalidateMembers(projectId)};var MEMBER_COLUMNS=["user_id","user_name","user_email","role","alias","start_date","end_date"];function memberResult(body,label){if(!isRecord(body)||body["result"]!==true||!isRecord(body["member"])){throw new ApiResponseError(`${label}\u306E\u5FDC\u7B54\u304C\u60F3\u5B9A\u306E\u5F62\u3067\u306F\u3042\u308A\u307E\
23
- \u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}const rest={...body};delete rest["result"];return rest}function memberSummary(body,label){const result=memberResult(body,label);const member=result["member"];const periods=member["assignment_periods"];return{message:result["message"]??null,...pick(member,MEMBER_COLUMNS),periods:Array.isArray(periods)?periods.length:0}}function removeAck(body){if(!isRecord(body)||body["result"]!==true){throw new ApiResponseError(
24
- "\u30E1\u30F3\u30D0\u30FC\u524A\u9664\u306E\u5FDC\u7B54\u304C\u60F3\u5B9A\u306E\u5F62\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002")}return{result:true,message:body["message"]??null}}function describePeriod(period){const mode=period["input_mode"]===void 0||period["input_mode"]===null?"":`\u30FB${String(period["input_mode"])}`;return`${String(period["start_date"]??"?")}\u301C${String(period["end_date"]??"?")}\uFF081\u65E5 ${String(
25
- period["daily_hours"]??"?")} \u6642\u9593${mode}\u30FBid ${String(period["id"]??"?")}\uFF09`}function droppedPeriods(current,next){const keep=new Set(next.map(period=>period["id"]).filter(id=>typeof id==="string"&&id!==""));return current.filter(isRecord).filter(period=>!(typeof period["id"]==="string"&&keep.has(period["id"])))}function periodNotes(input){const sent=input.resolved?.[PERIODS_KEY];if(sent===void 0)return[];const row=JSON.parse(requireResolved(input,MEMBER_ROW_KEY));const current=Array.
26
- isArray(row["assignment_periods"])?row["assignment_periods"]:[];const next=JSON.parse(sent);const dropped=droppedPeriods(current,next);const head=`\u7A3C\u50CD\u671F\u9593\uFF08assignment_periods\uFF09\u306F\u4E38\u3054\u3068\u7F6E\u304D\u63DB\u308F\u308A\u307E\u3059\uFF08\u9001\u308B ${next.length} \u4EF6\u3060\u3051\u304C\u6B8B\u308A\u307E\u3059\uFF09\u3002`;if(current.length===0)return[`${head}\u4ECA\u306E\u671F\u9593\u306F\u3042\u308A\u307E\u305B\u3093\u3002`];if(dropped.length===0)return[`${head}\
27
- \u4ECA\u306E\u671F\u9593\u306F\u3059\u3079\u3066\u540C\u3058 id \u3067\u9001\u3089\u308C\u307E\u3059\u3002`];return[`${head}\u4ECA\u306E\u671F\u9593\u306E\u3046\u3061\u3001\u9001\u308B\u5185\u5BB9\u306B\u540C\u3058 id \u304C\u7121\u3044 ${dropped.length} \u4EF6\u306F\u6D88\u3048\u307E\u3059\uFF08\u540C\u3058\u65E5\u4ED8\u3067\u3082 id \u304C\u7121\u3051\u308C\u3070\u65B0\u3057\u3044 id \u3067\u4F5C\u308A\u76F4\u3055\u308C\u307E\u3059\uFF09:`,...dropped.map(period=>` - ${describePeriod(period)}`)]}
28
- var WRITE_FLAGS=[ROLE_FLAG,START_DATE_FLAG,END_DATE_FLAG,PERIOD_FILE_FLAG,MEMO_FLAG,PROJECT_FLAG,USER_REF_FLAG];var createOperation={name:"create",summary:"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306B\u30E1\u30F3\u30D0\u30FC\u3092\u8FFD\u52A0\u3059\u308B\uFF08\u7A3C\u50CD\u671F\u9593\u3064\u304D\u30FB\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u7BA1\u7406\u8005\uFF09",usage:"twp project member create <\u30E6\u30FC\u30B6\u30FC> --role <\u5F79\u5272> [--project <\u30B3\u30FC\u30C9|ID>] [--start-date <YYYY-MM-DD>] [--end-date <YYYY-MM-DD>] [--period-f\
29
- ile <\u30D1\u30B9>] [--memo <\u6587\u5B57\u5217>]",description:`--role \u306F\u5FC5\u9808\u3067\u3059\u3002\u7A3C\u50CD\u671F\u9593\u3092\u5FC5\u9808\u306B\u3057\u3066\u3044\u308B\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3067\u306F --period-file \u3082\u8981\u308A\u307E\u3059\uFF08\u30B5\u30FC\u30D0\u304C\u65AD\u308A\u307E\u3059\uFF09\u3002
17
+ input,MEMO_FLAG.name,{maxChars:MEMO_MAX_CHARS,label:"\u30E1\u30E2"});if(input.flags.has(ROLE_FLAG.name)&&nonEmpty(input.flags,ROLE_FLAG.name)===void 0){throw new UsageError(`${ROLE_FLAG.name} \u306B\u7A7A\u306E\u5024\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093`,ROLE_HELP)}wikiRole(input);const periods=await readPeriods(input,usage);if(periods===void 0)return input;if(periods.length>0&&(input.flags.has(START_DATE_FLAG.name)||input.flags.has(END_DATE_FLAG.name))){throw new UsageError(`${PERIOD_FILE_FLAG.
18
+ name} \u306B\u671F\u9593\u304C\u3042\u308B\u3068\u304D\u306F ${START_DATE_FLAG.name} / ${END_DATE_FLAG.name} \u3092\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093`,"\u30B5\u30FC\u30D0\u304C\u53C2\u753B\u958B\u59CB\u65E5\u30FB\u7D42\u4E86\u65E5\u3092\u671F\u9593\u306E\u6700\u5C0F\u30FB\u6700\u5927\u3067\u4E0A\u66F8\u304D\u3059\u308B\u305F\u3081\u3001\u6307\u5B9A\u3057\u3066\u3082\u52B9\u304D\u307E\u305B\u3093\u3002")}return withResolved(input,{[PERIODS_KEY]:JSON.stringify(periods)})}function wikiRole(input){
19
+ if(!input.flags.has(WIKI_ROLE_FLAG.name))return void 0;const value=input.flags.get(WIKI_ROLE_FLAG.name);if(typeof value!=="string"||!WIKI_ROLES.includes(value)){throw new UsageError(`${WIKI_ROLE_FLAG.name} \u306F ${WIKI_ROLES.join(" / ")} \u306E\u3069\u3061\u3089\u304B\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044: ${String(value??"")}`,WIKI_ROLE_HELP)}return value}function memberBody(input){const body={};const role=nonEmpty(input.flags,ROLE_FLAG.name);if(role!==void 0)body["role"]=role;
20
+ const wiki=wikiRole(input);if(wiki!==void 0)body["wiki_role"]=wiki;const startDate=isoDate(input,START_DATE_FLAG.name);if(startDate!==void 0)body["start_date"]=startDate;const endDate=isoDate(input,END_DATE_FLAG.name);if(endDate!==void 0)body["end_date"]=endDate;const periods=input.resolved?.[PERIODS_KEY];if(periods!==void 0)body["assignment_periods"]=JSON.parse(periods);const memo=boundedText(input,MEMO_FLAG.name,{maxChars:MEMO_MAX_CHARS,label:"\u30E1\u30E2"});if(memo!==void 0)body["memo"]=memo;
21
+ return body}function membersPath(input,suffix=""){return`/api/v2/projects/${encodeURIComponent(requireResolved(input,"projectId"))}/members${suffix}`}function text(value){return typeof value==="string"&&value.trim()!==""?value:null}async function prepareMember(input,ctx,usage){const ref=singleRef(input,{flag:USER_REF_FLAG.name,label:"\u30E1\u30F3\u30D0\u30FC",usage});const projectId=await ctx.projectId(nonEmpty(input.flags,PROJECT_FLAG.name));const rows=await ctx.resolver.memberRows(projectId);let userId;
22
+ if(ref.toLowerCase()==="me"){userId=(await ctx.resolver.currentUser()).id}else{const refs=rows.flatMap(row2=>{const id=text(row2["user_id"]);if(id===null)return[];const email=text(row2["user_email"]);return[{id,name:text(row2["user_name"])??id,code:null,...email!==null?{aliases:[email]}:{}}]});userId=(await resolveNamed(ref,refs,{flag:"<\u30E1\u30F3\u30D0\u30FC>",label:"\u30E1\u30F3\u30D0\u30FC"})).id}const row=rows.find(member=>member["user_id"]===userId);if(row===void 0){throw new UsageError("\
23
+ \u81EA\u5206\u306F\u3053\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u30E1\u30F3\u30D0\u30FC\u3067\u306F\u3042\u308A\u307E\u305B\u3093","\u30E1\u30F3\u30D0\u30FC\u306F twp project members \u3067\u78BA\u304B\u3081\u3089\u308C\u307E\u3059\u3002")}return withResolved(input,{projectId,userId,memberName:`${text(row["user_name"])??userId}\uFF08${text(row["user_email"])??userId}\u30FB\u5F79\u5272 ${text(row["role"])??"\u4E0D\u660E"}\uFF09`,[MEMBER_ROW_KEY]:JSON.stringify(row)})}var targetNote=verb=>input=>[
24
+ `${verb}\u30E1\u30F3\u30D0\u30FC: ${requireResolved(input,"memberName")}`];var invalidates=(input,ctx)=>{const projectId=input.resolved?.["projectId"];if(projectId!==void 0)ctx.resolver.invalidateMembers(projectId)};var MEMBER_COLUMNS=["user_id","user_name","user_email","role","wiki_role","alias","start_date","end_date"];function memberResult(body,label){if(!isRecord(body)||body["result"]!==true||!isRecord(body["member"])){throw new ApiResponseError(`${label}\u306E\u5FDC\u7B54\u304C\u60F3\u5B9A\u306E\u5F62\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}
25
+ const rest={...body};delete rest["result"];return rest}function memberSummary(body,label){const result=memberResult(body,label);const member=result["member"];const periods=member["assignment_periods"];return{message:result["message"]??null,...pick(member,MEMBER_COLUMNS),periods:Array.isArray(periods)?periods.length:0}}function removeAck(body){if(!isRecord(body)||body["result"]!==true){throw new ApiResponseError("\u30E1\u30F3\u30D0\u30FC\u524A\u9664\u306E\u5FDC\u7B54\u304C\u60F3\u5B9A\u306E\u5F62\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002")}
26
+ return{result:true,message:body["message"]??null}}function describePeriod(period){const mode=period["input_mode"]===void 0||period["input_mode"]===null?"":`\u30FB${String(period["input_mode"])}`;return`${String(period["start_date"]??"?")}\u301C${String(period["end_date"]??"?")}\uFF081\u65E5 ${String(period["daily_hours"]??"?")} \u6642\u9593${mode}\u30FBid ${String(period["id"]??"?")}\uFF09`}function droppedPeriods(current,next){const keep=new Set(next.map(period=>period["id"]).filter(id=>typeof id===
27
+ "string"&&id!==""));return current.filter(isRecord).filter(period=>!(typeof period["id"]==="string"&&keep.has(period["id"])))}function periodNotes(input){const sent=input.resolved?.[PERIODS_KEY];if(sent===void 0)return[];const row=JSON.parse(requireResolved(input,MEMBER_ROW_KEY));const current=Array.isArray(row["assignment_periods"])?row["assignment_periods"]:[];const next=JSON.parse(sent);const dropped=droppedPeriods(current,next);const head=`\u7A3C\u50CD\u671F\u9593\uFF08assignment_periods\uFF09\u306F\u4E38\u3054\u3068\u7F6E\u304D\u63DB\u308F\u308A\u307E\u3059\uFF08\u9001\u308B ${next.
28
+ length} \u4EF6\u3060\u3051\u304C\u6B8B\u308A\u307E\u3059\uFF09\u3002`;if(current.length===0)return[`${head}\u4ECA\u306E\u671F\u9593\u306F\u3042\u308A\u307E\u305B\u3093\u3002`];if(dropped.length===0)return[`${head}\u4ECA\u306E\u671F\u9593\u306F\u3059\u3079\u3066\u540C\u3058 id \u3067\u9001\u3089\u308C\u307E\u3059\u3002`];return[`${head}\u4ECA\u306E\u671F\u9593\u306E\u3046\u3061\u3001\u9001\u308B\u5185\u5BB9\u306B\u540C\u3058 id \u304C\u7121\u3044 ${dropped.length} \u4EF6\u306F\u6D88\u3048\u307E\u3059\uFF08\u540C\u3058\u65E5\u4ED8\u3067\u3082 id \u304C\u7121\u3051\u308C\u3070\u65B0\u3057\u3044 id \u3067\u4F5C\u308A\
29
+ \u76F4\u3055\u308C\u307E\u3059\uFF09:`,...dropped.map(period=>` - ${describePeriod(period)}`)]}var WRITE_FLAGS=[ROLE_FLAG,WIKI_ROLE_FLAG,START_DATE_FLAG,END_DATE_FLAG,PERIOD_FILE_FLAG,MEMO_FLAG,PROJECT_FLAG,USER_REF_FLAG];var createOperation={name:"create",summary:"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306B\u30E1\u30F3\u30D0\u30FC\u3092\u8FFD\u52A0\u3059\u308B\uFF08\u7A3C\u50CD\u671F\u9593\u3064\u304D\u30FB\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u7BA1\u7406\u8005\uFF09",usage:"twp project member c\
30
+ reate <\u30E6\u30FC\u30B6\u30FC> --role <\u5F79\u5272> [--wiki-role <admin|member>] [--project <\u30B3\u30FC\u30C9|ID>] [--start-date <YYYY-MM-DD>] [--end-date <YYYY-MM-DD>] [--period-file <\u30D1\u30B9>] [--memo <\u6587\u5B57\u5217>]",description:`--role \u306F\u5FC5\u9808\u3067\u3059\u3002\u7A3C\u50CD\u671F\u9593\u3092\u5FC5\u9808\u306B\u3057\u3066\u3044\u308B\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3067\u306F --period-file \u3082\u8981\u308A\u307E\u3059\uFF08\u30B5\u30FC\u30D0\u304C\u65AD\u308A\u307E\u3059\uFF09\u3002
30
31
  \u8FFD\u52A0\u306F\u691C\u7D22\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u306E\u6A29\u9650\u66F4\u65B0\u3092\u4F34\u3044\u307E\u3059\u304C\u3001\u30B5\u30FC\u30D0\u306F\u975E\u540C\u671F\u3067\u884C\u3044\u307E\u3059\uFF08\u5FDC\u7B54\u306F\u5F85\u305F\u305A\u306B\u8FD4\u308A\u307E\u3059\uFF09\u3002
31
32
 
32
33
  ${ROLE_HELP}
33
34
 
35
+ ${WIKI_ROLE_HELP}
36
+
34
37
  ${PERIOD_HELP}
35
38
 
36
39
  ${USER_REF_HELP}`,forbidden:FORBIDDEN,rejected:roleRejected,flags:WRITE_FLAGS,async prepare(input,ctx){const usage="twp project member create help";if(!input.flags.has(ROLE_FLAG.name))throw new UsageError(`${ROLE_FLAG.name} \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044`,ROLE_HELP);const checked=await checkFields(input,usage);const ref=singleRef(input,{flag:USER_REF_FLAG.name,label:"\u30E6\u30FC\u30B6\u30FC",usage});const projectId=await ctx.projectId(nonEmpty(input.flags,PROJECT_FLAG.name));
37
- const user=await ctx.resolver.user(ref);return withResolved(checked,{projectId,userId:user.id})},plan:input=>({method:"POST",path:membersPath(input),body:{user_id:requireResolved(input,"userId"),...memberBody(input)}}),invalidates,summarize:body=>memberSummary(body,"\u30E1\u30F3\u30D0\u30FC\u8FFD\u52A0"),raw:body=>memberResult(body,"\u30E1\u30F3\u30D0\u30FC\u8FFD\u52A0")};var updateOperation={name:"update",summary:"\u30E1\u30F3\u30D0\u30FC\u306E\u5F79\u5272\u30FB\u53C2\u753B\u671F\u9593\u30FB\u7A3C\u50CD\u671F\u9593\u30FB\u30E1\u30E2\u3092\u5909\u3048\u308B\uFF08\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u7BA1\u7406\u8005\uFF09",
38
- usage:"twp project member update <\u30E1\u30F3\u30D0\u30FC> [--project <\u30B3\u30FC\u30C9|ID>] [--role <\u5F79\u5272>] [--start-date <YYYY-MM-DD>] [--end-date <YYYY-MM-DD>] [--period-file <\u30D1\u30B9>] [--memo <\u6587\u5B57\u5217>]",description:`\u6307\u5B9A\u3057\u305F\u9805\u76EE\u3060\u3051\u3092\u9001\u308A\u307E\u3059\uFF08\u6307\u5B9A\u3057\u306A\u304B\u3063\u305F\u9805\u76EE\u306F\u5909\u308F\u308A\u307E\u305B\u3093\uFF09\u3002\u5909\u66F4\u3059\u308B\u9805\u76EE\u30921\u3064\u3082\u6307\u5B9A\u3057\u306A\u3044\u3068\u30A8\u30E9\u30FC\u306B\u306A\u308A\u307E\u3059\u3002
40
+ const user=await ctx.resolver.user(ref);return withResolved(checked,{projectId,userId:user.id})},plan:input=>({method:"POST",path:membersPath(input),body:{user_id:requireResolved(input,"userId"),...memberBody(input)}}),invalidates,summarize:body=>memberSummary(body,"\u30E1\u30F3\u30D0\u30FC\u8FFD\u52A0"),raw:body=>memberResult(body,"\u30E1\u30F3\u30D0\u30FC\u8FFD\u52A0")};var updateOperation={name:"update",summary:"\u30E1\u30F3\u30D0\u30FC\u306E\u5F79\u5272\u30FBWiki \u6A29\u9650\u30FB\u53C2\u753B\u671F\u9593\u30FB\u7A3C\u50CD\u671F\u9593\u30FB\u30E1\u30E2\u3092\u5909\u3048\u308B\uFF08\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u7BA1\u7406\u8005\uFF09",
41
+ usage:"twp project member update <\u30E1\u30F3\u30D0\u30FC> [--project <\u30B3\u30FC\u30C9|ID>] [--role <\u5F79\u5272>] [--wiki-role <admin|member>] [--start-date <YYYY-MM-DD>] [--end-date <YYYY-MM-DD>] [--period-file <\u30D1\u30B9>] [--memo <\u6587\u5B57\u5217>]",description:`\u6307\u5B9A\u3057\u305F\u9805\u76EE\u3060\u3051\u3092\u9001\u308A\u307E\u3059\uFF08\u6307\u5B9A\u3057\u306A\u304B\u3063\u305F\u9805\u76EE\u306F\u5909\u308F\u308A\u307E\u305B\u3093\uFF09\u3002\u5909\u66F4\u3059\u308B\u9805\u76EE\u30921\u3064\u3082\u6307\u5B9A\u3057\u306A\u3044\u3068\u30A8\u30E9\u30FC\u306B\u306A\u308A\u307E\u3059\u3002
39
42
  \u26A0\uFE0F --period-file \u3092\u6307\u5B9A\u3059\u308B\u3068\u3001\u7A3C\u50CD\u671F\u9593\u306F\u9001\u3063\u305F\u5185\u5BB9\u3067\u4E38\u3054\u3068\u7F6E\u304D\u63DB\u308F\u308A\u307E\u3059\uFF08\u5DEE\u5206\u3067\u306F\u3042\u308A\u307E\u305B\u3093\uFF09\u3002
40
43
  \u9001\u308B\u524D\u306B\u4ECA\u306E\u671F\u9593\u3092\u8AAD\u307F\u3001\u6D88\u3048\u308B\u671F\u9593\u3092 stderr \u306B\u51FA\u3057\u307E\u3059\uFF08--dry-run \u3067\u3082\u51FA\u307E\u3059\uFF09\u3002
41
44
  \u6B8B\u3057\u305F\u3044\u671F\u9593\u306F id \u3092\u4ED8\u3051\u305F\u307E\u307E\u9001\u3063\u3066\u304F\u3060\u3055\u3044\uFF08twp project members --output json \u306E assignment_periods\uFF09\u3002
@@ -43,10 +46,12 @@ usage:"twp project member update <\u30E1\u30F3\u30D0\u30FC> [--project <\u30B3\u
43
46
 
44
47
  ${ROLE_HELP}
45
48
 
49
+ ${WIKI_ROLE_HELP}
50
+
46
51
  ${PERIOD_HELP}
47
52
 
48
- ${MEMBER_REF_HELP}`,forbidden:FORBIDDEN,rejected:roleRejected,flags:WRITE_FLAGS,async prepare(input,ctx){const usage="twp project member update help";const changed=[ROLE_FLAG,START_DATE_FLAG,END_DATE_FLAG,PERIOD_FILE_FLAG,MEMO_FLAG].some(flag=>input.flags.has(flag.name));if(!changed)throw new UsageError("\u5909\u66F4\u3059\u308B\u9805\u76EE\u30921\u3064\u4EE5\u4E0A\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",usage);return prepareMember(await checkFields(input,usage),ctx,usage)},plan:input=>({
49
- method:"PUT",path:membersPath(input,`/${userPath(input)}`),body:memberBody(input)}),plannedNotes:input=>[...targetNote("\u5909\u66F4\u3059\u308B")(input),...periodNotes(input)],invalidates,summarize:body=>memberSummary(body,"\u30E1\u30F3\u30D0\u30FC\u66F4\u65B0"),raw:body=>memberResult(body,"\u30E1\u30F3\u30D0\u30FC\u66F4\u65B0")};var deleteOperation={name:"delete",summary:"\u30E1\u30F3\u30D0\u30FC\u3092\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u304B\u3089\u5916\u3059\uFF08\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u7BA1\u7406\u8005\u30FB--yes \u304C\u8981\u308B\uFF09",
53
+ ${MEMBER_REF_HELP}`,forbidden:FORBIDDEN,rejected:roleRejected,flags:WRITE_FLAGS,async prepare(input,ctx){const usage="twp project member update help";const changed=[ROLE_FLAG,WIKI_ROLE_FLAG,START_DATE_FLAG,END_DATE_FLAG,PERIOD_FILE_FLAG,MEMO_FLAG].some(flag=>input.flags.has(flag.name));if(!changed)throw new UsageError("\u5909\u66F4\u3059\u308B\u9805\u76EE\u30921\u3064\u4EE5\u4E0A\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",usage);return prepareMember(await checkFields(input,usage),ctx,usage)},
54
+ plan:input=>({method:"PUT",path:membersPath(input,`/${userPath(input)}`),body:memberBody(input)}),plannedNotes:input=>[...targetNote("\u5909\u66F4\u3059\u308B")(input),...periodNotes(input)],invalidates,summarize:body=>memberSummary(body,"\u30E1\u30F3\u30D0\u30FC\u66F4\u65B0"),raw:body=>memberResult(body,"\u30E1\u30F3\u30D0\u30FC\u66F4\u65B0")};var deleteOperation={name:"delete",summary:"\u30E1\u30F3\u30D0\u30FC\u3092\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u304B\u3089\u5916\u3059\uFF08\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u7BA1\u7406\u8005\u30FB--yes \u304C\u8981\u308B\uFF09",
50
55
  usage:"twp project member delete <\u30E1\u30F3\u30D0\u30FC> [--project <\u30B3\u30FC\u30C9|ID>] --yes",description:"\u30E1\u30F3\u30D0\u30FC\u306E\u884C\u3092\u6D88\u3057\u307E\u3059\uFF08\u7A3C\u50CD\u671F\u9593\u30FB\u30E1\u30E2\u30FB\u5225\u540D\u3082\u6D88\u3048\u307E\u3059\u3002\u5143\u306B\u623B\u3059\u64CD\u4F5C\u306F\u3042\u308A\u307E\u305B\u3093\uFF09\u3002\n\u305D\u306E\u30E1\u30F3\u30D0\u30FC\u304C\u62C5\u5F53\u3057\u3066\u3044\u308B\u30BF\u30B9\u30AF\u306E\u62C5\u5F53\u8005\u306F\u5909\u308F\u308A\u307E\u305B\u3093\uFF08\u30B5\u30FC\u30D0\u306F\u30BF\u30B9\u30AF\u306B\u89E6\u308C\u307E\u305B\u3093\uFF09\u3002\n\u53C2\u753B\u3092\u7D42\u3048\u308B\u3060\u3051\u306A\u3089\u3001\u5C65\u6B74\u304C\u6B8B\u308B twp project member update <\u30E1\u30F3\u30D0\u30FC> --end-date <YYYY-MM-DD> \u3092\u4F7F\u3063\u3066\u304F\u3060\u3055\u3044\u3002\n\n"+
51
56
  MEMBER_REF_HELP,destructive:true,forbidden:FORBIDDEN,flags:[PROJECT_FLAG,USER_REF_FLAG],prepare:(input,ctx)=>prepareMember(input,ctx,"twp project member delete help"),plan:input=>({method:"DELETE",path:membersPath(input,`/${userPath(input)}`)}),plannedNotes:input=>[`\u5916\u3059\u30E1\u30F3\u30D0\u30FC: ${requireResolved(input,"memberName")}\u3002\u62C5\u5F53\u4E2D\u306E\u30BF\u30B9\u30AF\u306E\u62C5\u5F53\u8005\u306F\u5909\u308F\u308A\u307E\u305B\u3093\u3002`],invalidates,summarize:removeAck,raw:removeAck};
52
57
  function roleChange(name){const promote=name==="promote";const label=promote?"\u7BA1\u7406\u8005\u3078\u306E\u6607\u683C":"\u30E1\u30F3\u30D0\u30FC\u3078\u306E\u964D\u683C";return{name,summary:promote?"\u30E1\u30F3\u30D0\u30FC\u3092\u7BA1\u7406\u8005\uFF08manager\uFF09\u306B\u6607\u683C\u3059\u308B\uFF08\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u7BA1\u7406\u8005\uFF09":"\u7BA1\u7406\u8005\uFF08manager\uFF09\u3092\u30E1\u30F3\u30D0\u30FC\u306B\u964D\u683C\u3059\u308B\uFF08\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u7BA1\u7406\u8005\uFF09",
@@ -57,7 +62,7 @@ T",path:membersPath(input,`/${userPath(input,`/${name}`)}`)}),plannedNotes:targe
57
62
  <\u30B3\u30FC\u30C9|ID>]",description:"\u81EA\u5206\uFF08\u30ED\u30B0\u30A4\u30F3\u4E2D\u306E\u30E6\u30FC\u30B6\u30FC\uFF09\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u5185\u306E\u5225\u540D\u3092\u8A2D\u5B9A\u3057\u307E\u3059\u3002\u30E1\u30F3\u30D0\u30FC\u306A\u3089\u8AB0\u3067\u3082\u4F7F\u3048\u307E\u3059\u3002\n\u5225\u540D\u306F twp task \u306E --assignee \u3067\u30E1\u30F3\u30D0\u30FC\u3092\u6307\u5B9A\u3059\u308B\u3068\u304D\u306B\u4F7F\u3048\u307E\u3059\uFF08twp project member \u306E\u5BFE\u8C61\u6307\u5B9A\u306B\u306F\u4F7F\u3048\u307E\u305B\u3093\uFF09\u3002",
58
63
  flags:[CLEAR_FLAG,PROJECT_FLAG],async prepare(input,ctx){const usage="twp project member alias help";if(input.args.length>1)throw new UsageError(`\u53D7\u3051\u53D6\u308C\u308B\u5225\u540D\u306F1\u3064\u3060\u3051\u3067\u3059: ${input.args.slice(1).join(" ")}`,usage);const alias=input.args[0];if(input.flags.has(CLEAR_FLAG.name)&&alias!==void 0)throw new UsageError(`\u5225\u540D\u3068 ${CLEAR_FLAG.name} \u306F\u540C\u6642\u306B\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093`,usage);if(!input.flags.has(
59
64
  CLEAR_FLAG.name)){if(alias===void 0||alias.trim()==="")throw new UsageError(`\u5225\u540D\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u6D88\u3059\u306A\u3089 ${CLEAR_FLAG.name}\uFF09`,usage);if([...alias].length>ALIAS_MAX_CHARS)throw new UsageError(`\u5225\u540D\u304C\u9577\u3059\u304E\u307E\u3059\uFF08${[...alias].length} \u6587\u5B57\u30FB\u4E0A\u9650 ${ALIAS_MAX_CHARS} \u6587\u5B57\uFF09`,usage)}return withResolved(input,{projectId:await ctx.projectId(nonEmpty(input.flags,PROJECT_FLAG.
60
- name))})},plan:input=>({method:"PATCH",path:membersPath(input,"/me/alias"),body:{alias:input.flags.has(CLEAR_FLAG.name)?null:input.args[0]}}),invalidates,summarize:body=>memberSummary(body,"\u5225\u540D\u306E\u66F4\u65B0"),raw:body=>memberResult(body,"\u5225\u540D\u306E\u66F4\u65B0")};var projectMemberResource={name:"member",summary:"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u30E1\u30F3\u30D0\u30FC\u306E\u30A2\u30B5\u30A4\u30F3\uFF08\u8FFD\u52A0\u30FB\u5F79\u5272\u3068\u7A3C\u50CD\u671F\u9593\u306E\u5909\u66F4\u30FB\u524A\u9664\u30FB\u6607\u683C\u30FB\u964D\u683C\u30FB\u81EA\u5206\u306E\u5225\u540D\uFF09",
65
+ name))})},plan:input=>({method:"PATCH",path:membersPath(input,"/me/alias"),body:{alias:input.flags.has(CLEAR_FLAG.name)?null:input.args[0]}}),invalidates,summarize:body=>memberSummary(body,"\u5225\u540D\u306E\u66F4\u65B0"),raw:body=>memberResult(body,"\u5225\u540D\u306E\u66F4\u65B0")};var projectMemberResource={name:"member",summary:"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u30E1\u30F3\u30D0\u30FC\u306E\u30A2\u30B5\u30A4\u30F3\uFF08\u8FFD\u52A0\u30FB\u5F79\u5272\u3068 Wiki \u6A29\u9650\u3068\u7A3C\u50CD\u671F\u9593\u306E\u5909\u66F4\u30FB\u524A\u9664\u30FB\u6607\u683C\u30FB\u964D\u683C\u30FB\u81EA\u5206\u306E\u5225\u540D\uFF09",
61
66
  operations:[createOperation,updateOperation,deleteOperation,roleChange("promote"),roleChange("demote"),aliasOperation]};async function projectArg(input,ctx,usage){const[ref,...rest]=input.args;if(rest.length>0){throw new UsageError(`\u53D7\u3051\u53D6\u308C\u308B\u5F15\u6570\u306F\u30D7\u30ED\u30B8\u30A7\u30AF\u30C81\u3064\u3060\u3051\u3067\u3059: ${rest.join(" ")}`,usage)}return withResolved(input,{projectId:await ctx.projectId(ref)})}function projectPath(input,suffix){return`/api/v2/projects/${encodeURIComponent(requireResolved(input,"projectId"))}/${suffix}`}function managerOnly(what){return body=>body?.error===
62
67
  "permission_denied"&&(body.error_description??"").includes("\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u7BA1\u7406\u8005")?`\u3053\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E${what}\u3092\u8AAD\u3080\u6A29\u9650\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u7BA1\u7406\u8005\uFF08manager\uFF09\u304B\u30C6\u30CA\u30F3\u30C8\u7BA1\u7406\u8005\u3060\u3051\u304C\u8AAD\u3081\u307E\u3059\u3002`:void 0}var RISK_USAGE="twp project risk [<ID|\u30B3\u30FC\u30C9>]";function riskData(body){
63
68
  const data=dataOf(body,"\u30EA\u30B9\u30AF\u5206\u6790");if(!isRecord(data))throw new ApiResponseError("\u30EA\u30B9\u30AF\u5206\u6790\u306E\u5FDC\u7B54\u306E data \u304C\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002");return data}function riskRows(body){const data=riskData(body);const rows=[];for(const[key,level]of[["high_risk_tasks","high"],["medium_risk_tasks","medium"]]){for(const task of listIn(
@@ -137,8 +142,8 @@ projectOf(body,"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u66F4\u65B0"),COLUMNS
137
142
  const current=isRecord(body)&&typeof body["current_code"]==="string"?body["current_code"]:"\uFF08\u4E0D\u660E\uFF09";if(!changeable){const max=isRecord(body)&&typeof body["max_tasks"]==="number"?`\uFF08\u4E0A\u9650 ${body["max_tasks"]} \u4EF6\uFF09`:"";throw new UsageError(`\u3053\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306F\u30BF\u30B9\u30AF\u304C ${count} \u4EF6\u3042\u308B\u305F\u3081\u3001\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u30B3\u30FC\u30C9\u3092\u5909\u66F4\u3067\u304D\u307E\u305B\u3093${max}\
138
143
  \u3002`,"\u30B3\u30FC\u30C9\u3092\u5909\u3048\u305A\u306B\u3001\u540D\u524D\uFF08--name\uFF09\u3060\u3051\u3092\u5909\u3048\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u3059\u3002")}if(current===next)return{notes:[`\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u30B3\u30FC\u30C9\u306F ${next} \u306E\u307E\u307E\u3067\u3059\uFF08\u30BF\u30B9\u30AF\u30AD\u30FC\u306F\u5909\u308F\u308A\u307E\u305B\u3093\uFF09\u3002`],warnings:[]};if(count===0)return{notes:[`\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u30B3\u30FC\u30C9\u3092 ${current}\
139
144
  \u304B\u3089 ${next} \u306B\u5909\u3048\u307E\u3059\uFF08\u30BF\u30B9\u30AF\u304C\u7121\u3044\u305F\u3081\u3001\u66F8\u304D\u63DB\u308F\u308B\u30AD\u30FC\u306F\u3042\u308A\u307E\u305B\u3093\uFF09\u3002`],warnings:[]};return{notes:[],warnings:[`\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u30B3\u30FC\u30C9\u3092 ${current} \u304B\u3089 ${next} \u306B\u5909\u3048\u308B\u3068\u3001\u3053\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u30BF\u30B9\u30AF ${count} \u4EF6\u306E\u30AD\u30FC\u304C\u66F8\u304D\u63DB\u308F\u308A\u307E\u3059\uFF08${current}\
140
- -1 \u2192 ${next}-1\uFF09\u3002\u5916\u90E8\u306B\u8CBC\u3063\u305F\u30AD\u30FC\u3084\u30D6\u30E9\u30F3\u30C1\u540D\u306F\u8FFD\u968F\u3057\u307E\u305B\u3093\u3002`]}}var projectWriteOperations=[createOperation2,updateOperation2];var LIST_COLUMNS=["id","code","name","status","effective_status"];var GET_COLUMNS=["id","code","name","status","effective_status","display_flg","closed_flg","task_enabled_flg","wiki_default_content_format","start_date","end_date","created_at","updated_at"];var MEMBER_COLUMNS2=["user_id","user_name","user_email","role","alias","department_name"];function memberItems(body){const list=isRecord(body)?body["list"]:void 0;if(!Array.isArray(list)){throw new ApiResponseError("\u30E1\u30F3\u30D0\u30FC\u4E00\u89A7\u306E\u5FDC\u7B54\u306B list \u914D\u5217\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\
141
- \u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002")}return list}var listPaging=envelopePaging({label:"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u4E00\u89A7"});function listItems(body){return listPaging.items(body)}function projectObject(body){const project=isRecord(body)?body["project"]:void 0;if(!isRecord(project)){throw new ApiResponseError("\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u8A73\u7D30\u306E\u5FDC\u7B54\u306B project \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002")}
145
+ -1 \u2192 ${next}-1\uFF09\u3002\u5916\u90E8\u306B\u8CBC\u3063\u305F\u30AD\u30FC\u3084\u30D6\u30E9\u30F3\u30C1\u540D\u306F\u8FFD\u968F\u3057\u307E\u305B\u3093\u3002`]}}var projectWriteOperations=[createOperation2,updateOperation2];var LIST_COLUMNS=["id","code","name","status","effective_status"];var GET_COLUMNS=["id","code","name","status","effective_status","display_flg","closed_flg","task_enabled_flg","wiki_default_content_format","start_date","end_date","created_at","updated_at"];var MEMBER_COLUMNS2=["user_id","user_name","user_email","role","wiki_role","alias","department_name"];function memberItems(body){const list=isRecord(body)?body["list"]:void 0;if(!Array.isArray(list)){throw new ApiResponseError("\u30E1\u30F3\u30D0\u30FC\u4E00\u89A7\u306E\u5FDC\u7B54\u306B list\
146
+ \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 listPaging=envelopePaging({label:"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u4E00\u89A7"});function listItems(body){return listPaging.items(body)}function projectObject(body){const project=isRecord(body)?body["project"]:void 0;if(!isRecord(project)){throw new ApiResponseError("\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u8A73\u7D30\u306E\u5FDC\u7B54\u306B project \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002")}
142
147
  return project}var MANHOURS_USAGE="twp project manhours [<ID|\u30B3\u30FC\u30C9>] [--from <YYYY-MM-DD>] [--to <YYYY-MM-DD>]";var projectDomain={name:"project",summary:"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u4E00\u89A7\u30FB\u8A73\u7D30\u30FB\u4F5C\u6210\u30FB\u66F4\u65B0\u30FB\u30E1\u30F3\u30D0\u30FC\u306E\u30A2\u30B5\u30A4\u30F3\u30FB\u5DE5\u6570\u30FB\u30EA\u30B9\u30AF\u5206\u6790\u30FB\u53CE\u652F\u5206\u6790\u30FB\u5DE5\u7A0B",operations:[{name:"list",summary:"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3092\u4E00\u89A7\u3059\u308B",
143
148
  usage:"twp project list [--all] [--limit <\u4EF6\u6570>] [--cursor <\u30AB\u30FC\u30BD\u30EB>] [--keyword <\u8A9E>] [--status <\u72B6\u614B>]",description:"--output json \u306F API \u304C\u8FD4\u3059\u5168\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u51FA\u3057\u307E\u3059\u3002\n--output table / text / tsv \u306F\u8981\u7D04\u5217\uFF08id / code / name / status / effective_status\uFF09\u3067\u3059\u3002\n\u6B32\u3057\u3044\u5217\u3060\u3051\u3092\u6A5F\u68B0\u51E6\u7406\u3057\u305F\u3044\u3068\u304D\u306F --query \u3067\u9078\u3093\u3067\u304F\u3060\u3055\u3044\uFF08--query \u306F\u751F\u30C7\u30FC\u30BF\u306B\u5BFE\u3057\u3066\u8A55\u4FA1\u3055\u308C\u307E\u3059\uFF09\u3002\n\n"+
144
149
  LIST_PAGING_HELP,flags:[...LIST_FLAGS,{name:"--keyword",summary:"\u30B3\u30FC\u30C9\u30FB\u540D\u79F0\u306E\u90E8\u5206\u4E00\u81F4\u3067\u7D5E\u308A\u8FBC\u3080",takesValue:true,placeholder:"<\u8A9E>"},{name:"--status",summary:"\u30B9\u30C6\u30FC\u30BF\u30B9\u3067\u7D5E\u308A\u8FBC\u3080\uFF08\u4F8B: active\uFF09",takesValue:true,placeholder:"<\u72B6\u614B>"}],paging:listPaging,plan(input){if(input.args.length>0){throw new UsageError(`list \u306F\u4F4D\u7F6E\u5F15\u6570\u3092\u53D6\u308A\u307E\u305B\u3093: ${input.
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{createRuntime}from"./chunk-JQBXLZTJ.js";import{findExecutable}from"./chunk-PMOUHEJQ.js";import{httpFetch}from"./chunk-J7QYPKVK.js";import{describeAutoUpdate}from"./chunk-CH6QU76P.js";import{PACKAGE_NAME,UPDATE_COMMAND,compareVersionCores,isBelowMinSupported,parseVersionCore}from"./chunk-DXXFUNYN.js";import{stripTerminalControls}from"./chunk-NHYMHCAT.js";import{execFile}from"child_process";import fs from"fs";import path from"path";function resolveNpmCommand(deps={}){const platform=deps.platform??process.platform;const env=deps.env??process.env;const npmPath=(deps.find??(name=>findExecutable(name,{env,platform})))("npm");if(npmPath===null)return null;if(platform!=="win32")return{file:npmPath,prefix:[]};if(/\.exe$/i.test(npmPath))return{file:npmPath,prefix:[]};const cliJs=path.win32.join(path.win32.dirname(npmPath),"node_modules","npm","bin","npm-cli.js");return(deps.exists??fs.existsSync)(cliJs)?{file:deps.nodePath??process.
3
+ import{createRuntime}from"./chunk-TVTJRNUC.js";import{findExecutable}from"./chunk-PMOUHEJQ.js";import{httpFetch}from"./chunk-J7QYPKVK.js";import{describeAutoUpdate}from"./chunk-CH6QU76P.js";import{PACKAGE_NAME,UPDATE_COMMAND,compareVersionCores,isBelowMinSupported,parseVersionCore}from"./chunk-DXXFUNYN.js";import{stripTerminalControls}from"./chunk-NHYMHCAT.js";import{execFile}from"child_process";import fs from"fs";import path from"path";function resolveNpmCommand(deps={}){const platform=deps.platform??process.platform;const env=deps.env??process.env;const npmPath=(deps.find??(name=>findExecutable(name,{env,platform})))("npm");if(npmPath===null)return null;if(platform!=="win32")return{file:npmPath,prefix:[]};if(/\.exe$/i.test(npmPath))return{file:npmPath,prefix:[]};const cliJs=path.win32.join(path.win32.dirname(npmPath),"node_modules","npm","bin","npm-cli.js");return(deps.exists??fs.existsSync)(cliJs)?{file:deps.nodePath??process.
4
4
  execPath,prefix:[cliJs]}:null}var DEFAULT_REGISTRY="https://registry.npmjs.org";function registryBase(env=process.env){const configured=env["npm_config_registry"]?.trim();if(configured===void 0||configured==="")return DEFAULT_REGISTRY;try{const url=new URL(configured);if(url.protocol!=="https:"&&url.protocol!=="http:")return DEFAULT_REGISTRY}catch{return DEFAULT_REGISTRY}return configured.replace(/\/+$/,"")}async function fetchFromRegistry(fetchImpl=httpFetch,env=process.env){const url=`${registryBase(env)}/${PACKAGE_NAME.replace(
5
5
  "/","%2f")}`;const res=await fetchImpl(url,{headers:{Accept:"application/vnd.npm.install-v1+json"},signal:AbortSignal.timeout(5e3)});if(!res.ok){throw new Error(`registry \u304C ${res.status} \u3092\u8FD4\u3057\u307E\u3057\u305F`)}const body=await res.json();const latest=body["dist-tags"]?.latest;if(typeof latest!=="string"||parseVersionCore(latest)===null){throw new Error("registry \u306E\u5FDC\u7B54\u306B dist-tags.latest \u304C\u3042\u308A\u307E\u305B\u3093")}return{version:latest.trim(),source:"\
6
6
  registry"}}async function fetchFromNpmCli(){const npm=resolveNpmCommand();if(npm===null){throw new Error("npm \u304C PATH \u306B\u898B\u3064\u304B\u308A\u307E\u305B\u3093")}const stdout=await new Promise((resolve,reject)=>{execFile(npm.file,[...npm.prefix,"view",PACKAGE_NAME,"version","--json"],{timeout:15e3,windowsHide:true},(error,out)=>error?reject(error):resolve(out))});const parsed=JSON.parse(stdout.trim());const latest=typeof parsed==="string"?parsed:null;if(latest===null||parseVersionCore(