@tocca-systems/twp-cli 0.69.0 → 0.70.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,16 @@
11
11
  `CHANGELOG.md` に残してあります。顧客向けの履歴は public 公開以降を対象とします。
12
12
  -->
13
13
 
14
+ ## 0.70.0
15
+
16
+ `twp task-loop settings pull|push` で、AI の割当・注入文面・ループ間隔などのループ設定をファイルから確認・変更できるようになりました。
17
+
18
+ ループの定期実行の定義を CLI から一覧・登録・更新・削除できるようになりました(`twp task-loop schedule list|push|delete`)。上限やゲートなどの全体設定も `schedule config pull|push` で受け渡せます。書き込む操作は差分を確認してから `--yes` で確定します。
19
+
20
+ `twp wiki tree` / `tags` / `versions` / `version` / `diff` / `backlinks` / `linked-tasks` で、wiki の親子構造・タグ・版の履歴と差分・被リンク・関連タスクを読めるようになりました。
21
+
22
+ ループ用スキルをサーバに登録したとき、本文に `$ARGUMENTS` が無いと引数が渡らなかった問題を修正しました。
23
+
14
24
  ## 0.69.0
15
25
 
16
26
  `twp task-loop skill list` / `show` / `delete` で、サーバに登録したループ用スキルの一覧・本文の表示・削除ができるようになりました。
package/README.md CHANGED
@@ -68,7 +68,7 @@ TWP(Tocca Working Platform)を、ターミナルから使うための CLI
68
68
  | **できる** | `twp budget` による予実管理(年度の予実ダッシュボード・サマリー・部署行の内訳と未割当・CSV 出力、目標の一覧・JSON でのまとめ登録・前年度からのコピー・CSV の取り込みと雛形、プロジェクトの部署按分の参照と全件置換)。分析の権限と予実管理ページの閲覧対象への登録が要り、目標の書き込みは全体管理者か分析の権限が「管理者」の人です |
69
69
  | **できる** | `twp workflow` による、自分が申請できる申請書・申請書の定義(管理者)・自分の申請・承認履歴・自分の承認待ちの参照(申請書は名前でも指定できます)と、申請の起票・提出・更新・削除、承認・却下・差し戻し・取下げ、承認画面の AIチェックの結果の表示と承認者コメント |
70
70
  | **できる** | `twp report` による自分のレポート(日報)の一覧(フォーマット・状態・語で絞り込み)・詳細と、下書きの作成(フォーマットの入力項目から雛形を出せます)・更新・提出・AI アドバイス、使えるレポートフォーマットの一覧。確認者としての一覧(未読・書いた人・作成日で絞り込み)・既読・コメント・確認済み・確認の取り消し・差し戻し |
71
- | **できる** | `twp wiki` / `twp note` / `twp meeting` による、wiki ページ(親ページ直下の子の一覧を含む)・ノート・議事録(開催日の期間で絞り込み)の一覧と、本文を `--output text` で文書として読むこと。wiki ページの作成・更新・移動・削除 |
71
+ | **できる** | `twp wiki` / `twp note` / `twp meeting` による、wiki ページ(親ページ直下の子の一覧を含む)・ノート・議事録(開催日の期間で絞り込み)の一覧と、本文を `--output text` で文書として読むこと。wiki ページの作成・更新・移動・削除と、親子構造・タグ・版の履歴と差分・被リンク・関連タスクの読み取り |
72
72
  | **できる** | `twp outlook` / `twp teams` / `twp onedrive` による Microsoft 365 の読み取り(メール・添付・予定、Teams のチーム・チャネル・チャット・メッセージ・スレッド返信・自分宛てメンション、OneDrive のファイルの一覧・情報・ダウンロード)。TWP に Microsoft アカウントでログインしたことがあるユーザーが対象です。書き込みはメールの送信・返信・全員返信・転送(`twp outlook mail send` / `reply` / `reply-all` / `forward`)、Teams のチャット送信・チャネル投稿・スレッド返信(`twp teams message send` / `reply send`)、予定の作成・更新・削除(`twp outlook event create` / `update` / `delete`)、共有リンクの作成(`twp onedrive link create`)ができ(いずれも `--yes` が必要)、OneDrive へのアップロード(`twp onedrive item upload`)もできます |
73
73
  | **できる** | `twp task-loop` による、TWP のタスクキューを手元の AI CLI に実行させる常駐ループ |
74
74
  | **できる** | `twp agent-loop` による、エージェントループのキューの一覧・投入・更新・先頭への移動・削除と、期間を指定した実行履歴の参照。更新・移動・削除はテナントの管理者の権限が要ります |
@@ -1335,6 +1335,13 @@ twp report reject <レポートID> --comment-file reason.md --yes # 差し戻
1335
1335
  twp wiki list [--project <コード|ID>] [--status <draft|published>] [--tag <タグ>] [--keyword <語>] [--all]
1336
1336
  twp wiki list [--project <コード|ID>] --parent <ページID>|root # 親ページ直下の子(root で最上位)
1337
1337
  twp wiki get <ページID> --output text
1338
+ twp wiki tree [--project <コード|ID>] # 親子構造(本文は出さない)
1339
+ twp wiki tags [--project <コード|ID>]
1340
+ twp wiki versions <ページID> [--limit <件数>] # 版の履歴(新しい順・最大100件)
1341
+ twp wiki version <ページID> <版> --output text
1342
+ twp wiki diff <ページID> <版1> [<版2>] # 版2を省くといまのページと比べる
1343
+ twp wiki backlinks <ページID> # このページへリンクしているページ(前後の抜粋つき)
1344
+ twp wiki linked-tasks <ページID> # このページに紐づいたタスク
1338
1345
  twp wiki create [--project <コード|ID>] --title <件名> --content-file <パス|-> [--content-format <html|markdown>] [--parent <ページID>] [--status <draft|published>] [--tag <タグ>]...
1339
1346
  twp wiki update <ページID> [--title <件名>] [--content-file <パス|->] [--content-format <html|markdown>] [--status <draft|published>] [--tag <タグ>]... [--clear-tags] [--if-version <版>]
1340
1347
  twp wiki move <ページID> [--parent <ページID>|root] [--sort-order <順>]
@@ -1348,6 +1355,7 @@ twp meeting get <議事録ID> --output text
1348
1355
  - `get --output text` は本文を読むための文書(見出し・メタ情報・本文)を出します。HTML と議事録エディタの内容は平文にし、見出し・箇条書き・リンクは Markdown 風に残します。サーバの原文は `--output json` で取れます
1349
1356
  - 議事録の文書にはアジェンダ・議事メモ・決定事項・アクションアイテム・AI 要約が入ります。文字起こしは長いので入れません(`--query transcript` で取れます)
1350
1357
  - wiki はプロジェクトごとです(`--project` を省くと既定のプロジェクト)。`--parent` は他の絞り込み・ページングと併用できません
1358
+ - `wiki tree` は `--output json` でも本文を出しません(構造だけを1往復で読むため)。`wiki diff` は本文を平文にしてから行単位で比べるので、HTML のタグだけの違いは出ません。件名が変わっていれば件名の違いも出します
1351
1359
  - `twp meeting list` の `--from` / `--to` は開催日(日本時間の日付)の期間で、両端の日を含み、片方だけでも指定できます。`--keyword` はタイトルの語です
1352
1360
  - `twp note get` で開くと、画面で開いたときと同じくノートの閲覧数が1増えます
1353
1361
  - wiki の本文は `--content-file` のファイル(`-` で標準入力)から読み、加工せずに送ります。Markdown で書いた本文は `--content-format markdown` を付けて作成してください(画面で Markdown として表示されます)。省くと HTML のページになり(そのことを stderr で知らせます)、Markdown を渡しても変換されず記号のまま表示されます。`create` で `--status` を省くと下書きになります
@@ -1880,6 +1888,24 @@ twp task-loop charter pull --project <キー|UUID> [--out CONSTITUTION.md] #
1880
1888
  - 終了コードは他のコマンドと同じ規約です: `0` 反映した/差分なし / `1` pull でサーバに憲章が無い・ファイルを書けない / `2` 引数の誤り・差分があり `--yes` なし / `3` サーバが 4xx を返した(403・409 等)/ `4` 5xx・通信失敗 / `5` 認証失敗
1881
1889
  - 個人タスクのキュー(`--project __private__`)には憲章の設定がありません
1882
1890
 
1891
+ ### 憲章以外のループ設定をファイルとサーバで受け渡す
1892
+
1893
+ AI 割当(`ai`)・注入文面(`prompts`。憲章を除く)・ループ間隔(`loop.interval_sec`)・契約結果の意味づけ(`outcomes`)を、JSON ファイルとの間で登録・展開できます。作法は憲章(`charter`)と同じです。
1894
+
1895
+ ```bash
1896
+ twp task-loop settings pull --project <キー|UUID> [--out loop-settings.json] # サーバ → ファイル
1897
+ twp task-loop settings push --project <キー|UUID> --file loop-settings.json # ファイル → サーバ
1898
+ ```
1899
+
1900
+ - **pull は全キーを書き出します**(未設定のキーは `null`)。取得時点の `revision` も書きます。憲章は含みません(`charter pull` を使います)。既存ファイルと違うときは差分を表示し、`--yes` を付けたときだけ上書きします
1901
+ - **push はファイルに書いたキーだけを変えます(部分更新)。** `ai.<キー>`・`prompts.<キー>`・`loop.<キー>` は書かれていれば置き換え、`null` なら未設定に戻します。書いていないキーと憲章は変えません。`outcomes` は書かれていれば配列全体を置き換えます
1902
+ - `prompts.charter` を書いたファイルは受け付けません(`charter push` を使います)。サーバが知らないキー(綴り間違い等)があるときも、送る前に止めます
1903
+ - **push は `--yes` なしでは登録しません。** 変わるキーごとの差分(注入文面は行単位)と revision を表示し、確定用のコマンド(`--yes --revision <番号>`)を案内します。その後サーバが更新されていれば 409 で止まります
1904
+ - **ファイルの `revision` より後にサーバが更新されていると、`--revision` なしの `--yes` では登録しません。** pull したファイルは全キーを持つので、そのまま送ると取得後に他で直されたキーを元に戻すためです。差分を確認して案内どおり `--revision` を付けるか、pull し直してください(`revision` を書いていないファイルはこの確認をしません)
1905
+ - 値の検証はサーバが行います(不正な値は 422・終了コード `3`)。サーバは `ai` / `prompts` を全体で受け取るため、**書いていないキーに現在の規則に合わない値が残っていると、その理由でも 422 になります**(エラーに該当キーが出ます)
1906
+ - `ai` の `_comment` で始まるキーは注記として無視します
1907
+ - 実行中のループは次のサイクルで新しい revision を読みます。書き込みの権限・終了コードは憲章と同じ規約です
1908
+
1883
1909
  ### スキル定義をファイルとサーバで受け渡す
1884
1910
 
1885
1911
  ループ用のスキル定義(`.claude/commands/<名前>.md` と同じ markdown)を、プロジェクト単位でサーバに登録・展開できます。サーバのスキル名 `<名前>` はファイル `<ディレクトリ>/<名前>.md` に対応します(既定のディレクトリは `.claude/commands`、`--dir` で変更)。
@@ -1907,6 +1933,25 @@ twp task-loop skill delete --project <キー|UUID> <名前> # サーバから削
1907
1933
  - **ループはキュー項目の `/<名前>` をサーバ版で実行します。** サーバに登録されたスキルはサーバ版が、登録されていないスキル(または本文を取得できなかったとき)は作業ディレクトリのファイルが使われます。サーバ版は作業ディレクトリへ書き出さずに実行します(claude にはプロンプト内で展開して渡します)
1908
1934
  - どちらで走ったかはループのログとステップログに `skill=server@rev<番号>` / `skill=file` として残ります。一覧はサイクルごとに1回だけ取得し、本文は内容が変わったスキルだけを取り直します
1909
1935
 
1936
+ ### 定期枠の定義をファイルとサーバで受け渡す
1937
+
1938
+ ループが定期的に投入する枠(定期スケジュール)の定義と、全体設定(1サイクルの上限 `max_per_cycle`・時間帯ゲート `gates`・件数ゲートが数えるステータス `require_zero_statuses`)を読み書きできます。引数なしの `twp task-loop schedule` はこれまでどおり「いま発火する枠」の表示です。
1939
+
1940
+ ```bash
1941
+ twp task-loop schedule list --project <キー|UUID> # 定義の一覧
1942
+ twp task-loop schedule push --project <キー|UUID> --file schedules.json # ファイル → サーバ(作成・更新)
1943
+ twp task-loop schedule delete --project <キー|UUID> <定義ID> # 定義の削除
1944
+ twp task-loop schedule config pull --project <キー|UUID> [--out config.json] # 全体設定 → ファイル(既定は標準出力)
1945
+ twp task-loop schedule config push --project <キー|UUID> --file config.json # ファイル → 全体設定
1946
+ ```
1947
+
1948
+ - ファイルは `{ "schedules": [ {定義}, ... ] }`(全体設定のキーを並べてもよい)・定義1件のオブジェクト・定義の配列のいずれかです。`_` で始まるキーは注釈として送りません。サーバが補う既定値は省略できます
1949
+ - **push・delete・config push は `--yes` なしでは書きません。** 差分(作成・更新する定義と変わる項目)と revision を表示し、確定用のコマンド(push は `--yes --revision <定義ID>=<番号>,...`・新規は 0、delete と config push は `--yes --revision <番号>`)を案内します。案内どおりに確定すると、差分を見た後に画面で更新された定義・設定があれば上書きも削除もせずに止まります(push は1件も書きません)。`--revision` を省いた `--yes` はその場で取得した revision で書きます
1950
+ - **push はサーバにだけある定義を削除しません**(「サーバにのみ存在」と表示します)。消すのは `delete` だけです。止めるだけなら `"enabled": false` を push してください
1951
+ - push は書いた後にサーバから取り直し、ファイルと差分が無いことを確かめてから「反映しました」と表示します。差分が残れば終了コード `1` です
1952
+ - config push はファイルに無いキーをサーバの現在値のまま保ちます(`max_per_cycle` は必須)
1953
+ - 書き込みはプロジェクトの管理者以上だけができます。権限が無ければサーバの 403 の理由をそのまま表示します。終了コードは憲章(`charter`)と同じ規約で、delete で対象が無いときは `1` です
1954
+
1910
1955
  ### サーバに残した版の履歴・差分・復元
1911
1956
 
1912
1957
  サーバは憲章(ループ設定)とスキル定義を更新するたびに、その版を残します(対象ごとに直近100版)。
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{failureHint,isAuthError,isCliFatalText,isRateLimited,isServerAiType,isUntrusted,maxTurnsReached,rateLimitWaitSeconds,tailForScan}from"./chunk-ZOOEH7ZE.js";import{expandServerSkills,prepareSkillOverlay}from"./chunk-PVP3REVW.js";import{detectAiClis}from"./chunk-5SONMN6K.js";import"./chunk-RRHAX7RK.js";import"./chunk-A4LFG7MW.js";import"./chunk-VRBI2NPI.js";import{ClaudeStreamRenderer}from"./chunk-DXUFECE7.js";import"./chunk-SPZ3GBYC.js";import{
3
+ import{failureHint,isAuthError,isCliFatalText,isRateLimited,isServerAiType,isUntrusted,maxTurnsReached,rateLimitWaitSeconds,tailForScan}from"./chunk-ZOOEH7ZE.js";import{expandServerSkills,prepareSkillOverlay}from"./chunk-EDBJQCNC.js";import{detectAiClis}from"./chunk-5SONMN6K.js";import"./chunk-RRHAX7RK.js";import"./chunk-A4LFG7MW.js";import"./chunk-VRBI2NPI.js";import{ClaudeStreamRenderer}from"./chunk-DXUFECE7.js";import"./chunk-SPZ3GBYC.js";import{
4
4
  DEFAULT_CLAUDE_LAUNCHER,activeSlotPath,detectClaudeAutoSwitch,isClaudeAi,isUsableModelId,modelFitsRoute,resolveSpawnTarget,usesBedrock,wrapWithAutoSwitch}from"./chunk-FABDZBDZ.js";import"./chunk-6CS5L24D.js";import{isForceOnly,killProcessTree,system32}from"./chunk-N2UVRM3Z.js";import"./chunk-GY7KI5E5.js";import"./chunk-VFPY2A23.js";import{findExecutable,isWindowsDriveAbsolute}from"./chunk-PMOUHEJQ.js";import"./chunk-J7QYPKVK.js";import"./chunk-5WGOHFAS.js";
5
5
  import{stripTerminalControls}from"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";import{spawnSync}from"child_process";import fs2 from"fs";import path2 from"path";import{spawn}from"child_process";import fs from"fs";import path from"path";var DEFAULT_AI_TIMING={abortGraceMs:5e3,abortReapMs:2e3,pollIntervalMs:5e3};function resolveTiming(over){return{abortGraceMs:over?.abortGraceMs??DEFAULT_AI_TIMING.abortGraceMs,abortReapMs:over?.abortReapMs??DEFAULT_AI_TIMING.abortReapMs,pollIntervalMs:over?.pollIntervalMs??DEFAULT_AI_TIMING.pollIntervalMs}}var MAX_RETAINED_BYTES=4*1024*1024;function closeStream(stream){return new Promise(resolve=>{if(stream===null)return resolve();stream.once("error",()=>resolve());stream.end(()=>resolve())})}function buildArgs(req,cfg,env,workspace){
6
6
  const warnings=[];const requested=(req.model??"").trim();const usable=requested!==""&&isUsableModelId(requested);if(requested!==""&&!usable){warnings.push(`ai_model '${requested}' \u306F\u4F7F\u3048\u306A\u3044\u5F62\u3067\u3059 \u2192 \u30AB\u30C6\u30B4\u30EA\u65E2\u5B9A\u306E\u30E2\u30C7\u30EB\u3092\u4F7F\u3044\u307E\u3059`)}const fitsRoute=!usable||!isClaudeAi(req.ai)||modelFitsRoute(requested,env);if(usable&&!fitsRoute){warnings.push(`ai_model '${requested}' \u306F\u73FE\u5728\u306E\u5B9F\u884C\u7D4C\u8DEF\u3067\u306F\u89E3\u6C7A\u3067\u304D\u307E\u305B\u3093\uFF08\u3053\u306E\u6A5F\u4F53\u306F ${usesBedrock(
@@ -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-3EATJTPN.js";import"./chunk-53D2WQQO.js";import"./chunk-Q3B65OFC.js";import{evaluateQuery}from"./chunk-GFLGXGWE.js";import{renderOutput}from"./chunk-YXVN6OCH.js";import{redactSecretValues,redactSecrets,withDebug}from"./chunk-UFGJSWKU.js";
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-JIGA6KKU.js";import"./chunk-S7IEZSPJ.js";import"./chunk-Q3B65OFC.js";import{evaluateQuery}from"./chunk-GFLGXGWE.js";import{renderOutput}from"./chunk-YXVN6OCH.js";import{redactSecretValues,redactSecrets,withDebug}from"./chunk-UFGJSWKU.js";
4
4
  import{describeWaitResult,parseWaitOptions,waitUntilTerminal}from"./chunk-WVCEKC7V.js";import{DEFAULT_MAX_ITEMS,DEFAULT_MAX_PAGES,envelopePaging,isPageNumberEnvelope,pageRangeNotes,positiveInteger,readEnvelopeCursor,readPageNumberCursor,shellQuote}from"./chunk-MI6HVYR2.js";import{parseOperationArgs,repeatedValues}from"./chunk-RX5HWI4L.js";import{readBody}from"./chunk-6LSQCOCJ.js";import"./chunk-HNG6MF26.js";import"./chunk-HVZUXLQ4.js";import{ApiError,TwpApiClient,
5
5
  appendQuery}from"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";import"./chunk-II5RVJQN.js";import"./chunk-3ZRMMBP5.js";import{ApiResponseError,EXIT_OK,EXIT_WAIT_TIMEOUT,NetworkError,UsageError}from"./chunk-VFPY2A23.js";import{GLOBAL_OPTIONS_HELP}from"./chunk-PECIBNFD.js";import{AuthSession,NotLoggedInError,SessionExpiredError,loadCredentials}from"./chunk-XNLIEUAW.js";import{httpFetch}from"./chunk-J7QYPKVK.js";import{effectiveApiUrl,resolveConfiguredOutput,
6
6
  resolveProfile}from"./chunk-4VZKNEVN.js";import"./chunk-RZVI6PMW.js";import{HELP_TOKEN}from"./chunk-KDH3KWPO.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,8 +1,8 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{RESIDENT_TOKEN_CAP,activateModeFiles,activatePermissionSettings,buildResidentSet,buildSystemPrompt,createAuditLogger,createTwpToolkit,currentBranch,describeAuditLog,describeToolCatalog,displayCwd,executeTool,findProjectTwpSubdir,localTools,lstatOrNull,parseFrontMatter,parseRule,persistProjectAllow,projectPermissionsPath,projectRootFor,readFileTool,residentInputs,resolveGitExecutable,runTurn,secretReason}from"./chunk-7PDUN5MS.js";import{buildDiffLines,diffStat}from"./chunk-VRBI2NPI.js";
4
- import"./chunk-NZ7WI4RZ.js";import"./chunk-UFGJSWKU.js";import"./chunk-N2UVRM3Z.js";import"./chunk-HNG6MF26.js";import"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";import"./chunk-II5RVJQN.js";import"./chunk-VFPY2A23.js";import{RelayError,builtinCatalog,createRuntime,loadCachedCatalog,modelLabel,pickModel,toModelInfos}from"./chunk-5WTFZJT7.js";import"./chunk-D233KKXW.js";import"./chunk-PMOUHEJQ.js";
5
- import"./chunk-XNLIEUAW.js";import{proxyDiagnostics}from"./chunk-J7QYPKVK.js";import{checkMinSupportedVersion,isBelowMinSupported,minSupportedBlockMessage}from"./chunk-DXXFUNYN.js";import"./chunk-4VZKNEVN.js";import{configReadDirs,twpHomeDir}from"./chunk-RZVI6PMW.js";import{parseArgv}from"./chunk-ZKS2F7C6.js";import{applyPermissionMode,checkPermission,describePermissionMode,getMode,isModeId,modeSource,nextMode}from"./chunk-2LOT54OO.js";import"./chunk-KDH3KWPO.js";
3
+ import{RESIDENT_TOKEN_CAP,activateModeFiles,activatePermissionSettings,buildResidentSet,buildSystemPrompt,createAuditLogger,createTwpToolkit,currentBranch,describeAuditLog,describeToolCatalog,displayCwd,executeTool,findProjectTwpSubdir,localTools,lstatOrNull,parseFrontMatter,parseRule,persistProjectAllow,projectPermissionsPath,projectRootFor,readFileTool,residentInputs,resolveGitExecutable,runTurn,secretReason}from"./chunk-7PDUN5MS.js";import"./chunk-NZ7WI4RZ.js";import"./chunk-UFGJSWKU.js";
4
+ import{buildDiffLines,diffStat}from"./chunk-VRBI2NPI.js";import"./chunk-N2UVRM3Z.js";import"./chunk-HNG6MF26.js";import"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";import"./chunk-II5RVJQN.js";import"./chunk-VFPY2A23.js";import{RelayError,builtinCatalog,createRuntime,loadCachedCatalog,modelLabel,pickModel,toModelInfos}from"./chunk-5WTFZJT7.js";import"./chunk-D233KKXW.js";import"./chunk-PMOUHEJQ.js";
5
+ import"./chunk-XNLIEUAW.js";import{proxyDiagnostics}from"./chunk-J7QYPKVK.js";import{checkMinSupportedVersion,isBelowMinSupported,minSupportedBlockMessage}from"./chunk-DXXFUNYN.js";import"./chunk-4VZKNEVN.js";import{configReadDirs,twpHomeDir}from"./chunk-RZVI6PMW.js";import{parseArgv}from"./chunk-D5EYI7S3.js";import{applyPermissionMode,checkPermission,describePermissionMode,getMode,isModeId,modeSource,nextMode}from"./chunk-2LOT54OO.js";import"./chunk-KDH3KWPO.js";
6
6
  import"./chunk-QQRJLH6B.js";import{isFullWidth,isWide,stringWidth,stripAnsi}from"./chunk-UREA4ZIG.js";import{stripTerminalControls}from"./chunk-NHYMHCAT.js";import{require_fuzzysort}from"./chunk-DIMZRTLE.js";import{__commonJS,__export,__require,__toESM}from"./chunk-VSJBJXZO.js";var require_react_production=__commonJS({"node_modules/react/cjs/react.production.js"(exports){"use strict";var REACT_ELEMENT_TYPE=Symbol.for("react.transitional.element");var REACT_PORTAL_TYPE=Symbol.for("react.portal");var REACT_FRAGMENT_TYPE=Symbol.for("react.fragment");var REACT_STRICT_MODE_TYPE=Symbol.for("react.strict_mode");var REACT_PROFILER_TYPE=Symbol.for("react.profiler");var REACT_CONSUMER_TYPE=Symbol.for("react.consumer");var REACT_CONTEXT_TYPE=Symbol.for("react.context");var REACT_FORWARD_REF_TYPE=Symbol.
7
7
  for("react.forward_ref");var REACT_SUSPENSE_TYPE=Symbol.for("react.suspense");var REACT_MEMO_TYPE=Symbol.for("react.memo");var REACT_LAZY_TYPE=Symbol.for("react.lazy");var REACT_ACTIVITY_TYPE=Symbol.for("react.activity");var REACT_VIEW_TRANSITION_TYPE=Symbol.for("react.view_transition");var MAYBE_ITERATOR_SYMBOL=Symbol.iterator;function getIteratorFn(maybeIterable){if(null===maybeIterable||"object"!==typeof maybeIterable)return null;maybeIterable=MAYBE_ITERATOR_SYMBOL&&maybeIterable[MAYBE_ITERATOR_SYMBOL]||
8
8
  maybeIterable["@@iterator"];return"function"===typeof maybeIterable?maybeIterable:null}var ReactNoopUpdateQueue={isMounted:function(){return false},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}};var assign=Object.assign;var emptyObject={};function Component(props,context,updater){this.props=props;this.context=context;this.refs=emptyObject;this.updater=updater||ReactNoopUpdateQueue}Component.prototype.isReactComponent={};Component.prototype.setState=
@@ -1212,7 +1212,7 @@ cwd()){const listed=await gitListFiles(cwd2);const raw=listed??await walkFiles(c
1212
1212
  1;const after=/^[^\s]*/.exec(text.slice(cursor))?.[0]??"";return{query,start,end:cursor+after.length}}var TWP_SLASH_ROUTES={"/tasks":{domain:"task",operation:"list"},"/task":{domain:"task",operation:"get"},"/projects":{domain:"project",operation:"list"}};function isTwpSlashCommand(name){return Object.hasOwn(TWP_SLASH_ROUTES,name)}async function runTwpSlashCommand(name,args,deps){const route=TWP_SLASH_ROUTES[name];if(!Object.hasOwn(TWP_SLASH_ROUTES,name)||route===void 0){return{code:2,out:"",err:`\u4E0D\u660E\u306A\u30B3\u30DE\u30F3\u30C9: ${name}
1213
1213
  `}}const parsed=parseArgv([route.domain,route.operation,...args]);if(parsed.command!=="domain"||parsed.domain!==route.domain){return{code:2,out:"",err:`${name}: \u3053\u306E\u5F15\u6570\u306F\u4F7F\u3048\u307E\u305B\u3093\uFF08${args.join(" ")}\uFF09
1214
1214
  `}}if(parsed.unknown.length>0){return{code:2,out:"",err:`\u4E0D\u660E\u306A\u5F15\u6570: ${parsed.unknown.join(" ")}
1215
- `}}let out="";let err="";const io={out:text=>void(out+=text),err:text=>void(err+=text),isTty:true};const globals={profile:parsed.profile??deps.profile,...parsed.output!==void 0?{output:parsed.output}:{},...parsed.query!==void 0?{query:parsed.query}:{},dryRun:parsed.dryRun,debug:parsed.debug,yes:parsed.yes,refresh:parsed.refresh};const{runDomain}=await import("./run-XZUJWTTZ.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-36UF6SY5.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",
@@ -0,0 +1,48 @@
1
+ import { createRequire as __twpCreateRequire } from 'node:module';
2
+ const require = __twpCreateRequire(import.meta.url);
3
+ import{isModeId,isPermissionModeId}from"./chunk-2LOT54OO.js";import{API_TOKEN,HELP_TOKEN,isDomainName}from"./chunk-KDH3KWPO.js";import{splitFlagToken}from"./chunk-QQRJLH6B.js";var BUILTIN_COMMANDS=["login","logout","whoami","update","task-loop"];var TASK_LOOP_ACTIONS=["run","status","stop","schedule","setup","charter","skill","settings","plan","capacity"];var VALUE_FLAGS=new Set(["-p","--print","--profile","--tenant","--mode","--permission-mode","--model","--allowed-tools","--disallowed-tools","--project","--engine","--interval","--max-cycles","--ai","--workspace","--ai-config-file","--now","--counts","--gate","--file","--out","--revision","--dir","--from","--to","--o\
4
+ utput","--query"]);var BOOLEAN_FLAGS=new Set(["-h","--help","-v","--version","--no-tui","--doctor","--password","--token","--no-browser","--safe","--daemon","--force-runner","--force","--drain","--yes","-y","--no-ai-config-file","--verbose","--all","--empty","--check","--dry-run","--debug","--refresh"]);function dispatch(argv,limit=2){const tokens=[];const indexes=[];let truncated=false;for(let i=0;i<argv.length;i++){const arg=argv[i];if(arg===void 0)continue;if(arg.startsWith("-")&&arg!=="-"){const{
5
+ name,value:inline}=splitFlagToken(arg);if(BOOLEAN_FLAGS.has(name)){if(inline!==void 0){truncated=true;break}continue}if(VALUE_FLAGS.has(name)){if(inline!==void 0)continue;const next=argv[i+1];if(next!==void 0&&(!next.startsWith("-")||next==="-"))i++;continue}truncated=true;break}if(arg===""||arg==="-")continue;if(tokens.length>=limit)break;tokens.push(arg);indexes.push(i)}return{tokens,indexes,truncated}}function isBuiltin(token){return token!==void 0&&BUILTIN_COMMANDS.includes(token)}function isTaskLoopAction(token){
6
+ return token!==void 0&&TASK_LOOP_ACTIONS.includes(token)}function resolveRoute(result){const{tokens,indexes}=result;const[first,second]=tokens;const firstIndex=indexes[0];if(first===void 0||firstIndex===void 0)return{kind:"none",consumed:[]};const consumed=[firstIndex];const secondIndex=indexes[1];if(isBuiltin(first)){if(first==="task-loop"&&isTaskLoopAction(second)){if(secondIndex!==void 0)consumed.push(secondIndex);return{kind:"builtin",command:first,action:second,consumed}}return{kind:"builti\
7
+ n",command:first,...first==="task-loop"?{action:"run"}:{},consumed}}if(second!==void 0&&secondIndex!==void 0)consumed.push(secondIndex);return{kind:"domain",domain:first,...second!==void 0?{operation:second}:{},consumed}}var GLOBAL_FLAGS=new Set(["-h","--help","-v","--version","--profile","--output","--query","--dry-run","--debug","--yes","-y","--refresh"]);function parseArgv(argv){const out={command:"tui",safe:false,daemon:false,forceRunner:false,stopForce:false,logoutForce:false,stopDrain:false,noTui:false,doctor:false,yes:false,skillAll:false,planEmpty:false,planCheck:false,noAiConfigFile:false,verbose:false,loginMethod:"browser",loginNoBrowser:false,promptFromStdin:false,domainArgv:[],domainHelp:false,dryRun:false,
8
+ debug:false,refresh:false,unknown:[],allowedTools:[],disallowedTools:[]};const route=resolveRoute(dispatch(argv));const consumed=new Set;const[firstIndex,secondIndex]=route.consumed;if(route.kind==="builtin"){out.command=route.command;if(route.action!==void 0)out.taskLoopAction=route.action;for(const index of route.consumed)consumed.add(index)}else if(route.kind==="domain"){if(route.domain===HELP_TOKEN){if(route.operation===void 0){out.command="help";if(firstIndex!==void 0)consumed.add(firstIndex)}else if(isDomainName(
9
+ route.operation)){out.command="domain";out.domain=route.operation;out.domainHelp=true;if(firstIndex!==void 0)consumed.add(firstIndex);if(secondIndex!==void 0)consumed.add(secondIndex)}else if(route.operation===API_TOKEN){out.command="api";out.domainHelp=true;if(firstIndex!==void 0)consumed.add(firstIndex);if(secondIndex!==void 0)consumed.add(secondIndex)}}else if(route.domain===API_TOKEN){out.command="api";if(firstIndex!==void 0)consumed.add(firstIndex)}else if(isDomainName(route.domain)){out.command=
10
+ "domain";out.domain=route.domain;if(route.operation!==void 0)out.operation=route.operation;for(const index of route.consumed)consumed.add(index)}}const hasSubcommandToken=route.kind==="builtin"||route.kind==="domain"&&(route.domain===HELP_TOKEN||route.domain===API_TOKEN||isDomainName(route.domain));const isDomainRoute=out.command==="domain"||out.command==="api";const takeValue=(i,flag,inline)=>{const value=inline??argv[i+1];if(value===void 0||inline===void 0&&value.startsWith("-")){out.unknown.push(
11
+ flag);return{step:0}}if(value.trim()===""){out.unknown.push(inline===void 0?`${flag} `:`${flag}=${inline}`);return{step:0}}return{value,step:inline===void 0?1:0}};let optionsClosed=false;for(let i=0;i<argv.length;i++){if(consumed.has(i))continue;const raw=argv[i];if(raw===void 0)continue;if(isDomainRoute&&raw==="--")optionsClosed=true;const{name:arg,value:inline}=splitFlagToken(raw);if(isDomainRoute&&(optionsClosed||!GLOBAL_FLAGS.has(arg))){out.domainArgv.push(raw);continue}if(inline!==void 0&&BOOLEAN_FLAGS.
12
+ has(arg)){out.unknown.push(raw);continue}switch(arg){case"-h":case"--help":if(isDomainRoute)out.domainHelp=true;else out.command="help";break;case"-v":case"--version":out.command="version";break;case"--no-tui":out.noTui=true;break;case"--doctor":out.doctor=true;break;case"--password":out.loginMethod="password";break;case"--token":out.loginMethod="token";break;case"--no-browser":out.loginNoBrowser=true;break;case"--profile":{const{value,step}=takeValue(i,"--profile",inline);if(value!==void 0){out.
13
+ profile=value;i+=step}break}case"-p":case"--print":{const next=inline??argv[i+1];const step=inline===void 0?1:0;if(hasSubcommandToken){out.unknown.push(raw)}else if(next==="-"){out.command="print";out.promptFromStdin=true;out.prompt="";i+=step}else if(next!==void 0&&(inline!==void 0||!next.startsWith("-"))){out.command="print";out.prompt=next;i+=step}else{out.unknown.push(raw)}break}case"--output":{const{value,step}=takeValue(i,"--output",inline);if(value!==void 0){out.output=value;i+=step}break}case"\
14
+ --query":{const{value,step}=takeValue(i,"--query",inline);if(value!==void 0){out.query=value;i+=step}break}case"--dry-run":out.dryRun=true;break;case"--debug":out.debug=true;break;case"--refresh":out.refresh=true;break;case"--tenant":{const{value,step}=takeValue(i,"--tenant",inline);if(value!==void 0){out.tenant=value;i+=step}break}case"--mode":{const next=inline??argv[i+1];const step=inline===void 0?1:0;if(isModeId(next)){out.mode=next;i+=step}else if(next!==void 0&&(inline!==void 0||!next.startsWith(
15
+ "-"))){out.unknown.push(inline!==void 0?raw:`--mode ${next}`);i+=step}else{out.unknown.push("--mode")}break}case"--permission-mode":{const next=inline??argv[i+1];const step=inline===void 0?1:0;if(isPermissionModeId(next)){out.permissionMode=next;i+=step}else if(next!==void 0&&(inline!==void 0||!next.startsWith("-"))){out.unknown.push(inline!==void 0?raw:`--permission-mode ${next}`);i+=step}else{out.unknown.push("--permission-mode")}break}case"--allowed-tools":case"--disallowed-tools":{const{value,
16
+ step}=takeValue(i,arg,inline);if(value!==void 0){(arg==="--allowed-tools"?out.allowedTools:out.disallowedTools).push(value);i+=step}break}case"--model":{const{value,step}=takeValue(i,"--model",inline);if(value!==void 0){out.model=value;i+=step}break}case"--safe":out.safe=true;break;case"--daemon":out.daemon=true;break;case"--force-runner":out.forceRunner=true;break;case"--force":out.stopForce=true;break;case"--drain":out.stopDrain=true;break;case"--project":{const{value,step}=takeValue(i,"--proj\
17
+ ect",inline);if(value!==void 0){out.project=value;i+=step}break}case"--engine":{const{value,step}=takeValue(i,"--engine",inline);if(value!==void 0){out.engine=value;i+=step}break}case"--interval":case"--max-cycles":{const{value,step}=takeValue(i,arg,inline);if(value!==void 0){const n=Number.parseInt(value,10);if(Number.isInteger(n)&&n>0){if(arg==="--interval")out.interval=n;else out.maxCycles=n}else{out.unknown.push(inline!==void 0?raw:`${arg} ${value}`)}i+=step}break}case"--yes":case"-y":out.yes=
18
+ true;break;case"--ai":{const{value:v,step}=takeValue(i,"--ai",inline);if(v!==void 0){out.ais=[...out.ais??[],v];i+=step}break}case"--no-ai-config-file":out.noAiConfigFile=true;break;case"--workspace":{const{value:v,step}=takeValue(i,"--workspace",inline);if(v!==void 0){out.workspace=v;i+=step}break}case"--ai-config-file":{const{value:v,step}=takeValue(i,"--ai-config-file",inline);if(v!==void 0){out.aiConfigFile=v;i+=step}break}case"--verbose":out.verbose=true;break;case"--now":{const{value:v,step}=takeValue(
19
+ i,"--now",inline);if(v!==void 0){out.scheduleNow=v;i+=step}break}case"--counts":{const{value:v,step}=takeValue(i,"--counts",inline);if(v!==void 0){out.scheduleCounts=v;i+=step}break}case"--gate":{const{value:v,step}=takeValue(i,"--gate",inline);if(v!==void 0){out.scheduleGate=v;i+=step}break}case"--file":{if(inline===void 0&&argv[i+1]==="-"){out.charterFile="-";i+=1;break}const{value:v,step}=takeValue(i,"--file",inline);if(v!==void 0){out.charterFile=v;i+=step}break}case"--out":{const{value:v,step}=takeValue(
20
+ i,"--out",inline);if(v!==void 0){out.charterOut=v;i+=step}break}case"--revision":{const{value:v,step}=takeValue(i,"--revision",inline);if(v!==void 0){out.charterRevision=v;i+=step}break}case"--from":{const{value:v,step}=takeValue(i,"--from",inline);if(v!==void 0){out.revisionFrom=v;i+=step}break}case"--to":{const{value:v,step}=takeValue(i,"--to",inline);if(v!==void 0){out.revisionTo=v;i+=step}break}case"--dir":{const{value:v,step}=takeValue(i,"--dir",inline);if(v!==void 0){out.skillDir=v;i+=step}
21
+ break}case"--all":out.skillAll=true;break;case"--empty":out.planEmpty=true;break;case"--check":out.planCheck=true;break;default:if(out.command==="task-loop"&&out.taskLoopAction==="charter"&&out.charterOp===void 0&&isRevisionAwareOp(raw)){out.charterOp=raw;break}if(out.command==="task-loop"&&out.taskLoopAction==="schedule"){if(out.scheduleOp===void 0&&isScheduleOp(raw)){out.scheduleOp=raw;break}if(out.scheduleOp==="config"&&out.scheduleConfigOp===void 0&&(raw==="pull"||raw==="push")){out.scheduleConfigOp=
22
+ raw;break}if(out.scheduleOp==="delete"&&out.scheduleId===void 0&&!raw.startsWith("-")){out.scheduleId=raw;break}}if(out.command==="task-loop"&&out.taskLoopAction==="settings"&&out.settingsOp===void 0&&(raw==="push"||raw==="pull")){out.settingsOp=raw;break}if(out.command==="task-loop"&&out.taskLoopAction==="plan"&&out.planOp===void 0&&raw==="submit"){out.planOp="submit";break}if(out.command==="task-loop"&&out.taskLoopAction==="capacity"&&out.capacityOp===void 0&&raw==="report"){out.capacityOp="re\
23
+ port";break}if(out.command==="task-loop"&&out.taskLoopAction==="skill"){if(out.skillOp===void 0&&(isRevisionAwareOp(raw)||isSkillManageOp(raw))){out.skillOp=raw;break}if(out.skillOp!==void 0&&out.skillName===void 0&&!raw.startsWith("-")){out.skillName=raw;break}}out.unknown.push(raw)}}if(out.command!=="login"&&out.loginMethod!=="browser"){out.unknown.push(out.loginMethod==="password"?"--password":"--token");out.loginMethod="browser"}if(out.permissionMode!==void 0&&out.command!=="tui"&&out.command!==
24
+ "print"){out.unknown.push("--permission-mode");delete out.permissionMode}if(out.command!=="tui"&&out.command!=="print"){if(out.allowedTools.length>0)out.unknown.push("--allowed-tools");if(out.disallowedTools.length>0)out.unknown.push("--disallowed-tools");out.allowedTools=[];out.disallowedTools=[]}if(out.loginNoBrowser&&!(out.command==="login"&&out.loginMethod==="browser")){out.unknown.push("--no-browser");out.loginNoBrowser=false}if(out.command==="logout"&&out.stopForce){out.logoutForce=true;out.
25
+ stopForce=false}if(out.command!=="task-loop"){if(out.safe)out.unknown.push("--safe");if(out.daemon)out.unknown.push("--daemon");if(out.forceRunner)out.unknown.push("--force-runner");if(out.stopForce)out.unknown.push("--force");if(out.stopDrain)out.unknown.push("--drain");if(out.engine!==void 0)out.unknown.push("--engine");if(out.interval!==void 0)out.unknown.push("--interval");if(out.maxCycles!==void 0)out.unknown.push("--max-cycles");if(out.project!==void 0)out.unknown.push("--project");if(out.
26
+ verbose)out.unknown.push("--verbose");if(out.scheduleNow!==void 0)out.unknown.push("--now");if(out.scheduleCounts!==void 0)out.unknown.push("--counts");if(out.scheduleGate!==void 0)out.unknown.push("--gate");if(out.ais!==void 0)out.unknown.push("--ai");if(out.workspace!==void 0)out.unknown.push("--workspace");if(out.aiConfigFile!==void 0)out.unknown.push("--ai-config-file");if(out.noAiConfigFile)out.unknown.push("--no-ai-config-file");if(out.charterFile!==void 0)out.unknown.push("--file");if(out.
27
+ charterOut!==void 0)out.unknown.push("--out");if(out.charterRevision!==void 0)out.unknown.push("--revision");if(out.skillDir!==void 0)out.unknown.push("--dir");if(out.skillAll)out.unknown.push("--all");if(out.revisionFrom!==void 0)out.unknown.push("--from");if(out.revisionTo!==void 0)out.unknown.push("--to");if(out.planEmpty)out.unknown.push("--empty");if(out.planCheck)out.unknown.push("--check")}if(out.yes&&out.command!=="task-loop"&&!isDomainRoute)out.unknown.push("--yes");const acceptsOutput=isDomainRoute||
28
+ out.command==="whoami"||out.command==="task-loop"&&out.taskLoopAction==="skill"&&(out.skillOp==="list"||out.skillOp==="show");if(!acceptsOutput){if(out.output!==void 0)out.unknown.push("--output");if(out.query!==void 0)out.unknown.push("--query")}if(!isDomainRoute){if(out.dryRun)out.unknown.push("--dry-run");if(out.debug)out.unknown.push("--debug");if(out.refresh)out.unknown.push("--refresh")}if(out.command==="api"&&out.refresh){out.unknown.push("--refresh");out.refresh=false}if(out.command==="t\
29
+ ask-loop"&&(out.taskLoopAction!=="schedule"||out.scheduleOp!==void 0)){if(out.verbose)out.unknown.push("--verbose");if(out.scheduleNow!==void 0)out.unknown.push("--now");if(out.scheduleCounts!==void 0)out.unknown.push("--counts");if(out.scheduleGate!==void 0)out.unknown.push("--gate")}if(out.command==="task-loop"&&out.taskLoopAction!=="stop"&&out.stopForce){out.unknown.push("--force")}if(out.command==="task-loop"&&out.taskLoopAction!=="stop"&&out.stopDrain){out.unknown.push("--drain")}if(out.command===
30
+ "task-loop"&&out.taskLoopAction==="stop"&&out.stopForce&&out.stopDrain){out.unknown.push("--force \u3068 --drain \u306F\u540C\u6642\u306B\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093");out.stopForce=false;out.stopDrain=false}if(out.command==="task-loop"&&out.taskLoopAction!=="setup"){const yesConfirms=out.taskLoopAction==="charter"||out.taskLoopAction==="skill"||out.taskLoopAction==="settings"||out.taskLoopAction==="schedule"&&out.scheduleOp!==void 0&&out.scheduleOp!=="list";if(out.yes&&!yesConfirms)
31
+ out.unknown.push("--yes");if(out.ais!==void 0)out.unknown.push("--ai");if(out.workspace!==void 0)out.unknown.push("--workspace");if(out.aiConfigFile!==void 0)out.unknown.push("--ai-config-file");if(out.noAiConfigFile)out.unknown.push("--no-ai-config-file")}if(out.command==="task-loop"&&(out.taskLoopAction==="stop"||out.taskLoopAction==="status")){if(out.safe)out.unknown.push("--safe");if(out.daemon)out.unknown.push("--daemon");if(out.forceRunner)out.unknown.push("--force-runner");if(out.engine!==
32
+ void 0)out.unknown.push("--engine");if(out.interval!==void 0)out.unknown.push("--interval");if(out.maxCycles!==void 0)out.unknown.push("--max-cycles")}if(out.command==="task-loop"&&out.taskLoopAction==="setup"){if(out.engine!==void 0)out.unknown.push("--engine");if(out.safe)out.unknown.push("--safe");if(out.daemon)out.unknown.push("--daemon");if(out.forceRunner)out.unknown.push("--force-runner");if(out.interval!==void 0)out.unknown.push("--interval");if(out.maxCycles!==void 0)out.unknown.push("-\
33
+ -max-cycles")}if(out.command==="task-loop"&&out.taskLoopAction==="charter"){if(out.charterOp===void 0){out.unknown.push("charter \u306B\u306F push / pull / history / diff / revert \u306E\u3044\u305A\u308C\u304B\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044")}if(out.charterOp!=="push"&&out.charterFile!==void 0)out.unknown.push("--file");if(out.charterOp!=="push"&&out.charterOp!=="revert"&&out.charterRevision!==void 0){out.unknown.push("--revision")}pushRevisionFlagErrors(out,out.charterOp);
34
+ if((out.charterOp==="history"||out.charterOp==="diff")&&out.yes)out.unknown.push("--yes");if(out.charterOp!=="pull"&&out.charterOut!==void 0)out.unknown.push("--out");if(out.safe)out.unknown.push("--safe");if(out.daemon)out.unknown.push("--daemon");if(out.forceRunner)out.unknown.push("--force-runner");if(out.engine!==void 0)out.unknown.push("--engine");if(out.interval!==void 0)out.unknown.push("--interval");if(out.maxCycles!==void 0)out.unknown.push("--max-cycles")}else if(out.command==="task-lo\
35
+ op"&&out.taskLoopAction==="skill"){if(out.skillOp===void 0){out.unknown.push(SKILL_OP_REQUIRED)}else if(out.skillOp==="list"&&out.skillAll){out.unknown.push("--all")}else if(out.skillOp==="list"&&out.skillName!==void 0){out.unknown.push(`skill list \u306F\u30B9\u30AD\u30EB\u540D\u3092\u53D7\u3051\u4ED8\u3051\u307E\u305B\u3093: ${out.skillName}`)}else if(out.skillOp==="list"){}else if(out.skillOp!=="push"&&out.skillOp!=="pull"&&out.skillAll){out.unknown.push(`skill ${out.skillOp} \u306F --all \u3092\u53D7\u3051\u4ED8\u3051\u307E\u305B\u3093\
36
+ \uFF08\u30B9\u30AD\u30EB\u540D\u30921\u3064\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF09`)}else if(out.skillName===void 0&&!out.skillAll){out.unknown.push(out.skillOp==="push"||out.skillOp==="pull"?`skill ${out.skillOp} \u306B\u306F\u30B9\u30AD\u30EB\u540D\u304B --all \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044`:`skill ${out.skillOp} \u306B\u306F\u30B9\u30AD\u30EB\u540D\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044`)}else if(out.skillName!==void 0&&out.skillAll){out.unknown.
37
+ push("\u30B9\u30AD\u30EB\u540D\u3068 --all \u306F\u540C\u6642\u306B\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093")}if(out.skillOp!=="push"&&out.skillOp!=="revert"&&out.skillOp!=="delete"&&out.charterRevision!==void 0){out.unknown.push("--revision")}pushRevisionFlagErrors(out,out.skillOp);if((out.skillOp==="history"||out.skillOp==="diff"||out.skillOp==="list"||out.skillOp==="show")&&out.yes){out.unknown.push("--yes")}if(out.skillOp!=="push"&&out.skillOp!=="pull"&&out.skillDir!==void 0)out.unknown.push(
38
+ "--dir");if(out.charterFile!==void 0)out.unknown.push("--file");if(out.charterOut!==void 0)out.unknown.push("--out");if(out.safe)out.unknown.push("--safe");if(out.daemon)out.unknown.push("--daemon");if(out.forceRunner)out.unknown.push("--force-runner");if(out.engine!==void 0)out.unknown.push("--engine");if(out.interval!==void 0)out.unknown.push("--interval");if(out.maxCycles!==void 0)out.unknown.push("--max-cycles")}else if(out.command==="task-loop"&&out.taskLoopAction==="settings"){if(out.settingsOp===
39
+ void 0)out.unknown.push("settings \u306B\u306F push / pull \u306E\u3044\u305A\u308C\u304B\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044");if(out.settingsOp!=="push"&&out.charterFile!==void 0)out.unknown.push("--file");if(out.settingsOp!=="push"&&out.charterRevision!==void 0)out.unknown.push("--revision");if(out.settingsOp!=="pull"&&out.charterOut!==void 0)out.unknown.push("--out");if(out.safe)out.unknown.push("--safe");if(out.daemon)out.unknown.push("--daemon");if(out.forceRunner)out.unknown.
40
+ push("--force-runner");if(out.engine!==void 0)out.unknown.push("--engine");if(out.interval!==void 0)out.unknown.push("--interval");if(out.maxCycles!==void 0)out.unknown.push("--max-cycles")}else if(out.command==="task-loop"&&out.taskLoopAction==="plan"){if(out.planOp===void 0)out.unknown.push("plan \u306B\u306F submit \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044");if(out.charterOut!==void 0)out.unknown.push("--out");if(out.charterRevision!==void 0)out.unknown.push("--revision");if(out.
41
+ safe)out.unknown.push("--safe");if(out.daemon)out.unknown.push("--daemon");if(out.forceRunner)out.unknown.push("--force-runner");if(out.engine!==void 0)out.unknown.push("--engine");if(out.interval!==void 0)out.unknown.push("--interval");if(out.maxCycles!==void 0)out.unknown.push("--max-cycles")}else if(out.command==="task-loop"&&out.taskLoopAction==="capacity"){if(out.capacityOp===void 0)out.unknown.push("capacity \u306B\u306F report \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044");if(out.
42
+ charterFile!==void 0)out.unknown.push("--file");if(out.charterOut!==void 0)out.unknown.push("--out");if(out.charterRevision!==void 0)out.unknown.push("--revision");if(out.safe)out.unknown.push("--safe");if(out.daemon)out.unknown.push("--daemon");if(out.forceRunner)out.unknown.push("--force-runner");if(out.engine!==void 0)out.unknown.push("--engine");if(out.interval!==void 0)out.unknown.push("--interval");if(out.maxCycles!==void 0)out.unknown.push("--max-cycles")}else if(out.command==="task-loop"&&
43
+ out.taskLoopAction==="schedule"&&out.scheduleOp!==void 0){const op=out.scheduleOp;const takesFile=op==="push"||op==="config"&&out.scheduleConfigOp==="push";if(op==="config"&&out.scheduleConfigOp===void 0){out.unknown.push("schedule config \u306B\u306F pull \u304B push \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044")}if(op==="delete"&&out.scheduleId===void 0)out.unknown.push("schedule delete \u306B\u306F\u5B9A\u7FA9ID\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044");if(takesFile&&out.
44
+ charterFile===void 0)out.unknown.push(`schedule ${op==="push"?"push":"config push"} \u306B\u306F --file <\u30D1\u30B9> \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044`);if(!takesFile&&out.charterFile!==void 0)out.unknown.push("--file");if(!(op==="config"&&out.scheduleConfigOp==="pull")&&out.charterOut!==void 0)out.unknown.push("--out");if((op==="list"||op==="config"&&out.scheduleConfigOp!=="push")&&out.charterRevision!==void 0){out.unknown.push("--revision")}if(out.safe)out.unknown.push("\
45
+ --safe");if(out.daemon)out.unknown.push("--daemon");if(out.forceRunner)out.unknown.push("--force-runner");if(out.engine!==void 0)out.unknown.push("--engine");if(out.interval!==void 0)out.unknown.push("--interval");if(out.maxCycles!==void 0)out.unknown.push("--max-cycles")}else if(out.command==="task-loop"){if(out.charterFile!==void 0)out.unknown.push("--file");if(out.charterOut!==void 0)out.unknown.push("--out");if(out.charterRevision!==void 0)out.unknown.push("--revision")}if(out.command==="tas\
46
+ k-loop"&&out.taskLoopAction!=="skill"){if(out.skillDir!==void 0)out.unknown.push("--dir");if(out.skillAll)out.unknown.push("--all")}if(out.command==="task-loop"&&out.taskLoopAction!=="skill"&&out.taskLoopAction!=="charter"){if(out.revisionFrom!==void 0)out.unknown.push("--from");if(out.revisionTo!==void 0)out.unknown.push("--to")}if(out.command==="task-loop"&&out.taskLoopAction!=="plan"){if(out.planEmpty)out.unknown.push("--empty");if(out.planCheck)out.unknown.push("--check")}return out}function isScheduleOp(raw){
47
+ return raw==="list"||raw==="push"||raw==="delete"||raw==="config"}function isSkillManageOp(raw){return raw==="list"||raw==="show"||raw==="delete"}var SKILL_OP_REQUIRED="skill \u306B\u306F push / pull / list / show / delete / history / diff / revert \u306E\u3044\u305A\u308C\u304B\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044";function isRevisionAwareOp(raw){return raw==="push"||raw==="pull"||raw==="history"||raw==="diff"||raw==="revert"}function pushRevisionFlagErrors(out,op){if(op!=="dif\
48
+ f"&&out.revisionFrom!==void 0)out.unknown.push("--from");if(op!=="diff"&&op!=="revert"&&out.revisionTo!==void 0)out.unknown.push("--to")}export{BUILTIN_COMMANDS,TASK_LOOP_ACTIONS,VALUE_FLAGS,GLOBAL_FLAGS,parseArgv};
@@ -0,0 +1,16 @@
1
+ import { createRequire as __twpCreateRequire } from 'node:module';
2
+ const require = __twpCreateRequire(import.meta.url);
3
+ import{isValidSkillName,skillDigest}from"./chunk-RRHAX7RK.js";import{describeError}from"./chunk-SPZ3GBYC.js";import{isPrivateProjectId}from"./chunk-GY7KI5E5.js";import{stripTerminalControls}from"./chunk-NHYMHCAT.js";import fs from"fs";import path from"path";var SKILL_REF=/^([ \t]*)\/([a-z][a-z0-9-]*)(?=[ \t\n]|$)([ \t]+[^\n]*)?/gm;function stripFrontmatter(content){if(!content.startsWith("---"))return content;const m=/^---[ \t]*\r?\n[\s\S]*?\r?\n---[ \t]*(?:\r?\n)?/.exec(content);return m===null?content:content.slice(m[0].length)}function referencedSkills(prompt){const out=[];for(const m of prompt.matchAll(SKILL_REF)){const name=m[2]??"";if(!out.includes(name))out.push(name)}return out}function expandServerSkills(prompt,bodies){if(bodies.size===0)return prompt;
4
+ return prompt.replace(SKILL_REF,(whole,_indent,name,args)=>{const body=bodies.get(name);if(body===void 0)return whole;return applyArguments(stripFrontmatter(body),(args??"").trim())})}function applyArguments(body,args){if(body.includes("$ARGUMENTS")){return body.replaceAll("$ARGUMENTS",()=>args)}return args===""?body:`${body}
5
+
6
+ ARGUMENTS: ${args}`}function prepareSkillOverlay(root,workspace,bodies,provider){const commands=path.join(root,".claude","commands");fs.rmSync(root,{recursive:true,force:true});fs.mkdirSync(commands,{recursive:true});const src=path.join(workspace,".claude","commands");let names=[];try{names=fs.readdirSync(src).filter(f=>f.endsWith(".md"))}catch{}for(const f of names){const from=path.join(src,f);try{if(fs.statSync(from).isFile())fs.copyFileSync(from,path.join(commands,f))}catch{}}for(const[name,body]of bodies){
7
+ if(!isValidSkillName(name))continue;fs.writeFileSync(path.join(commands,`${name}.md`),body,"utf8")}if(/^[a-z0-9-]+$/.test(provider)){const rel=path.join("scripts","agent-adapters","providers",`${provider}.md`);const from=path.join(workspace,rel);if(fs.existsSync(from)){fs.mkdirSync(path.dirname(path.join(root,rel)),{recursive:true});fs.copyFileSync(from,path.join(root,rel))}}}function unwrap(json,key){if(json===null||typeof json!=="object"||Array.isArray(json))return null;const top=json;const data=top["\
8
+ data"];if(data!==null&&typeof data==="object"&&!Array.isArray(data)&&key in data){return data}return top}function isRevision(v){return typeof v==="number"&&Number.isInteger(v)&&v>=0}function parseSkillList(res){const b=unwrap(res.json,"skills");const raw=b?.["skills"];if(!Array.isArray(raw))return null;const out=new Map;for(const s of raw){if(s===null||typeof s!=="object")continue;const{name,revision,digest}=s;if(typeof name!=="string"||!isValidSkillName(name)||!isRevision(revision)||typeof digest!==
9
+ "string"){continue}out.set(name,{name,revision,digest})}return out}function parseSkillBody(res){const b=unwrap(res.json,"body");if(b===null)return null;const{name,revision,body}=b;if(typeof name!=="string"||!isRevision(revision)||typeof body!=="string")return null;const digest=skillDigest(body);if(b["digest"]!==digest)return null;return{name,revision,digest,body}}var ServerSkillCatalog=class{constructor(deps){this.deps=deps}deps;list=new Map;source="none";bodies=new Map;lastWarning="";names(){return[
10
+ ...this.list.keys()]}hashPart(){return this.source==="none"||this.list.size===0?"skills=file":`skills=${this.source}:${this.list.size}`}async refresh(){const{config,log}=this.deps;const warning=await this.fetchList();if(warning!==""&&warning!==this.lastWarning)log(` \u26A0\uFE0F ${warning}`);else if(warning===""&&this.lastWarning!=="")log("\u30B9\u30AD\u30EB\u5B9A\u7FA9\u306E\u4E00\u89A7\u3092\u30B5\u30FC\u30D0\u304B\u3089\u518D\u3073\u53D6\u5F97\u3067\u304D\u308B\u3088\u3046\u306B\u306A\u308A\u307E\u3057\u305F");
11
+ this.lastWarning=warning;for(const name of[...this.bodies.keys()])if(!this.list.has(name))this.bodies.delete(name);config.configHash=`${config.configHash};${this.hashPart()}`}async fetchList(){if(isPrivateProjectId(this.deps.config.projectId??"")){this.list=new Map;this.source="none";return""}const res=await this.deps.api.request("GET","/settings/skills");const parsed=res.ok?parseSkillList(res):null;if(parsed!==null){this.list=parsed;this.source="server";return""}const reason=stripTerminalControls(
12
+ res.ok?`\u5FDC\u7B54\u3092\u89E3\u91C8\u3067\u304D\u307E\u305B\u3093\uFF08\u5148\u982D: ${res.raw.slice(0,120)}\uFF09`:describeError(res));if(res.status===404){this.list=new Map;this.source="none";return""}const transient=res.status===null||res.status>=500||res.ok;if(transient&&this.source!=="none"){this.source="cached";return`\u30B9\u30AD\u30EB\u5B9A\u7FA9\u306E\u4E00\u89A7\u3092\u30B5\u30FC\u30D0\u304B\u3089\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\uFF08${reason}\uFF09\u3002\u76F4\u524D\u306B\u53D6\u5F97\u3057\u305F\u4E00\u89A7\uFF08${this.
13
+ list.size}\u4EF6\uFF09\u3067\u8D70\u308A\u307E\u3059`}this.list=new Map;this.source="none";return`\u30B9\u30AD\u30EB\u5B9A\u7FA9\u306E\u4E00\u89A7\u3092\u30B5\u30FC\u30D0\u304B\u3089\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\uFF08${reason}\uFF09\u3002\u4F5C\u696D\u30C4\u30EA\u30FC\u306E\u30B9\u30AD\u30EB\u30D5\u30A1\u30A4\u30EB\u3067\u8D70\u308A\u307E\u3059`}async resolve(prompt){const bodies=new Map;const origins=[];for(const name of referencedSkills(prompt)){const entry=this.list.get(name);if(entry===
14
+ void 0){if(fs.existsSync(path.join(this.deps.config.workspace,".claude","commands",`${name}.md`))){origins.push({name,origin:"skill=file"})}continue}const cached=this.bodies.get(name);let detail=cached!==void 0&&cached.digest===entry.digest?cached:null;if(detail===null){const res=await this.deps.api.request("GET",`/settings/skills/${encodeURIComponent(name)}`);detail=res.ok?parseSkillBody(res):null;if(detail===null||detail.name!==name){const why=stripTerminalControls(res.ok?"\u5FDC\u7B54\u3092\u89E3\u91C8\u3067\u304D\u307E\u305B\u3093":
15
+ describeError(res));if(cached!==void 0&&(res.status===null||res.status>=500)){this.deps.log(` \u26A0\uFE0F \u30B9\u30AD\u30EB ${name} \u306E\u672C\u6587\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\uFF08${why}\uFF09\u3002\u76F4\u524D\u306E revision ${cached.revision} \u3067\u8D70\u308A\u307E\u3059`);detail=cached}else{this.deps.log(` \u26A0\uFE0F \u30B9\u30AD\u30EB ${name} \u306E\u672C\u6587\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\uFF08${why}\uFF09\u3002\u4F5C\u696D\u30C4\u30EA\u30FC\u306E\u30D5\u30A1\u30A4\u30EB\u7248\u3067\u8D70\u308A\u307E\u3059`);
16
+ origins.push({name,origin:"skill=file"});continue}}else{this.bodies.set(name,detail)}}bodies.set(name,detail.body);origins.push({name,origin:`skill=server@rev${detail.revision}`})}return{bodies,origins}}};function formatSkillOrigins(origins){return origins.map(o=>`${o.origin} name=${o.name}`).join(" \uFF0F ")}export{stripFrontmatter,referencedSkills,expandServerSkills,applyArguments,prepareSkillOverlay,parseSkillList,parseSkillBody,ServerSkillCatalog,formatSkillOrigins};
@@ -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-53D2WQQO.js";import{JsonBodyWithView}from"./chunk-Q3B65OFC.js";import{evaluateQuery}from"./chunk-GFLGXGWE.js";import{renderDocument,renderOutput}from"./chunk-YXVN6OCH.js";import{redactSecretValues,redactSecrets,withDebug}from"./chunk-UFGJSWKU.js";import{DEFAULT_MAX_ITEMS,DEFAULT_MAX_PAGES,nextPageNotes,positiveInteger,shellQuote}from"./chunk-MI6HVYR2.js";import{parseOperationArgs}from"./chunk-RX5HWI4L.js";import{Resolver,requireDefaultProject}from"./chunk-HNG6MF26.js";
3
+ import{loadDomain}from"./chunk-S7IEZSPJ.js";import{JsonBodyWithView}from"./chunk-Q3B65OFC.js";import{evaluateQuery}from"./chunk-GFLGXGWE.js";import{renderDocument,renderOutput}from"./chunk-YXVN6OCH.js";import{redactSecretValues,redactSecrets,withDebug}from"./chunk-UFGJSWKU.js";import{DEFAULT_MAX_ITEMS,DEFAULT_MAX_PAGES,nextPageNotes,positiveInteger,shellQuote}from"./chunk-MI6HVYR2.js";import{parseOperationArgs}from"./chunk-RX5HWI4L.js";import{Resolver,requireDefaultProject}from"./chunk-HNG6MF26.js";
4
4
  import{ResolveError}from"./chunk-HVZUXLQ4.js";import{ApiError,MultipartBody,TwpApiClient,appendQuery}from"./chunk-JA5A6UJ2.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";import{AuthSession,NotLoggedInError,SessionExpiredError,
5
5
  loadCredentials}from"./chunk-XNLIEUAW.js";import{httpFetch}from"./chunk-J7QYPKVK.js";import{effectiveApiUrl,loadUserConfig,resolveConfiguredOutput,resolveProfile}from"./chunk-4VZKNEVN.js";import{HELP_TOKEN}from"./chunk-KDH3KWPO.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,9 +3,9 @@ const require = __twpCreateRequire(import.meta.url);
3
3
  var LOADERS={agent:async()=>(await import("./agent-SFX3ZVOB.js")).agentDomain,"agent-loop":async()=>(await import("./agent-loop-6JO4PJRG.js")).agentLoopDomain,"ai-review-reason":async()=>(await import("./sales-ai-review-6TDJFHDL.js")).aiReviewReasonDomain,analysis:async()=>(await import("./analysis-HMOECNWG.js")).analysisDomain,announcement:async()=>(await import("./announcement-Q642UMYK.js")).announcementDomain,attendance:async()=>(await import("./attendance-correct-DWVFYL2Y.js")).attendanceDomainWithRecords,
4
4
  backlog:async()=>(await import("./backlog-FG3Y5JTE.js")).backlogDomain,budget:async()=>(await import("./budget-5RPOQZN7.js")).budgetDomain,"business-place":async()=>(await import("./sales-master-H5HMVBJV.js")).businessPlaceDomain,company:async()=>(await import("./company-4DHVAW25.js")).companyDomain,contract:async()=>(await import("./contract-PT7VW4IE.js")).contractDomain,customer:async()=>(await import("./company-4DHVAW25.js")).customerDomain,department:async()=>(await import("./department-C6WIZPBS.js")).
5
5
  departmentDomain,deposit:async()=>(await import("./deposit-OEYFPEZG.js")).depositDomain,estimate:async()=>(await import("./estimate-4BUJQ3TP.js")).estimateDomain,evaluation:async()=>(await import("./evaluation-GLXQ54F6.js")).evaluationDomain,expense:async()=>(await import("./expense-QE3WIJTN.js")).expenseDomain,"fiscal-year":async()=>(await import("./fiscal-year-YJWFQN4P.js")).fiscalYearDomain,"goal-sheet":async()=>(await import("./evaluation-GLXQ54F6.js")).goalSheetDomain,inquiry:async()=>(await import("./inquiry-ORB3ROAJ.js")).
6
- inquiryDomain,invoice:async()=>(await import("./invoice-XLX5KS2T.js")).invoiceDomain,"job-title":async()=>(await import("./job-title-UDF6I3BP.js")).jobTitleDomain,leave:async()=>(await import("./leave-3BJMXI7Q.js")).leaveDomain,license:async()=>(await import("./license-OMIZUUTW.js")).licenseDomain,media:async()=>(await import("./media-TWRO65NT.js")).mediaDomain,meeting:async()=>(await import("./knowledge-4QPIGJEE.js")).meetingDomain,note:async()=>(await import("./knowledge-4QPIGJEE.js")).
6
+ inquiryDomain,invoice:async()=>(await import("./invoice-XLX5KS2T.js")).invoiceDomain,"job-title":async()=>(await import("./job-title-UDF6I3BP.js")).jobTitleDomain,leave:async()=>(await import("./leave-3BJMXI7Q.js")).leaveDomain,license:async()=>(await import("./license-OMIZUUTW.js")).licenseDomain,media:async()=>(await import("./media-HJDG3QWD.js")).mediaDomain,meeting:async()=>(await import("./knowledge-GB6IFUMG.js")).meetingDomain,note:async()=>(await import("./knowledge-GB6IFUMG.js")).
7
7
  noteDomain,notification:async()=>(await import("./notification-2IESSY5E.js")).notificationDomain,onedrive:async()=>(await import("./onedrive-ZY3GTU26.js")).onedriveDomain,outlook:async()=>(await import("./outlook-KYTXHDAV.js")).outlookDomain,payee:async()=>(await import("./sales-master-H5HMVBJV.js")).payeeDomain,position:async()=>(await import("./position-CR6P4WC5.js")).positionDomain,project:async()=>(await import("./project-JJEMEO2W.js")).projectDomain,prospect:async()=>(await import("./prospect-QG6X7ALK.js")).
8
8
  prospectDomain,purchase:async()=>(await import("./purchase-Z6ENEOZM.js")).purchaseDomain,qualification:async()=>(await import("./skill-RH5MBRXZ.js")).qualificationDomain,receivable:async()=>(await import("./receivable-ZBDXXMHX.js")).receivableDomain,redmine:async()=>(await import("./redmine-EIFHMLNE.js")).redmineDomain,report:async()=>(await import("./report-TTXGXSR3.js")).reportDomain,"rounding-setting":async()=>(await import("./sales-numbering-Q5KRM63Y.js")).roundingSettingDomain,
9
9
  "seal-impression":async()=>(await import("./sales-master-H5HMVBJV.js")).sealImpressionDomain,search:async()=>(await import("./search-GRAWP2LX.js")).searchDomain,segment:async()=>(await import("./segment-YOUY4PZC.js")).segmentDomain,shift:async()=>(await import("./attendance-lists-772Y3ZWA.js")).shiftDomain,skill:async()=>(await import("./skill-RH5MBRXZ.js")).skillDomain,storage:async()=>(await import("./storage-AQDCEBDJ.js")).storageDomain,"supplier-payment":async()=>(await import("./supplier-payment-EJTFKAKY.js")).
10
- supplierPaymentDomain,support:async()=>(await import("./support-FR3KY63E.js")).supportDomain,task:async()=>(await import("./task-O7K6725Y.js")).taskDomain,teams:async()=>(await import("./teams-QRVCFJS4.js")).teamsDomain,user:async()=>(await import("./user-PRGHG3HM.js")).userDomain,"user-contract-type":async()=>(await import("./user-contract-type-K7CLKCEE.js")).userContractTypeDomain,wiki:async()=>(await import("./knowledge-4QPIGJEE.js")).wikiDomain,workchange:async()=>(await import("./attendance-lists-772Y3ZWA.js")).
10
+ supplierPaymentDomain,support:async()=>(await import("./support-FR3KY63E.js")).supportDomain,task:async()=>(await import("./task-O7K6725Y.js")).taskDomain,teams:async()=>(await import("./teams-QRVCFJS4.js")).teamsDomain,user:async()=>(await import("./user-PRGHG3HM.js")).userDomain,"user-contract-type":async()=>(await import("./user-contract-type-K7CLKCEE.js")).userContractTypeDomain,wiki:async()=>(await import("./knowledge-GB6IFUMG.js")).wikiDomain,workchange:async()=>(await import("./attendance-lists-772Y3ZWA.js")).
11
11
  workchangeDomain,"worker-agent":async()=>(await import("./worker-agent-WDYZTQ5C.js")).workerAgentDomain,workflow:async()=>(await import("./workflow-S25JXGWN.js")).workflowDomain};async function loadDomain(name){return LOADERS[name]()}export{loadDomain};
package/dist/cli.js CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire as __twpCreateRequire } from 'node:module';
3
3
  const require = __twpCreateRequire(import.meta.url);
4
- import{GLOBAL_OPTIONS_HELP}from"./chunk-PECIBNFD.js";import{parseArgv}from"./chunk-ZKS2F7C6.js";import"./chunk-2LOT54OO.js";import"./chunk-KDH3KWPO.js";import"./chunk-QQRJLH6B.js";import"./chunk-VSJBJXZO.js";var VERSION=true?"0.69.0":"0.0.0-dev";var HELP=`twp ${VERSION} \u2014 TWP CLI
4
+ import{GLOBAL_OPTIONS_HELP}from"./chunk-PECIBNFD.js";import{parseArgv}from"./chunk-D5EYI7S3.js";import"./chunk-2LOT54OO.js";import"./chunk-KDH3KWPO.js";import"./chunk-QQRJLH6B.js";import"./chunk-VSJBJXZO.js";var VERSION=true?"0.70.0":"0.0.0-dev";var HELP=`twp ${VERSION} \u2014 TWP CLI
5
5
 
6
6
  \u4F7F\u3044\u65B9:
7
7
  twp \u5BFE\u8A71 TUI \u3092\u8D77\u52D5
@@ -45,6 +45,19 @@ import{GLOBAL_OPTIONS_HELP}from"./chunk-PECIBNFD.js";import{parseArgv}from"./chu
45
45
  / --counts verify=N / --gate <\u30B9\u30AD\u30EB> \u3067\u6642\u9593\u5E2F\u30B2\u30FC\u30C8\u3060\u3051\u5224\u5B9A\uFF09
46
46
  \u203B --project __private__ \u3067\u500B\u4EBA\u30BF\u30B9\u30AF\u306E\u30AD\u30E5\u30FC\u3092\u6307\u3059
47
47
  \uFF08\u5B9A\u671F\u30B9\u30B1\u30B8\u30E5\u30FC\u30EB\u306F\u6301\u305F\u306A\u3044\u305F\u3081 schedule \u306F0\u4EF6\uFF09
48
+ twp task-loop schedule list --project <\u30AD\u30FC|UUID>
49
+ \u5B9A\u671F\u67A0\u306E\u5B9A\u7FA9\u3092\u5168\u4EF6\u8868\u793A\uFF08id\u30FB\u6709\u52B9/\u7121\u52B9\u30FB\u30B9\u30AD\u30EB\u30FB\u5F15\u6570\u30FB\u767A\u706B\u306E\u6761\u4EF6\u30FB\u4EF6\u6570\u30B2\u30FC\u30C8\uFF09
50
+ twp task-loop schedule push --project <\u30AD\u30FC|UUID> --file <\u30D1\u30B9>
51
+ \u5B9A\u7FA9\u3092\u30D5\u30A1\u30A4\u30EB\uFF08ops-schedule.json \u3068\u540C\u3058\u5F62\u30FB1\u4EF6\u30FB\u914D\u5217\u3082\u53EF\uFF09\u304B\u3089\u4F5C\u6210\u30FB\u66F4\u65B0\u3002
52
+ \u5DEE\u5206\u3092\u8868\u793A\u3057\u3066\u6B62\u307E\u308A\u3001\u6848\u5185\u3055\u308C\u308B --yes --revision <ID>=<N>,... \u3067\u78BA\u5B9A
53
+ \uFF08\u66F8\u3044\u305F\u5F8C\u306B\u30B5\u30FC\u30D0\u3068\u5DEE\u52060\u3092\u78BA\u8A8D\uFF09\u3002\u30B5\u30FC\u30D0\u306B\u3060\u3051\u3042\u308B\u5B9A\u7FA9\u306F\u6D88\u3055\u306A\u3044
54
+ twp task-loop schedule delete --project <\u30AD\u30FC|UUID> <\u5B9A\u7FA9ID>
55
+ \u5B9A\u7FA9\u3092\u524A\u9664\uFF08\u6848\u5185\u3055\u308C\u308B --yes --revision <N> \u3067\u78BA\u5B9A\u3002\u6B62\u3081\u308B\u3060\u3051\u306A\u3089
56
+ enabled: false \u3092 push\uFF09
57
+ twp task-loop schedule config pull|push --project <\u30AD\u30FC|UUID>
58
+ \u30B0\u30ED\u30FC\u30D0\u30EB\u8A2D\u5B9A\uFF08max_per_cycle / gates / require_zero_statuses\uFF09\u3092
59
+ pull [--out <\u30D1\u30B9>]\uFF08\u65E2\u5B9A\u306F\u6A19\u6E96\u51FA\u529B\uFF09\u30FBpush --file <\u30D1\u30B9>\uFF08\u5DEE\u5206\u3092\u8868\u793A\u3057\u3066\u6B62\u307E\u308A\u3001
60
+ \u6848\u5185\u3055\u308C\u308B --yes --revision <N> \u3067\u78BA\u5B9A\uFF09
48
61
  twp task-loop charter push --project <\u30AD\u30FC|UUID> --file <\u30D1\u30B9>
49
62
  \u61B2\u7AE0\u3092\u30D5\u30A1\u30A4\u30EB\u304B\u3089\u30B5\u30FC\u30D0\u3078\u767B\u9332\u3002\u5DEE\u5206\u3068 revision \u3092\u8868\u793A\u3057\u3066\u6B62\u307E\u308A\u3001
50
63
  \u6848\u5185\u3055\u308C\u308B --yes --revision <N> \u3067\u78BA\u5B9A\uFF08\u305D\u306E\u5F8C\u30B5\u30FC\u30D0\u304C\u66F4\u65B0\u3055\u308C\u3066
@@ -75,6 +88,14 @@ import{GLOBAL_OPTIONS_HELP}from"./chunk-PECIBNFD.js";import{parseArgv}from"./chu
75
88
  \u672C\u6587\u3078\u623B\u3059\uFF08revert --to <\u7248>\u3002\u5DEE\u5206\u3068 revision \u3092\u8868\u793A\u3057\u3066\u6B62\u307E\u308A\u3001
76
89
  \u6848\u5185\u3055\u308C\u308B --yes --revision <N> \u3067\u78BA\u5B9A\u3002\u623B\u3059\u64CD\u4F5C\u3082\u65B0\u3057\u3044\u7248\u306B\u306A\u308B\uFF09\u3002
77
90
  charter revert \u306F\u61B2\u7AE0\u3060\u3051\u3092\u623B\u3059
91
+ twp task-loop settings pull --project <\u30AD\u30FC|UUID> [--out <\u30D1\u30B9>]
92
+ \u61B2\u7AE0\u4EE5\u5916\u306E\u30EB\u30FC\u30D7\u8A2D\u5B9A\uFF08ai / prompts / loop / outcomes\uFF09\u3092 JSON \u3078\u5C55\u958B
93
+ \uFF08\u65E2\u5B9A loop-settings.json\u30FB\u672A\u8A2D\u5B9A\u306E\u30AD\u30FC\u306F null \u3067\u5168\u90E8\u51FA\u3059\uFF09\u3002
94
+ \u65E2\u5B58\u30D5\u30A1\u30A4\u30EB\u3068\u9055\u3046\u3068\u304D\u306F\u5DEE\u5206\u3092\u8868\u793A\u3057\u3001--yes \u3067\u4E0A\u66F8\u304D
95
+ twp task-loop settings push --project <\u30AD\u30FC|UUID> --file <\u30D1\u30B9>
96
+ \u30D5\u30A1\u30A4\u30EB\u306B\u66F8\u3044\u305F\u30AD\u30FC\u3060\u3051\u3092\u30B5\u30FC\u30D0\u3078\u53CD\u6620\uFF08\u90E8\u5206\u66F4\u65B0\u3002\u66F8\u3044\u3066\u3044\u306A\u3044\u30AD\u30FC\u3068
97
+ \u61B2\u7AE0\u306F\u5909\u3048\u306A\u3044\u30FBnull \u306F\u672A\u8A2D\u5B9A\u306B\u623B\u3059\u30FBprompts.charter \u306F charter push\uFF09\u3002
98
+ \u30AD\u30FC\u3054\u3068\u306E\u5DEE\u5206\u3068 revision \u3092\u8868\u793A\u3057\u3066\u6B62\u307E\u308A\u3001--yes --revision <N> \u3067\u78BA\u5B9A
78
99
  twp task-loop plan submit --file <\u30D1\u30B9|-> | --empty [--check]
79
100
  \u8A08\u753BAI\u304C\u8A08\u753B\u3092\u30EB\u30FC\u30D7\u3078\u63D0\u51FA\u3059\u308B\uFF08\u8A08\u753B\u30D5\u30A7\u30FC\u30BA\u306E\u4E2D\u3067\u3060\u3051\u53D7\u3051\u4ED8\u3051\u308B\uFF09\u3002
80
101
  step \u3054\u3068\u306B\u53D7\u7406/\u68C4\u5374\u3068\u7406\u7531\u3092\u8868\u793A\u3057\u3001\u68C4\u5374\u304C\u3042\u308C\u3070\u975E0\u3067\u7D42\u308F\u308B\u3002
@@ -810,6 +831,18 @@ import{GLOBAL_OPTIONS_HELP}from"./chunk-PECIBNFD.js";import{parseArgv}from"./chu
810
831
  \u81EA\u5206\u306E\u30EC\u30DD\u30FC\u30C8\u306B AI \u306E\u30A2\u30C9\u30D0\u30A4\u30B9\u3092\u3082\u3089\u3046\uFF08AI \u30AF\u30EC\u30B8\u30C3\u30C8\u3092\u6D88\u8CBB\u30FB--yes \u304C\u8981\u308B\uFF09
811
832
  twp wiki list \u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E wiki \u30DA\u30FC\u30B8\u3092\u4E00\u89A7\u3059\u308B\uFF08--parent \u3067\u89AA\u30DA\u30FC\u30B8\u76F4\u4E0B\uFF09
812
833
  twp wiki get <\u30DA\u30FC\u30B8ID> wiki \u30DA\u30FC\u30B81\u4EF6\u306E\u8A73\u7D30\u3092\u8868\u793A\u3059\u308B\uFF08--output text \u3067\u672C\u6587\u3092\u8AAD\u3080\uFF09
834
+ twp wiki tree wiki \u30DA\u30FC\u30B8\u306E\u89AA\u5B50\u69CB\u9020\u3092\u51FA\u3059\uFF08\u672C\u6587\u306F\u51FA\u3055\u306A\u3044\uFF09
835
+ twp wiki tags wiki \u30DA\u30FC\u30B8\u306B\u4ED8\u3044\u3066\u3044\u308B\u30BF\u30B0\u3092\u51FA\u3059
836
+ twp wiki versions <\u30DA\u30FC\u30B8ID>
837
+ wiki \u30DA\u30FC\u30B8\u306E\u7248\u306E\u5C65\u6B74\u3092\u65B0\u3057\u3044\u9806\u306B\u51FA\u3059
838
+ twp wiki version <\u30DA\u30FC\u30B8ID> <\u7248>
839
+ wiki \u30DA\u30FC\u30B8\u306E\u904E\u53BB\u306E\u72481\u3064\u3092\u8868\u793A\u3059\u308B\uFF08--output text \u3067\u672C\u6587\u3092\u8AAD\u3080\uFF09
840
+ twp wiki diff <\u30DA\u30FC\u30B8ID> <\u72481> [<\u72482>]
841
+ 2\u3064\u306E\u7248\u306E\u672C\u6587\u306E\u5DEE\u5206\u3092\u51FA\u3059\uFF08\u72482\u3092\u7701\u304F\u3068\u3044\u307E\u306E\u7248\u3068\u6BD4\u3079\u308B\uFF09
842
+ twp wiki backlinks <\u30DA\u30FC\u30B8ID>
843
+ wiki \u30DA\u30FC\u30B8\u3078\u30EA\u30F3\u30AF\u3057\u3066\u3044\u308B\u30DA\u30FC\u30B8\u3092\u51FA\u3059\uFF08\u30EA\u30F3\u30AF\u5468\u8FBA\u306E\u629C\u7C8B\u3064\u304D\uFF09
844
+ twp wiki linked-tasks <\u30DA\u30FC\u30B8ID>
845
+ wiki \u30DA\u30FC\u30B8\u306B\u7D10\u3065\u3044\u3066\u3044\u308B\u30BF\u30B9\u30AF\u3092\u51FA\u3059
813
846
  twp wiki create wiki \u30DA\u30FC\u30B8\u3092\u4F5C\u6210\u3059\u308B\uFF08\u672C\u6587\u306F --content-file \u306E\u30D5\u30A1\u30A4\u30EB\u304B\u3089\uFF09
814
847
  twp wiki update <\u30DA\u30FC\u30B8ID>
815
848
  wiki \u30DA\u30FC\u30B8\u3092\u66F4\u65B0\u3059\u308B\uFF08--if-version \u3067\u7248\u3092\u7167\u5408\uFF09
@@ -1233,16 +1266,16 @@ TUI \u5185:
1233
1266
  TWP API \u3092\u547C\u3079\u307E\u3059\u3002TWP API \u306E\u30C4\u30FC\u30EB\u306F\u65E2\u5B9A\u3067\u78BA\u8A8D\u304C\u51FA\u307E\u3059\uFF08-p \u3067\u306F\u62D2\u5426\u3002--allowed-tools \u3067\u540D\u524D\u3092\u8A31\u53EF\uFF09\u3002
1234
1267
  \u4F1A\u8A71\u30FB\u30ED\u30FC\u30AB\u30EB\u30C4\u30FC\u30EB\uFF08\u30D5\u30A1\u30A4\u30EB\u30FB\u30B3\u30DE\u30F3\u30C9\u30FBgit\uFF09\u306F\u30C6\u30CA\u30F3\u30C8\u306E\u30AF\u30EC\u30B8\u30C3\u30C8\u3067\u5B9F\u969B\u306B\u52D5\u304D\u307E\u3059\u3002
1235
1268
  `;function ignoreEpipe(stream){stream.on("error",err=>{if(err.code==="EPIPE")process.exit(0);throw err})}async function main(){const nodeMajor=Number(process.versions.node.split(".")[0]);if(nodeMajor<22){process.stderr.write(`twp-cli \u306B\u306F Node.js 22 \u4EE5\u4E0A\u304C\u5FC5\u8981\u3067\u3059\uFF08\u73FE\u5728: ${process.versions.node}\uFF09
1236
- `);process.exit(1)}ignoreEpipe(process.stdout);ignoreEpipe(process.stderr);if(process.env["TWP_AUTO_UPDATE_WORKER"]==="1"){const{runAutoUpdateWorker}=await import("./auto-update-worker-VG77U4UA.js");await runAutoUpdateWorker().catch(()=>void 0);return}const[first,...rest]=process.argv.slice(2);if(first==="__complete"||first==="completion"){const completion=await import("./completion-UVQHRBDJ.js");if(first==="completion"){process.exitCode=completion.runCompletion(rest,process.stdout,process.stderr);return}
1237
- const[{loadDomain},{loadUserConfig}]=await Promise.all([import("./registry-WBDRVEUW.js"),import("./config-3CNEQ7KN.js")]);process.exitCode=await completion.runComplete(rest,process.stdout,{loadDomain,profileNames:()=>Object.keys(loadUserConfig().profiles??{})});return}if(first==="configure"){const autoUpdate2=await import("./auto-update-YMI3F44R.js");autoUpdate2.registerRunning();autoUpdate2.onStartup(VERSION);const{runConfigure}=await import("./configure-3H3CGGBI.js");process.exitCode=
1269
+ `);process.exit(1)}ignoreEpipe(process.stdout);ignoreEpipe(process.stderr);if(process.env["TWP_AUTO_UPDATE_WORKER"]==="1"){const{runAutoUpdateWorker}=await import("./auto-update-worker-VG77U4UA.js");await runAutoUpdateWorker().catch(()=>void 0);return}const[first,...rest]=process.argv.slice(2);if(first==="__complete"||first==="completion"){const completion=await import("./completion-JDD3SNUO.js");if(first==="completion"){process.exitCode=completion.runCompletion(rest,process.stdout,process.stderr);return}
1270
+ const[{loadDomain},{loadUserConfig}]=await Promise.all([import("./registry-DWIGRC5S.js"),import("./config-3CNEQ7KN.js")]);process.exitCode=await completion.runComplete(rest,process.stdout,{loadDomain,profileNames:()=>Object.keys(loadUserConfig().profiles??{})});return}if(first==="configure"){const autoUpdate2=await import("./auto-update-YMI3F44R.js");autoUpdate2.registerRunning();autoUpdate2.onStartup(VERSION);const{runConfigure}=await import("./configure-3H3CGGBI.js");process.exitCode=
1238
1271
  await runConfigure(rest);return}const args=parseArgv(process.argv.slice(2));if(args.command==="version"){process.stdout.write(`${VERSION}
1239
1272
  `);return}if(args.command==="help"){process.stdout.write(HELP);return}if(args.unknown.length>0){process.stderr.write(`\u4E0D\u660E\u306A\u5F15\u6570: ${args.unknown.join(" ")}
1240
1273
 
1241
- ${HELP}`);process.exitCode=2;return}const autoUpdate=await import("./auto-update-YMI3F44R.js");autoUpdate.registerRunning();if(args.command==="task-loop"&&args.taskLoopAction!=="capacity"){process.env[autoUpdate.DISABLE_ENV]="1"}else if(args.command!=="update"){autoUpdate.onStartup(VERSION)}if(args.command==="domain"&&args.domain!==void 0){const{runDomain}=await import("./run-XZUJWTTZ.js");process.exitCode=await runDomain({domain:args.domain,...args.operation!==void 0?{operation:args.operation}:
1242
- {},argv:args.domainArgv,help:args.domainHelp,globals:{...args.profile!==void 0?{profile:args.profile}:{},...args.output!==void 0?{output:args.output}:{},...args.query!==void 0?{query:args.query}:{},dryRun:args.dryRun,debug:args.debug,yes:args.yes,refresh:args.refresh},version:VERSION});return}if(args.command==="api"){const{runApiCommand}=await import("./api-command-WIMCS3VI.js");process.exitCode=await runApiCommand({argv:args.domainArgv,help:args.domainHelp,globals:{...args.profile!==void 0?{profile:args.
1274
+ ${HELP}`);process.exitCode=2;return}const autoUpdate=await import("./auto-update-YMI3F44R.js");autoUpdate.registerRunning();if(args.command==="task-loop"&&args.taskLoopAction!=="capacity"){process.env[autoUpdate.DISABLE_ENV]="1"}else if(args.command!=="update"){autoUpdate.onStartup(VERSION)}if(args.command==="domain"&&args.domain!==void 0){const{runDomain}=await import("./run-36UF6SY5.js");process.exitCode=await runDomain({domain:args.domain,...args.operation!==void 0?{operation:args.operation}:
1275
+ {},argv:args.domainArgv,help:args.domainHelp,globals:{...args.profile!==void 0?{profile:args.profile}:{},...args.output!==void 0?{output:args.output}:{},...args.query!==void 0?{query:args.query}:{},dryRun:args.dryRun,debug:args.debug,yes:args.yes,refresh:args.refresh},version:VERSION});return}if(args.command==="api"){const{runApiCommand}=await import("./api-command-OJWUGQKF.js");process.exitCode=await runApiCommand({argv:args.domainArgv,help:args.domainHelp,globals:{...args.profile!==void 0?{profile:args.
1243
1276
  profile}:{},...args.output!==void 0?{output:args.output}:{},...args.query!==void 0?{query:args.query}:{},dryRun:args.dryRun,debug:args.debug,yes:args.yes},version:VERSION});return}if(args.command==="update"){const{runUpdate}=await import("./update-NCAVUXSX.js");process.exitCode=await runUpdate({...args.profile!==void 0?{profile:args.profile}:{},version:VERSION});return}if(args.command==="login"||args.command==="logout"||args.command==="whoami"){const{runLogin,runLogout,runWhoami}=await import("./commands-4C6TJ4WG.js");
1244
- const options={profile:args.profile,method:args.loginMethod,tenant:args.tenant,noBrowser:args.loginNoBrowser,cliVersion:VERSION,force:args.logoutForce,...args.output!==void 0?{output:args.output}:{},...args.query!==void 0?{query:args.query}:{}};const runner=args.command==="login"?runLogin:args.command==="logout"?runLogout:runWhoami;process.exitCode=await runner(options);return}if(args.command==="task-loop"){const{runTaskLoop}=await import("./commands-TR3J5HXT.js");process.exitCode=await runTaskLoop(
1245
- {action:args.taskLoopAction??"run",project:args.project,profile:args.profile,safe:args.safe,daemon:args.daemon,interval:args.interval,maxCycles:args.maxCycles,forceRunner:args.forceRunner,force:args.stopForce,drain:args.stopDrain,engine:args.engine,version:VERSION,verbose:args.verbose,scheduleNow:args.scheduleNow,scheduleCounts:args.scheduleCounts,scheduleGate:args.scheduleGate,charterOp:args.charterOp,charterInput:args.charterFile,charterOutput:args.charterOut,charterRevision:args.charterRevision,
1246
- skillOp:args.skillOp,skillName:args.skillName,skillAll:args.skillAll,skillDir:args.skillDir,output:args.output,query:args.query,revisionFrom:args.revisionFrom,revisionTo:args.revisionTo,planOp:args.planOp,capacityOp:args.capacityOp,planEmpty:args.planEmpty,planCheck:args.planCheck,yes:args.yes,ais:args.ais,workspace:args.workspace,aiConfigFile:args.aiConfigFile,noAiConfigFile:args.noAiConfigFile});return}if(args.command==="print"){const{runOneShot}=await import("./oneshot-4XO5HIJR.js");process.
1247
- exitCode=await runOneShot({prompt:args.prompt??"",fromStdin:args.promptFromStdin,mode:args.mode??"dev",...args.permissionMode!==void 0?{permissionMode:args.permissionMode}:{},allowedTools:args.allowedTools,disallowedTools:args.disallowedTools,...args.model!==void 0?{model:args.model}:{},...args.profile!==void 0?{profile:args.profile}:{},version:VERSION});return}const{startTui}=await import("./app-SAHITYJK.js");await startTui({mode:args.mode,permissionMode:args.permissionMode,allowedTools:args.
1248
- allowedTools,disallowedTools:args.disallowedTools,model:args.model,profile:args.profile,noTui:args.noTui||!process.stdout.isTTY,doctor:args.doctor,version:VERSION})}await main();
1277
+ const options={profile:args.profile,method:args.loginMethod,tenant:args.tenant,noBrowser:args.loginNoBrowser,cliVersion:VERSION,force:args.logoutForce,...args.output!==void 0?{output:args.output}:{},...args.query!==void 0?{query:args.query}:{}};const runner=args.command==="login"?runLogin:args.command==="logout"?runLogout:runWhoami;process.exitCode=await runner(options);return}if(args.command==="task-loop"){const{runTaskLoop}=await import("./commands-MTH5LEV7.js");process.exitCode=await runTaskLoop(
1278
+ {action:args.taskLoopAction??"run",project:args.project,profile:args.profile,safe:args.safe,daemon:args.daemon,interval:args.interval,maxCycles:args.maxCycles,forceRunner:args.forceRunner,force:args.stopForce,drain:args.stopDrain,engine:args.engine,version:VERSION,verbose:args.verbose,scheduleNow:args.scheduleNow,scheduleCounts:args.scheduleCounts,scheduleGate:args.scheduleGate,scheduleOp:args.scheduleOp,scheduleConfigOp:args.scheduleConfigOp,scheduleId:args.scheduleId,charterOp:args.charterOp,charterInput:args.
1279
+ charterFile,charterOutput:args.charterOut,charterRevision:args.charterRevision,settingsOp:args.settingsOp,skillOp:args.skillOp,skillName:args.skillName,skillAll:args.skillAll,skillDir:args.skillDir,output:args.output,query:args.query,revisionFrom:args.revisionFrom,revisionTo:args.revisionTo,planOp:args.planOp,capacityOp:args.capacityOp,planEmpty:args.planEmpty,planCheck:args.planCheck,yes:args.yes,ais:args.ais,workspace:args.workspace,aiConfigFile:args.aiConfigFile,noAiConfigFile:args.noAiConfigFile});
1280
+ return}if(args.command==="print"){const{runOneShot}=await import("./oneshot-4XO5HIJR.js");process.exitCode=await runOneShot({prompt:args.prompt??"",fromStdin:args.promptFromStdin,mode:args.mode??"dev",...args.permissionMode!==void 0?{permissionMode:args.permissionMode}:{},allowedTools:args.allowedTools,disallowedTools:args.disallowedTools,...args.model!==void 0?{model:args.model}:{},...args.profile!==void 0?{profile:args.profile}:{},version:VERSION});return}const{startTui}=await import("./app-DT4HVGYU.js");
1281
+ await startTui({mode:args.mode,permissionMode:args.permissionMode,allowedTools:args.allowedTools,disallowedTools:args.disallowedTools,model:args.model,profile:args.profile,noTui:args.noTui||!process.stdout.isTTY,doctor:args.doctor,version:VERSION})}await main();
@@ -1,8 +1,8 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
3
  import{ScheduleApi,collectDue,gateStatus,nowInZone,parseCounts,promptSection}from"./chunk-W2AIT5FJ.js";import{LoopSettingsApplier,renderStepBudget}from"./chunk-X6L5LUC4.js";import{NO_PLAN_SESSION,RECENT_ADVANCE_WINDOW_HOURS,ReleaseOutcomeLog,buildDynamicBlocks,buildRecentCandidateIndex,createItem,enqueueBlockerRecovery,enqueueDevVerifyForMerged,enqueueReleasePartialMergeRerun,enqueueReleasePhase5Recovery,fileSkillNames,findRecentCandidate,formatInflightEntry,formatPlanResultLine,formatRecentAdvance,
4
- inflightEntries,inflightStaleHours,openPlanSession,parseOutcomeCode,parseReleaseResult,parseTaskStatusSnapshot,pendingTaskKeys,resolveRecentAdvance,shouldSuppressForStatus,staleFloorHours,unavailableChecks,windowStartMicros}from"./chunk-P6M2MCZJ.js";import{EngineNotConfiguredError,NoopEngine,UnknownEngineError,aiUnavailableLabel,assertKnownEngine,failureHint,isAiUnavailable,needsHumanToRestoreAi}from"./chunk-ZOOEH7ZE.js";import{ServerSkillCatalog,formatSkillOrigins}from"./chunk-PVP3REVW.js";
5
- import{claudeConfigDir,resolveDetectDeps}from"./chunk-5SONMN6K.js";import"./chunk-RRHAX7RK.js";import"./chunk-A4LFG7MW.js";import"./chunk-VRBI2NPI.js";import{InstanceLock,buildLockOwner,defaultIsLoopProcess,writeLockOwner}from"./chunk-3WHC4FSG.js";import{duplicateTaskKeyDropReason,excludedKeyInArgs,extractPlanJson,parseOpsCount,parsePlanExcludeKeys,placeholderTaskKey,releaseDeployDropReason,stepToItem,zeroTargetDropReasons}from"./chunk-6PAZUW73.js";import"./chunk-DXUFECE7.js";
4
+ inflightEntries,inflightStaleHours,openPlanSession,parseOutcomeCode,parseReleaseResult,parseTaskStatusSnapshot,pendingTaskKeys,resolveRecentAdvance,shouldSuppressForStatus,staleFloorHours,unavailableChecks,windowStartMicros}from"./chunk-P6M2MCZJ.js";import{EngineNotConfiguredError,NoopEngine,UnknownEngineError,aiUnavailableLabel,assertKnownEngine,failureHint,isAiUnavailable,needsHumanToRestoreAi}from"./chunk-ZOOEH7ZE.js";import{ServerSkillCatalog,formatSkillOrigins}from"./chunk-EDBJQCNC.js";
5
+ import{claudeConfigDir,resolveDetectDeps}from"./chunk-5SONMN6K.js";import"./chunk-RRHAX7RK.js";import"./chunk-A4LFG7MW.js";import{InstanceLock,buildLockOwner,defaultIsLoopProcess,writeLockOwner}from"./chunk-3WHC4FSG.js";import"./chunk-VRBI2NPI.js";import{duplicateTaskKeyDropReason,excludedKeyInArgs,extractPlanJson,parseOpsCount,parsePlanExcludeKeys,placeholderTaskKey,releaseDeployDropReason,stepToItem,zeroTargetDropReasons}from"./chunk-6PAZUW73.js";import"./chunk-DXUFECE7.js";
6
6
  import{AgentLoopApi,describeError,filterByStatus,isPermanent,pick,pickString}from"./chunk-SPZ3GBYC.js";import{buildLoopConfig,describeOperations,evaluateOwnership,evaluatePlanGate,exportStateDirEnv,loopStateDir,planGateStatePath,recordPlanned}from"./chunk-LJVAOWZI.js";import{CapacityReporter,formatHookIds,formatHookWiring,runHook,runPrefetch,runPreflight}from"./chunk-G4TZFGNN.js";import{exclusiveInflightEntries,formatExclusiveEntry,normalizeSkillName,spawnSyncResolved}from"./chunk-FABDZBDZ.js";
7
7
  import{setSkillPrefix,skillCommand,skillFromPrompt,stripSkillCommand}from"./chunk-6CS5L24D.js";import{killProcessTree}from"./chunk-N2UVRM3Z.js";import{PRIVATE_PROJECT_REF,isPrivateProjectId,isPrivateProjectRef,privateProjectId,projectFileKey}from"./chunk-GY7KI5E5.js";import{ULID_RE,loopProjectIdPolicy,resolveProjectRef}from"./chunk-HVZUXLQ4.js";import"./chunk-II5RVJQN.js";import"./chunk-VFPY2A23.js";import{joinFor}from"./chunk-PMOUHEJQ.js";import{AuthSession}from"./chunk-XNLIEUAW.js";
8
8
  import{httpFetch}from"./chunk-J7QYPKVK.js";import{compareVersionCores,parseVersionCore}from"./chunk-DXXFUNYN.js";import"./chunk-5WGOHFAS.js";import{effectiveApiUrl,resolveProfile}from"./chunk-4VZKNEVN.js";import{twpHomeDir}from"./chunk-RZVI6PMW.js";import{stripTerminalControls}from"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";import fs9 from"fs";import path7 from"path";import fs from"fs";import path from"path";var LoopLogger=class{constructor(runnerId,logFile,out=process.stdout,now=()=>new Date){this.runnerId=runnerId;this.out=out;this.now=now;if(logFile){fs.mkdirSync(path.dirname(logFile),{recursive:true});this.stream=fs.createWriteStream(logFile,{flags:"a"})}}runnerId;out;now;stream=null;log(message){const d=this.now();const ts=`${d.getFullYear()}-${pad(d.getMonth()+1)}-${pad(d.getDate())} ${pad(d.getHours())}:${pad(d.getMinutes())}:${pad(d.getSeconds())}`;const line=`[${ts}] [${this.runnerId}] ${stripTerminalControls(
@@ -280,7 +280,7 @@ const startedAtMs=now();let warned="";let done=false;const check=()=>{if(done)re
280
280
  decision.key)return;warned=decision.key;handlers.onWarn(decision.reason);return}done=true;const recorded=writeRestartAttempt(opts.stateDir,opts.projectKey,{from:decision.from,to:decision.to,at:new Date(now()).toISOString()},opts.store);if(!recorded){handlers.onWarn(`\u518D\u8D77\u52D5\u8A18\u9332\u3092\u66F8\u3051\u307E\u305B\u3093\u3067\u3057\u305F\uFF08${restartAttemptPath(opts.stateDir,opts.projectKey)}\uFF09\u3002\u540C\u3058\u7248\u30C9\u30EA\u30D5\u30C8\u304C\u89E3\u6D88\u3057\u306A\u3044\u5834\u5408\u3001\u518D\u8D77\u52D5\u3092\u7E70\u308A\u8FD4\u3059\u9632\u6CE2\u5824\u304C\u52B9\u304D\u307E\u305B\u3093`)}
281
281
  handlers.onRestart({from:decision.from,to:decision.to})};const timer=setInterval(check,opts.intervalMs??DRIFT_POLL_MS);timer.unref?.();return{stop:()=>{done=true;clearInterval(timer)},check}}import fs8 from"fs";import path6 from"path";var POLL_MS=1e3;var MAX_STOP_BYTES=4096;var MAX_AT_LENGTH=64;function markerPath(lockDir2,kind){return path6.join(lockDir2,kind)}function requestMarker(lockDir2,kind,pid,deps={}){const target=markerPath(lockDir2,kind);const write=deps.writeFileSync??((p,d)=>fs8.writeFileSync(p,d,{flag:"wx",mode:384}));const now=deps.now??(()=>new Date);clearMarker(lockDir2,kind,deps);try{write(target,`${JSON.stringify({pid,at:now().toISOString()})}
282
282
  `);return{ok:true}}catch(err){const e=err;return{ok:false,reason:e.code??"UNKNOWN"}}}function readMarker(lockDir2,kind,deps={}){const target=markerPath(lockDir2,kind);const read=deps.readFileSync??(p=>fs8.readFileSync(p,"utf8"));const size=deps.statSize??(p=>fs8.statSync(p).size);let raw;try{if(size(target)>MAX_STOP_BYTES)return null;raw=read(target)}catch{return null}if(raw.length>MAX_STOP_BYTES)return null;try{const parsed=JSON.parse(raw);if(typeof parsed!=="object"||parsed===null)return null;const pid=parsed.pid;const at=parsed.at;if(typeof pid!=="number"||!Number.isInteger(pid)||
283
- pid<=0)return null;return{pid,at:sanitizeAt(at)}}catch{return null}}function sanitizeAt(at){if(typeof at!=="string")return"";return at.replace(/[\u0000-\u001f\u007f]/g," ").slice(0,MAX_AT_LENGTH)}function clearMarker(lockDir2,kind,deps={}){const rm=deps.rmSync??(p=>fs8.rmSync(p,{recursive:true,force:true}));try{rm(markerPath(lockDir2,kind))}catch{}}function watchMarker(lockDir2,kind,selfPid,onStop,deps={}){let fired=false;const timer=setInterval(()=>{if(fired)return;const req=readMarker(lockDir2,kind,deps);if(req===null||req.pid!==selfPid)return;fired=true;onStop(req)},deps.intervalMs??POLL_MS);timer.unref?.();return()=>{fired=true;clearInterval(timer)}}function safe(s){return stripTerminalControls(s)}function compactTimestamp(at=new Date){const p2=n=>String(n).padStart(2,"0");return`${at.getFullYear()}${p2(at.getMonth()+1)}${p2(at.getDate())}-${p2(at.getHours())}${p2(at.getMinutes())}${p2(at.getSeconds())}`}async function buildEngine(config,log){if(config.engine==="noop")return new NoopEngine;const{DispatchEngine}=await import("./ai-dispatch-IW5TJK5Y.js");const{DEFAULT_PREFLIGHT_HOSTS}=await import("./ai-dispatch-IW5TJK5Y.js");const extraHosts=config.
283
+ pid<=0)return null;return{pid,at:sanitizeAt(at)}}catch{return null}}function sanitizeAt(at){if(typeof at!=="string")return"";return at.replace(/[\u0000-\u001f\u007f]/g," ").slice(0,MAX_AT_LENGTH)}function clearMarker(lockDir2,kind,deps={}){const rm=deps.rmSync??(p=>fs8.rmSync(p,{recursive:true,force:true}));try{rm(markerPath(lockDir2,kind))}catch{}}function watchMarker(lockDir2,kind,selfPid,onStop,deps={}){let fired=false;const timer=setInterval(()=>{if(fired)return;const req=readMarker(lockDir2,kind,deps);if(req===null||req.pid!==selfPid)return;fired=true;onStop(req)},deps.intervalMs??POLL_MS);timer.unref?.();return()=>{fired=true;clearInterval(timer)}}function safe(s){return stripTerminalControls(s)}function compactTimestamp(at=new Date){const p2=n=>String(n).padStart(2,"0");return`${at.getFullYear()}${p2(at.getMonth()+1)}${p2(at.getDate())}-${p2(at.getHours())}${p2(at.getMinutes())}${p2(at.getSeconds())}`}async function buildEngine(config,log){if(config.engine==="noop")return new NoopEngine;const{DispatchEngine}=await import("./ai-dispatch-H7OOHHKO.js");const{DEFAULT_PREFLIGHT_HOSTS}=await import("./ai-dispatch-H7OOHHKO.js");const extraHosts=config.
284
284
  operations.preflightHosts;return new DispatchEngine(config.ai,log,{workspace:config.workspace,charterFile:config.charterFile??void 0,charterEnabled:config.charterEnabled,...config.charterPrefix===null?{}:{charterPrefix:config.charterPrefix},...config.charterSuffix===null?{}:{charterSuffix:config.charterSuffix},serverPrompts:()=>config.serverPrompts??{},compileCommand:config.compileCommand??void 0,skillOverlayDir:path7.join(config.stateDir,"skill-overlay",projectFileKey(config.projectId)),launcherBin:config.
285
285
  claudeLauncher.bin,...extraHosts.length>0?{preflightHosts:[...DEFAULT_PREFLIGHT_HOSTS,...extraHosts]}:{}})}function lockDir(config){return path7.join(config.stateDir,`task-loop-${projectFileKey(config.projectId)}.lock.d`)}function runnerIdPersisted(stateDir,env=process.env){if((env.RUNNER_ID?.trim()??"")!=="")return true;const file=env.RUNNER_ID_FILE&&env.RUNNER_ID_FILE.trim()!==""?env.RUNNER_ID_FILE:path7.join(stateDir,"runner-id");return fs9.existsSync(file)}async function runTaskLoop(opts){if(opts.
286
286
  action==="stop")return await stopLoop(opts);if(opts.action==="plan"){if(opts.planOp!=="submit"){process.stderr.write("plan \u306B\u306F submit \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\n");return 2}const{runPlanSubmit}=await import("./plan-submit-T5KHXNGH.js");return runPlanSubmit({file:opts.charterInput,empty:opts.planEmpty===true,check:opts.planCheck===true},{env:process.env,readStdin:()=>fs9.readFileSync(0,"utf8"),stdout:s=>process.stdout.write(s),stderr:s=>process.stderr.write(s)})}
@@ -291,11 +291,13 @@ message}
291
291
  `);return 2}ais=parsed.ais}return runSetup({projectId,projectRef,projectName:project.name===project.id?projectRef:`${project.code} / ${project.name}`,apiUrl,yes:opts.yes===true,...ais!==void 0?{ais}:{},...opts.workspace!==void 0?{workspace:opts.workspace}:{},...opts.aiConfigFile!==void 0?{aiConfigFile:opts.aiConfigFile}:{},...opts.noAiConfigFile===true?{noAiConfigFile:true}:{},...opts.profile!==void 0?{profile:opts.profile}:{}})}if(opts.action==="charter"){if(opts.charterOp===void 0){process.stderr.
292
292
  write("charter \u306B\u306F push / pull / history / diff / revert \u306E\u3044\u305A\u308C\u304B\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\n");return 2}if(isPrivateProjectId(projectId)){process.stderr.write("\u500B\u4EBA\u30BF\u30B9\u30AF\u306E\u30AD\u30E5\u30FC\uFF08--project __private__\uFF09\u306B\u306F\u61B2\u7AE0\u306E\u8A2D\u5B9A\u304C\u3042\u308A\u307E\u305B\u3093\n");return 2}if(opts.charterOp!=="push"&&opts.charterOp!=="pull"){const{runRevisionCommand}=await import("./revision-command-TYBPPUAF.js");
293
293
  return runRevisionCommand({api:new AgentLoopApi({apiUrl,projectId,session})},{target:"charter",op:opts.charterOp,from:opts.revisionFrom,to:opts.revisionTo,revision:opts.charterRevision,yes:opts.yes===true,projectRef,profile:opts.profile})}const{runCharterCommand}=await import("./charter-command-LIX2JXRJ.js");return runCharterCommand({api:new AgentLoopApi({apiUrl,projectId,session})},{op:opts.charterOp,file:opts.charterInput,out:opts.charterOutput,revision:opts.charterRevision,yes:opts.yes===true,projectRef,
294
- profile:opts.profile})}if(opts.action==="skill"){if(opts.skillOp===void 0){process.stderr.write("skill \u306B\u306F push / pull / list / show / delete / history / diff / revert \u306E\u3044\u305A\u308C\u304B\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\n");return 2}if(isPrivateProjectId(projectId)){process.stderr.write("\u500B\u4EBA\u30BF\u30B9\u30AF\u306E\u30AD\u30E5\u30FC\uFF08--project __private__\uFF09\u306B\u306F\u30B9\u30AD\u30EB\u5B9A\u7FA9\u306E\u8A2D\u5B9A\u304C\u3042\u308A\u307E\u305B\u3093\n");
295
- return 2}if(opts.skillOp==="list"||opts.skillOp==="show"||opts.skillOp==="delete"){const{runSkillManageCommand}=await import("./skill-manage-command-S2RLIHTA.js");return runSkillManageCommand({api:new AgentLoopApi({apiUrl,projectId,session})},{op:opts.skillOp,name:opts.skillName,output:opts.output,query:opts.query,revision:opts.charterRevision,yes:opts.yes===true,projectRef,profile:opts.profile})}if(opts.skillOp!=="push"&&opts.skillOp!=="pull"){const{runRevisionCommand}=await import("./revision-command-TYBPPUAF.js");
296
- return runRevisionCommand({api:new AgentLoopApi({apiUrl,projectId,session})},{target:"skill",op:opts.skillOp,name:opts.skillName,from:opts.revisionFrom,to:opts.revisionTo,revision:opts.charterRevision,yes:opts.yes===true,projectRef,profile:opts.profile})}const{runSkillCommand}=await import("./skill-command-4V2GT73D.js");return runSkillCommand({api:new AgentLoopApi({apiUrl,projectId,session})},{op:opts.skillOp,name:opts.skillName,all:opts.skillAll===true,dir:opts.skillDir,revision:opts.charterRevision,
297
- yes:opts.yes===true,projectRef,profile:opts.profile})}const config=buildLoopConfig({projectId,projectRef,apiUrl,safeMode:opts.safe,daemon:opts.daemon,...opts.maxCycles!==void 0?{maxCycles:opts.maxCycles}:{},...opts.interval!==void 0?{intervalSec:opts.interval}:{},forceRunner:opts.forceRunner,...opts.engine!==void 0?{engine:opts.engine}:{},version:opts.version});const api=new AgentLoopApi({apiUrl,projectId,session});if(opts.action==="capacity"){if(opts.capacityOp!=="report"){process.stderr.write(
298
- "capacity \u306B\u306F report \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\n");return 2}for(const warning of config.warnings)process.stderr.write(`\u26A0\uFE0F ${warning}
294
+ profile:opts.profile})}if(opts.action==="schedule"&&opts.scheduleOp!==void 0){const{runScheduleDefCommand}=await import("./schedule-def-command-OFCA5VH3.js");return runScheduleDefCommand({api:new AgentLoopApi({apiUrl,projectId,session})},{op:opts.scheduleOp,configOp:opts.scheduleConfigOp,id:opts.scheduleId,file:opts.charterInput,out:opts.charterOutput,revision:opts.charterRevision,yes:opts.yes===true,projectRef,profile:opts.profile})}if(opts.action==="settings"){if(opts.settingsOp===void 0){process.stderr.
295
+ write("settings \u306B\u306F push / pull \u306E\u3044\u305A\u308C\u304B\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\n");return 2}if(isPrivateProjectId(projectId)){process.stderr.write("\u500B\u4EBA\u30BF\u30B9\u30AF\u306E\u30AD\u30E5\u30FC\uFF08--project __private__\uFF09\u306B\u306F\u30EB\u30FC\u30D7\u8A2D\u5B9A\u304C\u3042\u308A\u307E\u305B\u3093\n");return 2}const{runSettingsCommand}=await import("./settings-command-TEVH2MNY.js");return runSettingsCommand({api:new AgentLoopApi({apiUrl,projectId,
296
+ session})},{op:opts.settingsOp,file:opts.charterInput,out:opts.charterOutput,revision:opts.charterRevision,yes:opts.yes===true,projectRef,profile:opts.profile})}if(opts.action==="skill"){if(opts.skillOp===void 0){process.stderr.write("skill \u306B\u306F push / pull / list / show / delete / history / diff / revert \u306E\u3044\u305A\u308C\u304B\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\n");return 2}if(isPrivateProjectId(projectId)){process.stderr.write("\u500B\u4EBA\u30BF\u30B9\u30AF\u306E\u30AD\u30E5\u30FC\uFF08--project __private__\
297
+ \uFF09\u306B\u306F\u30B9\u30AD\u30EB\u5B9A\u7FA9\u306E\u8A2D\u5B9A\u304C\u3042\u308A\u307E\u305B\u3093\n");return 2}if(opts.skillOp==="list"||opts.skillOp==="show"||opts.skillOp==="delete"){const{runSkillManageCommand}=await import("./skill-manage-command-S2RLIHTA.js");return runSkillManageCommand({api:new AgentLoopApi({apiUrl,projectId,session})},{op:opts.skillOp,name:opts.skillName,output:opts.output,query:opts.query,revision:opts.charterRevision,yes:opts.yes===true,projectRef,profile:opts.profile})}if(opts.
298
+ skillOp!=="push"&&opts.skillOp!=="pull"){const{runRevisionCommand}=await import("./revision-command-TYBPPUAF.js");return runRevisionCommand({api:new AgentLoopApi({apiUrl,projectId,session})},{target:"skill",op:opts.skillOp,name:opts.skillName,from:opts.revisionFrom,to:opts.revisionTo,revision:opts.charterRevision,yes:opts.yes===true,projectRef,profile:opts.profile})}const{runSkillCommand}=await import("./skill-command-4V2GT73D.js");return runSkillCommand({api:new AgentLoopApi({apiUrl,projectId,session})},
299
+ {op:opts.skillOp,name:opts.skillName,all:opts.skillAll===true,dir:opts.skillDir,revision:opts.charterRevision,yes:opts.yes===true,projectRef,profile:opts.profile})}const config=buildLoopConfig({projectId,projectRef,apiUrl,safeMode:opts.safe,daemon:opts.daemon,...opts.maxCycles!==void 0?{maxCycles:opts.maxCycles}:{},...opts.interval!==void 0?{intervalSec:opts.interval}:{},forceRunner:opts.forceRunner,...opts.engine!==void 0?{engine:opts.engine}:{},version:opts.version});const api=new AgentLoopApi(
300
+ {apiUrl,projectId,session});if(opts.action==="capacity"){if(opts.capacityOp!=="report"){process.stderr.write("capacity \u306B\u306F report \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\n");return 2}for(const warning of config.warnings)process.stderr.write(`\u26A0\uFE0F ${warning}
299
301
  `);const{runCapacityReport}=await import("./capacity-report-command-PBE73I43.js");return runCapacityReport({api,projectId,runnerId:config.runnerId,stateDir:config.stateDir,cwd:config.workspace,probe:config.capacityProbe,runnerIdPersisted:runnerIdPersisted(config.stateDir),version:opts.version,platform:runnerPlatform(),stdout:s=>process.stdout.write(s),stderr:s=>process.stderr.write(s)})}if(opts.action==="status"||opts.action==="schedule"){for(const warning of config.warnings)process.stderr.write(`\u26A0\uFE0F ${warning}\
300
302
 
301
303
  `)}if(opts.action==="status")return showStatus(api,config);if(opts.action==="schedule"){const{runScheduleCommand}=await import("./schedule-command-2HCOGYJW.js");return runScheduleCommand({api,projectApi,config},{now:opts.scheduleNow,counts:opts.scheduleCounts,gate:opts.scheduleGate,verbose:opts.verbose===true})}if(config.engine===""){process.stderr.write(`${new EngineNotConfiguredError().message}
@@ -314,7 +316,7 @@ log.log("\u4E2D\u65AD\u30B7\u30B0\u30CA\u30EB\u3092\u53D7\u4FE1\u3057\u307E\u305
314
316
  "\u6642\u523B\u4E0D\u660E"}\uFF09\u3002\u7D42\u4E86\u3057\u307E\u3059...`);stopWatcher?.();drainWatcher?.();driftWatcher?.();void shutdown().catch(()=>void 0).then(()=>process.exit(130))});drainWatcher=watchMarker(lockDir(config),"drain",process.pid,req=>{drainWatcher?.();if(loop===null){pendingDrain.value={reason:`stop --drain\u30FB${req.at||"\u6642\u523B\u4E0D\u660E"}`,exitCode:0};log.log(`\u30C9\u30EC\u30A4\u30F3\u8981\u6C42\u3092\u53D7\u3051\u53D6\u308A\u307E\u3057\u305F\uFF08${req.at||"\u6642\u523B\u4E0D\u660E"}\
315
317
  \uFF09\u3002\u8D77\u52D5\u51E6\u7406\u306E\u5B8C\u4E86\u5F8C\u306B\u53CD\u6620\u3057\u307E\u3059\u3002`);return}loop.requestDrain(`stop --drain\u30FB${req.at||"\u6642\u523B\u4E0D\u660E"}`)});if(installed!==null){const watch=watchVersionDrift({runningVersion:opts.version,stateDir:config.stateDir,projectKey:projectFileKey(config.projectId),supervised:autoRestart.supervised,disabled:autoRestart.disabled},{onWarn:reason=>log.log(`\u26A0\uFE0F ${reason}`),onRestart:({from,to})=>{driftWatcher?.();log.
316
318
  log(`\u7248\u30C9\u30EA\u30D5\u30C8\u3092\u691C\u51FA\u3057\u307E\u3057\u305F\uFF08${from} \u2192 ${to}\uFF09\u3002`);log.log(` \u5B9F\u884C\u4E2D\u306E\u30A2\u30A4\u30C6\u30E0\u3092\u5B8C\u8D70\u3055\u305B\u3066\u304B\u3089\u7D42\u4E86\u3057\u307E\u3059\uFF08\u7D42\u4E86\u30B3\u30FC\u30C9 ${EXIT_VERSION_DRIFT}\uFF09\u3002\u518D\u8D77\u52D5\u306F systemd\uFF08Restart=always\uFF09\u304C\u884C\u3044\u307E\u3059`);const reason=`\u7248\u30C9\u30EA\u30D5\u30C8 ${from} \u2192 ${to} \u306B\u3088\u308B\u81EA\u52D5\u518D\u8D77\u52D5`;
317
- if(loop===null)pendingDrain.value={reason,exitCode:EXIT_VERSION_DRIFT};else loop.requestDrain(reason,EXIT_VERSION_DRIFT)}});driftWatcher=watch.stop}try{const{LoopSettingsApplier:LoopSettingsApplier2}=await import("./server-settings-LJBDUOTV.js");const settings=new LoopSettingsApplier2({api,config,log:m=>log.log(m)});await settings.apply();const{ServerSkillCatalog:ServerSkillCatalog2}=await import("./server-skills-WC45Y62Y.js");const skills=new ServerSkillCatalog2({api,config,log:m=>log.log(m)});await skills.
319
+ if(loop===null)pendingDrain.value={reason,exitCode:EXIT_VERSION_DRIFT};else loop.requestDrain(reason,EXIT_VERSION_DRIFT)}});driftWatcher=watch.stop}try{const{LoopSettingsApplier:LoopSettingsApplier2}=await import("./server-settings-LJBDUOTV.js");const settings=new LoopSettingsApplier2({api,config,log:m=>log.log(m)});await settings.apply();const{ServerSkillCatalog:ServerSkillCatalog2}=await import("./server-skills-4XYTHPN3.js");const skills=new ServerSkillCatalog2({api,config,log:m=>log.log(m)});await skills.
318
320
  refresh();await runner.checkHeartbeatInterval();await runner.registerOrThrow();runner.startHeartbeatWorker();log.log(` heartbeat: ${config.heartbeatIntervalSec}\u79D2\u3054\u3068\u306B\u9001\u4FE1${runner.heartbeatTimeoutServer?`\uFF08\u30B5\u30FC\u30D0\u306E\u6B7B\u6D3B\u3057\u304D\u3044\u5024 ${runner.heartbeatTimeoutServer}\u79D2\uFF09`:""}`);loop=new TaskLoop({api,projectApi,config,log,runner,engine:await buildEngine(config,m=>log.log(m)),settings,skills});if(pendingDrain.value!==null){loop.
319
321
  requestDrain(pendingDrain.value.reason,pendingDrain.value.exitCode)}exitCode=await loop.run()}catch(err){if(err instanceof RunnerRegistrationError){exitCode=1}else{log.log(`\u26D4 \u4E88\u671F\u3057\u306A\u3044\u30A8\u30E9\u30FC\u3067\u7D42\u4E86\u3057\u307E\u3059: ${err.message}`);exitCode=1}}finally{await shutdown()}return exitCode}async function showStatus(api,config){const out={write:text=>process.stdout.write(stripTerminalControls(text))};out.write(`\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8: ${config.
320
322
  projectRef}\uFF08${config.projectId}\uFF09
@@ -1,13 +1,13 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{BUILTIN_COMMANDS,GLOBAL_FLAGS,TASK_LOOP_ACTIONS,VALUE_FLAGS}from"./chunk-ZKS2F7C6.js";import"./chunk-2LOT54OO.js";import{API_TOKEN,DOMAIN_NAMES,HELP_TOKEN,isDomainName}from"./chunk-KDH3KWPO.js";import"./chunk-QQRJLH6B.js";import{OUTPUT_FORMATS}from"./chunk-74BPZOKU.js";import"./chunk-UREA4ZIG.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var EXTRA_TOP_LEVEL=[API_TOKEN,HELP_TOKEN,"completion","configure"];var COMPLETION_SHELLS=["bash","zsh","fish","powershell"];var TOP_LEVEL_FLAGS=["--help","--version","-p","--print","--profile","--mode","--permission-mode","--model","--allowed-tools","--disallowed-tools","--no-tui","--doctor"];var DOMAIN_GLOBAL_FLAGS=[...GLOBAL_FLAGS].filter(flag=>flag.startsWith("--"));function staticValues(flag,ctx){if(flag==="--output")return OUTPUT_FORMATS;if(flag==="--profile")return ctx.profileNames();return void 0}
3
+ import{BUILTIN_COMMANDS,GLOBAL_FLAGS,TASK_LOOP_ACTIONS,VALUE_FLAGS}from"./chunk-D5EYI7S3.js";import"./chunk-2LOT54OO.js";import{API_TOKEN,DOMAIN_NAMES,HELP_TOKEN,isDomainName}from"./chunk-KDH3KWPO.js";import"./chunk-QQRJLH6B.js";import{OUTPUT_FORMATS}from"./chunk-74BPZOKU.js";import"./chunk-UREA4ZIG.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var EXTRA_TOP_LEVEL=[API_TOKEN,HELP_TOKEN,"completion","configure"];var COMPLETION_SHELLS=["bash","zsh","fish","powershell"];var TOP_LEVEL_FLAGS=["--help","--version","-p","--print","--profile","--mode","--permission-mode","--model","--allowed-tools","--disallowed-tools","--no-tui","--doctor"];var DOMAIN_GLOBAL_FLAGS=[...GLOBAL_FLAGS].filter(flag=>flag.startsWith("--"));function staticValues(flag,ctx){if(flag==="--output")return OUTPUT_FORMATS;if(flag==="--profile")return ctx.profileNames();return void 0}
4
4
  function positionals(words,takesValue){const out=[];for(let i=0;i<words.length;i++){const word=words[i]??"";if(word==="--"){out.push(...words.slice(i+1));break}if(word.startsWith("-")){if(!word.includes("=")&&takesValue(word))i++;continue}out.push(word)}return out}function byPrefix(candidates,current){const seen=new Set;for(const candidate of candidates){if(candidate.startsWith(current))seen.add(candidate)}return[...seen]}function remainingFlags(flags,words){const used=new Set(words.filter(w=>w.
5
5
  startsWith("--")).map(w=>w.split("=")[0]));return[...flags.filter(f=>f.repeatable===true||!used.has(f.name)).map(f=>f.name),...DOMAIN_GLOBAL_FLAGS.filter(f=>!used.has(f))]}async function complete(words,current,ctx){const previous=words[words.length-1];if(previous!==void 0&&previous.startsWith("--")&&!previous.includes("=")){const values=staticValues(previous,ctx);if(values!==void 0)return byPrefix(values,current)}const eq=current.indexOf("=");if(current.startsWith("--")&&eq>0){const flag=current.
6
6
  slice(0,eq);const values=staticValues(flag,ctx);return values===void 0?[]:byPrefix(values.map(v=>`${flag}=${v}`),current)}const pos=positionals(words,flag=>VALUE_FLAGS.has(flag));const[first,second]=pos;if(first===void 0){if(current.startsWith("-"))return byPrefix([...TOP_LEVEL_FLAGS,...DOMAIN_GLOBAL_FLAGS],current);return byPrefix([...BUILTIN_COMMANDS,...DOMAIN_NAMES,...EXTRA_TOP_LEVEL],current)}if(first==="completion")return pos.length===1?byPrefix(COMPLETION_SHELLS,current):[];if(first==="con\
7
7
  figure")return current.startsWith("-")?byPrefix(["--profile"],current):[];if(first===HELP_TOKEN)return pos.length===1?byPrefix([...DOMAIN_NAMES,API_TOKEN],current):[];if(first==="task-loop"){if(pos.length===1&&!current.startsWith("-"))return byPrefix(TASK_LOOP_ACTIONS,current);if(pos.length===2&&(second==="charter"||second==="skill")&&!current.startsWith("-")){const ops=["push","pull","history","diff","revert"];return byPrefix(second==="skill"?[...ops,"list","show","delete"]:ops,current)}if(pos.
8
- length===2&&second==="plan"&&!current.startsWith("-"))return byPrefix(["submit"],current);if(pos.length===2&&second==="capacity"&&!current.startsWith("-"))return byPrefix(["report"],current);return[]}if(!isDomainName(first))return[];const domain=await ctx.loadDomain(first);const subresources=domain.subresources??[];if(second===void 0){if(current.startsWith("-"))return byPrefix(DOMAIN_GLOBAL_FLAGS,current);return byPrefix([...domain.operations.map(op=>op.name),...subresources.map(sub2=>sub2.name),
9
- HELP_TOKEN],current)}const sub=subresources.find(resource=>resource.name===second);let operation;if(sub!==void 0){const third=pos[2];if(third===void 0){if(current.startsWith("-"))return byPrefix(DOMAIN_GLOBAL_FLAGS,current);return byPrefix([...sub.operations.map(op=>op.name),HELP_TOKEN],current)}operation=sub.operations.find(op=>op.name===third)}else{operation=domain.operations.find(op=>op.name===second)}if(operation===void 0)return[];if(!current.startsWith("-"))return[];return byPrefix(remainingFlags(
10
- operation.flags,words),current)}function completionScript(shell){switch(shell){case"bash":return`# twp \u306E bash \u88DC\u5B8C\uFF08twp completion bash \u304C\u51FA\u529B\uFF09
8
+ length===2&&second==="settings"&&!current.startsWith("-"))return byPrefix(["push","pull"],current);if(pos.length===2&&second==="plan"&&!current.startsWith("-"))return byPrefix(["submit"],current);if(pos.length===2&&second==="capacity"&&!current.startsWith("-"))return byPrefix(["report"],current);return[]}if(!isDomainName(first))return[];const domain=await ctx.loadDomain(first);const subresources=domain.subresources??[];if(second===void 0){if(current.startsWith("-"))return byPrefix(DOMAIN_GLOBAL_FLAGS,
9
+ current);return byPrefix([...domain.operations.map(op=>op.name),...subresources.map(sub2=>sub2.name),HELP_TOKEN],current)}const sub=subresources.find(resource=>resource.name===second);let operation;if(sub!==void 0){const third=pos[2];if(third===void 0){if(current.startsWith("-"))return byPrefix(DOMAIN_GLOBAL_FLAGS,current);return byPrefix([...sub.operations.map(op=>op.name),HELP_TOKEN],current)}operation=sub.operations.find(op=>op.name===third)}else{operation=domain.operations.find(op=>op.name===
10
+ second)}if(operation===void 0)return[];if(!current.startsWith("-"))return[];return byPrefix(remainingFlags(operation.flags,words),current)}function completionScript(shell){switch(shell){case"bash":return`# twp \u306E bash \u88DC\u5B8C\uFF08twp completion bash \u304C\u51FA\u529B\uFF09
11
11
  # \u8AAD\u307F\u8FBC\u307F: eval "$(twp completion bash)" \uFF0F \u5E38\u7528: ~/.bashrc \u306B\u540C\u30581\u884C\u3092\u66F8\u304F
12
12
  # \uFF08source <(...) \u306F macOS \u6A19\u6E96\u306E bash 3.2 \u3067\u8AAD\u307F\u8FBC\u307E\u308C\u306A\u3044\u306E\u3067\u4F7F\u308F\u306A\u3044\uFF09
13
13
  # \u78BA\u5B9A\u6E08\u307F\u306E\u8A9E\u306F\u914D\u5217\u30B9\u30E9\u30A4\u30B9\u3067\u306F\u306A\u304F\u30EB\u30FC\u30D7\u3067\u96C6\u3081\u308B\uFF08macOS \u6A19\u6E96\u306E bash 3.2 \u3067\u3082\u540C\u3058\u306B\u52D5\u304B\u3059\u305F\u3081\uFF09
@@ -1,8 +1,8 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{composeDocument,meetingContentToText,metaLine,noteContentToText,oneLine,wikiContentToText}from"./chunk-HPPIVCK3.js";import{dateFlag}from"./chunk-EXT4AIDF.js";import{boundedText}from"./chunk-JJSBBWJ5.js";import{LIST_FLAGS,LIST_PAGING_HELP,envelopePaging,nonEmpty,positiveInteger}from"./chunk-MI6HVYR2.js";import{repeatedValues}from"./chunk-RX5HWI4L.js";import{charCount,readBody}from"./chunk-6LSQCOCJ.js";import"./chunk-HNG6MF26.js";import{ResolveError,
4
- isSafePathSegment}from"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";import{requireResolved,withResolved}from"./chunk-PS5QFKHB.js";import"./chunk-II5RVJQN.js";import{acknowledgement,isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiRejectedError,ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";import"./chunk-J7QYPKVK.js";import"./chunk-4VZKNEVN.js";import"./chunk-RZVI6PMW.js";import"./chunk-QQRJLH6B.js";
5
- import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var WIKI_PATH="/api/v2/wiki";var NOTES_PATH="/api/v2/notes";var MEETINGS_PATH="/api/v2/meetings";var ROOT_PARENT="root";var WIKI_STATUSES=["draft","published"];var WIKI_CONTENT_FORMATS=["html","markdown"];var NOTE_STATUSES=["draft","published"];var NOTE_VISIBILITIES=["private","tenant","external","public"];var NOTE_SORTS=["manual","created_at","updated_at","view_count","comment_count","reaction_count"];var MEETING_STATUSES=["draft","published","archived"];var MEETING_TYPES=["regular","client","i\
3
+ import{buildDiffLines,diffStat}from"./chunk-VRBI2NPI.js";import{composeDocument,meetingContentToText,metaLine,noteContentToText,oneLine,wikiContentToText}from"./chunk-HPPIVCK3.js";import{dateFlag}from"./chunk-EXT4AIDF.js";import{boundedText}from"./chunk-JJSBBWJ5.js";import{LIST_FLAGS,LIST_PAGING_HELP,envelopePaging,nonEmpty,positiveInteger}from"./chunk-MI6HVYR2.js";import{repeatedValues}from"./chunk-RX5HWI4L.js";import{charCount,readBody}from"./chunk-6LSQCOCJ.js";
4
+ import"./chunk-HNG6MF26.js";import{ResolveError,isSafePathSegment}from"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";import{requireResolved,withResolved}from"./chunk-PS5QFKHB.js";import"./chunk-II5RVJQN.js";import{acknowledgement,isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiRejectedError,ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";import"./chunk-J7QYPKVK.js";import"./chunk-4VZKNEVN.js";import"./chunk-RZVI6PMW.js";
5
+ import"./chunk-QQRJLH6B.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var WIKI_PATH="/api/v2/wiki";var NOTES_PATH="/api/v2/notes";var MEETINGS_PATH="/api/v2/meetings";var ROOT_PARENT="root";var WIKI_STATUSES=["draft","published"];var WIKI_CONTENT_FORMATS=["html","markdown"];var NOTE_STATUSES=["draft","published"];var NOTE_VISIBILITIES=["private","tenant","external","public"];var NOTE_SORTS=["manual","created_at","updated_at","view_count","comment_count","reaction_count"];var MEETING_STATUSES=["draft","published","archived"];var MEETING_TYPES=["regular","client","i\
6
6
  nternal","retrospective","decision","one_on_one"];var MEETING_SORTS=["meeting_date","created_at","updated_at","title"];var SORT_ORDERS=["asc","desc"];var MEETING_TAGS_MAX=20;var MEETING_TAG_MAX_CHARS=50;var DATE_FLOOR="0000-01-01";var DATE_CEIL="9999-12-31";var WIKI_LIST_COLUMNS=["id","title","status","parent_page_id","updated_at","updated_by_name"];var WIKI_CHILD_COLUMNS=["id","title","status","child_count","updated_at","updated_by_name"];var WIKI_GET_COLUMNS=["id","title","status","content_for\
7
7
  mat","parent_page_id","version","tags","updated_at","updated_by_name"];var NOTE_LIST_COLUMNS=["id","title","status","visibility","created_by_name","updated_at","comment_count","reaction_count"];var NOTE_GET_COLUMNS=["id","title","status","visibility","content_type","category_name","tags","created_by_name","updated_at","view_count"];var MEETING_LIST_COLUMNS=["id","meeting_date","title","meeting_type","status","project_name","created_by_name"];var MEETING_GET_COLUMNS=["id","title","meeting_date","\
8
8
  meeting_type","status","project_name","category_name","created_by_name","updated_at"];var TEXT_OUTPUT_HELP="--output text \u306F\u672C\u6587\u3092\u8AAD\u3080\u305F\u3081\u306E\u6587\u66F8\uFF08\u898B\u51FA\u3057\u30FB\u30E1\u30BF\u60C5\u5831\u30FB\u672C\u6587\uFF09\u3092\u51FA\u3057\u307E\u3059\u3002HTML \u3068\u5171\u540C\u7DE8\u96C6\u30A8\u30C7\u30A3\u30BF\u306E JSON \u306F\n\u5E73\u6587\u3078\u5909\u63DB\u3057\u3001\u898B\u51FA\u3057\u30FB\u7B87\u6761\u66F8\u304D\u30FB\u30EA\u30F3\u30AF\u306F Markdown \u98A8\u306B\u6B8B\u3057\u307E\u3059\u3002--output json \u306F\u30B5\u30FC\u30D0\u306E\u539F\u6587\u306E\u307E\u307E\u3067\u3059\u3002";
@@ -34,9 +34,53 @@ et <\u30DA\u30FC\u30B8ID>",description:`${TEXT_OUTPUT_HELP}
34
34
 
35
35
  --output table / tsv \u306F\u8981\u7D04\u5217\uFF08${WIKI_GET_COLUMNS.join(" / ")}\uFF09\u3067\u3059\u3002
36
36
  \u4ED6\u4EBA\u306E\u4E0B\u66F8\u304D\uFF08\u3068\u3001\u4ED6\u4EBA\u306E\u4E0B\u66F8\u304D\u306E\u30B3\u30EC\u30AF\u30B7\u30E7\u30F3\u914D\u4E0B\u306E\u30DA\u30FC\u30B8\uFF09\u306F\u300C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u300D\u306B\u306A\u308A\u307E\u3059\uFF08\u30B5\u30FC\u30D0\u306E\u5224\u5B9A\uFF09\u3002`,flags:[],plan:input=>({method:"GET",path:`${WIKI_PATH}/${encodeURIComponent(singleId(input,"twp wiki get","\u30DA\u30FC\u30B8","twp wiki list"))}`}),summarize:body=>pick(record(body,
37
- "page",WIKI_LABEL),WIKI_GET_COLUMNS),raw:body=>record(body,"page",WIKI_LABEL),document:wikiDocument};var WIKI_CONTENT_MAX_CHARS=4e5;var WIKI_TITLE_MAX_CHARS=255;var WIKI_TAG_MAX_CHARS=50;var WIKI_CREATE_USAGE="twp wiki create --project <\u30B3\u30FC\u30C9|ID> --title <\u4EF6\u540D> --content-file <\u30D1\u30B9|-> [--content-format <html|markdown>] [--parent <\u30DA\u30FC\u30B8ID>] [--status <draft|published>] [--tag <\u30BF\u30B0>]...";var WIKI_UPDATE_USAGE="twp wiki update <\u30DA\u30FC\u30B8ID> [--title <\u4EF6\u540D>\
38
- ] [--content-file <\u30D1\u30B9|->] [--content-format <html|markdown>] [--status <draft|published>] [--tag <\u30BF\u30B0>]... [--clear-tags] [--if-version <\u7248>]";var WIKI_MOVE_USAGE="twp wiki move <\u30DA\u30FC\u30B8ID> [--parent <\u30DA\u30FC\u30B8ID>|root] [--sort-order <\u9806>]";var CONTENT_FILE_FLAG={name:"--content-file",summary:"\u672C\u6587\u3092\u8AAD\u3080\u30D5\u30A1\u30A4\u30EB\uFF08- \u3067\u6A19\u6E96\u5165\u529B\uFF09\u3002\u52A0\u5DE5\u305B\u305A\u306B\u9001\u308B",takesValue:true,
39
- placeholder:"<\u30D1\u30B9|->"};var WIKI_CONTENT_FORMAT_FLAG={name:"--content-format",summary:`\u672C\u6587\u306E\u5F62\u5F0F\uFF08${WIKI_CONTENT_FORMATS.join(" / ")}\uFF09`,takesValue:true,placeholder:"<\u5F62\u5F0F>"};var WIKI_STATUS_FLAG={name:"--status",summary:`\u72B6\u614B\uFF08${WIKI_STATUSES.join(" / ")}\uFF09`,takesValue:true,placeholder:"<\u72B6\u614B>"};var WIKI_TAG_FLAG={name:"--tag",summary:`\u30BF\u30B0\uFF08\u8907\u6570\u56DE\u53EF\u30FB${WIKI_TAG_MAX_CHARS}\u6587\u5B57\u4EE5\u5185\uFF09`,
37
+ "page",WIKI_LABEL),WIKI_GET_COLUMNS),raw:body=>record(body,"page",WIKI_LABEL),document:wikiDocument};var WIKI_VERSIONS_MAX=100;var WIKI_TAGS_MAX=50;var WIKI_TREE_COLUMNS=["depth","id","title","status","child_count","parent_page_id","updated_at"];var WIKI_VERSION_COLUMNS=["version","title","content_format","changed_by_name","changed_at"];var WIKI_BACKLINK_COLUMNS=["id","title","status","link_context","updated_at","updated_by_name"];var WIKI_LINKED_TASK_COLUMNS=["key","subject","status_id","task_i\
38
+ d","project_id","created_by_name","created_at"];function pageIdAndRest(input,usage){const[raw,...rest]=input.args;const id=raw?.trim()??"";if(id==="")throw new UsageError("\u30DA\u30FC\u30B8\u306E ID \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",usage);if(!isSafePathSegment(id))throw new UsageError(`\u30DA\u30FC\u30B8\u306E ID \u3068\u3057\u3066\u4F7F\u3048\u306A\u3044\u5024\u3067\u3059: ${id}`,"\u30DA\u30FC\u30B8\u306E ID \u306F twp wiki list / twp wiki tree \u306E id \u5217\u3067\u78BA\u8A8D\u3067\u304D\u307E\u3059\u3002");
39
+ return{id,rest}}function versionNumber(raw,usage){const value=raw.trim();const n=/^\d+$/.test(value)?Number(value):Number.NaN;if(!Number.isSafeInteger(n)||n<1)throw new UsageError(`\u7248\u306F 1 \u4EE5\u4E0A\u306E\u6574\u6570\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044: ${raw}`,usage);return n}function arrayField(body,key,label){const rows=isRecord(body)&&body["result"]===true?body[key]:void 0;if(!Array.isArray(rows))throw new ApiResponseError(`${label}\u306E\u5FDC\u7B54\u306B ${key} \
40
+ \u914D\u5217\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`);return rows}function flattenTree(body){const tree=arrayField(body,"tree",`${WIKI_LABEL}\u306E\u30C4\u30EA\u30FC`);const out=[];const stack=[...tree].reverse().map(node=>({node,depth:0}));while(stack.length>0){const{node,depth}=stack.pop();if(!isRecord(node))continue;const children=Array.isArray(node["children"])?node["children"]:[];const page={...node,depth,child_count:children.
41
+ length};delete page["children"];delete page["content"];out.push(page);for(let i=children.length-1;i>=0;i--)stack.push({node:children[i],depth:depth+1})}return out}function treeDocument(body){const rows=flattenTree(body);if(rows.length===0)return"\uFF08wiki \u30DA\u30FC\u30B8\u306F\u3042\u308A\u307E\u305B\u3093\uFF09\n";return`${rows.map(row=>{const title=typeof row["title"]==="string"&&row["title"].trim()!==""?oneLine(row["title"]):"(\u7121\u984C)";const children=typeof row["child_count"]==="num\
42
+ ber"&&row["child_count"]>0?`\u30FB\u5B50 ${row["child_count"]}`:"";return`${" ".repeat(Number(row["depth"])||0)}- ${title} [${String(row["status"]??"?")}${children}] ${String(row["id"])}`}).join("\n")}
43
+ `}var projectFlag={name:"--project",summary:"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\uFF08\u30B3\u30FC\u30C9\u304B ID\u3002\u7701\u7565\u6642\u306F\u65E2\u5B9A\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\uFF09",takesValue:true,placeholder:"<\u30B3\u30FC\u30C9|ID>"};var wikiTree={name:"tree",summary:`\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E${WIKI_LABEL}\u306E\u89AA\u5B50\u69CB\u9020\u3092\u51FA\u3059\uFF08\u672C\u6587\u306F\u51FA\u3055\u306A\u3044\uFF09`,usage:"twp wiki tree [--project <\u30B3\u30FC\u30C9|ID>]",
44
+ description:`\u5168\u30DA\u30FC\u30B8\u3092\u89AA\u5B50\u306E\u9806\uFF08\u753B\u9762\u306E\u4E26\u3073\uFF09\u30671\u884C\u305A\u3064\u51FA\u3057\u307E\u3059\u3002--output text \u306F\u5B57\u4E0B\u3052\u3057\u305F\u6728\u3001table / tsv \u306F\u8981\u7D04\u5217\uFF08${WIKI_TREE_COLUMNS.join(" / ")}\uFF09\u3067\u3059\u3002
45
+ **\u672C\u6587\u306F\u3069\u306E\u51FA\u529B\u5F62\u5F0F\u3067\u3082\u51FA\u3057\u307E\u305B\u3093**\uFF08--output json \u3082\u3001\u5404\u30DA\u30FC\u30B8\u304B\u3089 content \u3068 children \u3092\u5916\u3057 depth / child_count \u3092\u8DB3\u3057\u305F\u5E73\u3089\u306A\u914D\u5217\u3067\u3059\uFF09\u3002\u672C\u6587\u306F twp wiki get \u3067\u8AAD\u3081\u307E\u3059\u3002
46
+ \u4E0B\u66F8\u304D\u306F\u4F5C\u6210\u8005\u3068 wiki \u306E\u7BA1\u7406\u8005\u306B\u3057\u304B\u898B\u3048\u307E\u305B\u3093\uFF08\u30B5\u30FC\u30D0\u306E\u5224\u5B9A\uFF09\u3002`,flags:[projectFlag],async prepare(input,ctx){noArgs(input,"twp wiki tree");return withResolved(input,{project:await ctx.projectId(input.flags.get("--project"))})},plan:input=>({method:"GET",path:`${WIKI_PATH}/tree`,query:{project_id:requireResolved(input,"project")}}),summarize:body=>flattenTree(body).map(row=>pick(row,
47
+ WIKI_TREE_COLUMNS)),raw:flattenTree,document:treeDocument};var wikiTagList={name:"tags",summary:`\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E${WIKI_LABEL}\u306B\u4ED8\u3044\u3066\u3044\u308B\u30BF\u30B0\u3092\u51FA\u3059`,usage:"twp wiki tags [--project <\u30B3\u30FC\u30C9|ID>]",description:"\u516C\u958B\uFF08published\uFF09\u306E\u30DA\u30FC\u30B8\u306B\u4ED8\u3044\u305F\u30BF\u30B0\u3092\u3001\u4ED8\u3044\u3066\u3044\u308B\u30DA\u30FC\u30B8\u306E\u591A\u3044\u9806\u306B\u6700\u592750\u4EF6\u51FA\u3057\u307E\u3059\uFF08\u30B5\u30FC\u30D0\u306E\u4ED5\u69D8\u3002\u4EF6\u6570\u306F\u8FD4\u308A\u307E\u305B\u3093\uFF09\u3002\n\u4E0B\u66F8\u304D\u306B\u3060\u3051\u4ED8\u3044\u305F\u30BF\u30B0\u306F\u51FA\u307E\u305B\u3093\u3002\u30BF\u30B0\u3067\u30DA\u30FC\u30B8\u3092\u7D5E\u308B\u306A\u3089 twp wiki list --tag <\u30BF\u30B0> \u3067\u3059\u3002",
48
+ flags:[projectFlag],async prepare(input,ctx){noArgs(input,"twp wiki tags");return withResolved(input,{project:await ctx.projectId(input.flags.get("--project"))})},plan:input=>({method:"GET",path:`${WIKI_PATH}/tags`,query:{project_id:requireResolved(input,"project")}}),summarize:body=>arrayField(body,"tags",`${WIKI_LABEL}\u306E\u30BF\u30B0`).map(tag=>({tag})),raw:body=>arrayField(body,"tags",`${WIKI_LABEL}\u306E\u30BF\u30B0`),notes:body=>arrayField(body,"tags",`${WIKI_LABEL}\u306E\u30BF\u30B0`).length>=
49
+ WIKI_TAGS_MAX?[`\u30B5\u30FC\u30D0\u304C\u8FD4\u3059\u30BF\u30B0\u306E\u4E0A\u9650\uFF08${WIKI_TAGS_MAX}\u4EF6\uFF09\u306B\u9054\u3057\u307E\u3057\u305F\u3002\u3053\u308C\u3088\u308A\u5C11\u306A\u3044\u30DA\u30FC\u30B8\u306B\u3060\u3051\u4ED8\u3044\u305F\u30BF\u30B0\u306F\u51FA\u3066\u3044\u306A\u3044\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\u3002`]:[]};var WIKI_VERSIONS_USAGE="twp wiki versions <\u30DA\u30FC\u30B8ID> [--limit <\u4EF6\u6570>]";function versionsLimit(input){const limit=positiveInteger(
50
+ input.flags,"--limit");if(limit!==void 0&&limit>WIKI_VERSIONS_MAX){throw new UsageError(`--limit \u306F 1\u301C${WIKI_VERSIONS_MAX} \u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044: ${limit}`,`\u30B5\u30FC\u30D0\u304C\u8FD4\u3059\u7248\u306E\u5C65\u6B74\u306F\u65B0\u3057\u3044\u9806\u306B\u6700\u5927${WIKI_VERSIONS_MAX}\u4EF6\u3067\u3059\u3002`)}return limit}var wikiVersions={name:"versions",summary:`${WIKI_LABEL}\u306E\u7248\u306E\u5C65\u6B74\u3092\u65B0\u3057\u3044\u9806\u306B\u51FA\u3059`,
51
+ usage:WIKI_VERSIONS_USAGE,description:`\u7248\u306F\u672C\u6587\u304B\u4EF6\u540D\u3092\u5909\u3048\u305F\u3068\u304D\u306B1\u3064\u4E0A\u304C\u308A\u307E\u3059\u3002\u65E2\u5B9A\u306F\u65B0\u3057\u3044\u9806\u306B20\u4EF6\u3001--limit \u3067\u6700\u5927${WIKI_VERSIONS_MAX}\u4EF6\u3067\u3059\uFF08\u30B5\u30FC\u30D0\u306E\u4E0A\u9650\u3002\u305D\u308C\u3088\u308A\u53E4\u3044\u7248\u306F\u4E00\u89A7\u306B\u51FA\u307E\u305B\u3093\u304C\u3001\u7248\u756A\u53F7\u304C\u5206\u304B\u308C\u3070 twp wiki version \u3067\u8AAD\u3081\u307E\u3059\uFF09\u3002
52
+ --output table / text / tsv \u306F\u8981\u7D04\u5217\uFF08${WIKI_VERSION_COLUMNS.join(" / ")}\uFF09\u3001--output json \u306F\u5404\u7248\u306E\u672C\u6587\u3092\u542B\u3080\u5168\u30D5\u30A3\u30FC\u30EB\u30C9\u3067\u3059\u3002
53
+ \u7248\u306E\u672C\u6587\u306F twp wiki version <\u30DA\u30FC\u30B8ID> <\u7248>\u30012\u3064\u306E\u7248\u306E\u9055\u3044\u306F twp wiki diff <\u30DA\u30FC\u30B8ID> <\u72481> [<\u72482>] \u3067\u8AAD\u3081\u307E\u3059\u3002`,flags:[{name:"--limit",summary:`\u51FA\u3059\u4EF6\u6570\uFF081\u301C${WIKI_VERSIONS_MAX}\u30FB\u65E2\u5B9A20\uFF09`,takesValue:true,placeholder:"<\u4EF6\u6570>"}],plan(input){const{id,rest}=pageIdAndRest(input,WIKI_VERSIONS_USAGE);if(rest.length>0)throw new UsageError(`twp\
54
+ wiki versions \u304C\u53D7\u3051\u53D6\u308C\u308B\u30DA\u30FC\u30B8 ID \u306F1\u3064\u3060\u3051\u3067\u3059: ${rest.join(" ")}`,WIKI_VERSIONS_USAGE);return{method:"GET",path:`${WIKI_PATH}/${encodeURIComponent(id)}/versions`,query:{limit:versionsLimit(input)}}},summarize:body=>arrayField(body,"versions",`${WIKI_LABEL}\u306E\u7248\u306E\u5C65\u6B74`).map(row=>pick(row,WIKI_VERSION_COLUMNS)),raw:body=>arrayField(body,"versions",`${WIKI_LABEL}\u306E\u7248\u306E\u5C65\u6B74`),notes(body,input){const rows=arrayField(
55
+ body,"versions",`${WIKI_LABEL}\u306E\u7248\u306E\u5C65\u6B74`);const limit=versionsLimit(input)??20;if(rows.length<limit)return[];return limit<WIKI_VERSIONS_MAX?[`\u65B0\u3057\u3044\u9806\u306B ${limit} \u4EF6\u3092\u51FA\u3057\u307E\u3057\u305F\u3002\u3053\u308C\u3088\u308A\u53E4\u3044\u7248\u304C\u3042\u308B\u304B\u3082\u3057\u308C\u307E\u305B\u3093\uFF08--limit ${WIKI_VERSIONS_MAX} \u307E\u3067\u5E83\u3052\u3089\u308C\u307E\u3059\uFF09\u3002`]:[`\u65B0\u3057\u3044\u9806\u306B ${WIKI_VERSIONS_MAX}\
56
+ \u4EF6\uFF08\u30B5\u30FC\u30D0\u306E\u4E0A\u9650\uFF09\u3092\u51FA\u3057\u307E\u3057\u305F\u3002\u3053\u308C\u3088\u308A\u53E4\u3044\u7248\u306F\u4E00\u89A7\u3067\u304D\u307E\u305B\u3093\uFF08\u7248\u756A\u53F7\u304C\u5206\u304B\u308C\u3070 twp wiki version \u3067\u8AAD\u3081\u307E\u3059\uFF09\u3002`]}};function versionRecord(body){const row=isRecord(body)&&body["result"]===true?body["version"]:void 0;if(!isRecord(row)||typeof row["version"]!=="number"){throw new ApiResponseError(`${WIKI_LABEL}\
57
+ \u306E\u7248\u306E\u5FDC\u7B54\u306B version \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}return row}var WIKI_VERSION_USAGE="twp wiki version <\u30DA\u30FC\u30B8ID> <\u7248>";function versionPlan(id,version){return{method:"GET",path:`${WIKI_PATH}/${encodeURIComponent(id)}/versions/${version}`}}var wikiVersion={name:"version",summary:`${WIKI_LABEL}\u306E\u904E\u53BB\u306E\u72481\u3064\u3092\u8868\u793A\u3059\u308B\uFF08--output text \u3067\u672C\u6587\u3092\u8AAD\u3080\uFF09`,
58
+ usage:WIKI_VERSION_USAGE,description:`${TEXT_OUTPUT_HELP}
59
+
60
+ --output table / tsv \u306F\u8981\u7D04\u5217\uFF08${["page_id",...WIKI_VERSION_COLUMNS].join(" / ")}\uFF09\u3067\u3059\u3002\u7248\u306E\u756A\u53F7\u306F twp wiki versions \u3067\u78BA\u8A8D\u3067\u304D\u307E\u3059\u3002`,flags:[],plan(input){const{id,rest}=pageIdAndRest(input,WIKI_VERSION_USAGE);if(rest.length!==1)throw new UsageError("\u30DA\u30FC\u30B8 ID \u3068\u7248\u30921\u3064\u305A\u3064\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",WIKI_VERSION_USAGE);return versionPlan(id,versionNumber(
61
+ rest[0],WIKI_VERSION_USAGE))},summarize:body=>pick(versionRecord(body),["page_id",...WIKI_VERSION_COLUMNS]),raw:versionRecord,document(body){const v=versionRecord(body);return composeDocument(v["title"],[...metaLine("\u7248",v["version"]),...metaLine("\u5F62\u5F0F",v["content_format"]),...metaLine("\u5909\u66F4",v["changed_at"]),...metaLine("\u5909\u66F4\u8005",v["changed_by_name"]),...metaLine("\u30DA\u30FC\u30B8ID",v["page_id"])],[{body:wikiContentToText(v["content"],v["content_format"])}])}};
62
+ var WIKI_DIFF_USAGE="twp wiki diff <\u30DA\u30FC\u30B8ID> <\u72481> [<\u72482>]";function diffArgs(input){const{id,rest}=pageIdAndRest(input,WIKI_DIFF_USAGE);if(rest.length<1||rest.length>2)throw new UsageError("\u6BD4\u3079\u308B\u7248\u30921\u3064\u304B2\u3064\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u72482\u3092\u7701\u304F\u3068\u3044\u307E\u306E\u7248\u3068\u6BD4\u3079\u307E\u3059\uFF09",WIKI_DIFF_USAGE);const from=versionNumber(rest[0],WIKI_DIFF_USAGE);const to=rest[1]===void 0?
63
+ void 0:versionNumber(rest[1],WIKI_DIFF_USAGE);return{id,from,to}}function diffSide(row,changedAt,changedBy){return{version:row["version"]??null,title:row["title"]??null,changed_at:row[changedAt]??null,changed_by_name:row[changedBy]??null,text:comparableText(row["content"],row["content_format"])}}var SIGNED_IMAGE=/(!\[[^\]\n]*\]\()([^)\s?]*)\?[^)\s]*\)/g;function comparableText(content,format){const text2=wikiContentToText(content,format).replace(SIGNED_IMAGE,"$1$2)");return`${text2.trimEnd()}
64
+ `}var DIFF_CONTEXT=3;function collapseUnchanged(lines){const out=[];let run=[];const flush=(atStart,atEnd)=>{const head=atStart?0:DIFF_CONTEXT;const tail=atEnd?0:DIFF_CONTEXT;if(run.length>head+tail+1){for(const l of run.slice(0,head))out.push(` ${String(l["text"])}`);out.push(` \u22EF ${run.length-head-tail} \u884C\u7701\u7565`);for(const l of run.slice(run.length-tail))out.push(` ${String(l["text"])}`)}else{for(const l of run)out.push(` ${String(l["text"])}`)}run=[]};let seenChange=false;for(const line of lines){
65
+ if(line["sign"]===" "){run.push(line);continue}flush(!seenChange,false);seenChange=true;out.push(`${String(line["sign"])} ${String(line["text"])}`)}flush(!seenChange,true);return out}function diffBody(body){if(!isRecord(body)||!Array.isArray(body["lines"]))throw new ApiResponseError(`${WIKI_LABEL}\u306E\u5DEE\u5206\u3092\u7D44\u307F\u7ACB\u3066\u3089\u308C\u307E\u305B\u3093\u3067\u3057\u305F\u3002`);return body}function sideLabel(side){const s=isRecord(side)?side:{};return`\u7248 ${String(s["ver\
66
+ sion"]??"?")}\uFF08${String(s["changed_at"]??"\u65E5\u6642\u4E0D\u660E")}${typeof s["changed_by_name"]==="string"?`\u30FB${s["changed_by_name"]}`:""}\uFF09`}var wikiDiff={name:"diff",summary:`${WIKI_LABEL}\u306E2\u3064\u306E\u7248\u306E\u672C\u6587\u306E\u5DEE\u5206\u3092\u51FA\u3059\uFF08\u72482\u3092\u7701\u304F\u3068\u3044\u307E\u306E\u7248\u3068\u6BD4\u3079\u308B\uFF09`,usage:WIKI_DIFF_USAGE,description:"2\u3064\u306E\u7248\u3092\u53D6\u5F97\u3057\u3001\u672C\u6587\u3092\u5E73\u6587\u306B\u3057\u3066\u304B\u3089\u884C\u5358\u4F4D\u3067\u6BD4\u3079\u307E\u3059\uFF08HTML \u306E\u30BF\u30B0\u3060\u3051\u306E\u9055\u3044\u306F\u51FA\u307E\u305B\u3093\uFF09\u3002\u4EF6\u540D\u304C\u9055\u3048\u3070\u4EF6\u540D\u306E\u9055\u3044\u3082\u51FA\u3057\u307E\u3059\u3002\n<\u72482> \u3092\u7701\u304F\u3068\u3001\u3044\u307E\u306E\u30DA\u30FC\u30B8\uFF08twp w\
67
+ iki get \u306E version\uFF09\u3068\u6BD4\u3079\u307E\u3059\u3002\n\n--output text \u306F `- ` \u304C\u72481\u306B\u3060\u3051\u3042\u308B\u884C\u3001`+ ` \u304C\u72482\u306B\u3060\u3051\u3042\u308B\u884C\u306E\u5DEE\u5206\u3067\u3059\uFF08\u5909\u308F\u3089\u306A\u3044\u90E8\u5206\u306F\u524D\u5F8C3\u884C\u3092\u6B8B\u3057\u3066\u7701\u7565\uFF09\u3002--output json / table / tsv \u306F\u7701\u7565\u305B\u305A\u5168\u884C\u3092\u51FA\u3057\u307E\u3059\u3002\n\u753B\u50CF\u306E URL \u306F\u53D6\u5F97\u306E\u305F\u3073\u306B\u7F72\u540D\u3057\u76F4\u3055\u308C\u308B\u306E\u3067\u3001\u30AF\u30A8\u30EA\u3092\u843D\u3068\u3057\u3066\u304B\u3089\u6BD4\u3079\u307E\u3059\u3002\n--output json \u306F {page_id, from, to, title_changed, added, removed, lines: [{sign, text}]} \u3067\u3059\uFF08from / to \u306F\u7248\u30FB\u4EF6\u540D\u30FB\u5909\u66F4\u65E5\u6642\u30FB\u5909\u66F4\u8005\uFF09\u3002",
68
+ flags:[],plan(input){const{id,from}=diffArgs(input);return versionPlan(id,from)},plannedNotes(input){const{id,to}=diffArgs(input);return[`\u7D9A\u3051\u3066${to===void 0?`\u3044\u307E\u306E\u30DA\u30FC\u30B8\uFF08GET ${WIKI_PATH}/${id}\uFF09`:`\u7248 ${to}\uFF08GET ${WIKI_PATH}/${id}/versions/${to}\uFF09`}\u3092\u53D6\u5F97\u3057\u3001CLI \u3067\u5DEE\u5206\u3092\u51FA\u3057\u307E\u3059\u3002`]},async execute(input,ctx){const{id,from,to}=diffArgs(input);const a=diffSide(versionRecord(await ctx.send(
69
+ versionPlan(id,from))),"changed_at","changed_by_name");const b=to===void 0?diffSide(record(await ctx.send({method:"GET",path:`${WIKI_PATH}/${encodeURIComponent(id)}`}),"page",WIKI_LABEL),"updated_at","updated_by_name"):diffSide(versionRecord(await ctx.send(versionPlan(id,to))),"changed_at","changed_by_name");const lines=a.text===b.text?[]:buildDiffLines(a.text,b.text,Number.POSITIVE_INFINITY);const{added,removed}=diffStat(lines);const meta=side=>({version:side.version,title:side.title,changed_at:side.
70
+ changed_at,changed_by_name:side.changed_by_name});return{page_id:id,from:meta(a),to:meta(b),title_changed:a.title!==b.title,added,removed,lines}},summarize:body=>diffBody(body)["lines"],raw:diffBody,document(body){const d=diffBody(body);const from=isRecord(d["from"])?d["from"]:{};const to=isRecord(d["to"])?d["to"]:{};const out=[`--- ${sideLabel(from)}`,`+++ ${sideLabel(to)}`];if(d["title_changed"]===true)out.push(`\u4EF6\u540D: ${oneLine(String(from["title"]??""))} \u2192 ${oneLine(String(to["ti\
71
+ tle"]??""))}`);const lines=d["lines"];if(lines.length===0){out.push("\u672C\u6587\u306B\u5DEE\u5206\u306F\u3042\u308A\u307E\u305B\u3093\u3002")}else{out.push(...collapseUnchanged(lines.filter(isRecord)));out.push(`\uFF08+${String(d["added"])} / -${String(d["removed"])} \u884C\uFF09`)}return`${out.join("\n")}
72
+ `}};var wikiBacklinks={name:"backlinks",summary:`${WIKI_LABEL}\u3078\u30EA\u30F3\u30AF\u3057\u3066\u3044\u308B\u30DA\u30FC\u30B8\u3092\u51FA\u3059\uFF08\u30EA\u30F3\u30AF\u5468\u8FBA\u306E\u672C\u6587\u306E\u629C\u7C8B\u3064\u304D\uFF09`,usage:"twp wiki backlinks <\u30DA\u30FC\u30B8ID>",description:`\u540C\u3058\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u4E2D\u3067\u3001\u3053\u306E\u30DA\u30FC\u30B8\u3078\u30EA\u30F3\u30AF\u3057\u3066\u3044\u308B\u30DA\u30FC\u30B8\u3092\u66F4\u65B0\u306E\u65B0\u3057\u3044\u9806\u306B\u51FA\u3057\u307E\u3059\u3002link_context \u306F\u30EA\u30F3\u30AF\u306E\u524D\u5F8C\u306E\u672C\u6587\u306E\u629C\u7C8B\u3067\u3059\u3002
73
+ \u898B\u3048\u306A\u3044\u4E0B\u66F8\u304D\uFF08\u4ED6\u4EBA\u306E\u4E0B\u66F8\u304D\u3068\u3001\u305D\u306E\u914D\u4E0B\u306E\u30DA\u30FC\u30B8\uFF09\u304B\u3089\u306E\u30EA\u30F3\u30AF\u306F\u51FA\u307E\u305B\u3093\uFF08\u30B5\u30FC\u30D0\u306E\u5224\u5B9A\uFF09\u3002
74
+
75
+ --output table / text / tsv \u306F\u8981\u7D04\u5217\uFF08${WIKI_BACKLINK_COLUMNS.join(" / ")}\uFF09\u3001--output json \u306F\u30DA\u30FC\u30B8\u306E\u5168\u30D5\u30A3\u30FC\u30EB\u30C9\uFF08\u672C\u6587 content \u3092\u542B\u3080\uFF09\u3067\u3059\u3002`,flags:[],plan:input=>({method:"GET",path:`${WIKI_PATH}/${encodeURIComponent(singleId(input,"twp wiki backlinks","\u30DA\u30FC\u30B8","twp wiki list"))}/backlinks`}),summarize:body=>arrayField(body,"backlinks",`${WIKI_LABEL}\u306E\u88AB\u30EA\u30F3\u30AF`).
76
+ map(row=>pick(row,WIKI_BACKLINK_COLUMNS)),raw:body=>arrayField(body,"backlinks",`${WIKI_LABEL}\u306E\u88AB\u30EA\u30F3\u30AF`)};function linkedTaskRow(row){const link=isRecord(row)?row:{};const task=isRecord(link["task"])?link["task"]:{};return pick({...link,key:task["key"],subject:task["subject"],status_id:task["status_id"]},WIKI_LINKED_TASK_COLUMNS)}var wikiLinkedTasks={name:"linked-tasks",summary:`${WIKI_LABEL}\u306B\u7D10\u3065\u3044\u3066\u3044\u308B\u30BF\u30B9\u30AF\u3092\u51FA\u3059`,usage:"\
77
+ twp wiki linked-tasks <\u30DA\u30FC\u30B8ID>",description:`\u30BF\u30B9\u30AF\u5074\u304B\u3089\u3053\u306E\u30DA\u30FC\u30B8\u3078\u5F35\u3063\u305F\u95A2\u9023\u4ED8\u3051\u3092\u51FA\u3057\u307E\u3059\u3002\u95B2\u89A7\u6A29\u9650\u306E\u7121\u3044\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u30BF\u30B9\u30AF\u3068\u3001\u524A\u9664\u6E08\u307F\u306E\u30BF\u30B9\u30AF\u306F\u51FA\u307E\u305B\u3093\uFF08\u30B5\u30FC\u30D0\u306E\u5224\u5B9A\uFF09\u3002
78
+ status_id \u306F\u30BF\u30B9\u30AF\u306E\u30B9\u30C6\u30FC\u30BF\u30B9\u306E ID \u3067\u3059\uFF08\u540D\u524D\u306F twp task status list \u3067\u5F15\u3051\u307E\u3059\uFF09\u3002
79
+
80
+ --output table / text / tsv \u306F\u8981\u7D04\u5217\uFF08${WIKI_LINKED_TASK_COLUMNS.join(" / ")}\uFF09\u3001--output json \u306F\u30EA\u30F3\u30AF\u306E\u5168\u30D5\u30A3\u30FC\u30EB\u30C9\uFF08task \u306E\u5165\u308C\u5B50\u3092\u542B\u3080\uFF09\u3067\u3059\u3002`,flags:[],plan:input=>({method:"GET",path:`${WIKI_PATH}/${encodeURIComponent(singleId(input,"twp wiki linked-tasks","\u30DA\u30FC\u30B8","twp wiki list"))}/linked-tasks`}),summarize:body=>arrayField(body,"linked_tasks",`${WIKI_LABEL}\
81
+ \u306E\u95A2\u9023\u30BF\u30B9\u30AF`).map(linkedTaskRow),raw:body=>arrayField(body,"linked_tasks",`${WIKI_LABEL}\u306E\u95A2\u9023\u30BF\u30B9\u30AF`)};var WIKI_CONTENT_MAX_CHARS=4e5;var WIKI_TITLE_MAX_CHARS=255;var WIKI_TAG_MAX_CHARS=50;var WIKI_CREATE_USAGE="twp wiki create --project <\u30B3\u30FC\u30C9|ID> --title <\u4EF6\u540D> --content-file <\u30D1\u30B9|-> [--content-format <html|markdown>] [--parent <\u30DA\u30FC\u30B8ID>] [--status <draft|published>] [--tag <\u30BF\u30B0>]...";var WIKI_UPDATE_USAGE="\
82
+ twp wiki update <\u30DA\u30FC\u30B8ID> [--title <\u4EF6\u540D>] [--content-file <\u30D1\u30B9|->] [--content-format <html|markdown>] [--status <draft|published>] [--tag <\u30BF\u30B0>]... [--clear-tags] [--if-version <\u7248>]";var WIKI_MOVE_USAGE="twp wiki move <\u30DA\u30FC\u30B8ID> [--parent <\u30DA\u30FC\u30B8ID>|root] [--sort-order <\u9806>]";var CONTENT_FILE_FLAG={name:"--content-file",summary:"\u672C\u6587\u3092\u8AAD\u3080\u30D5\u30A1\u30A4\u30EB\uFF08- \u3067\u6A19\u6E96\u5165\u529B\uFF09\u3002\u52A0\u5DE5\u305B\u305A\u306B\u9001\u308B",
83
+ takesValue:true,placeholder:"<\u30D1\u30B9|->"};var WIKI_CONTENT_FORMAT_FLAG={name:"--content-format",summary:`\u672C\u6587\u306E\u5F62\u5F0F\uFF08${WIKI_CONTENT_FORMATS.join(" / ")}\uFF09`,takesValue:true,placeholder:"<\u5F62\u5F0F>"};var WIKI_STATUS_FLAG={name:"--status",summary:`\u72B6\u614B\uFF08${WIKI_STATUSES.join(" / ")}\uFF09`,takesValue:true,placeholder:"<\u72B6\u614B>"};var WIKI_TAG_FLAG={name:"--tag",summary:`\u30BF\u30B0\uFF08\u8907\u6570\u56DE\u53EF\u30FB${WIKI_TAG_MAX_CHARS}\u6587\u5B57\u4EE5\u5185\uFF09`,
40
84
  takesValue:true,placeholder:"<\u30BF\u30B0>",repeatable:true};var WIKI_WRITE_HELP="\u672C\u6587\u306F --content-file \u306E\u30D5\u30A1\u30A4\u30EB\uFF08- \u3067\u6A19\u6E96\u5165\u529B\uFF09\u304B\u3089\u8AAD\u307F\u3001\u52A0\u5DE5\u305B\u305A\u306B\u9001\u308A\u307E\u3059\uFF08\u5148\u982D\u306E BOM \u3060\u3051\u843D\u3068\u3057\u307E\u3059\uFF09\u3002\n\u672C\u6587\u306E\u5F62\u5F0F\u306F --content-format\uFF08html / markdown\uFF09\u3067\u6307\u5B9A\u3057\u307E\u3059\u3002\u7701\u304F\u3068 HTML \u306E\u30DA\u30FC\u30B8\u306B\u306A\u308A\u307E\u3059\uFF08\u30B5\u30FC\u30D0\u306E\u65E2\u5B9A\uFF09\u3002\nMarkdown \u306E\u672C\u6587\u306F --content-format markdown \u3067\u9001\u3063\u3066\u304F\u3060\u3055\u3044\u3002HTML \u306E\u30DA\u30FC\u30B8\u306B Markdown \u3092\u9001\u3063\u3066\u3082\u5909\u63DB\u3057\u306A\u3044\u306E\u3067\u3001\u753B\u9762\u3067\u306F\u8A18\u53F7\u306E\u307E\u307E\u8868\u793A\u3055\u308C\u307E\u3059\u3002\n\u30DA\u30FC\u30B8\u306E\u5F62\u5F0F\u306F\u4F5C\u6210\u5F8C\u306B\u5909\u3048\u3089\u308C\u307E\u305B\u3093\uFF08update \u3067\u9055\u3046\u5F62\u5F0F\u3092\u6307\u5B9A\u3059\u308B\u3068\u30B5\u30FC\u30D0\u304C\u65AD\u308A\u307E\u3059\uFF09\u3002\n\u7DE8\u96C6\u30FB\u79FB\u52D5\u30FB\u524A\u9664\u3067\u304D\u308B\u306E\u306F\u3001\u30DA\u30FC\u30B8\u306E\u4F5C\u6210\u8005\u30FBwiki \u306E\u7BA1\u7406\u8005\u30FB\u7D44\u7E54\u306E\u7BA1\u7406\u8005\u3067\u3059\uFF08\u6A29\u9650\u304C\u7121\u3051\u308C\u3070\u30B5\u30FC\u30D0\u306E 403 \u306E\u6587\u9762\u3092\u305D\u306E\u307E\u307E\u51FA\u3057\u307E\u3059\uFF09\u3002";
41
85
  async function wikiContent(input,usage){return readBody(input,{flag:"--content",fileFlag:"--content-file",label:"wiki \u306E\u672C\u6587",maxChars:WIKI_CONTENT_MAX_CHARS,usage})}function wikiTitle(input){const raw=input.flags.get("--title");if(raw===void 0)return void 0;if(raw.trim()==="")throw new UsageError("--title \u304C\u7A7A\u3067\u3059","\u4EF6\u540D\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002");const count=charCount(raw);if(count>WIKI_TITLE_MAX_CHARS){throw new UsageError(
42
86
  `--title \u304C\u9577\u3059\u304E\u307E\u3059\uFF08${count} \u6587\u5B57\u30FB\u4E0A\u9650 ${WIKI_TITLE_MAX_CHARS} \u6587\u5B57\uFF09`,"\u30B5\u30FC\u30D0\u306E\u4E0A\u9650\u304C255\u6587\u5B57\u3067\u3059\u3002")}return raw}function wikiTags(input){const tags=repeatedValues(input,"--tag").map(tag=>tag.trim());const clear=input.flags.has("--clear-tags");if(clear&&tags.length>0){throw new UsageError("--tag \u3068 --clear-tags \u306F\u4F75\u7528\u3067\u304D\u307E\u305B\u3093","--tag \u306F\u30BF\u30B0\u3092\u307E\u308B\u3054\u3068\u7F6E\u304D\u63DB\u3048\u307E\u3059\
@@ -121,5 +165,5 @@ ine"]],["\u72B6\u614B",status]])}`]}).join("\n")}function attendeeNames(value,ke
121
165
 
122
166
  --output table / tsv \u306F\u8981\u7D04\u5217\uFF08${MEETING_GET_COLUMNS.join(" / ")}\uFF09\u3067\u3059\u3002
123
167
  \u95B2\u89A7\u3067\u304D\u306A\u3044\u8B70\u4E8B\u9332\u306F\u300C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u300D\u306B\u306A\u308A\u307E\u3059\uFF08\u516C\u958B\u7BC4\u56F2\u306E\u5224\u5B9A\u306F\u30B5\u30FC\u30D0\uFF09\u3002`,flags:[],plan:input=>({method:"GET",path:`${MEETINGS_PATH}/${encodeURIComponent(singleId(input,"twp meeting get","\u8B70\u4E8B\u9332","twp meeting list"))}`}),summarize:body=>pick(record(body,"meeting",MEETING_LABEL),MEETING_GET_COLUMNS),raw:body=>record(body,"meeting",
124
- MEETING_LABEL),document:meetingDocument};var wikiDomain={name:"wiki",summary:"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E wiki\uFF08\u4E00\u89A7\u30FB\u672C\u6587\u3092\u8AAD\u3080\u30FB\u4F5C\u6210\u30FB\u66F4\u65B0\u30FB\u79FB\u52D5\u30FB\u524A\u9664\uFF09",operations:[wikiList,wikiGet,wikiCreate,wikiUpdate,wikiMove,wikiDelete]};var noteDomain={name:"note",summary:"\u30CE\u30FC\u30C8\uFF08\u4E00\u89A7\u30FB\u672C\u6587\u3092\u8AAD\u3080\uFF09",operations:[noteList,noteGet]};var meetingDomain={name:"\
125
- meeting",summary:"\u8B70\u4E8B\u9332\uFF08\u671F\u9593\u3067\u306E\u4E00\u89A7\u30FB\u672C\u6587\u3092\u8AAD\u3080\uFF09",operations:[meetingList,meetingGet]};export{meetingDomain,noteDomain,wikiDomain};
168
+ MEETING_LABEL),document:meetingDocument};var wikiDomain={name:"wiki",summary:"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E wiki\uFF08\u4E00\u89A7\u30FB\u672C\u6587\u30FB\u69CB\u9020\u30FB\u30BF\u30B0\u30FB\u7248\u306E\u5C65\u6B74\u3068\u5DEE\u5206\u30FB\u88AB\u30EA\u30F3\u30AF\u30FB\u95A2\u9023\u30BF\u30B9\u30AF\u30FB\u4F5C\u6210\u30FB\u66F4\u65B0\u30FB\u79FB\u52D5\u30FB\u524A\u9664\uFF09",operations:[wikiList,wikiGet,wikiTree,wikiTagList,wikiVersions,wikiVersion,wikiDiff,wikiBacklinks,wikiLinkedTasks,
169
+ wikiCreate,wikiUpdate,wikiMove,wikiDelete]};var noteDomain={name:"note",summary:"\u30CE\u30FC\u30C8\uFF08\u4E00\u89A7\u30FB\u672C\u6587\u3092\u8AAD\u3080\uFF09",operations:[noteList,noteGet]};var meetingDomain={name:"meeting",summary:"\u8B70\u4E8B\u9332\uFF08\u671F\u9593\u3067\u306E\u4E00\u89A7\u30FB\u672C\u6587\u3092\u8AAD\u3080\uFF09",operations:[meetingList,meetingGet]};export{meetingDomain,noteDomain,wikiDomain};
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{checkOutTarget}from"./chunk-3EATJTPN.js";import"./chunk-53D2WQQO.js";import"./chunk-Q3B65OFC.js";import"./chunk-GFLGXGWE.js";import"./chunk-YXVN6OCH.js";import"./chunk-UFGJSWKU.js";import{contentTypeFor,inspectLocalFile}from"./chunk-I4TR55UF.js";import{checkUploadQuota}from"./chunk-V64CGX7V.js";import{parseWaitOptions,waitUntilTerminal}from"./chunk-WVCEKC7V.js";import"./chunk-GY7KI5E5.js";import{LIST_FLAGS,LIST_PAGING_HELP,envelopePaging,
3
+ import{checkOutTarget}from"./chunk-JIGA6KKU.js";import"./chunk-S7IEZSPJ.js";import"./chunk-Q3B65OFC.js";import"./chunk-GFLGXGWE.js";import"./chunk-YXVN6OCH.js";import"./chunk-UFGJSWKU.js";import{contentTypeFor,inspectLocalFile}from"./chunk-I4TR55UF.js";import{checkUploadQuota}from"./chunk-V64CGX7V.js";import{parseWaitOptions,waitUntilTerminal}from"./chunk-WVCEKC7V.js";import"./chunk-GY7KI5E5.js";import{LIST_FLAGS,LIST_PAGING_HELP,envelopePaging,
4
4
  nonEmpty,positiveInteger,readEnvelopeCursor,shellQuote}from"./chunk-MI6HVYR2.js";import{repeatedValues}from"./chunk-RX5HWI4L.js";import{readBody}from"./chunk-6LSQCOCJ.js";import"./chunk-HNG6MF26.js";import{collapsesInUrlPath,isSafePathSegment}from"./chunk-HVZUXLQ4.js";import{ApiError}from"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";import{requireResolved,singleRef,withResolved}from"./chunk-PS5QFKHB.js";import"./chunk-II5RVJQN.js";import{
5
5
  acknowledgement,isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiRejectedError,ApiResponseError,NetworkError,UsageError,WaitTimeoutError}from"./chunk-VFPY2A23.js";import"./chunk-PECIBNFD.js";import"./chunk-XNLIEUAW.js";import"./chunk-J7QYPKVK.js";import"./chunk-4VZKNEVN.js";import"./chunk-RZVI6PMW.js";import"./chunk-KDH3KWPO.js";import"./chunk-QQRJLH6B.js";import"./chunk-74BPZOKU.js";import"./chunk-UREA4ZIG.js";import"./chunk-NHYMHCAT.js";
6
6
  import"./chunk-VSJBJXZO.js";import crypto2 from"crypto";import fs2 from"fs";import path from"path";var SCOPE_PERSONAL="personal";var SCOPE_PROJECT="project";var UUID=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;var FORBIDDEN_NAME=/[/\\:*?"<>|]/;var NAME_MAX=255;var ROW_COLUMNS=["id","path","name","file_count","subfolder_count","parent_id","updated_at"];var TRASH_COLUMNS=["id","path","name","file_count","subfolder_count","parent_id","deleted_at"];function folderRows(raw){return raw.map(row=>{const id=row["id"];const name=row["name"];const parentId=row["parent_id"];if(typeof id!==
@@ -1,3 +1,3 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{loadDomain}from"./chunk-53D2WQQO.js";import"./chunk-VSJBJXZO.js";export{loadDomain};
3
+ import{loadDomain}from"./chunk-S7IEZSPJ.js";import"./chunk-VSJBJXZO.js";export{loadDomain};
@@ -1,4 +1,4 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{CURATED_PAGING_VOCABULARY,buildPrepareContext,checkOutTarget,exitCodeFor,fetchAllPages,outputValue,reportError,requiresYes,resolvePaging,runDomain}from"./chunk-3EATJTPN.js";import"./chunk-53D2WQQO.js";import"./chunk-Q3B65OFC.js";import"./chunk-GFLGXGWE.js";import"./chunk-YXVN6OCH.js";import"./chunk-UFGJSWKU.js";import"./chunk-MI6HVYR2.js";import"./chunk-RX5HWI4L.js";import"./chunk-HNG6MF26.js";import"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";
3
+ import{CURATED_PAGING_VOCABULARY,buildPrepareContext,checkOutTarget,exitCodeFor,fetchAllPages,outputValue,reportError,requiresYes,resolvePaging,runDomain}from"./chunk-JIGA6KKU.js";import"./chunk-S7IEZSPJ.js";import"./chunk-Q3B65OFC.js";import"./chunk-GFLGXGWE.js";import"./chunk-YXVN6OCH.js";import"./chunk-UFGJSWKU.js";import"./chunk-MI6HVYR2.js";import"./chunk-RX5HWI4L.js";import"./chunk-HNG6MF26.js";import"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";
4
4
  import"./chunk-H4CDX4TX.js";import"./chunk-II5RVJQN.js";import"./chunk-3ZRMMBP5.js";import"./chunk-VFPY2A23.js";import"./chunk-PECIBNFD.js";import"./chunk-XNLIEUAW.js";import"./chunk-J7QYPKVK.js";import"./chunk-4VZKNEVN.js";import"./chunk-RZVI6PMW.js";import"./chunk-KDH3KWPO.js";import"./chunk-QQRJLH6B.js";import"./chunk-74BPZOKU.js";import"./chunk-UREA4ZIG.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";export{CURATED_PAGING_VOCABULARY,buildPrepareContext,checkOutTarget,exitCodeFor,fetchAllPages,outputValue,reportError,requiresYes,resolvePaging,runDomain};
@@ -0,0 +1,86 @@
1
+ import { createRequire as __twpCreateRequire } from 'node:module';
2
+ const require = __twpCreateRequire(import.meta.url);
3
+ import{apiExit,currentRevisionOf,errorDetail,pickNumber,printDiff,readUtf8Strict,shellQuote,warnHiddenChars}from"./chunk-A4LFG7MW.js";import"./chunk-VRBI2NPI.js";import{EXIT_API_CLIENT,EXIT_API_SERVER,EXIT_FAILURE,EXIT_OK,EXIT_USAGE}from"./chunk-VFPY2A23.js";import{stripTerminalControls}from"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";import*as fs from"fs";var SERVER_DEFAULTS={priority:"P3",order:50,catch_up:true,grace_minutes:120,max_attempts_per_window:2,safe_mode_ok:true,enabled:true,args:"",args_rotation:[],label:"",require_zero:[],required_platforms:[]};var SERVER_META_KEYS=new Set(["updated_by","updated_by_name","updated_at","revision"]);var CONFIG_KEYS=["max_per_cycle","gates","require_zero_statuses"];var FILE_TOP_KEYS=new Set(["schedules","config_meta",...CONFIG_KEYS]);var SCHEDULE_ID=/^[a-z0-9][a-z0-9._-]{0,63}$/;async function runScheduleDefCommand(deps,opts){
4
+ const io={out:deps.out??(t=>void process.stdout.write(stripTerminalControls(t))),err:deps.err??(t=>void process.stderr.write(stripTerminalControls(t))),readFile:deps.readFile??readUtf8Strict,writeFile:deps.writeFile??((p,c)=>fs.writeFileSync(p,c,"utf8")),exists:deps.exists??(p=>fs.existsSync(p))};switch(opts.op){case"list":return list(deps.api,io);case"push":return push(deps.api,opts,io);case"delete":return remove(deps.api,opts,io);case"config":return opts.configOp==="push"?configPush(deps.api,opts,
5
+ io):configPull(deps.api,opts,io)}}async function list(api,io){const remote=await fetchRemote(api,io.err);if(typeof remote==="number")return remote;io.out(`\u5B9A\u7FA9 ${remote.schedules.length} \u4EF6\uFF08max_per_cycle=${JSON.stringify(remote.maxPerCycle??null)}\u30FB\u30B0\u30ED\u30FC\u30D0\u30EB\u8A2D\u5B9A revision ${remote.configRevision??"\u4E0D\u660E"}\uFF09
6
+ `);if(remote.schedules.length>0){io.out(["id","\u6709\u52B9","skill","\u5F15\u6570","\u767A\u706B\u306E\u6761\u4EF6","\u4EF6\u6570\u30B2\u30FC\u30C8","\u512A\u5148","revision","\u30E9\u30D9\u30EB"].join(" ")+"\n");for(const s of[...remote.schedules].sort((a,b)=>str(a["id"]).localeCompare(str(b["id"])))){io.out(row(s)+"\n")}}for(const w of remote.warnings)io.err(`\u26A0\uFE0F ${w}
7
+ `);if(remote.canWrite===false){io.err("\u3053\u306E\u30A2\u30AB\u30A6\u30F3\u30C8\u306F\u5B9A\u7FA9\u3092\u66F8\u304D\u8FBC\u3081\u307E\u305B\u3093\uFF08\u66F8\u304D\u8FBC\u307F\u306F\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u7BA1\u7406\u8005\u4EE5\u4E0A\uFF09\n")}return EXIT_OK}function row(s){const rotation=Array.isArray(s["args_rotation"])?s["args_rotation"]:[];const args=rotation.length>0?`${str(s["args"])}\uFF08\u30ED\u30FC\u30C6\u30FC\u30B7\u30E7\u30F3 ${rotation.length} \u4EF6\uFF09`:str(
8
+ s["args"]);const requireZero=Array.isArray(s["require_zero"])?s["require_zero"].map(String).join(","):str(s["require_zero"]);const fields=[str(s["id"]),s["enabled"]===false?"\u7121\u52B9":"\u6709\u52B9",str(s["skill"]),args,describeWhen(s["when"]),requireZero,str(s["priority"]),String(s["revision"]??""),str(s["label"])];return fields.map(f=>f.replace(/[\t\r\n]/g," ")).join(" ")}function describeWhen(when){const w=when&&typeof when==="object"?when:{};const type=str(w["type"]).toLowerCase()||"dail\
9
+ y";const after=str(w["after"])||"00:00";if(type==="daily")return`\u6BCE\u65E5 ${after}\u4EE5\u964D`;if(type==="weekly"){const days=Array.isArray(w["days"])&&w["days"].length>0?w["days"].map(String).join("/"):"mon";return`\u6BCE\u9031 ${days} ${after}\u4EE5\u964D`}if(type==="monthly")return`\u6BCE\u6708 ${String(w["day"]??1)}\u65E5 ${after}\u4EE5\u964D`;if(type==="interval")return`\u524D\u56DE\u304B\u3089${String(w["every_hours"]??24)}h\u7D4C\u904E`;return type}async function push(api,opts,io){const file=opts.
10
+ file??"";let expected;if(opts.revision!==void 0){const map=parseRevisionMap(opts.revision);if(map===null){io.err(`push \u306E --revision \u306F\u300C\u5B9A\u7FA9ID=\u756A\u53F7\u300D\u3092\u30AB\u30F3\u30DE\u3067\u533A\u5207\u3063\u3066\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u4F8B: daily-verify=3,new-one=0\uFF09: ${opts.revision}
11
+ `);return EXIT_USAGE}if(!opts.yes){io.err("--revision \u306F --yes \u3068\u4E00\u7DD2\u306B\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08--yes \u306A\u3057\u3067\u306F\u66F8\u304D\u8FBC\u307F\u307E\u305B\u3093\uFF09\n");return EXIT_USAGE}expected=map}const parsed=readJsonFile(file,io);if(parsed===null)return EXIT_USAGE;const defs=definitionsOf(parsed,file,io);if(defs===null)return EXIT_USAGE;if(!Array.isArray(parsed)&&typeof parsed==="object"&&CONFIG_KEYS.some(k=>k in parsed)){io.err("\uFF08\u30D5\
12
+ \u30A1\u30A4\u30EB\u306E\u30B0\u30ED\u30FC\u30D0\u30EB\u8A2D\u5B9A\u306F\u9001\u308A\u307E\u305B\u3093\u3002\u9001\u308B\u306B\u306F schedule config push \u3092\u4F7F\u3063\u3066\u304F\u3060\u3055\u3044\uFF09\n")}const remote=await fetchRemote(api,io.err);if(typeof remote==="number")return remote;const plan=planOf(defs,remote.schedules);io.out(`push \u5BFE\u8C61: \u4F5C\u6210 ${plan.creates.length} \u4EF6 / \u66F4\u65B0 ${plan.updates.length} \u4EF6 / \u5909\u66F4\u306A\u3057 ${plan.unchanged} \u4EF6\
13
+
14
+ `);for(const d of plan.creates){io.out(` + ${str(d["id"])}
15
+ `);for(const line of JSON.stringify(payloadOf(d),null,2).split("\n"))io.out(` ${line}
16
+ `)}for(const u of plan.updates){io.out(` ~ ${str(u.def["id"])}\uFF08\u30B5\u30FC\u30D0 revision ${u.revision??"\u4E0D\u660E"}\uFF09
17
+ `);for(const f of u.fields){io.out(` ${f.key}: \u30B5\u30FC\u30D0=${JSON.stringify(f.server??null)} \u2192 \u30D5\u30A1\u30A4\u30EB=${JSON.stringify(f.file??null)}
18
+ `)}}for(const id of plan.onlyRemote)io.out(` ! \u30B5\u30FC\u30D0\u306B\u306E\u307F\u5B58\u5728\uFF08\u524A\u9664\u3057\u307E\u305B\u3093\uFF09: ${id}
19
+ `);if(plan.creates.length===0&&plan.updates.length===0){io.out("\u5DEE\u5206\u306F\u3042\u308A\u307E\u305B\u3093\u3002\u66F8\u304D\u8FBC\u307F\u307E\u305B\u3093\u3067\u3057\u305F\u3002\n");return EXIT_OK}warnHiddenChars(io.out,JSON.stringify([...plan.creates,...plan.updates.map(u=>u.def)].map(payloadOf)));const shown=[...plan.creates.map(d=>`${str(d["id"])}=0`),...plan.updates.map(u=>`${str(u.def["id"])}=${u.revision??0}`)].join(",");if(!opts.yes){io.out(`
20
+ \u66F8\u304D\u8FBC\u3093\u3067\u3044\u307E\u305B\u3093\u3002\u3053\u306E\u5185\u5BB9\u3067\u78BA\u5B9A\u3059\u308B\u306B\u306F\u6B21\u3092\u5B9F\u884C\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u8868\u793A\u3057\u305F revision \u3092\u9001\u308B\u306E\u3067\u3001\u305D\u306E\u5F8C\u30B5\u30FC\u30D0\u3067\u66F4\u65B0\u3055\u308C\u305F\u5B9A\u7FA9\u304C\u3042\u308C\u30701\u4EF6\u3082\u66F8\u304B\u305A\u306B\u6B62\u307E\u308A\u307E\u3059\uFF09:
21
+ ${confirmCommand(opts,["push"],{file,revision:shown})}
22
+ `);return EXIT_USAGE}if(expected!==void 0){const planned=new Map([...plan.creates.map(d=>[str(d["id"]),0]),...plan.updates.map(u=>[str(u.def["id"]),u.revision??-1])]);const fileIds=new Set(defs.map(d=>str(d["id"])));const unseen=[...planned.keys()].filter(id=>!expected.has(id));const unknown=[...expected.keys()].filter(id=>!fileIds.has(id));if(unseen.length>0||unknown.length>0){io.err(`\u26D4 \u6848\u5185\u3057\u305F --revision \u3068\u3001\u3044\u307E\u306E\u5DEE\u5206\u306E\u5BFE\u8C61\u304C\u4E00\u81F4\u3057\u307E\u305B\u3093\uFF08\u8868\u793A\u3057\u305F\u5F8C\u306B\u30D5\u30A1\u30A4\u30EB\u304B\u30B5\u30FC\u30D0\u304C\u5909\u308F\u308A\u307E\u3057\u305F\uFF09\u30021\u4EF6\u3082\u66F8\u3044\u3066\u3044\u307E\u305B\u3093${unseen.
23
+ length>0?`\uFF0F\u6848\u5185\u306B\u7121\u3044: ${unseen.join(", ")}`:""}${unknown.length>0?`\uFF0F\u30D5\u30A1\u30A4\u30EB\u306B\u7121\u3044: ${unknown.join(", ")}`:""}
24
+ `);return EXIT_USAGE}const moved=[...planned.entries()].filter(([id,rev])=>expected.get(id)!==rev);if(moved.length>0){io.err("\u26D4 \u8868\u793A\u3057\u305F\u5F8C\u306B\u30B5\u30FC\u30D0\u3067\u66F4\u65B0\u3055\u308C\u305F\u5B9A\u7FA9\u304C\u3042\u308A\u307E\u3059\u3002\u4E0A\u66F8\u304D\u305B\u305A\u306B\u6B62\u3081\u307E\u3057\u305F\uFF081\u4EF6\u3082\u66F8\u3044\u3066\u3044\u307E\u305B\u3093\uFF09: "+moved.map(([id,rev])=>`${id}\uFF08\u6848\u5185 ${expected.get(id)} \u2192 \u73FE\u5728 ${rev}\
25
+ \uFF09`).join(", ")+"\n");return EXIT_API_CLIENT}}let failure=null;for(const d of plan.creates){const res=await api.request("POST","/schedules/definitions",payloadOf(d));if(res.ok){io.out(` \u4F5C\u6210: ${str(d["id"])}
26
+ `);continue}io.err(` \u26D4 \u4F5C\u6210\u3067\u304D\u307E\u305B\u3093 ${str(d["id"])}\uFF08${errorDetail(res)}\uFF09
27
+ `);if(res.status===401||res.status===403)return apiExit(res);failure??=apiExit(res)}for(const u of plan.updates){if(u.revision===null){io.err(` \u26D4 \u66F4\u65B0\u3067\u304D\u307E\u305B\u3093 ${str(u.def["id"])}\uFF08\u30B5\u30FC\u30D0\u306E\u5FDC\u7B54\u306B revision \u304C\u3042\u308A\u307E\u305B\u3093\uFF09
28
+ `);failure??=EXIT_API_SERVER;continue}const id=str(u.def["id"]);const res=await api.request("PUT",`/schedules/definitions/${encodeURIComponent(id)}`,{...payloadOf(u.def),revision:u.revision});if(res.ok){io.out(` \u66F4\u65B0: ${id}
29
+ `);continue}if(res.status===409){const now=currentRevisionOf(res);io.err(` \u26D4 409: ${id} \u306F revision ${u.revision} \u3067\u9001\u308A\u307E\u3057\u305F\u304C\u3001\u30B5\u30FC\u30D0\u306F${now!==null?` revision ${now} \u306B`:""}\u66F4\u65B0\u3055\u308C\u3066\u3044\u307E\u3059\u3002\u4E0A\u66F8\u304D\u305B\u305A\u306B\u6B62\u3081\u307E\u3057\u305F
30
+ `)}else{io.err(` \u26D4 \u66F4\u65B0\u3067\u304D\u307E\u305B\u3093 ${id}\uFF08${errorDetail(res)}\uFF09
31
+ `)}if(res.status===401||res.status===403)return apiExit(res);failure??=apiExit(res)}const after=await fetchRemote(api,io.err);if(typeof after==="number")return after;const rest=planOf(defs,after.schedules);const remaining=rest.creates.length+rest.updates.length;if(failure!==null||remaining>0){io.err(`\u26D4 \u53CD\u6620\u304C\u53CE\u675F\u3057\u3066\u3044\u307E\u305B\u3093\uFF08\u30D5\u30A1\u30A4\u30EB\u3068\u9055\u3046\u5B9A\u7FA9\u304C ${remaining} \u4EF6\u6B8B\u3063\u3066\u3044\u307E\u3059\uFF09\u3002\u4E0A\u306E\u7406\u7531\u3092\u89E3\u6D88\u3057\u3066\u3084\u308A\u76F4\u3057\u3066\u304F\u3060\u3055\u3044
32
+ `);return failure??EXIT_FAILURE}io.out(`\u53CD\u6620\u3057\u307E\u3057\u305F\uFF08\u4F5C\u6210 ${plan.creates.length} \u4EF6 / \u66F4\u65B0 ${plan.updates.length} \u4EF6\u30FB\u30D5\u30A1\u30A4\u30EB\u3068\u30B5\u30FC\u30D0\u306E\u5DEE\u52060\u3092\u78BA\u8A8D\uFF09
33
+ `);return EXIT_OK}function planOf(defs,server){const byId=new Map(server.map(s=>[str(s["id"]),s]));const plan={creates:[],updates:[],unchanged:0,onlyRemote:[]};const fileIds=new Set;for(const d of defs){const id=str(d["id"]);fileIds.add(id);const current=byId.get(id);if(current===void 0){plan.creates.push(d);continue}const a=comparable(current);const b=comparable(d);const keys=[...new Set([...Object.keys(a),...Object.keys(b)])].sort();const fields=keys.filter(k=>stableJson(a[k])!==stableJson(b[k])).
34
+ map(k=>({key:k,server:a[k],file:b[k]}));if(fields.length===0)plan.unchanged+=1;else plan.updates.push({def:d,revision:pickNumber(current,"revision"),fields})}plan.onlyRemote=[...byId.keys()].filter(id=>!fileIds.has(id)).sort();return plan}function comparable(def){const out={};for(const[k,v]of Object.entries(def)){if(k.startsWith("_")||SERVER_META_KEYS.has(k))continue;out[k]=v}for(const[k,v]of Object.entries(SERVER_DEFAULTS))if(!(k in out))out[k]=v;const when=out["when"];if(when&&typeof when==="o\
35
+ bject"&&!Array.isArray(when))out["when"]=normalizeWhen(when);return out}function normalizeWhen(when){const type=(typeof when["type"]==="string"?when["type"]:"daily").toLowerCase();if(!["daily","weekly","monthly","interval"].includes(type))return{...when,type};if(type==="interval")return{type,every_hours:when["every_hours"]??24};const out={type,after:typeof when["after"]==="string"?when["after"]:"00:00"};if(type==="weekly")out["days"]=Array.isArray(when["days"])?when["days"].map(d=>String(d).toLowerCase()):
36
+ [];if(type==="monthly"){const day=when["day"];out["day"]=typeof day==="string"&&/^\d+$/.test(day)?Number(day):day}return out}function payloadOf(def){const out={};for(const[k,v]of Object.entries(def)){if(k.startsWith("_")||SERVER_META_KEYS.has(k))continue;out[k]=v}return out}function definitionsOf(parsed,file,io){let list2;if(Array.isArray(parsed)){list2=parsed}else if(parsed&&typeof parsed==="object"&&"schedules"in parsed){const unknownKeys=Object.keys(parsed).filter(k=>!k.startsWith("_")&&!FILE_TOP_KEYS.
37
+ has(k));if(unknownKeys.length>0){io.err(`${file} \u306E\u30C8\u30C3\u30D7\u30EC\u30D9\u30EB\u306B\u77E5\u3089\u306A\u3044\u30AD\u30FC\u304C\u3042\u308A\u307E\u3059: ${unknownKeys.join(", ")}
38
+ `);return null}list2=parsed["schedules"]}else if(parsed&&typeof parsed==="object"&&"id"in parsed){list2=[parsed]}else{io.err(`${file} \u306B\u5B9A\u7FA9\u304C\u3042\u308A\u307E\u305B\u3093\uFF08{ "schedules": [...] }\u30FB\u5B9A\u7FA91\u4EF6\u30FB\u5B9A\u7FA9\u306E\u914D\u5217\u306E\u3044\u305A\u308C\u304B\uFF09
39
+ `);return null}if(!Array.isArray(list2)){io.err(`${file} \u306E schedules \u304C\u914D\u5217\u3067\u306F\u3042\u308A\u307E\u305B\u3093
40
+ `);return null}const seen=new Set;const out=[];for(const[i,d]of list2.entries()){if(!d||typeof d!=="object"||Array.isArray(d)){io.err(`${file} \u306E ${i+1} \u4EF6\u76EE\u304C\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3067\u306F\u3042\u308A\u307E\u305B\u3093
41
+ `);return null}const id=d["id"];if(typeof id!=="string"||!SCHEDULE_ID.test(id)){io.err(`${file} \u306E ${i+1} \u4EF6\u76EE\u306E id \u304C\u4E0D\u6B63\u3067\u3059\uFF08\u82F1\u5C0F\u6587\u5B57\u30FB\u6570\u5B57\u30FB. _ - \u306E64\u5B57\u4EE5\u5185\uFF09: ${JSON.stringify(id??null)}
42
+ `);return null}if(seen.has(id)){io.err(`${file} \u306B\u540C\u3058 id \u304C2\u56DE\u3042\u308A\u307E\u3059: ${id}
43
+ `);return null}seen.add(id);out.push(d)}if(out.length===0){io.err(`${file} \u306B\u5B9A\u7FA9\u304C1\u4EF6\u3082\u3042\u308A\u307E\u305B\u3093
44
+ `);return null}return out}async function remove(api,opts,io){const id=opts.id??"";let expected;if(opts.revision!==void 0){if(!/^\d+$/.test(opts.revision)){io.err(`--revision \u306F0\u4EE5\u4E0A\u306E\u6574\u6570\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044: ${opts.revision}
45
+ `);return EXIT_USAGE}if(!opts.yes){io.err("--revision \u306F --yes \u3068\u4E00\u7DD2\u306B\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08--yes \u306A\u3057\u3067\u306F\u524A\u9664\u3057\u307E\u305B\u3093\uFF09\n");return EXIT_USAGE}expected=Number(opts.revision)}if(!SCHEDULE_ID.test(id)){io.err(`\u5B9A\u7FA9ID\u306E\u5F62\u304C\u4E0D\u6B63\u3067\u3059\uFF08\u82F1\u5C0F\u6587\u5B57\u30FB\u6570\u5B57\u30FB. _ - \u306E64\u5B57\u4EE5\u5185\uFF09: ${id}
46
+ `);return EXIT_USAGE}const remote=await fetchRemote(api,io.err);if(typeof remote==="number")return remote;const current=remote.schedules.find(s=>str(s["id"])===id);if(current===void 0){io.err(`\u5B9A\u7FA9 ${id} \u306F\u30B5\u30FC\u30D0\u306B\u3042\u308A\u307E\u305B\u3093\uFF08\u524A\u9664\u3059\u308B\u3082\u306E\u306F\u3042\u308A\u307E\u305B\u3093\uFF09
47
+ `);return EXIT_FAILURE}const revision=pickNumber(current,"revision");if(revision===null){io.err(`\u26D4 \u5B9A\u7FA9 ${id} \u306E revision \u3092\u8AAD\u3081\u307E\u305B\u3093\uFF08\u5FDC\u7B54\u306E\u5F62\u304C\u5951\u7D04\u3068\u9055\u3044\u307E\u3059\uFF09
48
+ `);return EXIT_API_SERVER}io.out(`\u524A\u9664\u5BFE\u8C61\uFF08revision ${revision}\uFF09:
49
+ ${row(current)}
50
+ `);if(!opts.yes){io.out(`
51
+ \u524A\u9664\u3057\u3066\u3044\u307E\u305B\u3093\u3002\u524A\u9664\u3059\u308B\u3068\u3053\u306E\u67A0\u306F\u767A\u706B\u3057\u306A\u304F\u306A\u308A\u3001\u5B9A\u7FA9\u306F\u623B\u305B\u307E\u305B\u3093\uFF08\u6B62\u3081\u308B\u3060\u3051\u306A\u3089 enabled: false \u3092 push \u3057\u3066\u304F\u3060\u3055\u3044\uFF09\u3002\u524A\u9664\u3059\u308B\u306B\u306F\u6B21\u3092\u5B9F\u884C\u3057\u3066\u304F\u3060\u3055\u3044\uFF08revision ${revision} \u3092\u9001\u308B\u306E\u3067\u3001\u305D\u306E\u5F8C\u30B5\u30FC\u30D0\u3067\u66F4\u65B0\u3055\u308C\u3066\u3044\u308C\u3070 409 \u3067\u6B62\u307E\u308A\u307E\u3059\uFF09:
52
+ ${confirmCommand(opts,["delete",id],{revision})}
53
+ `);return EXIT_USAGE}const sent=expected??revision;const res=await api.request("DELETE",`/schedules/definitions/${encodeURIComponent(id)}?revision=${sent}`);if(!res.ok){if(res.status===409){const now=currentRevisionOf(res);io.err(`\u26D4 409: revision ${sent} \u3067\u9001\u308A\u307E\u3057\u305F\u304C\u3001\u30B5\u30FC\u30D0\u306F${now!==null?` revision ${now} \u306B`:""}\u66F4\u65B0\u3055\u308C\u3066\u3044\u307E\u3059\u3002\u524A\u9664\u305B\u305A\u306B\u6B62\u3081\u307E\u3057\u305F\uFF08\u5185\u5BB9\u3092\u78BA\u8A8D\u3057\u3066\u304B\u3089\u3084\u308A\u76F4\u3057\u3066\u304F\u3060\u3055\u3044\uFF09
54
+ `)}else{io.err(`\u26D4 \u5B9A\u7FA9\u3092\u524A\u9664\u3067\u304D\u307E\u305B\u3093\uFF08${errorDetail(res)}\uFF09
55
+ `)}return apiExit(res)}io.out(`\u524A\u9664\u3057\u307E\u3057\u305F: ${id}
56
+ `);return EXIT_OK}function configJson(remote){const obj={max_per_cycle:remote.maxPerCycle??null,gates:remote.gates??[],require_zero_statuses:remote.requireZeroStatuses??{}};return JSON.stringify(obj,null,2)+"\n"}async function configPull(api,opts,io){const remote=await fetchRemote(api,io.err);if(typeof remote==="number")return remote;const content=configJson(remote);if(opts.out===void 0){io.out(content);return EXIT_OK}const target=opts.out;if(io.exists(target)){let local;try{local=io.readFile(target)}catch(e){
57
+ io.err(`\u65E2\u5B58\u30D5\u30A1\u30A4\u30EB\u3092\u8AAD\u3081\u307E\u305B\u3093: ${target}\uFF08${e.message}\uFF09
58
+ `);return EXIT_FAILURE}if(local===content){io.out(`${target} \u306F\u30B5\u30FC\u30D0\uFF08revision ${remote.configRevision??"\u4E0D\u660E"}\uFF09\u3068\u540C\u3058\u3067\u3059\u3002\u5909\u66F4\u3057\u307E\u305B\u3093\u3067\u3057\u305F\u3002
59
+ `);return EXIT_OK}printDiff(io.out,target,`\u30B5\u30FC\u30D0\uFF08revision ${remote.configRevision??"\u4E0D\u660E"}\uFF09`,local,content);if(!opts.yes){io.out(`
60
+ ${target} \u3092\u4E0A\u66F8\u304D\u3057\u3066\u3044\u307E\u305B\u3093\u3002\u4E0A\u66F8\u304D\u3059\u308B\u306B\u306F --yes \u3092\u4ED8\u3051\u3066\u518D\u5B9F\u884C\u3057\u3066\u304F\u3060\u3055\u3044\u3002
61
+ `);return EXIT_USAGE}}try{io.writeFile(target,content)}catch(e){io.err(`\u66F8\u304D\u8FBC\u3081\u307E\u305B\u3093: ${target}\uFF08${e.message}\uFF09
62
+ `);return EXIT_FAILURE}io.out(`${target} \u306B\u5C55\u958B\u3057\u307E\u3057\u305F\uFF08revision ${remote.configRevision??"\u4E0D\u660E"}\uFF09\u3002
63
+ `);return EXIT_OK}async function configPush(api,opts,io){const file=opts.file??"";let expected;if(opts.revision!==void 0){if(!/^\d+$/.test(opts.revision)){io.err(`--revision \u306F0\u4EE5\u4E0A\u306E\u6574\u6570\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044: ${opts.revision}
64
+ `);return EXIT_USAGE}if(!opts.yes){io.err("--revision \u306F --yes \u3068\u4E00\u7DD2\u306B\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08--yes \u306A\u3057\u3067\u306F\u767B\u9332\u3057\u307E\u305B\u3093\uFF09\n");return EXIT_USAGE}expected=Number(opts.revision)}const parsed=readJsonFile(file,io);if(parsed===null)return EXIT_USAGE;if(Array.isArray(parsed)||typeof parsed!=="object"){io.err(`${file} \u306F\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\uFF08{ "max_per_cycle": \u2026, "gates": [...] }\uFF09\u3067\u306F\u3042\u308A\u307E\u305B\u3093
65
+ `);return EXIT_USAGE}const local=parsed;const unknownKeys=Object.keys(local).filter(k=>!k.startsWith("_")&&!FILE_TOP_KEYS.has(k));if(unknownKeys.length>0){io.err(`${file} \u306E\u30C8\u30C3\u30D7\u30EC\u30D9\u30EB\u306B\u77E5\u3089\u306A\u3044\u30AD\u30FC\u304C\u3042\u308A\u307E\u3059: ${unknownKeys.join(", ")}
66
+ `);return EXIT_USAGE}if(!("max_per_cycle"in local)){io.err(`${file} \u306B max_per_cycle \u304C\u3042\u308A\u307E\u305B\u3093\uFF08\u30B0\u30ED\u30FC\u30D0\u30EB\u8A2D\u5B9A\u306E\u5FC5\u9808\u9805\u76EE\u3067\u3059\uFF09
67
+ `);return EXIT_USAGE}const remote=await fetchRemote(api,io.err);if(typeof remote==="number")return remote;if(remote.configRevision===null){io.err("\u26D4 \u30B0\u30ED\u30FC\u30D0\u30EB\u8A2D\u5B9A\u306E revision \u3092\u8AAD\u3081\u307E\u305B\u3093\uFF08\u5FDC\u7B54\u306E config_meta.revision \u304C\u7121\u3044\uFF09\n");return EXIT_API_SERVER}const body={max_per_cycle:local["max_per_cycle"],gates:"gates"in local?local["gates"]:remote.gates??[]};if("require_zero_statuses"in local)body["require_z\
68
+ ero_statuses"]=local["require_zero_statuses"];const kept=CONFIG_KEYS.filter(k=>!(k in local));if(kept.length>0)io.out(`\uFF08\u30D5\u30A1\u30A4\u30EB\u306B\u7121\u3044\u305F\u3081\u73FE\u5728\u5024\u3092\u4FDD\u3061\u307E\u3059: ${kept.join(", ")}\uFF09
69
+ `);if("schedules"in local)io.err("\uFF08\u30D5\u30A1\u30A4\u30EB\u306E\u5B9A\u7FA9\u306F\u9001\u308A\u307E\u305B\u3093\u3002\u9001\u308B\u306B\u306F schedule push \u3092\u4F7F\u3063\u3066\u304F\u3060\u3055\u3044\uFF09\n");const before=configJson(remote);const after=JSON.stringify({max_per_cycle:body["max_per_cycle"]??null,gates:body["gates"]??[],require_zero_statuses:"require_zero_statuses"in body?body["require_zero_statuses"]:remote.requireZeroStatuses??{}},null,2)+"\n";if(stableJson(JSON.parse(
70
+ before))===stableJson(JSON.parse(after))){io.out(`\u5DEE\u5206\u306F\u3042\u308A\u307E\u305B\u3093\uFF08revision ${remote.configRevision}\uFF09\u3002\u767B\u9332\u3057\u307E\u305B\u3093\u3067\u3057\u305F\u3002
71
+ `);return EXIT_OK}printDiff(io.out,`\u30B5\u30FC\u30D0\uFF08revision ${remote.configRevision}\uFF09`,file,before,after);const revision=expected??remote.configRevision;if(!opts.yes){io.out(`
72
+ \u767B\u9332\u3057\u3066\u3044\u307E\u305B\u3093\u3002\u3053\u306E\u5DEE\u5206\u3067\u78BA\u5B9A\u3059\u308B\u306B\u306F\u6B21\u3092\u5B9F\u884C\u3057\u3066\u304F\u3060\u3055\u3044\uFF08revision ${remote.configRevision} \u3092\u9001\u308B\u306E\u3067\u3001\u305D\u306E\u5F8C\u30B5\u30FC\u30D0\u304C\u66F4\u65B0\u3055\u308C\u3066\u3044\u308C\u3070 409 \u3067\u6B62\u307E\u308A\u307E\u3059\uFF09:
73
+ ${confirmCommand(opts,["config","push"],{file,revision:remote.configRevision})}
74
+ `);return EXIT_USAGE}const res=await api.request("PUT","/schedules/config",{...body,revision});if(!res.ok){if(res.status===409){const now=currentRevisionOf(res);io.err(`\u26D4 409: revision ${revision} \u3067\u9001\u308A\u307E\u3057\u305F\u304C\u3001\u30B5\u30FC\u30D0\u306F${now!==null?` revision ${now} \u306B`:""}\u66F4\u65B0\u3055\u308C\u3066\u3044\u307E\u3059\u3002\u753B\u9762\u3067\u7DE8\u96C6\u3055\u308C\u305F\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\u3002\u4E0A\u66F8\u304D\u305B\u305A\u306B\u6B62\u3081\u307E\u3057\u305F\uFF08\u5DEE\u5206\u3092\u78BA\u8A8D\u3057\u3066\u304B\u3089\u3084\u308A\u76F4\u3057\u3066\u304F\u3060\u3055\u3044\uFF09
75
+ `)}else{io.err(`\u26D4 \u30B0\u30ED\u30FC\u30D0\u30EB\u8A2D\u5B9A\u3092\u767B\u9332\u3067\u304D\u307E\u305B\u3093\uFF08${errorDetail(res)}\uFF09
76
+ `)}return apiExit(res)}const saved=parseRemote(res);if(saved===null||saved.configRevision===null){io.err(`\u26A0\uFE0F \u5FDC\u7B54\u3092\u89E3\u91C8\u3067\u304D\u307E\u305B\u3093\u3002\u53CD\u6620\u3055\u308C\u305F\u304B\u3092 schedule config pull \u3067\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u5FDC\u7B54\u306E\u5148\u982D: ${res.raw.slice(0,120)}\uFF09
77
+ `);return EXIT_API_SERVER}io.out(`\u767B\u9332\u3057\u307E\u3057\u305F: revision ${saved.configRevision}
78
+ `);return EXIT_OK}async function fetchRemote(api,err){const res=await api.request("GET","/schedules/definitions");if(!res.ok){err(`\u26D4 \u5B9A\u671F\u30B9\u30B1\u30B8\u30E5\u30FC\u30EB\u306E\u5B9A\u7FA9\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\uFF08${errorDetail(res)}\uFF09
79
+ `);return apiExit(res)}const remote=parseRemote(res);if(remote===null){err(`\u26D4 \u5B9A\u7FA9\u306E\u5FDC\u7B54\u306B schedules \u914D\u5217\u304C\u3042\u308A\u307E\u305B\u3093\uFF08\u5FDC\u7B54\u306E\u5148\u982D: ${res.raw.slice(0,120)}\uFF09
80
+ `);return EXIT_API_SERVER}return remote}function parseRemote(res){const json=res.json??{};const data=json["data"];const b=data&&typeof data==="object"&&!Array.isArray(data)&&("schedules"in data||"config_meta"in data)?data:json;const schedules=b["schedules"];const meta=b["config_meta"];if(!Array.isArray(schedules)&&!(meta&&typeof meta==="object"))return null;const warnings=Array.isArray(b["warnings"])?b["warnings"].map(w=>w&&typeof w==="object"?str(w["message"]):str(w)).filter(m=>m!==""):[];return{
81
+ schedules:Array.isArray(schedules)?schedules.filter(s=>!!s&&typeof s==="object"&&!Array.isArray(s)):[],maxPerCycle:b["max_per_cycle"],gates:b["gates"],requireZeroStatuses:b["require_zero_statuses"],configRevision:meta&&typeof meta==="object"?pickNumber(meta,"revision"):null,canWrite:typeof b["can_write"]==="boolean"?b["can_write"]:null,warnings}}function readJsonFile(file,io){let raw;try{raw=io.readFile(file)}catch(e){io.err(`\u30D5\u30A1\u30A4\u30EB\u3092\u8AAD\u3081\u307E\u305B\u3093: ${file}\uFF08${e.
82
+ message}\uFF09
83
+ `);return null}try{return JSON.parse(raw)}catch(e){io.err(`${file} \u3092 JSON \u3068\u3057\u3066\u8AAD\u3081\u307E\u305B\u3093\uFF08${e.message}\uFF09
84
+ `);return null}}function parseRevisionMap(raw){const map=new Map;for(const part of raw.split(",")){const m=/^([^=]+)=(\d+)$/.exec(part);if(m===null)return null;const id=m[1];if(!SCHEDULE_ID.test(id)||map.has(id))return null;map.set(id,Number(m[2]))}return map}function stableJson(v){if(Array.isArray(v))return`[${v.map(stableJson).join(",")}]`;if(v&&typeof v==="object"){const entries=Object.entries(v).sort(([a],[b])=>a<b?-1:a>b?1:0);return`{${entries.map(([k,x])=>`${JSON.stringify(k)}:${stableJson(
85
+ x)}`).join(",")}}`}return JSON.stringify(v??null)}function str(v){if(v===null||v===void 0)return"";return typeof v==="string"?v:String(v)}function confirmCommand(opts,sub,extra={}){const parts=["twp task-loop schedule",...sub,"--project",shellQuote(opts.projectRef)];if(opts.profile!==void 0)parts.push("--profile",shellQuote(opts.profile));if(extra.file!==void 0)parts.push("--file",shellQuote(extra.file));parts.push("--yes");if(extra.revision!==void 0)parts.push("--revision",String(extra.revision));
86
+ return parts.join(" ")}export{comparable,describeWhen,runScheduleDefCommand,stableJson};
@@ -0,0 +1,3 @@
1
+ import { createRequire as __twpCreateRequire } from 'node:module';
2
+ const require = __twpCreateRequire(import.meta.url);
3
+ import{ServerSkillCatalog,applyArguments,expandServerSkills,formatSkillOrigins,parseSkillBody,parseSkillList,prepareSkillOverlay,referencedSkills,stripFrontmatter}from"./chunk-EDBJQCNC.js";import"./chunk-RRHAX7RK.js";import"./chunk-A4LFG7MW.js";import"./chunk-VRBI2NPI.js";import"./chunk-SPZ3GBYC.js";import"./chunk-GY7KI5E5.js";import"./chunk-VFPY2A23.js";import"./chunk-J7QYPKVK.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";export{ServerSkillCatalog,applyArguments,expandServerSkills,formatSkillOrigins,parseSkillBody,parseSkillList,prepareSkillOverlay,referencedSkills,stripFrontmatter};
@@ -0,0 +1,43 @@
1
+ import { createRequire as __twpCreateRequire } from 'node:module';
2
+ const require = __twpCreateRequire(import.meta.url);
3
+ import{apiExit,currentRevisionOf,errorDetail,pickNumber,printDiff,readUtf8Strict,shellQuote}from"./chunk-A4LFG7MW.js";import"./chunk-VRBI2NPI.js";import{EXIT_API_SERVER,EXIT_FAILURE,EXIT_OK,EXIT_USAGE}from"./chunk-VFPY2A23.js";import{stripTerminalControls}from"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";import*as fs from"fs";var DEFAULT_SETTINGS_FILE="loop-settings.json";var MAP_SECTIONS=["ai","prompts","loop"];var SECTIONS=[...MAP_SECTIONS,"outcomes"];var REVISION_KEY="revision";async function runSettingsCommand(deps,opts){const out=deps.out??(t=>void process.stdout.write(stripTerminalControls(t)));const err=deps.err??(t=>void process.stderr.write(stripTerminalControls(t)));const readFile=deps.readFile??readUtf8Strict;const writeFile=deps.writeFile??((p,c)=>fs.writeFileSync(p,c,"utf8"));const exists=deps.exists??(p=>fs.existsSync(
4
+ p));return opts.op==="push"?push(deps.api,opts,{out,err,readFile}):pull(deps.api,opts,{out,err,readFile,writeFile,exists})}function serializeSettings(s){const prompts={...s.prompts};delete prompts["charter"];return`${JSON.stringify({[REVISION_KEY]:s.revision,ai:s.ai,prompts,loop:s.loop,outcomes:s.outcomes},null,2)}
5
+ `}async function pull(api,opts,io){const target=opts.out??DEFAULT_SETTINGS_FILE;const current=await fetchState(api,io.err);if(typeof current==="number")return current;const content=serializeSettings(current);const source=`\u30B5\u30FC\u30D0\uFF08revision ${current.revision}${current.updatedByName?`\u30FB${current.updatedByName}`:""}\uFF09`;if(io.exists(target)){let local;try{local=io.readFile(target)}catch(e){io.err(`\u65E2\u5B58\u30D5\u30A1\u30A4\u30EB\u3092\u8AAD\u3081\u307E\u305B\u3093: ${target}\
6
+ \uFF08${e.message}\uFF09
7
+ `);return EXIT_FAILURE}if(local===content){io.out(`${target} \u306F\u30B5\u30FC\u30D0\uFF08revision ${current.revision}\uFF09\u3068\u540C\u3058\u3067\u3059\u3002\u5909\u66F4\u3057\u307E\u305B\u3093\u3067\u3057\u305F\u3002
8
+ `);return EXIT_OK}printDiff(io.out,target,source,local,content);if(!opts.yes){io.out(`
9
+ ${target} \u3092\u4E0A\u66F8\u304D\u3057\u3066\u3044\u307E\u305B\u3093\u3002\u4E0A\u66F8\u304D\u3059\u308B\u306B\u306F --yes \u3092\u4ED8\u3051\u3066\u518D\u5B9F\u884C\u3057\u3066\u304F\u3060\u3055\u3044\u3002
10
+ `);return EXIT_USAGE}}try{io.writeFile(target,content)}catch(e){io.err(`\u66F8\u304D\u8FBC\u3081\u307E\u305B\u3093: ${target}\uFF08${e.message}\uFF09
11
+ `);return EXIT_FAILURE}io.out(`${target} \u306B\u5C55\u958B\u3057\u307E\u3057\u305F\uFF08revision ${current.revision}\u3002\u61B2\u7AE0\u306F\u542B\u307F\u307E\u305B\u3093\u3002\u61B2\u7AE0\u306F charter pull\uFF09\u3002
12
+ `);return EXIT_OK}async function push(api,opts,io){if(opts.file===void 0){io.err(`--file <\u30D1\u30B9> \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u4F8B: --file ${DEFAULT_SETTINGS_FILE}\u3002\u96DB\u5F62\u306F settings pull \u3067\u4F5C\u308C\u307E\u3059\uFF09
13
+ `);return EXIT_USAGE}let expected;if(opts.revision!==void 0){if(!/^\d+$/.test(opts.revision)||!Number.isSafeInteger(Number(opts.revision))){io.err(`--revision \u306F0\u4EE5\u4E0A\u306E\u6574\u6570\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044: ${opts.revision}
14
+ `);return EXIT_USAGE}if(!opts.yes){io.err("--revision \u306F --yes \u3068\u4E00\u7DD2\u306B\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08--yes \u306A\u3057\u3067\u306F\u767B\u9332\u3057\u307E\u305B\u3093\uFF09\n");return EXIT_USAGE}expected=Number(opts.revision)}let parsed;try{parsed=JSON.parse(io.readFile(opts.file).replace(/^\uFEFF/,""))}catch(e){io.err(`\u30D5\u30A1\u30A4\u30EB\u3092 JSON \u3068\u3057\u3066\u8AAD\u3081\u307E\u305B\u3093: ${opts.file}\uFF08${e.message}\uFF09
15
+ `);return EXIT_USAGE}const current=await fetchState(api,io.err);if(typeof current==="number")return current;const merged=mergeLocal(current,parsed);if(typeof merged==="string"){io.err(`\u26D4 ${opts.file}: ${merged}
16
+ `);return EXIT_USAGE}const{next,changes,outcomesChanged,loopChanged,fileRevision}=merged;const stale=fileRevision!==null&&fileRevision!==current.revision;if(changes.length===0){io.out(`\u5DEE\u5206\u306F\u3042\u308A\u307E\u305B\u3093\uFF08revision ${current.revision}\uFF09\u3002\u767B\u9332\u3057\u307E\u305B\u3093\u3067\u3057\u305F\u3002
17
+ `);return EXIT_OK}io.out(`\u30B5\u30FC\u30D0\uFF08revision ${current.revision}\uFF09\u304B\u3089\u5909\u308F\u308B\u30AD\u30FC: ${changes.map(c=>c.label).join(", ")}
18
+ `);for(const c of changes){io.out("\n");if(c.text){printDiff(io.out,`${c.label}\uFF08\u30B5\u30FC\u30D0${c.before===null?"\u30FB\u672A\u8A2D\u5B9A":""}\uFF09`,`${c.label}\uFF08${opts.file}${c.after===null?"\u30FB\u672A\u8A2D\u5B9A\u306B\u623B\u3059":""}\uFF09`,str(c.before),str(c.after));if(str(c.before)===str(c.after)){io.out(`\uFF08\u9055\u3044\u306F${c.after===null?"\u7A7A\u6587\u5B57 \u2192 \u672A\u8A2D\u5B9A\uFF08\u7D44\u307F\u8FBC\u307F\u65E2\u5B9A\u306B\u623B\u3059\uFF09":"\u672A\u8A2D\u5B9A \u2192 \u7A7A\u6587\u5B57\uFF08\u7D44\u307F\u8FBC\u307F\u65E2\
19
+ \u5B9A\u3092\u7A7A\u306B\u3059\u308B\uFF09"}\u3067\u3059\uFF09
20
+ `)}}else{printDiff(io.out,`${c.label}\uFF08\u30B5\u30FC\u30D0\uFF09`,`${c.label}\uFF08${opts.file}\uFF09`,pretty(c.before),pretty(c.after))}}io.out("\n\uFF08\u30D5\u30A1\u30A4\u30EB\u306B\u66F8\u3044\u3066\u3044\u306A\u3044\u30AD\u30FC\u3068\u61B2\u7AE0\u306F\u5909\u3048\u307E\u305B\u3093\uFF09\n");if(stale){io.out(`\u26A0\uFE0F ${opts.file} \u306F revision ${fileRevision} \u3067\u53D6\u5F97\u3057\u305F\u3082\u306E\u3067\u3059\u304C\u3001\u30B5\u30FC\u30D0\u306F revision ${current.revision} \u306B\u66F4\u65B0\u3055\
21
+ \u308C\u3066\u3044\u307E\u3059\u3002\u4E0A\u306E\u5DEE\u5206\u306B\u306F\u3001\u53D6\u5F97\u5F8C\u306B\u4ED6\u3067\u76F4\u3055\u308C\u305F\u30AD\u30FC\u3092\u5143\u306B\u623B\u3059\u5909\u66F4\u304C\u542B\u307E\u308C\u3066\u3044\u308B\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059
22
+ `)}const revision=expected??current.revision;if(opts.yes&&stale&&expected===void 0){io.err(`\u26D4 ${opts.file} \u306E\u53D6\u5F97\u5F8C\u306B\u30B5\u30FC\u30D0\u304C\u66F4\u65B0\u3055\u308C\u3066\u3044\u307E\u3059\uFF08revision ${fileRevision} \u2192 ${current.revision}\uFF09\u3002\u767B\u9332\u3057\u307E\u305B\u3093\u3067\u3057\u305F\u3002\u5DEE\u5206\u3092\u78BA\u8A8D\u3057\u305F\u3046\u3048\u3067 --revision ${current.revision} \u3092\u4ED8\u3051\u3066\u78BA\u5B9A\u3059\u308B\u304B\u3001settings pull \u3067\u53D6\u308A\u76F4\u3057\u3066\u304F\u3060\u3055\u3044
23
+ `);return EXIT_USAGE}if(!opts.yes){io.out(`
24
+ \u767B\u9332\u3057\u3066\u3044\u307E\u305B\u3093\u3002\u3053\u306E\u5DEE\u5206\u3067\u78BA\u5B9A\u3059\u308B\u306B\u306F\u6B21\u3092\u5B9F\u884C\u3057\u3066\u304F\u3060\u3055\u3044\uFF08revision ${current.revision} \u3092\u9001\u308B\u306E\u3067\u3001\u305D\u306E\u5F8C\u30B5\u30FC\u30D0\u304C\u66F4\u65B0\u3055\u308C\u3066\u3044\u308C\u3070 409 \u3067\u6B62\u307E\u308A\u307E\u3059\uFF09:
25
+ ${confirmCommand(opts,current.revision)}
26
+ `);return EXIT_USAGE}const payload={ai:next.ai,prompts:next.prompts,revision};if(loopChanged)payload["loop"]=next.loop;if(outcomesChanged)payload["outcomes"]=next.outcomes;const res=await api.request("PUT","/settings",payload);if(!res.ok){if(res.status===409){const now=currentRevisionOf(res);io.err(`\u26D4 409: revision ${revision} \u3067\u9001\u308A\u307E\u3057\u305F\u304C\u3001\u30B5\u30FC\u30D0\u306F${now!==null?` revision ${now} \u306B`:""}\u66F4\u65B0\u3055\u308C\u3066\u3044\u307E\u3059\u3002\u753B\u9762\u3067\u7DE8\u96C6\u3055\u308C\u305F\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\u3002\u4E0A\u66F8\u304D\u305B\u305A\u306B\u6B62\u3081\u307E\u3057\u305F\uFF08\u5DEE\u5206\u3092\u78BA\u8A8D\u3057\u3066\u304B\u3089\u3084\u308A\u76F4\u3057\u3066\
27
+ \u304F\u3060\u3055\u3044\uFF09
28
+ ${errorDetail(res)}
29
+ `);return apiExit(res)}io.err(`\u26D4 \u30EB\u30FC\u30D7\u8A2D\u5B9A\u3092\u767B\u9332\u3067\u304D\u307E\u305B\u3093\uFF08${errorDetail(res)}\uFF09
30
+ `);return apiExit(res)}const saved=parseState(res);if(saved===null){io.err(`\u26A0\uFE0F \u5FDC\u7B54\u3092\u89E3\u91C8\u3067\u304D\u307E\u305B\u3093\u3002\u53CD\u6620\u3055\u308C\u305F\u304B\u3092 settings pull \u3067\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u5FDC\u7B54\u306E\u5148\u982D: ${res.raw.slice(0,120)}\uFF09
31
+ `);return EXIT_API_SERVER}io.out(`\u767B\u9332\u3057\u307E\u3057\u305F: revision ${saved.revision}\uFF08\u66F4\u65B0\u8005: ${saved.updatedByName||"\u4E0D\u660E"}${saved.updatedAt?`\u30FB${saved.updatedAt}`:""}\uFF09\u3002\u30EB\u30FC\u30D7\u306F\u6B21\u306E\u30B5\u30A4\u30AF\u30EB\u3067\u3053\u306E revision \u3092\u8AAD\u307F\u307E\u3059
32
+ `);return EXIT_OK}function mergeLocal(current,local){if(!isObject(local))return"\u30C8\u30C3\u30D7\u30EC\u30D9\u30EB\u306F\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306B\u3057\u3066\u304F\u3060\u3055\u3044\uFF08settings pull \u306E\u51FA\u529B\u306E\u5F62\uFF09";const unknownTop=Object.keys(local).filter(k=>k!==REVISION_KEY&&!SECTIONS.includes(k));if(unknownTop.length>0){return`\u6271\u3048\u306A\u3044\u30AD\u30FC\u304C\u3042\u308A\u307E\u3059: ${unknownTop.join(", ")}\uFF08\u6271\u3048\u308B\u306E\u306F ${[
33
+ REVISION_KEY,...SECTIONS].join(" / ")}\uFF09`}let fileRevision=null;if(Object.hasOwn(local,REVISION_KEY)){fileRevision=pickNumber(local,REVISION_KEY);if(fileRevision===null)return`${REVISION_KEY} \u306F0\u4EE5\u4E0A\u306E\u6574\u6570\u306B\u3057\u3066\u304F\u3060\u3055\u3044\uFF08settings pull \u304C\u66F8\u3044\u305F\u53D6\u5F97\u6642\u70B9\u306E\u7248\uFF09`}const next={ai:{...current.ai},prompts:{...current.prompts},loop:{...current.loop},outcomes:current.outcomes};const changes=[];let loopChanged=false;
34
+ for(const section of MAP_SECTIONS){if(!Object.hasOwn(local,section))continue;const value=local[section];if(!isObject(value))return`${section} \u306F\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306B\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u672A\u8A2D\u5B9A\u306B\u623B\u3059\u30AD\u30FC\u306F null\uFF09`;if(section==="prompts"&&Object.hasOwn(value,"charter")){return"prompts.charter\uFF08\u61B2\u7AE0\uFF09\u306F\u3053\u3053\u3067\u306F\u6271\u3044\u307E\u305B\u3093\u3002twp task-loop charter push \u3092\u4F7F\u3063\u3066\u304F\u3060\u3055\u3044"}
35
+ const base=current[section];const keys=Object.keys(value).filter(k=>!(section==="ai"&&k.startsWith("_comment")));const unknown=keys.filter(k=>!Object.hasOwn(base,k)||k==="__proto__");if(unknown.length>0){return`\u30B5\u30FC\u30D0\u304C\u77E5\u3089\u306A\u3044\u30AD\u30FC\u3067\u3059: ${unknown.map(k=>`${section}.${k}`).join(", ")}\uFF08\u7DB4\u308A\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002settings pull \u3067\u4E00\u89A7\u3092\u51FA\u305B\u307E\u3059\uFF09`}for(const key of keys){
36
+ const after=value[key];const before=base[key]??null;if(section==="prompts"&&after!==null&&typeof after!=="string"){return`prompts.${key} \u306F\u6587\u5B57\u5217\u304B null \u306B\u3057\u3066\u304F\u3060\u3055\u3044`}if(canonical(before)===canonical(after))continue;next[section][key]=after;if(section==="loop")loopChanged=true;changes.push({label:`${section}.${key}`,before,after,text:section==="prompts"})}}let outcomesChanged=false;if(Object.hasOwn(local,"outcomes")){const value=local["outcomes"];
37
+ if(!Array.isArray(value))return"outcomes \u306F\u914D\u5217\u306B\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u672A\u8A2D\u5B9A\u306B\u3059\u308B\u5834\u5408\u306F []\uFF09";if(canonical(current.outcomes)!==canonical(value)){next.outcomes=value;outcomesChanged=true;changes.push({label:"outcomes",before:current.outcomes,after:value,text:false})}}return{next,changes,outcomesChanged,loopChanged,fileRevision}}function canonical(v){return JSON.stringify(v,(_k,val)=>isObject(val)?Object.fromEntries(Object.
38
+ keys(val).sort().map(k=>[k,val[k]])):val)??"null"}function pretty(v){return v===null||v===void 0?"":`${JSON.stringify(v,null,2)}
39
+ `}function str(v){return typeof v==="string"?v:""}function isObject(v){return typeof v==="object"&&v!==null&&!Array.isArray(v)}async function fetchState(api,err){const res=await api.request("GET","/settings");if(!res.ok){err(`\u26D4 \u30EB\u30FC\u30D7\u8A2D\u5B9A\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\uFF08${errorDetail(res)}\uFF09
40
+ `);return apiExit(res)}const state=parseState(res);if(state===null){err(`\u26D4 \u30EB\u30FC\u30D7\u8A2D\u5B9A\u306E\u5FDC\u7B54\u3092\u89E3\u91C8\u3067\u304D\u307E\u305B\u3093\uFF08\u5FDC\u7B54\u306E\u5148\u982D: ${res.raw.slice(0,120)}\uFF09
41
+ `);return EXIT_API_SERVER}return state}function body(res){const json=res.json??{};const data=json["data"];if(isObject(data)&&"revision"in data)return data;return json}function parseState(res){const b=body(res);const revision=pickNumber(b,"revision");if(revision===null)return null;const sections={};for(const s of MAP_SECTIONS){const v=b[s];if(!isObject(v))return null;sections[s]=v}const outcomes=b["outcomes"];return{ai:sections.ai??{},prompts:sections.prompts??{},loop:sections.loop??{},outcomes:Array.
42
+ isArray(outcomes)?outcomes:[],revision,updatedByName:typeof b["updated_by_name"]==="string"?b["updated_by_name"]:"",updatedAt:typeof b["updated_at"]==="string"?b["updated_at"]:""}}function confirmCommand(opts,revision){const parts=["twp task-loop settings push","--project",shellQuote(opts.projectRef)];if(opts.profile!==void 0)parts.push("--profile",shellQuote(opts.profile));parts.push("--file",shellQuote(opts.file??DEFAULT_SETTINGS_FILE),"--yes","--revision",String(revision));return parts.join("\
43
+ ")}export{DEFAULT_SETTINGS_FILE,mergeLocal,runSettingsCommand,serializeSettings};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tocca-systems/twp-cli",
3
- "version": "0.69.0",
3
+ "version": "0.70.0",
4
4
  "description": "TWP CLI — Tocca Working Platform の CLI 型統合インターフェース(AIエージェントハーネス)",
5
5
  "type": "module",
6
6
  "bin": {
@@ -1,15 +0,0 @@
1
- import { createRequire as __twpCreateRequire } from 'node:module';
2
- const require = __twpCreateRequire(import.meta.url);
3
- import{isValidSkillName,skillDigest}from"./chunk-RRHAX7RK.js";import{describeError}from"./chunk-SPZ3GBYC.js";import{isPrivateProjectId}from"./chunk-GY7KI5E5.js";import{stripTerminalControls}from"./chunk-NHYMHCAT.js";import fs from"fs";import path from"path";var SKILL_REF=/^([ \t]*)\/([a-z][a-z0-9-]*)(?=[ \t\n]|$)([ \t]+[^\n]*)?/gm;function stripFrontmatter(content){if(!content.startsWith("---"))return content;const m=/^---[ \t]*\r?\n[\s\S]*?\r?\n---[ \t]*(?:\r?\n)?/.exec(content);return m===null?content:content.slice(m[0].length)}function referencedSkills(prompt){const out=[];for(const m of prompt.matchAll(SKILL_REF)){const name=m[2]??"";if(!out.includes(name))out.push(name)}return out}function expandServerSkills(prompt,bodies){if(bodies.size===0)return prompt;
4
- return prompt.replace(SKILL_REF,(whole,_indent,name,args)=>{const body=bodies.get(name);if(body===void 0)return whole;return stripFrontmatter(body).replaceAll("$ARGUMENTS",()=>(args??"").trim())})}function prepareSkillOverlay(root,workspace,bodies,provider){const commands=path.join(root,".claude","commands");fs.rmSync(root,{recursive:true,force:true});fs.mkdirSync(commands,{recursive:true});const src=path.join(workspace,".claude","commands");let names=[];try{names=fs.readdirSync(src).filter(f=>f.
5
- endsWith(".md"))}catch{}for(const f of names){const from=path.join(src,f);try{if(fs.statSync(from).isFile())fs.copyFileSync(from,path.join(commands,f))}catch{}}for(const[name,body]of bodies){if(!isValidSkillName(name))continue;fs.writeFileSync(path.join(commands,`${name}.md`),body,"utf8")}if(/^[a-z0-9-]+$/.test(provider)){const rel=path.join("scripts","agent-adapters","providers",`${provider}.md`);const from=path.join(workspace,rel);if(fs.existsSync(from)){fs.mkdirSync(path.dirname(path.join(root,
6
- rel)),{recursive:true});fs.copyFileSync(from,path.join(root,rel))}}}function unwrap(json,key){if(json===null||typeof json!=="object"||Array.isArray(json))return null;const top=json;const data=top["data"];if(data!==null&&typeof data==="object"&&!Array.isArray(data)&&key in data){return data}return top}function isRevision(v){return typeof v==="number"&&Number.isInteger(v)&&v>=0}function parseSkillList(res){const b=unwrap(res.json,"skills");const raw=b?.["skills"];if(!Array.isArray(raw))return null;
7
- const out=new Map;for(const s of raw){if(s===null||typeof s!=="object")continue;const{name,revision,digest}=s;if(typeof name!=="string"||!isValidSkillName(name)||!isRevision(revision)||typeof digest!=="string"){continue}out.set(name,{name,revision,digest})}return out}function parseSkillBody(res){const b=unwrap(res.json,"body");if(b===null)return null;const{name,revision,body}=b;if(typeof name!=="string"||!isRevision(revision)||typeof body!=="string")return null;const digest=skillDigest(body);if(b["\
8
- digest"]!==digest)return null;return{name,revision,digest,body}}var ServerSkillCatalog=class{constructor(deps){this.deps=deps}deps;list=new Map;source="none";bodies=new Map;lastWarning="";names(){return[...this.list.keys()]}hashPart(){return this.source==="none"||this.list.size===0?"skills=file":`skills=${this.source}:${this.list.size}`}async refresh(){const{config,log}=this.deps;const warning=await this.fetchList();if(warning!==""&&warning!==this.lastWarning)log(` \u26A0\uFE0F ${warning}`);else if(warning===
9
- ""&&this.lastWarning!=="")log("\u30B9\u30AD\u30EB\u5B9A\u7FA9\u306E\u4E00\u89A7\u3092\u30B5\u30FC\u30D0\u304B\u3089\u518D\u3073\u53D6\u5F97\u3067\u304D\u308B\u3088\u3046\u306B\u306A\u308A\u307E\u3057\u305F");this.lastWarning=warning;for(const name of[...this.bodies.keys()])if(!this.list.has(name))this.bodies.delete(name);config.configHash=`${config.configHash};${this.hashPart()}`}async fetchList(){if(isPrivateProjectId(this.deps.config.projectId??"")){this.list=new Map;this.source="none";return""}
10
- const res=await this.deps.api.request("GET","/settings/skills");const parsed=res.ok?parseSkillList(res):null;if(parsed!==null){this.list=parsed;this.source="server";return""}const reason=stripTerminalControls(res.ok?`\u5FDC\u7B54\u3092\u89E3\u91C8\u3067\u304D\u307E\u305B\u3093\uFF08\u5148\u982D: ${res.raw.slice(0,120)}\uFF09`:describeError(res));if(res.status===404){this.list=new Map;this.source="none";return""}const transient=res.status===null||res.status>=500||res.ok;if(transient&&this.source!==
11
- "none"){this.source="cached";return`\u30B9\u30AD\u30EB\u5B9A\u7FA9\u306E\u4E00\u89A7\u3092\u30B5\u30FC\u30D0\u304B\u3089\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\uFF08${reason}\uFF09\u3002\u76F4\u524D\u306B\u53D6\u5F97\u3057\u305F\u4E00\u89A7\uFF08${this.list.size}\u4EF6\uFF09\u3067\u8D70\u308A\u307E\u3059`}this.list=new Map;this.source="none";return`\u30B9\u30AD\u30EB\u5B9A\u7FA9\u306E\u4E00\u89A7\u3092\u30B5\u30FC\u30D0\u304B\u3089\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\uFF08${reason}\uFF09\u3002\u4F5C\u696D\u30C4\
12
- \u30EA\u30FC\u306E\u30B9\u30AD\u30EB\u30D5\u30A1\u30A4\u30EB\u3067\u8D70\u308A\u307E\u3059`}async resolve(prompt){const bodies=new Map;const origins=[];for(const name of referencedSkills(prompt)){const entry=this.list.get(name);if(entry===void 0){if(fs.existsSync(path.join(this.deps.config.workspace,".claude","commands",`${name}.md`))){origins.push({name,origin:"skill=file"})}continue}const cached=this.bodies.get(name);let detail=cached!==void 0&&cached.digest===entry.digest?cached:null;if(detail===
13
- null){const res=await this.deps.api.request("GET",`/settings/skills/${encodeURIComponent(name)}`);detail=res.ok?parseSkillBody(res):null;if(detail===null||detail.name!==name){const why=stripTerminalControls(res.ok?"\u5FDC\u7B54\u3092\u89E3\u91C8\u3067\u304D\u307E\u305B\u3093":describeError(res));if(cached!==void 0&&(res.status===null||res.status>=500)){this.deps.log(` \u26A0\uFE0F \u30B9\u30AD\u30EB ${name} \u306E\u672C\u6587\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\uFF08${why}\uFF09\u3002\u76F4\u524D\u306E rev\
14
- ision ${cached.revision} \u3067\u8D70\u308A\u307E\u3059`);detail=cached}else{this.deps.log(` \u26A0\uFE0F \u30B9\u30AD\u30EB ${name} \u306E\u672C\u6587\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\uFF08${why}\uFF09\u3002\u4F5C\u696D\u30C4\u30EA\u30FC\u306E\u30D5\u30A1\u30A4\u30EB\u7248\u3067\u8D70\u308A\u307E\u3059`);origins.push({name,origin:"skill=file"});continue}}else{this.bodies.set(name,detail)}}bodies.set(name,detail.body);origins.push({name,origin:`skill=server@rev${detail.revision}`})}
15
- return{bodies,origins}}};function formatSkillOrigins(origins){return origins.map(o=>`${o.origin} name=${o.name}`).join(" \uFF0F ")}export{stripFrontmatter,referencedSkills,expandServerSkills,prepareSkillOverlay,parseSkillList,parseSkillBody,ServerSkillCatalog,formatSkillOrigins};
@@ -1,42 +0,0 @@
1
- import { createRequire as __twpCreateRequire } from 'node:module';
2
- const require = __twpCreateRequire(import.meta.url);
3
- import{isModeId,isPermissionModeId}from"./chunk-2LOT54OO.js";import{API_TOKEN,HELP_TOKEN,isDomainName}from"./chunk-KDH3KWPO.js";import{splitFlagToken}from"./chunk-QQRJLH6B.js";var BUILTIN_COMMANDS=["login","logout","whoami","update","task-loop"];var TASK_LOOP_ACTIONS=["run","status","stop","schedule","setup","charter","skill","plan","capacity"];var VALUE_FLAGS=new Set(["-p","--print","--profile","--tenant","--mode","--permission-mode","--model","--allowed-tools","--disallowed-tools","--project","--engine","--interval","--max-cycles","--ai","--workspace","--ai-config-file","--now","--counts","--gate","--file","--out","--revision","--dir","--from","--to","--output","--q\
4
- uery"]);var BOOLEAN_FLAGS=new Set(["-h","--help","-v","--version","--no-tui","--doctor","--password","--token","--no-browser","--safe","--daemon","--force-runner","--force","--drain","--yes","-y","--no-ai-config-file","--verbose","--all","--empty","--check","--dry-run","--debug","--refresh"]);function dispatch(argv,limit=2){const tokens=[];const indexes=[];let truncated=false;for(let i=0;i<argv.length;i++){const arg=argv[i];if(arg===void 0)continue;if(arg.startsWith("-")&&arg!=="-"){const{name,value:inline}=splitFlagToken(
5
- arg);if(BOOLEAN_FLAGS.has(name)){if(inline!==void 0){truncated=true;break}continue}if(VALUE_FLAGS.has(name)){if(inline!==void 0)continue;const next=argv[i+1];if(next!==void 0&&(!next.startsWith("-")||next==="-"))i++;continue}truncated=true;break}if(arg===""||arg==="-")continue;if(tokens.length>=limit)break;tokens.push(arg);indexes.push(i)}return{tokens,indexes,truncated}}function isBuiltin(token){return token!==void 0&&BUILTIN_COMMANDS.includes(token)}function isTaskLoopAction(token){return token!==
6
- void 0&&TASK_LOOP_ACTIONS.includes(token)}function resolveRoute(result){const{tokens,indexes}=result;const[first,second]=tokens;const firstIndex=indexes[0];if(first===void 0||firstIndex===void 0)return{kind:"none",consumed:[]};const consumed=[firstIndex];const secondIndex=indexes[1];if(isBuiltin(first)){if(first==="task-loop"&&isTaskLoopAction(second)){if(secondIndex!==void 0)consumed.push(secondIndex);return{kind:"builtin",command:first,action:second,consumed}}return{kind:"builtin",command:first,
7
- ...first==="task-loop"?{action:"run"}:{},consumed}}if(second!==void 0&&secondIndex!==void 0)consumed.push(secondIndex);return{kind:"domain",domain:first,...second!==void 0?{operation:second}:{},consumed}}var GLOBAL_FLAGS=new Set(["-h","--help","-v","--version","--profile","--output","--query","--dry-run","--debug","--yes","-y","--refresh"]);function parseArgv(argv){const out={command:"tui",safe:false,daemon:false,forceRunner:false,stopForce:false,logoutForce:false,stopDrain:false,noTui:false,doctor:false,yes:false,skillAll:false,planEmpty:false,planCheck:false,noAiConfigFile:false,verbose:false,loginMethod:"browser",loginNoBrowser:false,promptFromStdin:false,domainArgv:[],domainHelp:false,dryRun:false,
8
- debug:false,refresh:false,unknown:[],allowedTools:[],disallowedTools:[]};const route=resolveRoute(dispatch(argv));const consumed=new Set;const[firstIndex,secondIndex]=route.consumed;if(route.kind==="builtin"){out.command=route.command;if(route.action!==void 0)out.taskLoopAction=route.action;for(const index of route.consumed)consumed.add(index)}else if(route.kind==="domain"){if(route.domain===HELP_TOKEN){if(route.operation===void 0){out.command="help";if(firstIndex!==void 0)consumed.add(firstIndex)}else if(isDomainName(
9
- route.operation)){out.command="domain";out.domain=route.operation;out.domainHelp=true;if(firstIndex!==void 0)consumed.add(firstIndex);if(secondIndex!==void 0)consumed.add(secondIndex)}else if(route.operation===API_TOKEN){out.command="api";out.domainHelp=true;if(firstIndex!==void 0)consumed.add(firstIndex);if(secondIndex!==void 0)consumed.add(secondIndex)}}else if(route.domain===API_TOKEN){out.command="api";if(firstIndex!==void 0)consumed.add(firstIndex)}else if(isDomainName(route.domain)){out.command=
10
- "domain";out.domain=route.domain;if(route.operation!==void 0)out.operation=route.operation;for(const index of route.consumed)consumed.add(index)}}const hasSubcommandToken=route.kind==="builtin"||route.kind==="domain"&&(route.domain===HELP_TOKEN||route.domain===API_TOKEN||isDomainName(route.domain));const isDomainRoute=out.command==="domain"||out.command==="api";const takeValue=(i,flag,inline)=>{const value=inline??argv[i+1];if(value===void 0||inline===void 0&&value.startsWith("-")){out.unknown.push(
11
- flag);return{step:0}}if(value.trim()===""){out.unknown.push(inline===void 0?`${flag} `:`${flag}=${inline}`);return{step:0}}return{value,step:inline===void 0?1:0}};let optionsClosed=false;for(let i=0;i<argv.length;i++){if(consumed.has(i))continue;const raw=argv[i];if(raw===void 0)continue;if(isDomainRoute&&raw==="--")optionsClosed=true;const{name:arg,value:inline}=splitFlagToken(raw);if(isDomainRoute&&(optionsClosed||!GLOBAL_FLAGS.has(arg))){out.domainArgv.push(raw);continue}if(inline!==void 0&&BOOLEAN_FLAGS.
12
- has(arg)){out.unknown.push(raw);continue}switch(arg){case"-h":case"--help":if(isDomainRoute)out.domainHelp=true;else out.command="help";break;case"-v":case"--version":out.command="version";break;case"--no-tui":out.noTui=true;break;case"--doctor":out.doctor=true;break;case"--password":out.loginMethod="password";break;case"--token":out.loginMethod="token";break;case"--no-browser":out.loginNoBrowser=true;break;case"--profile":{const{value,step}=takeValue(i,"--profile",inline);if(value!==void 0){out.
13
- profile=value;i+=step}break}case"-p":case"--print":{const next=inline??argv[i+1];const step=inline===void 0?1:0;if(hasSubcommandToken){out.unknown.push(raw)}else if(next==="-"){out.command="print";out.promptFromStdin=true;out.prompt="";i+=step}else if(next!==void 0&&(inline!==void 0||!next.startsWith("-"))){out.command="print";out.prompt=next;i+=step}else{out.unknown.push(raw)}break}case"--output":{const{value,step}=takeValue(i,"--output",inline);if(value!==void 0){out.output=value;i+=step}break}case"\
14
- --query":{const{value,step}=takeValue(i,"--query",inline);if(value!==void 0){out.query=value;i+=step}break}case"--dry-run":out.dryRun=true;break;case"--debug":out.debug=true;break;case"--refresh":out.refresh=true;break;case"--tenant":{const{value,step}=takeValue(i,"--tenant",inline);if(value!==void 0){out.tenant=value;i+=step}break}case"--mode":{const next=inline??argv[i+1];const step=inline===void 0?1:0;if(isModeId(next)){out.mode=next;i+=step}else if(next!==void 0&&(inline!==void 0||!next.startsWith(
15
- "-"))){out.unknown.push(inline!==void 0?raw:`--mode ${next}`);i+=step}else{out.unknown.push("--mode")}break}case"--permission-mode":{const next=inline??argv[i+1];const step=inline===void 0?1:0;if(isPermissionModeId(next)){out.permissionMode=next;i+=step}else if(next!==void 0&&(inline!==void 0||!next.startsWith("-"))){out.unknown.push(inline!==void 0?raw:`--permission-mode ${next}`);i+=step}else{out.unknown.push("--permission-mode")}break}case"--allowed-tools":case"--disallowed-tools":{const{value,
16
- step}=takeValue(i,arg,inline);if(value!==void 0){(arg==="--allowed-tools"?out.allowedTools:out.disallowedTools).push(value);i+=step}break}case"--model":{const{value,step}=takeValue(i,"--model",inline);if(value!==void 0){out.model=value;i+=step}break}case"--safe":out.safe=true;break;case"--daemon":out.daemon=true;break;case"--force-runner":out.forceRunner=true;break;case"--force":out.stopForce=true;break;case"--drain":out.stopDrain=true;break;case"--project":{const{value,step}=takeValue(i,"--proj\
17
- ect",inline);if(value!==void 0){out.project=value;i+=step}break}case"--engine":{const{value,step}=takeValue(i,"--engine",inline);if(value!==void 0){out.engine=value;i+=step}break}case"--interval":case"--max-cycles":{const{value,step}=takeValue(i,arg,inline);if(value!==void 0){const n=Number.parseInt(value,10);if(Number.isInteger(n)&&n>0){if(arg==="--interval")out.interval=n;else out.maxCycles=n}else{out.unknown.push(inline!==void 0?raw:`${arg} ${value}`)}i+=step}break}case"--yes":case"-y":out.yes=
18
- true;break;case"--ai":{const{value:v,step}=takeValue(i,"--ai",inline);if(v!==void 0){out.ais=[...out.ais??[],v];i+=step}break}case"--no-ai-config-file":out.noAiConfigFile=true;break;case"--workspace":{const{value:v,step}=takeValue(i,"--workspace",inline);if(v!==void 0){out.workspace=v;i+=step}break}case"--ai-config-file":{const{value:v,step}=takeValue(i,"--ai-config-file",inline);if(v!==void 0){out.aiConfigFile=v;i+=step}break}case"--verbose":out.verbose=true;break;case"--now":{const{value:v,step}=takeValue(
19
- i,"--now",inline);if(v!==void 0){out.scheduleNow=v;i+=step}break}case"--counts":{const{value:v,step}=takeValue(i,"--counts",inline);if(v!==void 0){out.scheduleCounts=v;i+=step}break}case"--gate":{const{value:v,step}=takeValue(i,"--gate",inline);if(v!==void 0){out.scheduleGate=v;i+=step}break}case"--file":{if(inline===void 0&&argv[i+1]==="-"){out.charterFile="-";i+=1;break}const{value:v,step}=takeValue(i,"--file",inline);if(v!==void 0){out.charterFile=v;i+=step}break}case"--out":{const{value:v,step}=takeValue(
20
- i,"--out",inline);if(v!==void 0){out.charterOut=v;i+=step}break}case"--revision":{const{value:v,step}=takeValue(i,"--revision",inline);if(v!==void 0){out.charterRevision=v;i+=step}break}case"--from":{const{value:v,step}=takeValue(i,"--from",inline);if(v!==void 0){out.revisionFrom=v;i+=step}break}case"--to":{const{value:v,step}=takeValue(i,"--to",inline);if(v!==void 0){out.revisionTo=v;i+=step}break}case"--dir":{const{value:v,step}=takeValue(i,"--dir",inline);if(v!==void 0){out.skillDir=v;i+=step}
21
- break}case"--all":out.skillAll=true;break;case"--empty":out.planEmpty=true;break;case"--check":out.planCheck=true;break;default:if(out.command==="task-loop"&&out.taskLoopAction==="charter"&&out.charterOp===void 0&&isRevisionAwareOp(raw)){out.charterOp=raw;break}if(out.command==="task-loop"&&out.taskLoopAction==="plan"&&out.planOp===void 0&&raw==="submit"){out.planOp="submit";break}if(out.command==="task-loop"&&out.taskLoopAction==="capacity"&&out.capacityOp===void 0&&raw==="report"){out.capacityOp=
22
- "report";break}if(out.command==="task-loop"&&out.taskLoopAction==="skill"){if(out.skillOp===void 0&&(isRevisionAwareOp(raw)||isSkillManageOp(raw))){out.skillOp=raw;break}if(out.skillOp!==void 0&&out.skillName===void 0&&!raw.startsWith("-")){out.skillName=raw;break}}out.unknown.push(raw)}}if(out.command!=="login"&&out.loginMethod!=="browser"){out.unknown.push(out.loginMethod==="password"?"--password":"--token");out.loginMethod="browser"}if(out.permissionMode!==void 0&&out.command!=="tui"&&out.command!==
23
- "print"){out.unknown.push("--permission-mode");delete out.permissionMode}if(out.command!=="tui"&&out.command!=="print"){if(out.allowedTools.length>0)out.unknown.push("--allowed-tools");if(out.disallowedTools.length>0)out.unknown.push("--disallowed-tools");out.allowedTools=[];out.disallowedTools=[]}if(out.loginNoBrowser&&!(out.command==="login"&&out.loginMethod==="browser")){out.unknown.push("--no-browser");out.loginNoBrowser=false}if(out.command==="logout"&&out.stopForce){out.logoutForce=true;out.
24
- stopForce=false}if(out.command!=="task-loop"){if(out.safe)out.unknown.push("--safe");if(out.daemon)out.unknown.push("--daemon");if(out.forceRunner)out.unknown.push("--force-runner");if(out.stopForce)out.unknown.push("--force");if(out.stopDrain)out.unknown.push("--drain");if(out.engine!==void 0)out.unknown.push("--engine");if(out.interval!==void 0)out.unknown.push("--interval");if(out.maxCycles!==void 0)out.unknown.push("--max-cycles");if(out.project!==void 0)out.unknown.push("--project");if(out.
25
- verbose)out.unknown.push("--verbose");if(out.scheduleNow!==void 0)out.unknown.push("--now");if(out.scheduleCounts!==void 0)out.unknown.push("--counts");if(out.scheduleGate!==void 0)out.unknown.push("--gate");if(out.ais!==void 0)out.unknown.push("--ai");if(out.workspace!==void 0)out.unknown.push("--workspace");if(out.aiConfigFile!==void 0)out.unknown.push("--ai-config-file");if(out.noAiConfigFile)out.unknown.push("--no-ai-config-file");if(out.charterFile!==void 0)out.unknown.push("--file");if(out.
26
- charterOut!==void 0)out.unknown.push("--out");if(out.charterRevision!==void 0)out.unknown.push("--revision");if(out.skillDir!==void 0)out.unknown.push("--dir");if(out.skillAll)out.unknown.push("--all");if(out.revisionFrom!==void 0)out.unknown.push("--from");if(out.revisionTo!==void 0)out.unknown.push("--to");if(out.planEmpty)out.unknown.push("--empty");if(out.planCheck)out.unknown.push("--check")}if(out.yes&&out.command!=="task-loop"&&!isDomainRoute)out.unknown.push("--yes");const acceptsOutput=isDomainRoute||
27
- out.command==="whoami"||out.command==="task-loop"&&out.taskLoopAction==="skill"&&(out.skillOp==="list"||out.skillOp==="show");if(!acceptsOutput){if(out.output!==void 0)out.unknown.push("--output");if(out.query!==void 0)out.unknown.push("--query")}if(!isDomainRoute){if(out.dryRun)out.unknown.push("--dry-run");if(out.debug)out.unknown.push("--debug");if(out.refresh)out.unknown.push("--refresh")}if(out.command==="api"&&out.refresh){out.unknown.push("--refresh");out.refresh=false}if(out.command==="t\
28
- ask-loop"&&out.taskLoopAction!=="schedule"){if(out.verbose)out.unknown.push("--verbose");if(out.scheduleNow!==void 0)out.unknown.push("--now");if(out.scheduleCounts!==void 0)out.unknown.push("--counts");if(out.scheduleGate!==void 0)out.unknown.push("--gate")}if(out.command==="task-loop"&&out.taskLoopAction!=="stop"&&out.stopForce){out.unknown.push("--force")}if(out.command==="task-loop"&&out.taskLoopAction!=="stop"&&out.stopDrain){out.unknown.push("--drain")}if(out.command==="task-loop"&&out.taskLoopAction===
29
- "stop"&&out.stopForce&&out.stopDrain){out.unknown.push("--force \u3068 --drain \u306F\u540C\u6642\u306B\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093");out.stopForce=false;out.stopDrain=false}if(out.command==="task-loop"&&out.taskLoopAction!=="setup"){if(out.yes&&out.taskLoopAction!=="charter"&&out.taskLoopAction!=="skill")out.unknown.push("--yes");if(out.ais!==void 0)out.unknown.push("--ai");if(out.workspace!==void 0)out.unknown.push("--workspace");if(out.aiConfigFile!==void 0)out.unknown.push("--a\
30
- i-config-file");if(out.noAiConfigFile)out.unknown.push("--no-ai-config-file")}if(out.command==="task-loop"&&(out.taskLoopAction==="stop"||out.taskLoopAction==="status")){if(out.safe)out.unknown.push("--safe");if(out.daemon)out.unknown.push("--daemon");if(out.forceRunner)out.unknown.push("--force-runner");if(out.engine!==void 0)out.unknown.push("--engine");if(out.interval!==void 0)out.unknown.push("--interval");if(out.maxCycles!==void 0)out.unknown.push("--max-cycles")}if(out.command==="task-loop"&&
31
- out.taskLoopAction==="setup"){if(out.engine!==void 0)out.unknown.push("--engine");if(out.safe)out.unknown.push("--safe");if(out.daemon)out.unknown.push("--daemon");if(out.forceRunner)out.unknown.push("--force-runner");if(out.interval!==void 0)out.unknown.push("--interval");if(out.maxCycles!==void 0)out.unknown.push("--max-cycles")}if(out.command==="task-loop"&&out.taskLoopAction==="charter"){if(out.charterOp===void 0){out.unknown.push("charter \u306B\u306F push / pull / history / diff / revert \u306E\u3044\u305A\u308C\u304B\u3092\u6307\u5B9A\u3057\u3066\u304F\
32
- \u3060\u3055\u3044")}if(out.charterOp!=="push"&&out.charterFile!==void 0)out.unknown.push("--file");if(out.charterOp!=="push"&&out.charterOp!=="revert"&&out.charterRevision!==void 0){out.unknown.push("--revision")}pushRevisionFlagErrors(out,out.charterOp);if((out.charterOp==="history"||out.charterOp==="diff")&&out.yes)out.unknown.push("--yes");if(out.charterOp!=="pull"&&out.charterOut!==void 0)out.unknown.push("--out");if(out.safe)out.unknown.push("--safe");if(out.daemon)out.unknown.push("--daem\
33
- on");if(out.forceRunner)out.unknown.push("--force-runner");if(out.engine!==void 0)out.unknown.push("--engine");if(out.interval!==void 0)out.unknown.push("--interval");if(out.maxCycles!==void 0)out.unknown.push("--max-cycles")}else if(out.command==="task-loop"&&out.taskLoopAction==="skill"){if(out.skillOp===void 0){out.unknown.push(SKILL_OP_REQUIRED)}else if(out.skillOp==="list"&&out.skillAll){out.unknown.push("--all")}else if(out.skillOp==="list"&&out.skillName!==void 0){out.unknown.push(`skill \
34
- list \u306F\u30B9\u30AD\u30EB\u540D\u3092\u53D7\u3051\u4ED8\u3051\u307E\u305B\u3093: ${out.skillName}`)}else if(out.skillOp==="list"){}else if(out.skillOp!=="push"&&out.skillOp!=="pull"&&out.skillAll){out.unknown.push(`skill ${out.skillOp} \u306F --all \u3092\u53D7\u3051\u4ED8\u3051\u307E\u305B\u3093\uFF08\u30B9\u30AD\u30EB\u540D\u30921\u3064\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF09`)}else if(out.skillName===void 0&&!out.skillAll){out.unknown.push(out.skillOp==="push"||out.skillOp===
35
- "pull"?`skill ${out.skillOp} \u306B\u306F\u30B9\u30AD\u30EB\u540D\u304B --all \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044`:`skill ${out.skillOp} \u306B\u306F\u30B9\u30AD\u30EB\u540D\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044`)}else if(out.skillName!==void 0&&out.skillAll){out.unknown.push("\u30B9\u30AD\u30EB\u540D\u3068 --all \u306F\u540C\u6642\u306B\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093")}if(out.skillOp!=="push"&&out.skillOp!=="revert"&&out.skillOp!=="delete"&&out.charterRevision!==
36
- void 0){out.unknown.push("--revision")}pushRevisionFlagErrors(out,out.skillOp);if((out.skillOp==="history"||out.skillOp==="diff"||out.skillOp==="list"||out.skillOp==="show")&&out.yes){out.unknown.push("--yes")}if(out.skillOp!=="push"&&out.skillOp!=="pull"&&out.skillDir!==void 0)out.unknown.push("--dir");if(out.charterFile!==void 0)out.unknown.push("--file");if(out.charterOut!==void 0)out.unknown.push("--out");if(out.safe)out.unknown.push("--safe");if(out.daemon)out.unknown.push("--daemon");if(out.
37
- forceRunner)out.unknown.push("--force-runner");if(out.engine!==void 0)out.unknown.push("--engine");if(out.interval!==void 0)out.unknown.push("--interval");if(out.maxCycles!==void 0)out.unknown.push("--max-cycles")}else if(out.command==="task-loop"&&out.taskLoopAction==="plan"){if(out.planOp===void 0)out.unknown.push("plan \u306B\u306F submit \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044");if(out.charterOut!==void 0)out.unknown.push("--out");if(out.charterRevision!==void 0)out.unknown.push(
38
- "--revision");if(out.safe)out.unknown.push("--safe");if(out.daemon)out.unknown.push("--daemon");if(out.forceRunner)out.unknown.push("--force-runner");if(out.engine!==void 0)out.unknown.push("--engine");if(out.interval!==void 0)out.unknown.push("--interval");if(out.maxCycles!==void 0)out.unknown.push("--max-cycles")}else if(out.command==="task-loop"&&out.taskLoopAction==="capacity"){if(out.capacityOp===void 0)out.unknown.push("capacity \u306B\u306F report \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044");
39
- if(out.charterFile!==void 0)out.unknown.push("--file");if(out.charterOut!==void 0)out.unknown.push("--out");if(out.charterRevision!==void 0)out.unknown.push("--revision");if(out.safe)out.unknown.push("--safe");if(out.daemon)out.unknown.push("--daemon");if(out.forceRunner)out.unknown.push("--force-runner");if(out.engine!==void 0)out.unknown.push("--engine");if(out.interval!==void 0)out.unknown.push("--interval");if(out.maxCycles!==void 0)out.unknown.push("--max-cycles")}else if(out.command==="tas\
40
- k-loop"){if(out.charterFile!==void 0)out.unknown.push("--file");if(out.charterOut!==void 0)out.unknown.push("--out");if(out.charterRevision!==void 0)out.unknown.push("--revision")}if(out.command==="task-loop"&&out.taskLoopAction!=="skill"){if(out.skillDir!==void 0)out.unknown.push("--dir");if(out.skillAll)out.unknown.push("--all")}if(out.command==="task-loop"&&out.taskLoopAction!=="skill"&&out.taskLoopAction!=="charter"){if(out.revisionFrom!==void 0)out.unknown.push("--from");if(out.revisionTo!==
41
- void 0)out.unknown.push("--to")}if(out.command==="task-loop"&&out.taskLoopAction!=="plan"){if(out.planEmpty)out.unknown.push("--empty");if(out.planCheck)out.unknown.push("--check")}return out}function isSkillManageOp(raw){return raw==="list"||raw==="show"||raw==="delete"}var SKILL_OP_REQUIRED="skill \u306B\u306F push / pull / list / show / delete / history / diff / revert \u306E\u3044\u305A\u308C\u304B\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044";function isRevisionAwareOp(raw){return raw===
42
- "push"||raw==="pull"||raw==="history"||raw==="diff"||raw==="revert"}function pushRevisionFlagErrors(out,op){if(op!=="diff"&&out.revisionFrom!==void 0)out.unknown.push("--from");if(op!=="diff"&&op!=="revert"&&out.revisionTo!==void 0)out.unknown.push("--to")}export{BUILTIN_COMMANDS,TASK_LOOP_ACTIONS,VALUE_FLAGS,GLOBAL_FLAGS,parseArgv};
@@ -1,3 +0,0 @@
1
- import { createRequire as __twpCreateRequire } from 'node:module';
2
- const require = __twpCreateRequire(import.meta.url);
3
- import{ServerSkillCatalog,expandServerSkills,formatSkillOrigins,parseSkillBody,parseSkillList,prepareSkillOverlay,referencedSkills,stripFrontmatter}from"./chunk-PVP3REVW.js";import"./chunk-RRHAX7RK.js";import"./chunk-A4LFG7MW.js";import"./chunk-VRBI2NPI.js";import"./chunk-SPZ3GBYC.js";import"./chunk-GY7KI5E5.js";import"./chunk-VFPY2A23.js";import"./chunk-J7QYPKVK.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";export{ServerSkillCatalog,expandServerSkills,formatSkillOrigins,parseSkillBody,parseSkillList,prepareSkillOverlay,referencedSkills,stripFrontmatter};