@tocca-systems/twp-cli 0.101.2 → 0.102.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.public.md +12 -0
- package/README.md +1 -1
- package/dist/{agent-loop-3LE5FD4U.js → agent-loop-X2FH7LCO.js} +2 -2
- package/dist/{api-command-MXFN55PP.js → api-command-F7RDDVV5.js} +4 -4
- package/dist/{app-LTXMDXQC.js → app-Q2IHSSVM.js} +9 -9
- package/dist/{auto-update-worker-3GV3BK5P.js → auto-update-worker-26OZDLQ7.js} +1 -1
- package/dist/{capacity-list-command-DDCYRLGV.js → capacity-list-command-7SR23CXI.js} +2 -2
- package/dist/chunk-2UTJI3BT.js +16 -0
- package/dist/{chunk-PJ7IKTZI.js → chunk-65SBCDVQ.js} +3 -3
- package/dist/{chunk-FZ55A6NN.js → chunk-6R6CY6KM.js} +1 -1
- package/dist/{chunk-B2D2NO5H.js → chunk-AH4KHEAC.js} +4 -4
- package/dist/{chunk-F36CIBG3.js → chunk-JS55SZ6W.js} +1 -1
- package/dist/{chunk-PECIBNFD.js → chunk-KIZIRVW6.js} +10 -0
- package/dist/{chunk-H6K4TU7N.js → chunk-MKF6BHGU.js} +3 -3
- package/dist/{chunk-FDXBQ7JB.js → chunk-NY5NFOJB.js} +1 -1
- package/dist/{chunk-U6REFY7T.js → chunk-P4QSPSOQ.js} +1 -1
- package/dist/chunk-RKBUJKI5.js +10 -0
- package/dist/chunk-T4TVFQ5R.js +56 -0
- package/dist/{chunk-MDZ6IVMB.js → chunk-THB6NEWD.js} +2 -2
- package/dist/chunk-TYO6THPW.js +3 -0
- package/dist/{chunk-ZRZ7SVKX.js → chunk-U3GNDK63.js} +19 -18
- package/dist/cli.js +13 -13
- package/dist/{commands-CARE564N.js → commands-GY6C6QY7.js} +2 -2
- package/dist/{commands-ZCFI4UO6.js → commands-WXWGQF3Q.js} +7 -7
- package/dist/{completion-2JMIYGIB.js → completion-DN2XKSJ2.js} +1 -1
- package/dist/{configure-XPULH6FO.js → configure-BJGPASNG.js} +1 -1
- package/dist/{dispatch-3TVY2VVM.js → dispatch-ZWCEVLKZ.js} +1 -1
- package/dist/{format-F6PPBPY5.js → format-X65HXAAU.js} +1 -1
- package/dist/{media-UAYVGESL.js → media-JYPX3PEY.js} +2 -2
- package/dist/{oneshot-DCL6NYBZ.js → oneshot-PQFHGBNR.js} +2 -2
- package/dist/{plan-submit-WI3GFVWV.js → plan-submit-EFMGUECM.js} +1 -1
- package/dist/{registry-GY7IY5G5.js → registry-XG4NJNOU.js} +1 -1
- package/dist/{render-HH2Y6YKX.js → render-I6U5PEYR.js} +1 -1
- package/dist/{run-UIWMX55H.js → run-264WTPVI.js} +2 -2
- package/dist/{runner-command-UGG7X2KU.js → runner-command-F65BLHXF.js} +1 -1
- package/dist/{skill-manage-command-RACKW7W4.js → skill-manage-command-QEZ5SI3A.js} +3 -3
- package/dist/{status-command-NP4OGBKY.js → status-command-GAYY6LQE.js} +2 -2
- package/dist/{task-7TJWLFVD.js → task-LMRSLADM.js} +6 -6
- package/dist/{trigger-command-35FDCYT7.js → trigger-command-TQCKGHGL.js} +2 -2
- package/dist/{update-2N3V64AA.js → update-QGM225Q7.js} +1 -1
- package/dist/{user-CKKC246M.js → user-4OBXVB32.js} +10 -10
- package/package.json +1 -1
- package/dist/chunk-74BPZOKU.js +0 -9
- package/dist/chunk-DTDIQOVQ.js +0 -16
- package/dist/chunk-RFXIPNKG.js +0 -56
package/CHANGELOG.public.md
CHANGED
|
@@ -11,6 +11,18 @@
|
|
|
11
11
|
`CHANGELOG.md` に残してあります。顧客向けの履歴は public 公開以降を対象とします。
|
|
12
12
|
-->
|
|
13
13
|
|
|
14
|
+
## 0.102.1
|
|
15
|
+
|
|
16
|
+
`/context` の「コンテキスト残量」に表示される窓サイズが、使用中のモデルの実際の窓サイズを示すようになりました。
|
|
17
|
+
|
|
18
|
+
ループのキューへ積むアイテムで、引数の先頭に `[検証用]` のような注記を置いた場合に、タスクキーでない値がタスクキーとして記録される不具合を修正しました。
|
|
19
|
+
|
|
20
|
+
## 0.102.0
|
|
21
|
+
|
|
22
|
+
`--quiet`(`-q`)または環境変数 `TWP_QUIET=1` で、既定値の使用などを知らせる情報用の注記を省けるようになりました。エラー・警告・続きのページの案内は従来どおり表示されます。
|
|
23
|
+
|
|
24
|
+
`--query` で文字列を1つ取り出して `--output text` で出したとき、改行が `\n` の2文字ではなく実際の改行で出るようになりました。
|
|
25
|
+
|
|
14
26
|
## 0.101.2
|
|
15
27
|
|
|
16
28
|
タスクの指定に複数のキーをまとめて渡した場合、「1回に1件だけ指定できます」と案内して止まるようになりました。
|
package/README.md
CHANGED
|
@@ -199,7 +199,7 @@ twp task update <キー|ID> --group <グループ> # 別のグル
|
|
|
199
199
|
- **`twp task attachment explain` は画像(PNG / JPEG / GIF / WebP)・PDF・テキストの内容を AI に説明させます**(20MB まで)。`--question` を付けるとその問いに答えます。問いなしの説明は保存され、2回目以降は保存済みの説明を返します(`cached` が `true`)。TWP の AI クレジットには計上されません(自社の AI キーを登録している組織では、そのキーで呼び出します)
|
|
200
200
|
- ヘルプは `twp task help` / `twp task comment help` / `twp task create help` / `twp task attachment help`
|
|
201
201
|
|
|
202
|
-
グローバルオプション: `--profile <名前>` / `--output <json|table|text|tsv>` / `--query <JMESPath>` / `--dry-run` / `--debug` / `--yes` / `--refresh
|
|
202
|
+
グローバルオプション: `--profile <名前>` / `--output <json|table|text|tsv>` / `--query <JMESPath>` / `--dry-run` / `--debug` / `--yes` / `--refresh` / `--quiet`(`-q`。`TWP_QUIET=1` でも可。情報用の注記を stderr へ出さない。エラー・警告・続きのページの案内は出ます)。**`--output json` は常に API の生のレスポンス**を返します(表示用に間引きません。`twp task list` / `task subtasks` の `--summary` のように、利用者が絞り込みを指定したときはその分だけ省かれます)。
|
|
203
203
|
|
|
204
204
|
応答に載る token / secret / api_key / password などの値は、`--query` で取り出したものも含めて**既定で伏字**にして出します(出力は端末やログに平文で残るため)。値そのものが要るときは各操作に `--no-redact` を付けてください(`twp api` と同じ意味です。エラー出力は常に伏字のままです)。
|
|
205
205
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{stepToItem}from"./chunk-
|
|
3
|
+
import{stepToItem}from"./chunk-2UTJI3BT.js";import"./chunk-VEEZJNOB.js";import{loadLocalConfig}from"./chunk-INS77QHY.js";import{parseOperations}from"./chunk-CVX2YWHC.js";import"./chunk-VYDPW2YO.js";import"./chunk-TTST7UDR.js";import{loadAiConfig}from"./chunk-FABDZBDZ.js";import{SKILL_PREFIX_RE,setSkillPrefix}from"./chunk-6CS5L24D.js";import"./chunk-N2UVRM3Z.js";import"./chunk-UZUV5FYG.js";import{PRIVATE_PROJECT_PREFIX,PRIVATE_PROJECT_REF,
|
|
4
4
|
isPrivateProjectRef,privateProjectId}from"./chunk-RMFLTSOV.js";import"./chunk-BD7O73GK.js";import"./chunk-SBRTBKEZ.js";import{LIST_FLAGS,LIST_PAGING_HELP,envelopePaging,nonEmpty,positiveInteger}from"./chunk-MI6HVYR2.js";import{requireResolved,singleRef,withResolved}from"./chunk-PS5QFKHB.js";import{acknowledgement,isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";import"./chunk-PMOUHEJQ.js";import"./chunk-J7QYPKVK.js";
|
|
5
5
|
import"./chunk-5WGOHFAS.js";import"./chunk-RZVI6PMW.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var LABEL="\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u30EB\u30FC\u30D7\u306E\u30A2\u30A4\u30C6\u30E0";var STATUSES=["pending","processing","completed","failed"];var AI_TYPES=["claude","gemini","codex","copilot"];var EFFORTS=["low","medium","high","xhigh","max"];var PRIORITIES=["P0","P1","P2","P3"];var LIST_COLUMNS=["item_id","status","task_key","label","ai_type","ai_effort","runner_id","created_at"];var GET_COLUMNS=["item_id","status","task_key","label","prompt","ai_type","ai_model","ai_effort","runn\
|
|
6
6
|
er_id","attempt_count","reclaim_count","error_message","created_by_name","created_at","started_at","completed_at"];var HISTORY_COLUMNS=["item_id","status","task_key","skill","ai_type","runner_id","duration_ms","cost_usd","created_at"];var PLAN_RESULTS=["enqueued","empty","json_not_found","ai_failed","error","skipped","gated","locked","abandoned"];var PLAN_HISTORY_COLUMNS=["plan_run_id","result","runner_id","ai_type","duration_ms","cost_usd","step_count","started_at"];var PROJECT_FLAG={name:"--pr\
|
|
@@ -22,7 +22,7 @@ input);const category=requireResolved(input,"category");const primary=input.reso
|
|
|
22
22
|
ai_type;const effort=oneOf(input.flags,"--ai-effort",EFFORTS);if(effort!==void 0)body["ai_effort"]=effort;return body}var createOperation={name:"create",summary:"\u30AD\u30E5\u30FC\u306B\u30A2\u30A4\u30C6\u30E0\u3092\u6295\u5165\u3059\u308B",usage:'twp task-loop item create --prompt "/<\u63A5\u982D\u8F9E><\u30B9\u30AD\u30EB\u540D> <\u5F15\u6570>" [--priority P2] [--label <\u30E9\u30D9\u30EB>] [--ai-effort <effort>] [--project <\u30B3\u30FC\u30C9|ID|__private__>]',description:`\u30EB\u30FC\u30D7\u306E\u8A08\u753B\u6295\u5165\u3068\u540C\u3058\u898F\u5247\u3067\u30A2\u30A4\u30C6\u30E0\u3092\
|
|
23
23
|
\u4F5C\u308A\u307E\u3059\uFF08\u30E9\u30D9\u30EB\u66F8\u5F0F\u30FBtask_key \u306E\u62BD\u51FA\u306F\u8A08\u753B\u6295\u5165\u3068\u5171\u901A\uFF09:
|
|
24
24
|
\u30E9\u30D9\u30EB [<\u512A\u5148\u5EA6>] <\u30BF\u30B9\u30AF\u30AD\u30FC> <\u30E9\u30D9\u30EB> #ai:<\u30AB\u30C6\u30B4\u30EA>\uFF08200\u5B57\u3067\u5207\u308B\u3002--label \u7701\u7565\u6642\u306F\u30D7\u30ED\u30F3\u30D7\u30C8\uFF09
|
|
25
|
-
task_key \u30D7\u30ED\u30F3\u30D7\u30C8\u306E\u5F15\u6570\u306E\u5148\u982D\u306B\u3042\u308B\u30BF\u30B9\u30AF\u30AD\u30FC\uFF08\u4F8B ABC-123\uFF09
|
|
25
|
+
task_key \u30D7\u30ED\u30F3\u30D7\u30C8\u306E\u5F15\u6570\u306E\u5148\u982D\u306B\u3042\u308B\u30BF\u30B9\u30AF\u30AD\u30FC\uFF08\u4F8B ABC-123\uFF09\u3002\u5148\u982D\u304C\u30AD\u30FC\u3067\u306A\u3044\u30FB[\u691C\u8A3C\u7528] \u306E\u3088\u3046\u306A\u62EC\u5F27\u4ED8\u304D\u306E\u6CE8\u8A18\u3067\u59CB\u307E\u308B\u3068\u304D\u306F\u9001\u308A\u307E\u305B\u3093
|
|
26
26
|
1\u756A\u624B \u3053\u306E\u6A5F\u4F53\u306E\u30EB\u30FC\u30D7\u8A2D\u5B9A\uFF08~/.twp/loops/<\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8ID>.json\uFF09\u306E\u30AB\u30C6\u30B4\u30EA\u8868\u3068 primary_rotation \u3067\u6C7A\u3081\u308B
|
|
27
27
|
\uFF08\u30B3\u30DE\u30F3\u30C91\u56DE\u3054\u3068\u306B\u8A2D\u5B9A\u3092\u8AAD\u307F\u76F4\u3059\u306E\u3067\u3001\u91CD\u307F\u4ED8\u304D\u30ED\u30FC\u30C6\u30FC\u30B7\u30E7\u30F3\u306F\u56DE\u3089\u305A\u6BCE\u56DE\u305D\u306E\u5148\u982D\u306E\u4F7F\u3048\u308B AI \u306B\u306A\u308A\u307E\u3059\uFF09
|
|
28
28
|
ai_model \u9001\u308A\u307E\u305B\u3093\uFF08claim \u3057\u305F\u5B9F\u884C\u6A5F\u304C\u81EA\u5206\u306E\u8A2D\u5B9A\u3067\u89E3\u6C7A\u3057\u307E\u3059\uFF09
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{CommandModelMissingError,MAX_REPORTED_VIOLATIONS,loadCommandModelDomain,loadCommandModelRoutes,validateBody,validateQuery}from"./chunk-CDAU3M7F.js";import{exitCodeFor,fetchAllPages,reportError}from"./chunk-
|
|
3
|
+
import{CommandModelMissingError,MAX_REPORTED_VIOLATIONS,loadCommandModelDomain,loadCommandModelRoutes,validateBody,validateQuery}from"./chunk-CDAU3M7F.js";import{exitCodeFor,fetchAllPages,reportError}from"./chunk-U3GNDK63.js";import"./chunk-MKF6BHGU.js";import"./chunk-Q3B65OFC.js";import{evaluateQuery}from"./chunk-GFLGXGWE.js";import{renderOutput}from"./chunk-P4QSPSOQ.js";import{describeWaitResult,parseWaitOptions,waitUntilTerminal}from"./chunk-WVCEKC7V.js";
|
|
4
4
|
import{readBody}from"./chunk-HEH3PUW2.js";import{ALLOW_REDACTED_FLAG,NO_REDACT_FLAG,NO_REDACT_NOTICE}from"./chunk-W4NLJ2YK.js";import{redactSecretValues,redactSecrets,withDebug}from"./chunk-BD7O73GK.js";import{parseOperationArgs,repeatedValues}from"./chunk-VGT2EGH6.js";import"./chunk-FW2AZBFR.js";import"./chunk-HVZUXLQ4.js";import{ApiError,TwpApiClient,appendQuery}from"./chunk-JA5A6UJ2.js";import"./chunk-MMVXE2CJ.js";import"./chunk-SBRTBKEZ.js";
|
|
5
|
-
import{DEFAULT_MAX_ITEMS,DEFAULT_MAX_PAGES,envelopePaging,isPageNumberEnvelope,pageRangeNotes,positiveInteger,readEnvelopeCursor,readPageNumberCursor,shellQuote}from"./chunk-MI6HVYR2.js";import"./chunk-3ZRMMBP5.js";import{ApiResponseError,EXIT_OK,EXIT_WAIT_TIMEOUT,NetworkError,UsageError}from"./chunk-VFPY2A23.js";import{GLOBAL_OPTIONS_HELP}from"./chunk-
|
|
6
|
-
httpFetch}from"./chunk-J7QYPKVK.js";import{effectiveApiUrl,resolveConfiguredOutput,resolveProfile}from"./chunk-EDF4U5BT.js";import"./chunk-RZVI6PMW.js";import{HELP_TOKEN}from"./chunk-6FI4ZMZ7.js";import"./chunk-OKATZ4SN.js";import{OUTPUT_FORMATS,resolveOutputFormat}from"./chunk-
|
|
5
|
+
import{DEFAULT_MAX_ITEMS,DEFAULT_MAX_PAGES,envelopePaging,isPageNumberEnvelope,pageRangeNotes,positiveInteger,readEnvelopeCursor,readPageNumberCursor,shellQuote}from"./chunk-MI6HVYR2.js";import"./chunk-3ZRMMBP5.js";import{ApiResponseError,EXIT_OK,EXIT_WAIT_TIMEOUT,NetworkError,UsageError}from"./chunk-VFPY2A23.js";import{GLOBAL_OPTIONS_HELP}from"./chunk-KIZIRVW6.js";import{AuthSession,NotLoggedInError,SessionExpiredError,loadCredentials}from"./chunk-XNLIEUAW.js";import{
|
|
6
|
+
httpFetch}from"./chunk-J7QYPKVK.js";import{effectiveApiUrl,resolveConfiguredOutput,resolveProfile}from"./chunk-EDF4U5BT.js";import"./chunk-RZVI6PMW.js";import{HELP_TOKEN}from"./chunk-6FI4ZMZ7.js";import"./chunk-OKATZ4SN.js";import{OUTPUT_FORMATS,resolveOutputFormat}from"./chunk-RKBUJKI5.js";import"./chunk-UREA4ZIG.js";import{stripTerminalControls}from"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var MIN_SEGMENT_CHARS=3;var parsedCache=new WeakMap;function splitSegments(path){return path.split("/").filter(segment=>segment!=="")}function parseRoutes(routes){const cached=parsedCache.get(routes);if(cached!==void 0)return cached;const parsed=[];for(const[key,domain]of Object.entries(routes.routes)){const space=key.indexOf(" ");if(space<=0)continue;const template=key.slice(space+1);parsed.push({method:key.slice(0,space),template,domain,segments:splitSegments(template).map(segment=>/^\{[^/{}]+\}$/.
|
|
7
7
|
test(segment)?null:segment)})}parsedCache.set(routes,parsed);return parsed}function matches(route,segments){if(route.segments.length!==segments.length)return false;return route.segments.every((literal,i)=>literal===null||literal===segments[i])}function compareSpecificity(a,b){const literals=route=>route.segments.filter(segment=>segment!==null).length;const diff=literals(b)-literals(a);if(diff!==0)return diff;for(let i=0;i<a.segments.length;i+=1){const aLiteral=a.segments[i]!==null;const bLiteral=b.
|
|
8
8
|
segments[i]!==null;if(aLiteral!==bLiteral)return aLiteral?-1:1}return 0}function lookupRoute(routes,method,path){const segments=splitSegments(path);const hits=parseRoutes(routes).filter(route=>matches(route,segments));const sameMethod=hits.filter(route=>route.method===method).sort(compareSpecificity);const best=sameMethod[0];if(best!==void 0)return{kind:"matched",domain:best.domain,template:best.template};if(hits.length>0){const[top]=[...hits].sort(compareSpecificity);const template=top.template;
|
|
9
9
|
const methods=[...new Set(hits.filter(route=>route.template===template).map(route=>route.method))].sort();return{kind:"method-mismatch",template,methods}}return{kind:"unknown"}}function pickOperation(operations,method,template){return operations.find(op=>op.method===method&&op.path===template)??null}async function suggestRoutes(routes,path,limit=5){const{default:fuzzysort}=await import("./fuzzysort-DFVKV4B4.js");const parsed=parseRoutes(routes);const templates=[...new Set(parsed.map(route=>route.
|
|
@@ -130,7 +130,7 @@ line(renderOutput(value2,format,noRedact)));const outcome=describeWaitResult(res
|
|
|
130
130
|
readPageNumberState(responseBody,sentPage):null;if(paging.startingToken!==void 0&&firstState?.kind==="ignored"){throw new UsageError(`\u3053\u306E\u4E00\u89A7\u306F\u30DA\u30FC\u30B8\u756A\u53F7\u65B9\u5F0F\u306E\u305F\u3081 --starting-token \u306F\u52B9\u304D\u307E\u305B\u3093\uFF08cursor=${stripTerminalControls(paging.startingToken)} \u3092\u9001\u308A\u3001\u30DA\u30FC\u30B8 ${firstState.returned} \u304C\u8FD4\u308A\u307E\u3057\u305F\uFF09`,`\u30DA\u30FC\u30B8\u306F --query-param ${PAGE_NUMBER_PARAM}\
|
|
131
131
|
=<\u30DA\u30FC\u30B8\u756A\u53F7> \u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}let paged;let pageNoIgnored;const mode=paging.resultPath===null?null:pagingMode(responseBody,{...paging,resultPath:paging.resultPath},firstState);if(mode!==null){const label=`${method} ${model.template??path}`;try{paged=await fetchAllPages({client,apiUrl,plan,paging:mode.kind==="page"?pageNumberApiPaging(label,mode.itemsKey,sentPage):envelopePaging({label,itemsKey:mode.itemsKey,cursorParam:CURSOR_PARAM}),
|
|
132
132
|
maxPages:DEFAULT_MAX_PAGES,maxItems:paging.maxItems,firstPage:responseBody,vocabulary:mode.kind==="page"?PAGE_NUMBER_API_PAGING_VOCABULARY:API_PAGING_VOCABULARY});responseBody=paged.body}catch(err){if(!(err instanceof PageNoIgnoredError))throw err;pageNoIgnored=err}}const source=noRedact?responseBody:redactSecretValues(responseBody);const value=globals.query===void 0?source:await evaluateQuery(globals.query,source);writeOut(line(renderOutput(value,format,noRedact)));if(paged!==void 0&&paged.pages>
|
|
133
|
-
1){writeErr(`\u81EA\u52D5\u30DA\u30FC\u30B8\u30F3\u30B0: ${paged.pages} \u30DA\u30FC\u30B8\u3092\u8FBF\u3063\u3066 ${paged.count} \u4EF6\u3092\u53D6\u5F97\u3057\u307E\u3057\u305F\u3002
|
|
133
|
+
1&&globals.quiet!==true){writeErr(`\u81EA\u52D5\u30DA\u30FC\u30B8\u30F3\u30B0: ${paged.pages} \u30DA\u30FC\u30B8\u3092\u8FBF\u3063\u3066 ${paged.count} \u4EF6\u3092\u53D6\u5F97\u3057\u307E\u3057\u305F\u3002
|
|
134
134
|
`)}if(paged===void 0&&method==="GET"){const note=pageNoIgnored!==void 0?pageNumberNote(pageNoIgnored.state,null):firstState!==null?pageNumberNote(firstState,paging.notPagedReason):continuationNote(responseBody,paging);if(note!==null)writeErr(`${stripTerminalControls(note)}
|
|
135
135
|
`)}if(pageNumbered){for(const note of pageRangeNotes(responseBody,`--query-param ${PAGE_NUMBER_PARAM}`))writeErr(`\u6CE8\u8A18: ${stripTerminalControls(note)}
|
|
136
136
|
`)}return EXIT_OK}catch(err){const code=exitCodeFor(err);reportError(err,format,code);return code}}function dryRunValue(apiUrl,plan){const value={method:plan.method,url:`${apiUrl}${appendQuery(plan.path,plan.query)}`};if(plan.body!==void 0)value["body"]=plan.body;return value}var NOT_APPLIED="\u30B9\u30AD\u30FC\u30DE\u691C\u8A3C\u3068\u81EA\u52D5\u30DA\u30FC\u30B8\u30F3\u30B0\u306F\u884C\u3044\u307E\u305B\u3093\u3002";async function resolveModel(method,path){const modelPath=path.replace(/^\/api(?=\/)/i,
|
|
@@ -1,9 +1,9 @@
|
|
|
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-
|
|
4
|
-
diffStat}from"./chunk-VRBI2NPI.js";import{require_fuzzysort}from"./chunk-DIMZRTLE.js";import"./chunk-N2UVRM3Z.js";import"./chunk-BD7O73GK.js";import"./chunk-FW2AZBFR.js";import"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";import"./chunk-MMVXE2CJ.js";import"./chunk-SBRTBKEZ.js";import"./chunk-VFPY2A23.js";import{RelayError,builtinCatalog,classifyModelSwitch,createRuntime,loadCachedCatalog,modelLabel,pickModel,specFor,
|
|
5
|
-
import"./chunk-D233KKXW.js";import"./chunk-PMOUHEJQ.js";import"./chunk-XNLIEUAW.js";import{proxyDiagnostics}from"./chunk-J7QYPKVK.js";import{checkMinSupportedVersion,isBelowMinSupported,minSupportedBlockMessage}from"./chunk-DXXFUNYN.js";import"./chunk-EDF4U5BT.js";import{configReadDirs,twpHomeDir}from"./chunk-RZVI6PMW.js";import{parseArgv}from"./chunk-
|
|
6
|
-
nextMode}from"./chunk-2LOT54OO.js";import"./chunk-NJL3H2BB.js";import"./chunk-6FI4ZMZ7.js";import"./chunk-
|
|
3
|
+
import{RESIDENT_TOKEN_CAP,activateModeFiles,activatePermissionSettings,buildResidentSet,buildSystemPrompt,createAuditLogger,createTwpToolkit,currentBranch,describeAuditLog,describeToolCatalog,displayCwd,executeTool,findProjectTwpSubdir,localTools,lstatOrNull,parseFrontMatter,parseRule,persistProjectAllow,projectPermissionsPath,projectRootFor,readFileTool,residentInputs,resolveGitExecutable,runTurn,secretReason}from"./chunk-6R6CY6KM.js";import"./chunk-CDAU3M7F.js";import{buildDiffLines,
|
|
4
|
+
diffStat}from"./chunk-VRBI2NPI.js";import{require_fuzzysort}from"./chunk-DIMZRTLE.js";import"./chunk-N2UVRM3Z.js";import"./chunk-BD7O73GK.js";import"./chunk-FW2AZBFR.js";import"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";import"./chunk-MMVXE2CJ.js";import"./chunk-SBRTBKEZ.js";import"./chunk-VFPY2A23.js";import{RelayError,builtinCatalog,classifyModelSwitch,createRuntime,formatContextRemaining,loadCachedCatalog,modelLabel,pickModel,specFor,
|
|
5
|
+
toModelInfos}from"./chunk-65SBCDVQ.js";import"./chunk-D233KKXW.js";import"./chunk-PMOUHEJQ.js";import"./chunk-XNLIEUAW.js";import{proxyDiagnostics}from"./chunk-J7QYPKVK.js";import{checkMinSupportedVersion,isBelowMinSupported,minSupportedBlockMessage}from"./chunk-DXXFUNYN.js";import"./chunk-EDF4U5BT.js";import{configReadDirs,twpHomeDir}from"./chunk-RZVI6PMW.js";import{parseArgv}from"./chunk-T4TVFQ5R.js";import{applyPermissionMode,checkPermission,
|
|
6
|
+
describePermissionMode,getMode,isModeId,modeSource,nextMode}from"./chunk-2LOT54OO.js";import"./chunk-NJL3H2BB.js";import"./chunk-6FI4ZMZ7.js";import"./chunk-AH4KHEAC.js";import{formatUnknownArgs}from"./chunk-OKATZ4SN.js";import{isFullWidth,isWide,stringWidth,stripAnsi}from"./chunk-UREA4ZIG.js";import{stripTerminalControls}from"./chunk-NHYMHCAT.js";import{__commonJS,__export,__require,__toESM}from"./chunk-VSJBJXZO.js";var require_react_production=__commonJS({"node_modules/react/cjs/react.production.js"(exports){"use strict";var REACT_ELEMENT_TYPE=Symbol.for("react.transitional.element");var REACT_PORTAL_TYPE=Symbol.for("react.portal");var REACT_FRAGMENT_TYPE=Symbol.for("react.fragment");var REACT_STRICT_MODE_TYPE=Symbol.for("react.strict_mode");var REACT_PROFILER_TYPE=Symbol.for("react.profiler");var REACT_CONSUMER_TYPE=Symbol.for("react.consumer");var REACT_CONTEXT_TYPE=Symbol.for("react.context");var REACT_FORWARD_REF_TYPE=Symbol.
|
|
7
7
|
for("react.forward_ref");var REACT_SUSPENSE_TYPE=Symbol.for("react.suspense");var REACT_MEMO_TYPE=Symbol.for("react.memo");var REACT_LAZY_TYPE=Symbol.for("react.lazy");var REACT_ACTIVITY_TYPE=Symbol.for("react.activity");var REACT_VIEW_TRANSITION_TYPE=Symbol.for("react.view_transition");var MAYBE_ITERATOR_SYMBOL=Symbol.iterator;function getIteratorFn(maybeIterable){if(null===maybeIterable||"object"!==typeof maybeIterable)return null;maybeIterable=MAYBE_ITERATOR_SYMBOL&&maybeIterable[MAYBE_ITERATOR_SYMBOL]||
|
|
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=
|
|
9
9
|
function(partialState,callback){if("object"!==typeof partialState&&"function"!==typeof partialState&&null!=partialState)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,partialState,callback,"setState")};Component.prototype.forceUpdate=function(callback){this.updater.enqueueForceUpdate(this,callback,"forceUpdate")};function ComponentDummy(){}ComponentDummy.prototype=Component.prototype;function PureComponent2(props,context,updater){
|
|
@@ -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: ${formatUnknownArgs(parsed.unknown)}
|
|
1215
|
-
`}}let out="";let err="";const io={out:text=>void(out+=text),err:text=>void(err+=text),isTty:true};const globals={profile:parsed.profile??deps.profile,...parsed.output!==void 0?{output:parsed.output}:{},...parsed.query!==void 0?{query:parsed.query}:{},dryRun:parsed.dryRun,debug:parsed.debug,yes:parsed.yes,refresh:parsed.refresh};const{runDomain}=await import("./run-
|
|
1215
|
+
`}}let out="";let err="";const io={out:text=>void(out+=text),err:text=>void(err+=text),isTty:true};const globals={profile:parsed.profile??deps.profile,...parsed.output!==void 0?{output:parsed.output}:{},...parsed.query!==void 0?{query:parsed.query}:{},dryRun:parsed.dryRun,debug:parsed.debug,yes:parsed.yes,refresh:parsed.refresh};const{runDomain}=await import("./run-264WTPVI.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",
|
|
@@ -1326,10 +1326,10 @@ to).label}\uFF08${to}\uFF09\u306B\u5207\u308A\u66FF\u3048\u307E\u3057\u305F \u20
|
|
|
1326
1326
|
modeRef.current).filter(c=>c.source!==void 0).map(c=>` ${c.name} \u2014 ${c.origin==="project"?"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u5B9A\u7FA9":"\u30E6\u30FC\u30B6\u30FC\u5B9A\u7FA9"}: ${c.source??""}`),"\u30B3\u30DE\u30F3\u30C9\u306F .twp/commands/*.md\uFF08\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\uFF09\u3068 ~/.twp/commands/*.md\uFF08\u30E6\u30FC\u30B6\u30FC\uFF09\u306B\u7F6E\u3051\u307E\u3059 \xB7 @\u30D1\u30B9 \u3067\u30D5\u30A1\u30A4\u30EB\u6DFB\u4ED8 \xB7 #ABC-123 \u306E\u3088\u3046\u306A\u30BF\u30B9\u30AF\u30AD\u30FC\u3067\u30BF\u30B9\u30AF\u6DFB\u4ED8",
|
|
1327
1327
|
...(()=>{const pending=PENDING_COMMANDS.filter(c=>findCommand(c.name)===void 0);return pending.length>0?[`\u672A\u5B9F\u88C5\u306E\u305F\u3081\u767B\u9332\u3057\u3066\u3044\u306A\u3044\u30B3\u30DE\u30F3\u30C9: ${pending.map(c=>c.name).join(" ")}`]:[]})(),"\u30AD\u30FC: Shift+Tab \u307E\u305F\u306F Alt+M \u3067\u30E2\u30FC\u30C9\u5DE1\u56DE \xB7 Ctrl+R \u3067\u76F4\u524D\u306E\u30C4\u30FC\u30EB\u51FA\u529B\u3092\u5C55\u958B","\u6539\u884C: Shift+Enter\uFF08kitty \u5BFE\u5FDC\u7AEF\u672B\uFF09\xB7 Ctrl+J\uFF08\u5168\u7AEF\u672B\uFF09\xB7 \\ \u3092\u6253\u3063\u3066\u304B\u3089 Enter \u3067\u3082\u53EF"].
|
|
1328
1328
|
join("\n")});return;case"/context":{const snapshot=runtime.context.snapshot();const t=snapshot.totals;const resident=buildResidentSet(getMode(modeRef.current),{...residentInputs(toolkit),...permissionMode!==void 0?{permissionMode}:{},permissionLayers});commit({kind:"notice",tone:"info",text:[`\u30E2\u30C7\u30EB: ${modelLabel(model)}\uFF08\u30E2\u30FC\u30C9\u3068\u306F\u72EC\u7ACB\uFF09`,`\u30E2\u30FC\u30C9: ${getMode(modeRef.current).label} \u2014 \u6709\u52B9\u30C4\u30FC\u30EB glob: ${getMode(modeRef.
|
|
1329
|
-
current).tools.join(" ")}`,`\u30E2\u30FC\u30C9\u5B9A\u7FA9: ${modeSource(modeRef.current)??"\u7D44\u307F\u8FBC\u307F\uFF08\u5B9A\u7FA9\u30D5\u30A1\u30A4\u30EB\u306A\u3057\uFF09"}`,`\u63A5\u7D9A\u5148: ${runtime.relayUrl}\uFF08\u30D7\u30ED\u30D5\u30A1\u30A4\u30EB: ${runtime.profileName}\uFF09`,`\u30BF\u30FC\u30F3\u6570: ${snapshot.turns} \xB7 \u76F4\u8FD1\u306E\u30D7\u30ED\u30F3\u30D7\u30C8\u9577: ${snapshot.lastPromptTokens} tok
|
|
1330
|
-
|
|
1331
|
-
|
|
1332
|
-
|
|
1329
|
+
current).tools.join(" ")}`,`\u30E2\u30FC\u30C9\u5B9A\u7FA9: ${modeSource(modeRef.current)??"\u7D44\u307F\u8FBC\u307F\uFF08\u5B9A\u7FA9\u30D5\u30A1\u30A4\u30EB\u306A\u3057\uFF09"}`,`\u63A5\u7D9A\u5148: ${runtime.relayUrl}\uFF08\u30D7\u30ED\u30D5\u30A1\u30A4\u30EB: ${runtime.profileName}\uFF09`,`\u30BF\u30FC\u30F3\u6570: ${snapshot.turns} \xB7 \u76F4\u8FD1\u306E\u30D7\u30ED\u30F3\u30D7\u30C8\u9577: ${snapshot.lastPromptTokens} tok`,formatContextRemaining(snapshot),`\u5B9F\u6E2C\u30C8\u30FC\u30AF\u30F3\u5408\u8A08: input ${t.
|
|
1330
|
+
inputTokens} / cache_read ${t.cacheReadTokens} / cache_write ${t.cacheWriteTokens} / output ${t.outputTokens}`,...snapshot.droppedMessages>0?[`\u4E0A\u9650\u306E\u305F\u3081\u843D\u3068\u3057\u305F\u3084\u308A\u53D6\u308A: ${snapshot.droppedMessages} \u4EF6`]:[],`permission-mode: ${describePermissionMode(permissionMode)}`,`\u76E3\u67FB\u30ED\u30B0: ${describeAuditLog(audit)}`,`\u5E38\u99D0\u30C4\u30FC\u30EB: ${resident.tools.length} \u672C / \u30B9\u30AD\u30FC\u30DE\u6982\u7B97 ${resident.tokens}\
|
|
1331
|
+
tok\uFF08\u4E0A\u9650 ${RESIDENT_TOKEN_CAP} tok\uFF09`,` ${resident.tools.map(t2=>t2.name).join(" ")||"\uFF08\u306A\u3057\uFF09"}`,...resident.dropped.length>0?[` \u4E0A\u9650\u8D85\u904E\u3067\u5916\u3057\u305F\u30C4\u30FC\u30EB: ${resident.dropped.join(" ")}`]:[],...(()=>{const status=toolkit.catalogStatus();return status!==null?[describeToolCatalog(status)]:[]})()].join("\n")});return}case"/demo":void runDemo("\uFF08\u30C7\u30E2\u518D\u751F\uFF09\u30C4\u30FC\u30EB\u30AB\u30FC\u30C9\u3068\u6A29\u9650\u30C0\u30A4\u30A2\u30ED\u30B0");
|
|
1332
|
+
return;default:commit({kind:"notice",tone:"warn",text:`\u4E0D\u660E\u306A\u30B3\u30DE\u30F3\u30C9: ${name}`})}},[audit,catalog,commit,exit,model,permissionMode,runDemo,runPromptCommand,runTwp,runtime]);const submit=(0,import_react39.useCallback)(()=>{if(busyRef.current){commit({kind:"notice",tone:"warn",text:"\u5B9F\u884C\u4E2D\u3067\u3059\u3002Ctrl+C \u3067\u4E2D\u65AD\u3057\u3066\u304B\u3089\u9001\u4FE1\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u5165\u529B\u306F\u4FDD\u6301\u3057\u3066\u3044\u307E\u3059\uFF09"});
|
|
1333
1333
|
return}const text=bufferRef.current.text.trim();clearBuffer();setOverlay("none");if(text==="")return;if(text.startsWith("/")){runCommand(text);return}void runTurn2(text)},[clearBuffer,commit,runCommand,runTurn2]);const paletteItems=(0,import_react39.useMemo)(()=>paletteFor(buffer.text,mode),[buffer.text,mode]);const dismissedMentionRef=(0,import_react39.useRef)(null);const fileCompletion=(0,import_react39.useMemo)(()=>{const c=fileCompletionFor(buffer,fileIndex);return c!==null&&c.start!==dismissedMentionRef.
|
|
1334
1334
|
current?c:null},[buffer,fileIndex]);(0,import_react39.useEffect)(()=>{if(fileIndexRef.current!==null||fileIndexLoading.current)return;if(mentionAtCursor(buffer.text,buffer.cursor)===null)return;fileIndexLoading.current=true;void buildFileIndex(process.cwd()).then(index=>{setFileIndex(index);if(index.note!==null)commit({kind:"notice",tone:"info",text:`@ \u88DC\u5B8C: ${index.note}`})},err=>{fileIndexLoading.current=false;commit({kind:"notice",tone:"warn",text:`@ \u88DC\u5B8C\u306E\u5019\u88DC\u3092\u4F5C\u308C\u307E\u305B\u3093\u3067\u3057\u305F: ${stripTerminalControls(
|
|
1335
1335
|
err.message)}`})})},[buffer,commit]);const onKey=(0,import_react39.useCallback)(ev=>{setKeyLog(prev=>[...prev.slice(-49),ev]);if(ev.name==="ctrl-d"){exit();return}if(ev.name==="ctrl-c"){if(busyRef.current){if(abortRef.current){permissionResolver.current?.("no");return}abortRef.current=true;streamAbortRef.current?.abort();permissionResolver.current?.("no");stream.cancel();abortSleep();setRunningTool(null);if(!streamAbortRef.current){commit({kind:"notice",tone:"warn",text:"\u4E2D\u65AD\u3057\u307E\u3057\u305F\uFF08Ctrl+C\uFF09"})}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{fetchLatestVersion,isBehindLatest,resolveNpmCommand}from"./chunk-
|
|
3
|
+
import{fetchLatestVersion,isBehindLatest,resolveNpmCommand}from"./chunk-JS55SZ6W.js";import"./chunk-65SBCDVQ.js";import"./chunk-D233KKXW.js";import"./chunk-PMOUHEJQ.js";import"./chunk-XNLIEUAW.js";import"./chunk-J7QYPKVK.js";import{PARENT_PID_ENV,WORKER_ENV,autoUpdateDisabledReason,classifyInstall,isCheckDue,listRegisteredPids,lockFilePath,readUpdateState,resolveCliPath,runDirPath,writeUpdateState}from"./chunk-CH6QU76P.js";import{PACKAGE_NAME,parseVersionCore}from"./chunk-DXXFUNYN.js";
|
|
4
4
|
import"./chunk-5WGOHFAS.js";import"./chunk-EDF4U5BT.js";import"./chunk-RZVI6PMW.js";import{stripTerminalControls}from"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";import{execFile}from"child_process";import fs from"fs";import path from"path";var PARENT_WAIT_MAX_MS=12*60*60*1e3;var PARENT_POLL_MS=1e3;var LOCK_STALE_MS=PARENT_WAIT_MAX_MS+60*60*1e3;var INSTALL_TIMEOUT_MS=0;function childEnv(env){const next={...env};delete next[WORKER_ENV];delete next[PARENT_PID_ENV];return next}function createNpmRunner(env=process.env){const cmd=resolveNpmCommand({env});if(cmd===null)return null;return(args,timeoutMs)=>new Promise(resolve=>{execFile(cmd.file,[...cmd.prefix,...args],{timeout:timeoutMs,windowsHide:true,maxBuffer:8*1024*1024,cwd:path.dirname(lockFilePath(env)),env:childEnv(env)},(error,stdout,stderr)=>{if(error===null){resolve({ok:true,stdout:String(stdout),stderr:String(
|
|
5
5
|
stderr)});return}const e=error;resolve({ok:false,stdout:String(stdout??""),stderr:String(stderr??""),...e.killed?{error:"\u30BF\u30A4\u30E0\u30A2\u30A6\u30C8\u3057\u307E\u3057\u305F"}:typeof e.code==="string"?{error:e.code}:{}})})})}function summarizeNpmFailure(result){const text=`${result.stderr}
|
|
6
6
|
${result.stdout}`;const code=/npm (?:ERR!|error) code (\S+)/.exec(text)?.[1]??result.error;let reason;if(code==="EACCES"||code==="EPERM"){reason=`\u30B0\u30ED\u30FC\u30D0\u30EB\u306E\u5C0E\u5165\u5148\u306B\u66F8\u304D\u8FBC\u3080\u6A29\u9650\u304C\u3042\u308A\u307E\u305B\u3093\uFF08${code}\uFF09`}else if(code!==void 0&&/^(ENOTFOUND|ETIMEDOUT|ECONNREFUSED|ECONNRESET|EAI_AGAIN|ENETUNREACH)$/.test(code)){reason=`npm registry \u306B\u63A5\u7D9A\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08${code}\
|
|
@@ -11,12 +11,12 @@ hostname:str(r["hostname"]),phase:str(r["phase"]),last_seen_at:str(r["last_seen_
|
|
|
11
11
|
generated_at:str(body["generated_at"]),include_stopped:opts.includeStopped,hidden_stopped:hidden,projects}}function projectLabel(p){if(p.project_code!==null)return p.project_code;return p.project_id.startsWith("private:")?"\u500B\u4EBA\u30EB\u30FC\u30D7":p.project_id}function percent(v){return v===null?"":`${Math.round(v)}%`}function toRows(overview){const metricKeys=[];for(const p of overview.projects){for(const r of p.runners){for(const s of r.capacity.slots){for(const m of s.metrics)if(!metricKeys.
|
|
12
12
|
includes(m.key))metricKeys.push(m.key)}}}const rows=[];for(const p of overview.projects){for(const r of p.runners){const base={project:projectLabel(p),runner_id:r.runner_id,run_id:r.run_id,kind:r.kind,state:r.state};const observed=r.capacity.generated_at===null?"":`${r.capacity.generated_at}${r.capacity.stale===true?" (stale)":""}`;if(r.capacity.status!=="ok"){const row={...base,slot:"",slot_state:r.capacity.status+(r.capacity.reason!==null?`:${r.capacity.reason}`:"")};for(const k of metricKeys){
|
|
13
13
|
row[k]="";row[`${k}_resets_at`]=""}rows.push({...row,relogin_deadline:"",account:"",observed_at:observed});continue}for(const s of r.capacity.slots){const row={...base,slot:s.active?`${s.name}*`:s.name,slot_state:s.state};for(const k of metricKeys){const m=s.metrics.find(x=>x.key===k);row[k]=percent(m?.utilization??null);row[`${k}_resets_at`]=m?.resets_at??""}rows.push({...row,relogin_deadline:s.relogin_deadline??"",account:s.identity_masked??"",observed_at:observed})}}}return rows}async function runCapacityList(deps,opts){
|
|
14
|
-
const out=deps.out??(t=>void process.stdout.write(stripTerminalControls(t)));const err=deps.err??(t=>void process.stderr.write(stripTerminalControls(t)));const isTty=deps.isTty??process.stdout.isTTY===true;const{resolveOutputFormat}=await import("./format-
|
|
14
|
+
const out=deps.out??(t=>void process.stdout.write(stripTerminalControls(t)));const err=deps.err??(t=>void process.stderr.write(stripTerminalControls(t)));const isTty=deps.isTty??process.stdout.isTTY===true;const{resolveOutputFormat}=await import("./format-X65HXAAU.js");const format=resolveOutputFormat({...opts.output!==void 0?{flag:opts.output}:{},isTty});if(format===null||!LIST_FORMATS.includes(format)){const e=new UsageError(`capacity list \u306E --output \u306B\u300C${opts.output??""}\u300D\u306F\u6307\
|
|
15
15
|
\u5B9A\u3067\u304D\u307E\u305B\u3093`,`\u6307\u5B9A\u3067\u304D\u308B\u306E\u306F ${LIST_FORMATS.join(" / ")} \u3067\u3059`);err(`${e.message}
|
|
16
16
|
${e.hint?`${e.hint}
|
|
17
17
|
`:""}`);return EXIT_USAGE}const res=await deps.get();if(!res.ok){err(`\u26D4 \u5B9F\u884C\u6A5F\u306E\u72B6\u614B\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\uFF08${errorDetail(res)}\uFF09
|
|
18
18
|
`);return apiExit(res)}const overview=parseOverview(res,opts,(deps.now??Date.now)());if(overview===null){err(`\u26D4 \u5B9F\u884C\u6A5F\u306E\u72B6\u614B\u3092\u89E3\u91C8\u3067\u304D\u307E\u305B\u3093\uFF08\u5FDC\u7B54\u306E\u5148\u982D: ${res.raw.slice(0,120)}\uFF09
|
|
19
|
-
`);return EXIT_API_SERVER}const{evaluateQuery}=await import("./query-XEOVFI4D.js");const{renderOutput}=await import("./render-
|
|
19
|
+
`);return EXIT_API_SERVER}const{evaluateQuery}=await import("./query-XEOVFI4D.js");const{renderOutput}=await import("./render-I6U5PEYR.js");if(format==="json"){const selected2=opts.query===void 0?overview:await evaluateQuery(opts.query,overview);const text2=renderOutput(selected2,"json");out(text2.endsWith("\n")?text2:`${text2}
|
|
20
20
|
`);return EXIT_OK}const runnerCount=overview.projects.reduce((n,p)=>n+p.runners.length,0);const hiddenNote=overview.hidden_stopped>0?`\u30FB\u505C\u6B62\u4E2D ${overview.hidden_stopped}\u53F0\u306F\u975E\u8868\u793A\uFF08--include-stopped \u3067\u8868\u793A\uFF09`:"";const serverHidden=overview.projects.filter(p=>(p.hidden_count??0)>0).map(p=>`${projectLabel(p)}: ${p.hide_after_days??"?"}\u65E5\u4EE5\u4E0A\u5FDC\u7B54\u306E\u306A\u3044${p.hidden_count}\u53F0`).join("\u3001");err(`\u5B9F\u884C\u6A5F ${runnerCount}\
|
|
21
21
|
\u53F0\uFF08${overview.projects.length}\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\uFF09${hiddenNote}\u30FB\u53D6\u5F97 ${overview.generated_at||"\u4E0D\u660E"}
|
|
22
22
|
`);if(serverHidden!=="")err(`\u30B5\u30FC\u30D0\u5074\u3067\u4E00\u89A7\u304B\u3089\u5916\u308C\u3066\u3044\u308B\u6A5F: ${serverHidden}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
|
+
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
+
import{FINAL_REPORT_BEGIN,FINAL_REPORT_END,redactLoopOutput}from"./chunk-VEEZJNOB.js";import{skillCommand,skillPrefix}from"./chunk-6CS5L24D.js";import{normalizeRequiredPlatforms}from"./chunk-UZUV5FYG.js";import{extractLeadingTaskKey}from"./chunk-SBRTBKEZ.js";var LEDGER_TASK_KEY_MAX=50;var CONTROL_CHAR_RE=/[\u0000-\u001f\u007f]/;var FLAG_TOKEN_RE=/(?:^|\s)-/;var BRACKET_RE=/[[\]()【】〔〕()「」『』<><>]/;function loosen(source){let t=source.replace(/^[ \t]*\/\/[^\n]*$/gm,"");t=t.replace(/\/\*[\s\S]*?\*\//g,"");t=t.replace(/,(\s*[}\]])/g,"$1");return t===source?null:t}function tryParsePlan(source){for(const candidate of[source,loosen(source)]){if(candidate===null)continue;try{const obj=JSON.parse(candidate);if(obj!==null&&typeof obj===
|
|
4
|
+
"object"&&Array.isArray(obj.steps)){return obj}}catch{}}return null}function fencedBlocks(text,tag){const re=new RegExp("```"+tag+"\\s*\\n([\\s\\S]*?)\\n```","g");const out=[];for(const m of text.matchAll(re)){if(m[1]!==void 0)out.push(m[1])}return out}function extractGeminiEnvelope(text){const anchor=/\{[^{}]*"session_id"[^{}]*"response"\s*:\s*"/g;for(const m of text.matchAll(anchor)){const start=m.index;if(start===void 0)continue;let depth=0;let inStr=false;let escape=false;for(let i=start;i<text.
|
|
5
|
+
length;i++){const c=text[i];if(escape){escape=false;continue}if(c==="\\"){escape=true;continue}if(c==='"'){inStr=!inStr;continue}if(inStr)continue;if(c==="{")depth++;else if(c==="}"){depth--;if(depth===0){try{const obj=JSON.parse(text.slice(start,i+1));if(obj!==null&&typeof obj==="object"&&typeof obj.response==="string"){return obj.response}}catch{}break}}}}return null}function matchingBrace(text,start){let depth=0;let inStr=false;let escape=false;for(let i=start;i<text.length;i++){const c=text[i];
|
|
6
|
+
if(escape){escape=false;continue}if(inStr){if(c==="\\")escape=true;else if(c==='"')inStr=false;continue}if(c==='"')inStr=true;else if(c==="{")depth++;else if(c==="}"){depth--;if(depth===0)return i}}return-1}var MAX_STEPS_ANCHORS=20;var MAX_OPEN_CANDIDATES=8;function lastStepsObject(text){const anchors=[...text.matchAll(/"steps"\s*:/g)].map(m=>m.index).filter(i=>i!==void 0);for(const at of anchors.reverse().slice(0,MAX_STEPS_ANCHORS)){let tried=0;for(let open=text.lastIndexOf("{",at);open>=0&&tried<
|
|
7
|
+
MAX_OPEN_CANDIDATES;open=text.lastIndexOf("{",open-1)){tried++;const close=matchingBrace(text,open);if(close>at){const plan=tryParsePlan(text.slice(open,close+1));if(plan)return plan}if(open===0)break}}return null}function finalReports(text){const re=new RegExp(`${FINAL_REPORT_BEGIN}\\n?([\\s\\S]*?)${FINAL_REPORT_END}`,"g");const out=[];for(const m of text.matchAll(re)){if(m[1]!==void 0)out.push(m[1])}return out.reverse()}function extractFrom(text){for(const tag of["json:execution-plan","json"]){
|
|
8
|
+
for(const block of fencedBlocks(text,tag).reverse()){const plan=tryParsePlan(block);if(plan)return plan}}const resp=extractGeminiEnvelope(text);if(resp!==null){for(const block of[...fencedBlocks(resp,"json:execution-plan"),...fencedBlocks(resp,"json")].reverse()){const plan2=tryParsePlan(block);if(plan2)return plan2}const plan=tryParsePlan(resp);if(plan)return plan}const whole=tryParsePlan(text.trim());if(whole)return whole;return lastStepsObject(text)}function extractPlanJson(rawText){const text=rawText.
|
|
9
|
+
replace(/^\s*\[\d{2}:\d{2}:\d{2}\][ \t]*(?:💬 ?)?/gmu,"");for(const report of finalReports(text)){const plan=extractFrom(report);if(plan)return plan}return extractFrom(text)}function ledgerTaskKey(args){const key=extractLeadingTaskKey(args);if(key.length>LEDGER_TASK_KEY_MAX)return"";if(CONTROL_CHAR_RE.test(key))return"";if(FLAG_TOKEN_RE.test(key))return"";if(BRACKET_RE.test(key))return"";return key}function placeholderTaskKey(args){for(const token of args.split(/\s+/)){if(token==="")continue;if(token.
|
|
10
|
+
startsWith("-"))continue;const m=/^[A-Z]{2,}[A-Z0-9]*-([A-Za-z0-9_<>{}]*)$/.exec(token);if(!m)return null;if(/^\d+$/.test(m[1]??""))return null;return token}return null}function stepToItem(step,assign,prefix=skillPrefix()){const skill=typeof step.skill==="string"?step.skill.trim():"";if(!skill)return null;const args=redactLoopOutput((step.args??"").trim());const priority=step.priority??"P2";const prompt=skillCommand(skill,args,prefix);let label=redactLoopOutput((step.label??"").trim());const own=skillCommand(
|
|
11
|
+
skill,"",prefix);const promptLike=prefix===""?label===own||label.startsWith(`${own} `):label.startsWith(`/${prefix}`);if(!label||promptLike||label.startsWith("[P"))label=prompt;const taskKey=ledgerTaskKey(args);const category=assign?.categoryForSkill(skill)??step.ai_category??"complex";const display=taskKey&&!label.includes(taskKey)?`[${priority}] ${taskKey} ${label} #ai:${category}`:`[${priority}] ${label} #ai:${category}`;const item={label:display.slice(0,200),prompt,task_key:taskKey};const platforms=normalizeRequiredPlatforms(
|
|
12
|
+
step.required_platforms);if(platforms.length>0)item.required_platforms=platforms;if(assign!==void 0){const ai=assign.selectPrimary(category,skill,priority,display);if(ai!=="")item.ai_type=ai}return item}function parsePlanExcludeKeys(prefetchSection){const m=/OPS_PLAN_EXCLUDE_KEYS\s+([^\s]*)\s+-->/.exec(prefetchSection);const keys=new Set;if(!m||!m[1])return keys;for(const raw of m[1].split(",")){const key=raw.trim();if(key!=="")keys.add(key)}return keys}function excludedKeyInArgs(args,excluded){
|
|
13
|
+
if(excluded.size===0)return null;for(const key of[...excluded].sort()){const re=new RegExp(`(?<![A-Za-z0-9-])${key.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}(?![0-9])`);if(re.test(args))return key}return null}function parseOpsCount(prefetchSection,field){const marker=/OPS_COUNTS\s+([^>]*?)-->/.exec(prefetchSection);if(!marker||!marker[1])return null;const escaped=field.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");const hit=new RegExp(`(?:^|\\s)${escaped}=(-?\\d+)(?:\\s|$)`).exec(marker[1]);if(!hit||hit[1]===
|
|
14
|
+
void 0)return null;const n=Number.parseInt(hit[1],10);if(!Number.isFinite(n)||n<0)return null;return n}function releaseDeployDropReason(verifyBacklog,devVerifyPlanned,guard){if(verifyBacklog===null){return`${guard.countField} \u306E\u4EF6\u6570\u3092\u53D6\u5F97\u3067\u304D\u306A\u304B\u3063\u305F\uFF08\u5224\u5B9A\u4E0D\u80FD\u306E\u305F\u3081\u30EA\u30EA\u30FC\u30B9\u306F\u898B\u9001\u308B\uFF09`}if(verifyBacklog>devVerifyPlanned){return`${guard.countField} ${verifyBacklog}\u4EF6 > \u8A08\u753B\u5185${guard.
|
|
15
|
+
drainedBy}${devVerifyPlanned}\u4EF6\uFF08Phase 1\u306E0\u4EF6\u898B\u8FBC\u307F\u304C\u7ACB\u305F\u306A\u3044\uFF09`}return null}function duplicateTaskKeyDropReason(enqueuedKeys,taskKey){if(!taskKey)return null;if(!enqueuedKeys.has(taskKey))return null;return`${taskKey} \u306F\u672C\u8A08\u753B\u3067\u65E2\u306B\u6295\u5165\u6E08\u307F\uFF08\u540C\u4E00\u30AD\u30FC\u306F1\u8A08\u753B1\u4EF6\uFF09`}var NO_ZERO_TARGET_GATES={};function zeroTargetDropReasons(prefetchSection,gates=NO_ZERO_TARGET_GATES){
|
|
16
|
+
const reasons=new Map;for(const[skill,gate]of Object.entries(gates)){const n=parseOpsCount(prefetchSection,gate.field);if(n===null)reasons.set(skill,`${gate.label}\u4EF6\u6570\u304C\u5224\u5B9A\u4E0D\u80FD\u306E\u305F\u3081\u898B\u9001\u308A`);else if(n===0)reasons.set(skill,`${gate.label}0\u4EF6\u306E\u305F\u3081\u5BFE\u8C61\u306A\u3057`)}return reasons}export{extractPlanJson,placeholderTaskKey,stepToItem,parsePlanExcludeKeys,excludedKeyInArgs,parseOpsCount,releaseDeployDropReason,duplicateTaskKeyDropReason,zeroTargetDropReasons};
|
|
@@ -69,6 +69,6 @@ this.lastPromptTokens=prompt;this.pendingChars=0}}history(){return this.messages
|
|
|
69
69
|
messages.reduce((sum,m)=>sum+bytesOf(m),0);while((this.estimatedPromptTokens()>limit||bytes>maxHistoryBytes)&&this.messages.length>1){const removed=this.messages.shift();if(!removed)break;const removedTokens=Math.ceil(lengthOf(removed)/4);this.lastPromptTokens=Math.max(0,this.lastPromptTokens-removedTokens);bytes-=bytesOf(removed);dropped+=1}while(this.messages.length>0){const head2=this.messages[0];if(!head2)break;const orphanResult=hasToolResult(head2)&&this.messages.length>1;if(head2.role!=="\
|
|
70
70
|
assistant"&&!orphanResult)break;this.messages.shift();this.lastPromptTokens=Math.max(0,this.lastPromptTokens-Math.ceil(lengthOf(head2)/4));dropped+=1}const head=this.messages[0];if(head&&hasToolResult(head)){const before=lengthOf(head);const kept=head.content.filter(block=>block.type!=="tool_result");head.content=kept.length>0?kept:[{type:"text",text:"\uFF08\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u4E0A\u9650\u306E\u305F\u3081\u3001\u76F4\u524D\u306E\u30C4\u30FC\u30EB\u5B9F\u884C\u7D50\u679C\u306F\u5C65\u6B74\u304B\u3089\u5916\u308C\u307E\u3057\u305F\uFF09"}];
|
|
71
71
|
const freed=before-lengthOf(head);this.lastPromptTokens=Math.max(0,this.lastPromptTokens-Math.ceil(freed/4));this.pendingChars=Math.max(0,this.pendingChars-freed);dropped+=1}this.droppedMessages+=dropped;return dropped}estimatedPromptTokens(){if(this.lastPromptTokens===0){return Math.ceil(this.totalChars()/4)}return this.lastPromptTokens+Math.ceil(this.pendingChars/4)}snapshot(){const used=this.estimatedPromptTokens();const remaining=Math.round((this.contextWindowTokens-used)/this.contextWindowTokens*
|
|
72
|
-
100);return{totals:{...this.totals},turns:this.turns,lastPromptTokens:this.lastPromptTokens,remainingPercent:Math.max(0,Math.min(100,remaining)),droppedMessages:this.droppedMessages}}totalChars(){return this.messages.reduce((sum,m)=>sum+lengthOf(m),0)}};function bytesOf(message){return Buffer.byteLength(JSON.stringify(message),"utf8")+1}function lengthOf(message){return message.content.reduce((sum,block)=>sum+blockLength(block),0)}function copyBlock(block){
|
|
73
|
-
input:{...block.input}}:{...block}}function hasToolResult(message){return message.content.some(block=>block.type==="tool_result")}function createRuntime(opts){const env=opts.env??process.env;const cwd=opts.cwd??process.cwd();const profile=resolveProfile(opts.profile,env,cwd);const creds=loadCredentials(profile.name,env);const apiUrl=effectiveApiUrl(profile,creds?.api_url,env);const relayUrl=effectiveRelayUrl(profile,creds?.relay_url,env);const session=new AuthSession(profile.name,apiUrl,env);const client=new RelayClient(relayUrl,session,httpFetch,opts.cliVersion);const configured=resolveConfiguredModel(opts.model,profile.name,
|
|
74
|
-
env,cwd);return{profileName:profile.name,apiUrl,relayUrl,client,session,context:new ContextManager,loggedIn:creds!==null,configuredModel:configured?.model??null,loadCatalog:()=>loadCatalog(client,profile.name,relayUrl,env),loadCachedFloor:()=>loadCachedVersionFloor(profile.name,relayUrl,env),loadCachedCatalog:()=>loadCachedCatalog(profile.name,relayUrl,env)}}export{emptyUsage,DEFAULT_MAX_TOKENS,DEFAULT_MAX_HISTORY_BYTES,modelLabel,toModelInfos,effectiveModelSpec,builtinCatalog,loadCachedCatalog,pickModel,specFor,classifyModelSwitch,RelayError,createRuntime};
|
|
72
|
+
100);return{totals:{...this.totals},turns:this.turns,lastPromptTokens:this.lastPromptTokens,remainingPercent:Math.max(0,Math.min(100,remaining)),contextWindowTokens:this.contextWindowTokens,droppedMessages:this.droppedMessages}}totalChars(){return this.messages.reduce((sum,m)=>sum+lengthOf(m),0)}};function bytesOf(message){return Buffer.byteLength(JSON.stringify(message),"utf8")+1}function lengthOf(message){return message.content.reduce((sum,block)=>sum+blockLength(block),0)}function copyBlock(block){
|
|
73
|
+
return block.type==="tool_use"?{...block,input:{...block.input}}:{...block}}function hasToolResult(message){return message.content.some(block=>block.type==="tool_result")}function formatContextRemaining(snapshot){return`\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u6B8B\u91CF: ${snapshot.remainingPercent}%\uFF08\u7A93 ${snapshot.contextWindowTokens.toLocaleString("en-US")} tok \u306E\u6982\u7B97\uFF09`}function createRuntime(opts){const env=opts.env??process.env;const cwd=opts.cwd??process.cwd();const profile=resolveProfile(opts.profile,env,cwd);const creds=loadCredentials(profile.name,env);const apiUrl=effectiveApiUrl(profile,creds?.api_url,env);const relayUrl=effectiveRelayUrl(profile,creds?.relay_url,env);const session=new AuthSession(profile.name,apiUrl,env);const client=new RelayClient(relayUrl,session,httpFetch,opts.cliVersion);const configured=resolveConfiguredModel(opts.model,profile.name,
|
|
74
|
+
env,cwd);return{profileName:profile.name,apiUrl,relayUrl,client,session,context:new ContextManager,loggedIn:creds!==null,configuredModel:configured?.model??null,loadCatalog:()=>loadCatalog(client,profile.name,relayUrl,env),loadCachedFloor:()=>loadCachedVersionFloor(profile.name,relayUrl,env),loadCachedCatalog:()=>loadCachedCatalog(profile.name,relayUrl,env)}}export{emptyUsage,DEFAULT_MAX_TOKENS,DEFAULT_MAX_HISTORY_BYTES,formatContextRemaining,modelLabel,toModelInfos,effectiveModelSpec,builtinCatalog,loadCachedCatalog,pickModel,specFor,classifyModelSwitch,RelayError,createRuntime};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
3
|
import{CommandModelMissingError,MAX_REPORTED_VIOLATIONS,loadCommandModelDomain,loadCommandModelIndex,validateBody,validateQuery,withCommonQueryParams}from"./chunk-CDAU3M7F.js";import{isForceOnly,killProcessTree,system32}from"./chunk-N2UVRM3Z.js";import{redactSecretValues}from"./chunk-BD7O73GK.js";import{isSafePathSegment}from"./chunk-HVZUXLQ4.js";import{ApiError,TwpApiClient,appendQuery}from"./chunk-JA5A6UJ2.js";import{DEFAULT_MAX_HISTORY_BYTES,DEFAULT_MAX_TOKENS,effectiveModelSpec,
|
|
4
|
-
emptyUsage}from"./chunk-
|
|
4
|
+
emptyUsage}from"./chunk-65SBCDVQ.js";import{isPrivateTwpHome,isTrustworthyCacheFile,writePrivateFileAtomic}from"./chunk-D233KKXW.js";import{findExecutable,isWindowsDriveAbsolute}from"./chunk-PMOUHEJQ.js";import{AuthSession,NotLoggedInError,SessionExpiredError,withFileLock}from"./chunk-XNLIEUAW.js";import{httpFetch}from"./chunk-J7QYPKVK.js";import{configReadDirs,ensureTwpHome,twpHomeDir}from"./chunk-RZVI6PMW.js";import{MODES,applyPermissionMode,checkPermission,
|
|
5
5
|
isModeId,setActiveModes}from"./chunk-2LOT54OO.js";import{stripTerminalControls}from"./chunk-NHYMHCAT.js";import fs2 from"fs";import path3 from"path";import os2 from"os";import{realpathSync}from"fs";import{homedir}from"os";import{dirname,isAbsolute,relative,resolve,sep}from"path";var PathDeniedError=class extends Error{constructor(message){super(message);this.name="PathDeniedError"}};function resolveToolPath(input,cwd,home=homedir()){if(typeof input!=="string"||input.trim()===""){throw new PathDeniedError("path must be a non-empty string")}const expanded=expandHome(input,home);const abs=isAbsolute(expanded)?resolve(expanded):resolve(cwd,expanded);const root=realOrSelf(resolve(cwd));assertInside(abs,resolve(cwd),abs);assertNotSecret(abs,home);const real=realOrSelf(abs);if(real!==
|
|
6
6
|
abs){assertInside(real,root,abs);assertNotSecret(real,home)}return abs}function realToolPath(input,cwd,home=homedir()){return realOrSelf(resolveToolPath(input,cwd,home))}function assertInside(target,root,reported){const rel=relative(root,target);const outside=rel===".."||rel.startsWith(`..${sep}`)||isAbsolute(rel);if(outside){throw new PathDeniedError(`path escapes the working directory (${reported}). Only paths under ${root} can be accessed.`)}}function realOrSelf(target){let current=target;const rest=[];
|
|
7
7
|
for(;;){try{const real=realpathSync(current);return rest.length===0?real:resolve(real,...rest.reverse())}catch{const parent=dirname(current);if(parent===current)return target;rest.push(current.slice(parent.length+1));current=parent}}}function assertNotSecret(absPath,home=homedir(),env=process.env){const reason=secretReason(absPath,home,env);if(reason!==null)throw new PathDeniedError(`refusing to access ${absPath}: ${reason}`)}function secretReason(absPath,_home=homedir(),env=process.env){const lower=absPath.
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
3
|
import{splitFlagToken}from"./chunk-OKATZ4SN.js";var BUILTIN_COMMANDS=["login","logout","whoami","update","task-loop"];var TASK_LOOP_ACTIONS=["run","status","stop","schedule","setup","charter","skill","settings","orientation","plan","capacity","runner","trigger"];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","--revis\
|
|
4
|
-
ion","--dir","--from","--to","--config","--key","--limit","--output","--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","--include-stopped","--dry-run","--debug","--refresh"]);function dispatch(argv,limit=2){const tokens=[];const indexes=[];let truncated=false;for(let i=0;i<
|
|
5
|
-
const arg=argv[i];if(arg===void 0)continue;if(arg.startsWith("-")&&arg!=="-"){const{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}}
|
|
6
|
-
"item","history","plan-history"];var QUEUE_DOMAIN="agent-loop";function rewriteQueueCommand(argv){const{tokens,indexes}=dispatch(argv);const[first,second]=tokens;if(first===QUEUE_DOMAIN||first==="help"&&second===QUEUE_DOMAIN)return{argv,moved:QUEUE_DOMAIN};const[firstIndex,secondIndex]=indexes;if(first!=="task-loop"||second===void 0||firstIndex===void 0||secondIndex===void 0||!TASK_LOOP_QUEUE_ACTIONS.includes(second)){return{argv}}const next=[...argv];next[firstIndex]=
|
|
7
|
-
|
|
4
|
+
ion","--dir","--from","--to","--config","--key","--limit","--output","--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","--include-stopped","--dry-run","--debug","--refresh","--quiet","-q"]);function dispatch(argv,limit=2){const tokens=[];const indexes=[];let truncated=false;for(let i=0;i<
|
|
5
|
+
argv.length;i++){const arg=argv[i];if(arg===void 0)continue;if(arg.startsWith("-")&&arg!=="-"){const{name,value:inline}=splitFlagToken(arg);if(BOOLEAN_FLAGS.has(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}}
|
|
6
|
+
var TASK_LOOP_QUEUE_ACTIONS=["item","history","plan-history"];var QUEUE_DOMAIN="agent-loop";function rewriteQueueCommand(argv){const{tokens,indexes}=dispatch(argv);const[first,second]=tokens;if(first===QUEUE_DOMAIN||first==="help"&&second===QUEUE_DOMAIN)return{argv,moved:QUEUE_DOMAIN};const[firstIndex,secondIndex]=indexes;if(first!=="task-loop"||second===void 0||firstIndex===void 0||secondIndex===void 0||!TASK_LOOP_QUEUE_ACTIONS.includes(second)){return{argv}}const next=[...argv];next[firstIndex]=
|
|
7
|
+
QUEUE_DOMAIN;if(second==="item")next.splice(secondIndex,1);return{argv:next}}var MOVED_QUEUE_COMMAND_MESSAGE=`\`twp agent-loop\` \u306F \`twp task-loop\` \u306B\u7D71\u5408\u3057\u307E\u3057\u305F\u3002\u6B21\u306E\u3088\u3046\u306B\u6253\u3063\u3066\u304F\u3060\u3055\u3044:
|
|
8
8
|
twp agent-loop <\u64CD\u4F5C> ... \u2192 twp task-loop item <\u64CD\u4F5C> ...
|
|
9
9
|
twp agent-loop history list ... \u2192 twp task-loop history list ...
|
|
10
10
|
twp agent-loop plan-history list ... \u2192 twp task-loop plan-history list ...
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{createRuntime}from"./chunk-
|
|
3
|
+
import{createRuntime}from"./chunk-65SBCDVQ.js";import{findExecutable}from"./chunk-PMOUHEJQ.js";import{httpFetch}from"./chunk-J7QYPKVK.js";import{describeAutoUpdate}from"./chunk-CH6QU76P.js";import{PACKAGE_NAME,UPDATE_COMMAND,compareVersionCores,isBelowMinSupported,parseVersionCore}from"./chunk-DXXFUNYN.js";import{stripTerminalControls}from"./chunk-NHYMHCAT.js";import{execFile}from"child_process";import fs from"fs";import path from"path";function resolveNpmCommand(deps={}){const platform=deps.platform??process.platform;const env=deps.env??process.env;const npmPath=(deps.find??(name=>findExecutable(name,{env,platform})))("npm");if(npmPath===null)return null;if(platform!=="win32")return{file:npmPath,prefix:[]};if(/\.exe$/i.test(npmPath))return{file:npmPath,prefix:[]};const cliJs=path.win32.join(path.win32.dirname(npmPath),"node_modules","npm","bin","npm-cli.js");return(deps.exists??fs.existsSync)(cliJs)?{file:deps.nodePath??process.
|
|
4
4
|
execPath,prefix:[cliJs]}:null}var DEFAULT_REGISTRY="https://registry.npmjs.org";function registryBase(env=process.env){const configured=env["npm_config_registry"]?.trim();if(configured===void 0||configured==="")return DEFAULT_REGISTRY;try{const url=new URL(configured);if(url.protocol!=="https:"&&url.protocol!=="http:")return DEFAULT_REGISTRY}catch{return DEFAULT_REGISTRY}return configured.replace(/\/+$/,"")}async function fetchFromRegistry(fetchImpl=httpFetch,env=process.env){const url=`${registryBase(env)}/${PACKAGE_NAME.replace(
|
|
5
5
|
"/","%2f")}`;const res=await fetchImpl(url,{headers:{Accept:"application/vnd.npm.install-v1+json"},signal:AbortSignal.timeout(5e3)});if(!res.ok){throw new Error(`registry \u304C ${res.status} \u3092\u8FD4\u3057\u307E\u3057\u305F`)}const body=await res.json();const latest=body["dist-tags"]?.latest;if(typeof latest!=="string"||parseVersionCore(latest)===null){throw new Error("registry \u306E\u5FDC\u7B54\u306B dist-tags.latest \u304C\u3042\u308A\u307E\u305B\u3093")}return{version:latest.trim(),source:"\
|
|
6
6
|
registry"}}async function fetchFromNpmCli(){const npm=resolveNpmCommand();if(npm===null){throw new Error("npm \u304C PATH \u306B\u898B\u3064\u304B\u308A\u307E\u305B\u3093")}const stdout=await new Promise((resolve,reject)=>{execFile(npm.file,[...npm.prefix,"view",PACKAGE_NAME,"version","--json"],{timeout:15e3,windowsHide:true},(error,out)=>error?reject(error):resolve(out))});const parsed=JSON.parse(stdout.trim());const latest=typeof parsed==="string"?parsed:null;if(latest===null||parseVersionCore(
|
|
@@ -7,6 +7,8 @@ var GLOBAL_OPTIONS_HELP=`\u30B0\u30ED\u30FC\u30D0\u30EB\u30AA\u30D7\u30B7\u30E7\
|
|
|
7
7
|
\uFF08~/.twp/config.json \u306E "output" \u3067\u56FA\u5B9A\u3067\u304D\u308B\uFF09
|
|
8
8
|
json \u306F TWP API \u306E\u751F\u30EC\u30B9\u30DD\u30F3\u30B9\u3001table / text / tsv \u306F
|
|
9
9
|
\u8AAD\u307F\u3084\u3059\u3055\u306E\u305F\u3081\u306B\u9078\u3093\u3060\u8981\u7D04\u5217\u3092\u51FA\u3057\u307E\u3059
|
|
10
|
+
text / tsv \u306F\u5024\u306E\u6539\u884C\u30FB\u30BF\u30D6\u3092 \\n / \\t \u3078\u9003\u304C\u3057\u307E\u3059\uFF081\u884C1\u30EC\u30B3\u30FC\u30C9\uFF09\u3002
|
|
11
|
+
\u305F\u3060\u3057 text \u3067\u7D50\u679C\u304C\u6587\u5B57\u52171\u3064\uFF08--query description \u7B49\uFF09\u306A\u3089\u751F\u306E\u307E\u307E\u51FA\u3057\u307E\u3059
|
|
10
12
|
\u26A0 \u9023\u643A\u5148\uFF08Backlog \u7B49\uFF09\u306E\u30B3\u30DE\u30F3\u30C9\u3067\u3082\u3001\u51FA\u308B\u306E\u306F\u9023\u643A\u5148 API \u306E\u5F62
|
|
11
13
|
\u3067\u306F\u306A\u304F TWP \u30B5\u30FC\u30D0\u304C\u6574\u3048\u305F\u5F62\u3067\u3059\uFF08\u5F62\u306F\u5404\u30B3\u30DE\u30F3\u30C9\u306E help\uFF09
|
|
12
14
|
--query <JMESPath> \u7D50\u679C\u3092 JMESPath \u3067\u7D5E\u308A\u8FBC\u3080\u3002**TWP API \u306E\u751F\u30EC\u30B9\u30DD\u30F3\u30B9\u306B\u5BFE\u3057\u3066
|
|
@@ -20,6 +22,14 @@ var GLOBAL_OPTIONS_HELP=`\u30B0\u30ED\u30FC\u30D0\u30EB\u30AA\u30D7\u30B7\u30E7\
|
|
|
20
22
|
--refresh --status / --type / --assignee \u3092\u540D\u524D\u3067\u53D7\u3051\u308B\u30B3\u30DE\u30F3\u30C9\u3067\u3001
|
|
21
23
|
\u540D\u524D \u2192 ID \u306E\u30AD\u30E3\u30C3\u30B7\u30E5\u3092\u8AAD\u307E\u305A\u306B\u53D6\u308A\u76F4\u3059\uFF08\u65E2\u5B9A 10 \u5206\uFF09
|
|
22
24
|
--yes \u78BA\u8A8D\u304C\u8981\u308B\u64CD\u4F5C\uFF08\u524A\u9664\u30FB\u5168\u4EF6\u7F6E\u63DB\u30FB\u8AB2\u91D1\u306A\u3069\uFF09\u3092\u5B9F\u884C\u3059\u308B
|
|
25
|
+
--quiet, -q \u60C5\u5831\u7528\u306E\u6CE8\u8A18\u3092 stderr \u3078\u51FA\u3055\u306A\u3044\uFF08TWP_QUIET=1 \u3067\u3082\u53EF\uFF09\u3002\u5BFE\u8C61\u306F
|
|
26
|
+
task create \u306E --status / --type\u3001user create / invite \u306E --role \u3092\u65E2\u5B9A\u5024\u3067
|
|
27
|
+
\u57CB\u3081\u305F\u65E8\u3068\u3001--all \u306E\u53D6\u5F97\u4EF6\u6570\uFF08twp api \u306F\u300C\u81EA\u52D5\u30DA\u30FC\u30B8\u30F3\u30B0\u300D\uFF09\u3002--dry-run \u3067\u3082
|
|
28
|
+
\u6D88\u3048\u307E\u3059\uFF08\u9001\u308B\u5024\u306F stdout \u306E body \u3067\u78BA\u304B\u3081\u3066\u304F\u3060\u3055\u3044\uFF09\u3002stdout \u306F\u5909\u308F\u308A\u307E\u305B\u3093\u3002
|
|
29
|
+
\u305D\u308C\u4EE5\u5916\u306E\u6CE8\u8A18\u3068\u3001\u6B21\u306F --quiet \u3067\u3082\u51FA\u307E\u3059:
|
|
30
|
+
\u30A8\u30E9\u30FC\u30FB\u8B66\u544A\u3068\u7D42\u4E86\u30B3\u30FC\u30C9\uFF0F\u26A0 \u8A2D\u5B9A\u6642\u30E1\u30C3\u30BB\u30FC\u30B8\uFF08stdout \u5074\uFF09\uFF0F
|
|
31
|
+
\u300C\u7D9A\u304D\u304C\u3042\u308A\u307E\u3059\u3002\u6B21\u306E\u30DA\u30FC\u30B8: \u2026\u300D\uFF08\u6D88\u3059\u3068\u4EF6\u6570\u306E\u6B20\u3051\u306B\u6C17\u3065\u3051\u306A\u3044\u305F\u3081\uFF09\uFF0F
|
|
32
|
+
--no-redact \u306E\u544A\u77E5\u30FB\u78BA\u8A8D\u8981\u6C42\uFF08--yes\uFF09\uFF0Ftwp api \u306E\u300C\u63A5\u7D9A\u5148:\u300D
|
|
23
33
|
|
|
24
34
|
\u5024\u306E\u66F8\u304D\u65B9:
|
|
25
35
|
--flag <\u5024> \u3068 --flag=<\u5024> \u306F\u3069\u3061\u3089\u3082\u4F7F\u3048\u307E\u3059\uFF08\u540C\u3058\u610F\u5473\uFF09\u3002
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
var LOADERS={agent:async()=>(await import("./agent-HIZOEXPJ.js")).agentDomain,"agent-loop":async()=>(await import("./agent-loop-
|
|
3
|
+
var LOADERS={agent:async()=>(await import("./agent-HIZOEXPJ.js")).agentDomain,"agent-loop":async()=>(await import("./agent-loop-X2FH7LCO.js")).agentLoopDomain,"ai-review-reason":async()=>(await import("./sales-ai-review-NVOUC3FC.js")).aiReviewReasonDomain,analysis:async()=>(await import("./analysis-J6DYNA53.js")).analysisDomain,announcement:async()=>(await import("./announcement-2GTF3KDU.js")).announcementDomain,"api-key":async()=>(await import("./api-key-MMQ3AN7V.js")).apiKeyDomain,attendance:async()=>(await import("./attendance-correct-SIS5UGMY.js")).
|
|
4
4
|
attendanceDomainWithRecords,"audit-log":async()=>(await import("./audit-log-ZGK7IVLD.js")).auditLogDomain,backlog:async()=>(await import("./backlog-UC5BLMGR.js")).backlogDomain,budget:async()=>(await import("./budget-KBD7M3BQ.js")).budgetDomain,"business-hours":async()=>(await import("./business-hours-37MRL53C.js")).businessHoursDomain,"business-place":async()=>(await import("./sales-master-BOR7D5QK.js")).businessPlaceDomain,company:async()=>(await import("./company-FKHXNP5D.js")).companyDomain,
|
|
5
5
|
contract:async()=>(await import("./contract-YYGKQ3AJ.js")).contractDomain,customer:async()=>(await import("./company-FKHXNP5D.js")).customerDomain,department:async()=>(await import("./department-C35IWGFL.js")).departmentDomain,deposit:async()=>(await import("./deposit-DJ4JDEFB.js")).depositDomain,estimate:async()=>(await import("./estimate-5JIENI2G.js")).estimateDomain,evaluation:async()=>(await import("./evaluation-QOEV2VNV.js")).evaluationDomain,expense:async()=>(await import("./expense-J3CMLOAV.js")).
|
|
6
6
|
expenseDomain,faq:async()=>(await import("./faq-HPBYZLNO.js")).faqDomain,"fiscal-year":async()=>(await import("./fiscal-year-ZCRHTUSK.js")).fiscalYearDomain,holiday:async()=>(await import("./holiday-R6WLLRIS.js")).holidayDomain,"goal-sheet":async()=>(await import("./evaluation-QOEV2VNV.js")).goalSheetDomain,inquiry:async()=>(await import("./inquiry-LYBQYPXK.js")).inquiryDomain,invoice:async()=>(await import("./invoice-BMBKXDES.js")).invoiceDomain,"job-title":async()=>(await import("./job-title-EQBDT5QY.js")).
|
|
7
|
-
jobTitleDomain,knowledge:async()=>(await import("./domain-knowledge-SX2U3G2T.js")).knowledgeDomain,leave:async()=>(await import("./leave-HVOP77HO.js")).leaveDomain,license:async()=>(await import("./license-4GY3UVML.js")).licenseDomain,"login-history":async()=>(await import("./login-history-WZ3RYFAB.js")).loginHistoryDomain,media:async()=>(await import("./media-
|
|
7
|
+
jobTitleDomain,knowledge:async()=>(await import("./domain-knowledge-SX2U3G2T.js")).knowledgeDomain,leave:async()=>(await import("./leave-HVOP77HO.js")).leaveDomain,license:async()=>(await import("./license-4GY3UVML.js")).licenseDomain,"login-history":async()=>(await import("./login-history-WZ3RYFAB.js")).loginHistoryDomain,media:async()=>(await import("./media-JYPX3PEY.js")).mediaDomain,meeting:async()=>(await import("./knowledge-YNWUVXDF.js")).meetingDomain,note:async()=>(await import("./knowledge-YNWUVXDF.js")).
|
|
8
8
|
noteDomain,notification:async()=>(await import("./notification-VMTIJ5N3.js")).notificationDomain,onedrive:async()=>(await import("./onedrive-Z43D26SJ.js")).onedriveDomain,outlook:async()=>(await import("./outlook-DLEA27PZ.js")).outlookDomain,payee:async()=>(await import("./sales-master-BOR7D5QK.js")).payeeDomain,position:async()=>(await import("./position-J6TOE5KO.js")).positionDomain,project:async()=>(await import("./project-IV5M2SLT.js")).projectDomain,prospect:async()=>(await import("./prospect-LSNBOVFF.js")).
|
|
9
9
|
prospectDomain,purchase:async()=>(await import("./purchase-K75TDCCD.js")).purchaseDomain,qualification:async()=>(await import("./skill-KNJGR57V.js")).qualificationDomain,receivable:async()=>(await import("./receivable-X7BEQOJF.js")).receivableDomain,redmine:async()=>(await import("./redmine-A5LDGTPW.js")).redmineDomain,report:async()=>(await import("./report-KDOXKFPP.js")).reportDomain,"role-template":async()=>(await import("./evaluation-QOEV2VNV.js")).roleTemplateDomain,"rou\
|
|
10
10
|
nding-setting":async()=>(await import("./sales-numbering-O5RAC5TI.js")).roundingSettingDomain,"seal-impression":async()=>(await import("./sales-master-BOR7D5QK.js")).sealImpressionDomain,search:async()=>(await import("./search-AHFUN2XY.js")).searchDomain,secret:async()=>(await import("./secret-P42JCOI4.js")).secretDomain,segment:async()=>(await import("./segment-G3G6B26B.js")).segmentDomain,shift:async()=>(await import("./attendance-lists-O6T2Q42G.js")).shiftDomain,skill:async()=>(await import("./skill-KNJGR57V.js")).
|
|
11
|
-
skillDomain,"staffing-board":async()=>(await import("./staffing-board-COZL36UA.js")).staffingBoardDomain,storage:async()=>(await import("./storage-AQDCEBDJ.js")).storageDomain,"supplier-payment":async()=>(await import("./supplier-payment-VJXT64KQ.js")).supplierPaymentDomain,support:async()=>(await import("./support-6FJE2ZIO.js")).supportDomain,task:async()=>(await import("./task-
|
|
11
|
+
skillDomain,"staffing-board":async()=>(await import("./staffing-board-COZL36UA.js")).staffingBoardDomain,storage:async()=>(await import("./storage-AQDCEBDJ.js")).storageDomain,"supplier-payment":async()=>(await import("./supplier-payment-VJXT64KQ.js")).supplierPaymentDomain,support:async()=>(await import("./support-6FJE2ZIO.js")).supportDomain,task:async()=>(await import("./task-LMRSLADM.js")).taskDomain,teams:async()=>(await import("./teams-3ZI6ZY3F.js")).teamsDomain,user:async()=>(await import("./user-4OBXVB32.js")).
|
|
12
12
|
userDomain,"user-contract-type":async()=>(await import("./user-contract-type-HTUDQQZN.js")).userContractTypeDomain,"user-group":async()=>(await import("./user-group-7ZXNZDOQ.js")).userGroupDomain,wiki:async()=>(await import("./knowledge-YNWUVXDF.js")).wikiDomain,workchange:async()=>(await import("./attendance-lists-O6T2Q42G.js")).workchangeDomain,"worker-agent":async()=>(await import("./worker-agent-JNXY7UQD.js")).workerAgentDomain,workflow:async()=>(await import("./workflow-TTZMWW2K.js")).workflowDomain};
|
|
13
13
|
async function loadDomain(name){return LOADERS[name]()}export{loadDomain};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{placeholderTaskKey,stepToItem}from"./chunk-
|
|
3
|
+
import{placeholderTaskKey,stepToItem}from"./chunk-2UTJI3BT.js";import{redactLoopOutput}from"./chunk-VEEZJNOB.js";import{localDate}from"./chunk-INS77QHY.js";import{normalizeSkillName,skillOfItem}from"./chunk-FABDZBDZ.js";import{DEFAULT_SKILL_PREFIX,SKILL_PREFIX_RE,setSkillPrefix,skillCommand,skillPrefix}from"./chunk-6CS5L24D.js";import{describeError,pick,pickString}from"./chunk-UZUV5FYG.js";import{isTaskKey}from"./chunk-SBRTBKEZ.js";import{createHash,randomBytes}from"crypto";import fs from"fs";import path from"path";var INFLIGHT_STALE_HOURS=3;function staleFloorHours(aiTimeoutSec){return Math.ceil(aiTimeoutSec*2/3600)}function inflightStaleHours(aiTimeoutSec,baseHours=INFLIGHT_STALE_HOURS){const base=Number.isFinite(baseHours)&&baseHours>0?baseHours:INFLIGHT_STALE_HOURS;return Math.max(base,staleFloorHours(aiTimeoutSec))}function ageMinutesOf(item,now){for(const raw of[item.started_at,item.updated_at,item.dequeued_at,item.created_at]){if(!raw)continue;const ts=Date.parse(raw);if(Number.isNaN(ts))continue;return Math.
|
|
4
4
|
floor((now.getTime()-ts)/6e4)}return null}function inflightEntries(items,now=new Date,staleHours=INFLIGHT_STALE_HOURS){const staleMinutes=staleHours*60;const byKey=new Map;for(const item of items){const key=(item.task_key??"").trim();if(!key)continue;const ageMinutes=ageMinutesOf(item,now);if(ageMinutes!==null&&ageMinutes>staleMinutes)continue;const entry={key,runner:item.runner_id??"-",ageMinutes,label:(item.label??"").slice(0,60)};const prev=byKey.get(key);if(!prev||(entry.ageMinutes??-1)>(prev.
|
|
5
5
|
ageMinutes??-1))byKey.set(key,entry)}return[...byKey.values()].sort((a,b)=>a.key.localeCompare(b.key))}function formatInflightEntry(entry){const age=entry.ageMinutes===null?"\u4E0D\u660E":`${entry.ageMinutes}\u5206`;return`${entry.key} runner=${entry.runner} \u7D4C\u904E=${age}`}async function createItem(api,body){const res=await api.create(redactItemBody(body));if(isTriggerBlocked(res))return{itemId:null,detail:triggerBlockedDetail(res),blocked:true};if(!res.ok)return{itemId:null,detail:describeError(res)};for(const p of["item_id","id","item.item_id","item.id","data.item_id","data.id"]){const v=pickString(res.json,p);if(v)return{itemId:v,detail:""}}return{itemId:null,detail:`item_id \u3092\u8AAD\u3081\u307E\u305B\u3093: ${res.raw.slice(0,200)}`}}function isTriggerBlocked(res){
|
|
6
6
|
if(res.status!==409)return false;const json=res.json&&typeof res.json==="object"?res.json:{};const data=json["data"]&&typeof json["data"]==="object"?json["data"]:{};return[json["reason"],json["error"],data["reason"]].includes("loop_trigger_blocked")}function triggerBlockedDetail(res){const message=pickString(res.json,"error_description")||pickString(res.json,"message");const parts=[pickString(res.json,"block.task_key")&&pickString(res.json,"block.skill")?`${pickString(res.json,"block.task_key")}\
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{redactSecretValues,redactSecrets}from"./chunk-BD7O73GK.js";import{formatOutput}from"./chunk-
|
|
3
|
+
import{redactSecretValues,redactSecrets}from"./chunk-BD7O73GK.js";import{formatOutput}from"./chunk-RKBUJKI5.js";import{stripTerminalControls}from"./chunk-NHYMHCAT.js";function renderOutput(value,format,noRedact=false){if(noRedact)return formatOutput(value,format);const formatted=formatOutput(redactSecretValues(value),format);return format==="json"?formatted:redactSecrets(formatted)}function renderDocument(text,noRedact=false){const visible=stripTerminalControls(text);return noRedact?visible:redactSecrets(visible)}export{renderOutput,renderDocument};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
|
+
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
+
import{stringWidth}from"./chunk-UREA4ZIG.js";import{stripTerminalControls}from"./chunk-NHYMHCAT.js";var OUTPUT_FORMATS=["json","table","text","tsv"];function isOutputFormat(value){return typeof value==="string"&&OUTPUT_FORMATS.includes(value)}function resolveOutputFormat(input){if(input.flag!==void 0){return isOutputFormat(input.flag)?input.flag:null}if(isOutputFormat(input.configured))return input.configured;return input.isTty?"table":"json"}function formatOutput(value,format){switch(format){case"json":return formatJson(value);case"table":return formatTable(value);case"text":if(typeof value===
|
|
4
|
+
"string")return cell(value);return formatDelimited(value," ");case"tsv":return formatDelimited(value," ")}}var JSON_UNSAFE_CONTROLS=/[\u007f-\u009f]/gu;function formatJson(value){const text=JSON.stringify(value===void 0?null:value,null,2);return text.replace(JSON_UNSAFE_CONTROLS,ch=>`\\u${ch.codePointAt(0)?.toString(16).padStart(4,"0")??""}`)}function cell(value){if(value===null||value===void 0)return"";if(typeof value==="string")return stripTerminalControls(value);if(typeof value==="number"||typeof value===
|
|
5
|
+
"boolean"||typeof value==="bigint"){return String(value)}return stripTerminalControls(JSON.stringify(value)??"")}function isPlainRecord(value){return typeof value==="object"&&value!==null&&!Array.isArray(value)}function collectColumns(rows){const columns=[];const seen=new Set;for(const row of rows){for(const key of Object.keys(row)){if(!seen.has(key)){seen.add(key);columns.push(key)}}}return columns}function renderRow(cells,widths){return cells.map((text,i)=>{if(i===cells.length-1)return text;const pad=Math.
|
|
6
|
+
max(0,(widths[i]??0)-stringWidth(text));return text+" ".repeat(pad)}).join(" ").trimEnd()}function singleLine(text){return stripTerminalControls(text).replace(/\t/g,"\\t").replace(/\n/g,"\\n")}function renderGrid(header,rows){const normalizedHeader=header?header.map(singleLine):null;const normalizedRows=rows.map(row=>row.map(singleLine));return renderGridNormalized(normalizedHeader,normalizedRows)}function renderGridNormalized(header,rows){const all=header?[header,...rows]:rows;const columnCount=all.
|
|
7
|
+
reduce((max,row)=>Math.max(max,row.length),0);const widths=[];for(let i=0;i<columnCount;i+=1){widths.push(all.reduce((max,row)=>Math.max(max,stringWidth(row[i]??"")),0))}const lines=[];if(header){lines.push(renderRow(header,widths));lines.push(widths.map(w=>"-".repeat(Math.max(1,w))).join(" ").trimEnd())}for(const row of rows)lines.push(renderRow(row,widths));return lines.join("\n")}function formatTable(value){if(Array.isArray(value)){if(value.length===0)return"";const records=value.filter(isPlainRecord);
|
|
8
|
+
if(records.length!==value.length){return renderGrid(null,value.map(v=>[cell(v)]))}const columns=collectColumns(records);if(columns.length===0)return"";return renderGrid(columns,records.map(row=>columns.map(c=>cell(row[c]))))}if(isPlainRecord(value)){const entries=Object.entries(value);if(entries.length===0)return"";return renderGrid(null,entries.map(([k,v])=>[k,cell(v)]))}return cell(value)}function escapeDelimited(text){return text.replace(/\\/g,"\\\\").replace(/\t/g,"\\t").replace(/\r/g,"\\r").
|
|
9
|
+
replace(/\n/g,"\\n")}function formatDelimited(value,separator){const rows=[];if(Array.isArray(value)){const records=value.filter(isPlainRecord);if(value.length>0&&records.length===value.length){const columns=collectColumns(records);for(const row of records)rows.push(columns.map(c=>cell(row[c])))}else{for(const v of value)rows.push([cell(v)])}}else if(isPlainRecord(value)){rows.push(Object.values(value).map(cell))}else{rows.push([cell(value)])}return rows.map(row=>row.map(escapeDelimited).join(separator)).
|
|
10
|
+
join("\n")}export{OUTPUT_FORMATS,isOutputFormat,resolveOutputFormat,formatOutput};
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
|
+
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
+
import{isModeId,isPermissionModeId}from"./chunk-2LOT54OO.js";import{ORIENTATION_OPS}from"./chunk-NJL3H2BB.js";import{API_TOKEN,HELP_TOKEN,isDomainName}from"./chunk-6FI4ZMZ7.js";import{BOOLEAN_FLAGS,dispatch,resolveRoute,rewriteQueueCommand}from"./chunk-AH4KHEAC.js";import{splitFlagToken}from"./chunk-OKATZ4SN.js";var TRIGGER_OPS=["list","show","push","delete","history","release"];var GLOBAL_FLAGS=new Set(["-h","--help","-v","--version","--profile","--output","--query","--dry-run","--debug","--yes","-y","--refresh","--quiet","-q"]);function quietFromEnv(env){const raw=env["TWP_QUIET"]?.trim().toLowerCase();return raw==="1"||raw==="true"}function parseArgv(rawArgv){const out={command:"tui",safe:false,daemon:false,forceRunner:false,stopForce:false,logoutForce:false,stopDrain:false,noTui:false,doctor:false,yes:false,skillAll:false,orientationArgs:[],includeStopped:false,planEmpty:false,
|
|
4
|
+
planCheck:false,noAiConfigFile:false,verbose:false,loginMethod:"browser",loginNoBrowser:false,promptFromStdin:false,domainArgv:[],domainHelp:false,dryRun:false,debug:false,refresh:false,quiet:false,unknown:[],allowedTools:[],disallowedTools:[]};const queue=rewriteQueueCommand(rawArgv);if(queue.moved!==void 0){out.movedCommand=queue.moved;return out}const argv=queue.argv;const route=resolveRoute(dispatch(argv));const consumed=new Set;const[firstIndex,secondIndex]=route.consumed;if(route.kind==="b\
|
|
5
|
+
uiltin"){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(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.
|
|
6
|
+
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="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"||
|
|
7
|
+
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(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<
|
|
8
|
+
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.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";
|
|
9
|
+
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.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=
|
|
10
|
+
"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"--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"\
|
|
11
|
+
--refresh":out.refresh=true;break;case"--quiet":case"-q":out.quiet=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("-"))){out.unknown.push(inline!==void 0?raw:`--mode ${next}`);i+=step}else{out.unknown.push("--mode")}break}case"--permission-mode":{const next=inline??
|
|
12
|
+
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,step}=takeValue(i,arg,inline);if(value!==void 0){(arg==="--allowed-tools"?out.allowedTools:out.disallowedTools).push(value);i+=step}break}case"--model":{
|
|
13
|
+
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,"--project",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=
|
|
14
|
+
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=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=
|
|
15
|
+
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(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=
|
|
16
|
+
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"--key":{const{value:v,step}=takeValue(i,"--key",inline);if(v!==void 0){out.triggerKey=v;i+=step}break}case"--limit":{const{value:v,step}=takeValue(i,"--limit",inline);if(v!==void 0){out.triggerLimit=
|
|
17
|
+
v;i+=step}break}case"--out":{const{value:v,step}=takeValue(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(
|
|
18
|
+
i,"--dir",inline);if(v!==void 0){out.skillDir=v;i+=step}break}case"--config":{const{value:v,step}=takeValue(i,"--config",inline);if(v!==void 0){out.skillConfig=v;i+=step}break}case"--all":out.skillAll=true;break;case"--include-stopped":out.includeStopped=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===
|
|
19
|
+
"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=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===
|
|
20
|
+
"task-loop"&&out.taskLoopAction==="orientation"){if(out.orientationOp===void 0&&ORIENTATION_OPS.includes(raw)){out.orientationOp=raw;break}if(out.orientationOp!==void 0&&!raw.startsWith("-")){out.orientationArgs.push(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"||raw==="list")){out.capacityOp=raw;break}if(out.
|
|
21
|
+
command==="task-loop"&&out.taskLoopAction==="trigger"){if(out.triggerOp===void 0&&TRIGGER_OPS.includes(raw)){out.triggerOp=raw;break}if(out.triggerOp!==void 0&&out.triggerOp!=="list"&&out.triggerOp!=="push"&&out.triggerId===void 0&&!raw.startsWith("-")){out.triggerId=raw;break}}if(out.command==="task-loop"&&out.taskLoopAction==="runner"){if(out.runnerOp===void 0&&(raw==="list"||raw==="remove")){out.runnerOp=raw;break}if(out.runnerOp==="remove"&&out.runnerTargetId===void 0&&!raw.startsWith("-")){
|
|
22
|
+
out.runnerTargetId=raw;break}}if(out.command==="task-loop"&&out.taskLoopAction==="skill"){if(out.skillOp===void 0&&(isRevisionAwareOp(raw)||isSkillManageOp(raw)||raw==="check")){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&&
|
|
23
|
+
out.command!=="tui"&&out.command!=="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.
|
|
24
|
+
stopForce){out.logoutForce=true;out.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.
|
|
25
|
+
unknown.push("--project");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.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)
|
|
26
|
+
out.unknown.push("--file");if(out.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.skillConfig!==void 0)out.unknown.push("--config");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&&
|
|
27
|
+
out.command!=="task-loop"&&!isDomainRoute)out.unknown.push("--yes");const acceptsOutput=isDomainRoute||out.command==="whoami"||out.command==="task-loop"&&out.taskLoopAction==="status"||out.command==="task-loop"&&out.taskLoopAction==="skill"&&(out.skillOp==="list"||out.skillOp==="show"||out.skillOp==="check")||out.command==="task-loop"&&out.taskLoopAction==="runner"||out.command==="task-loop"&&out.taskLoopAction==="capacity"&&out.capacityOp==="list"||out.command==="task-loop"&&out.taskLoopAction===
|
|
28
|
+
"trigger"&&(out.triggerOp==="list"||out.triggerOp==="show"||out.triggerOp==="history");if(!acceptsOutput){if(out.output!==void 0)out.unknown.push("--output");if(out.query!==void 0)out.unknown.push("--query")}else if(out.command==="task-loop"&&(out.skillOp==="check"||out.taskLoopAction==="runner"&&out.runnerOp==="remove")&&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.
|
|
29
|
+
push("--refresh");if(out.quiet)out.unknown.push("--quiet")}if(out.command==="api"&&out.refresh){out.unknown.push("--refresh");out.refresh=false}if(out.command==="task-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!==
|
|
30
|
+
"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==="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"||
|
|
31
|
+
out.taskLoopAction==="skill"||out.taskLoopAction==="settings"||out.taskLoopAction==="orientation"&&out.orientationOp!=="show"||out.taskLoopAction==="runner"&&out.runnerOp==="remove"||out.taskLoopAction==="trigger"&&(out.triggerOp==="push"||out.triggerOp==="delete"||out.triggerOp==="release")||out.taskLoopAction==="schedule"&&out.scheduleOp!==void 0&&out.scheduleOp!=="list";if(out.yes&&!yesConfirms)out.unknown.push("--yes");if(out.ais!==void 0)out.unknown.push("--ai");if(out.workspace!==void 0)out.
|
|
32
|
+
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!==void 0)out.unknown.push("--engine");if(out.interval!==void 0)out.unknown.push("--interval");if(out.maxCycles!==
|
|
33
|
+
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("--max-cycles")}if(out.command==="task-loop"&&out.taskLoopAction==="charter"){if(out.charterOp===void 0){out.unknown.
|
|
34
|
+
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);if((out.charterOp==="history"||out.charterOp==="diff")&&out.yes)out.unknown.push("--yes");if(out.charterOp!=="pul\
|
|
35
|
+
l"&&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==="skill"){if(out.skillOp===void 0){out.unknown.push(SKILL_OP_REQUIRED)}else if(out.skillOp===
|
|
36
|
+
"check"){if(out.skillName!==void 0)out.unknown.push("skill check \u306F\u30B9\u30AD\u30EB\u540D\u3092\u53D7\u3051\u4ED8\u3051\u307E\u305B\u3093\uFF08\u30B5\u30FC\u30D0\u306E\u5168\u30B9\u30AD\u30EB\u3092\u691C\u67FB\u3057\u307E\u3059\uFF09");if(out.skillAll)out.unknown.push("--all");if(out.yes)out.unknown.push("--yes")}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.
|
|
37
|
+
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==="pull"?`skill ${out.skillOp} \u306B\u306F\u30B9\u30AD\u30EB\u540D\u304B --all \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044`:
|
|
38
|
+
`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!==void 0){out.unknown.push("--revision")}pushRevisionFlagErrors(out,out.skillOp);if((out.skillOp==="history"||out.skillOp===
|
|
39
|
+
"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.skillOp!=="check"&&out.skillConfig!==void 0)out.unknown.push("--config");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-ru\
|
|
40
|
+
nner");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===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!==
|
|
41
|
+
"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.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===
|
|
42
|
+
"orientation"){if(out.orientationOp===void 0)out.unknown.push(`orientation \u306B\u306F ${ORIENTATION_OPS.join(" / ")} \u306E\u3044\u305A\u308C\u304B\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044`);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");
|
|
43
|
+
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.safe)out.unknown.push("--safe");if(out.daemon)out.unknown.push("--daemon");
|
|
44
|
+
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 / list \u306E\u3044\u305A\u308C\u304B\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044");if(out.charterFile!==void 0)out.unknown.push(
|
|
45
|
+
"--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"&&out.taskLoopAction==="runner"){if(out.
|
|
46
|
+
runnerOp===void 0)out.unknown.push("runner \u306B\u306F list / remove \u306E\u3044\u305A\u308C\u304B\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044");if(out.runnerOp==="remove"&&out.runnerTargetId===void 0){out.unknown.push("runner remove \u306B\u306F runner_id \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044")}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.
|
|
47
|
+
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==="trigger"){const op=out.triggerOp;if(op===void 0)out.unknown.push(`trigger \u306B\u306F ${TRIGGER_OPS.join(" / ")} \u306E\u3044\u305A\u308C\u304B\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044`);
|
|
48
|
+
if((op==="show"||op==="delete"||op==="release")&&out.triggerId===void 0){out.unknown.push(`trigger ${op} \u306B\u306F\u30C8\u30EA\u30AC\u30FCID\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044`)}if(op==="push"&&out.charterFile===void 0)out.unknown.push("trigger push \u306B\u306F --file <\u30D1\u30B9> \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044");if(op!=="push"&&out.charterFile!==void 0)out.unknown.push("--file");if(op==="release"&&out.triggerKey===void 0)out.unknown.push("trigger\
|
|
49
|
+
release \u306B\u306F --key <\u30BF\u30B9\u30AF\u30AD\u30FC> \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044");if(op!=="release"&&op!=="history"&&out.triggerKey!==void 0)out.unknown.push("--key");if(op!=="history"&&out.triggerLimit!==void 0)out.unknown.push("--limit");if(op!=="push"&&op!=="delete"&&out.charterRevision!==void 0)out.unknown.push("--revision");if(out.charterOut!==void 0)out.unknown.push("--out");if(out.safe)out.unknown.push("--safe");if(out.daemon)out.unknown.push("--daemon");
|
|
50
|
+
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==="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 pu\
|
|
51
|
+
ll \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.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===
|
|
52
|
+
"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("--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(
|
|
53
|
+
"--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==="task-loop"&&out.taskLoopAction==="trigger")){if(out.triggerKey!==void 0)out.unknown.push("--key");if(out.triggerLimit!==void 0)out.unknown.push("--limit")}if(out.includeStopped&&!(out.command==="task-loop"&&out.taskLoopAction==="capacity"&&out.capacityOp==="\
|
|
54
|
+
list")){out.unknown.push("--include-stopped")}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.skillConfig!==void 0)out.unknown.push("--config")}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!==
|
|
55
|
+
"plan"){if(out.planEmpty)out.unknown.push("--empty");if(out.planCheck)out.unknown.push("--check")}return out}function isScheduleOp(raw){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 / check \u306E\u3044\u305A\u308C\u304B\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044";function isRevisionAwareOp(raw){
|
|
56
|
+
return raw==="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{TRIGGER_OPS,GLOBAL_FLAGS,quietFromEnv,parseArgv};
|
|
@@ -4,10 +4,10 @@ import{reasonOf,unwrap}from"./chunk-MYBIPHZ7.js";import{apiExit,errorDetail,pick
|
|
|
4
4
|
${e.hint?`${e.hint}
|
|
5
5
|
`:""}`);return EXIT_USAGE}throw e}}function parseRunners(res){const body=unwrap(res,"runners");const raw=body["runners"];if(!Array.isArray(raw))return null;const entries=[];for(const item of raw){const r=item&&typeof item==="object"?item:{};const runnerId=str(r["runner_id"]);if(runnerId==="")return null;entries.push(toEntry(r))}return{entries,summary:{live_count:pickNumber(body,"live_count"),max_runners:pickNumber(body,"max_runners"),heartbeat_timeout:pickNumber(body,"heartbeat_timeout"),hidden_count:pickNumber(
|
|
6
6
|
body,"hidden_count"),removed_count:pickNumber(body,"removed_count"),hide_after_days:pickNumber(body,"hide_after_days")}}}function toEntry(r){const kind=str(r["kind"])||"loop";const state=kind==="loop"?r["is_live"]===true?"live":"stale":r["is_reporting"]===true?"reporting":"stale";return{runner_id:str(r["runner_id"]),kind,state,hostname:str(r["hostname"]),phase:str(r["phase"]),last_seen_at:str(r["last_seen_at"]),last_reported_at:str(r["last_reported_at"]),version:str(r["version"])}}async function listRunners(api,opts,io){
|
|
7
|
-
const{resolveOutputFormat}=await import("./format-
|
|
7
|
+
const{resolveOutputFormat}=await import("./format-X65HXAAU.js");const format=resolveOutputFormat({...opts.output!==void 0?{flag:opts.output}:{},isTty:io.isTty});if(format===null||!LIST_FORMATS.includes(format)){throw new UsageError(`runner list \u306E --output \u306B\u300C${opts.output??""}\u300D\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093`,`\u6307\u5B9A\u3067\u304D\u308B\u306E\u306F ${LIST_FORMATS.join(" / ")} \u3067\u3059`)}const res=await api.request("GET","/runners");if(!res.ok){io.
|
|
8
8
|
err(`\u26D4 \u30E9\u30F3\u30CA\u30FC\u4E00\u89A7\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\uFF08${errorDetail(res)}\uFF09
|
|
9
9
|
`);return apiExit(res)}const parsed=parseRunners(res);if(parsed===null){io.err(`\u26D4 \u30E9\u30F3\u30CA\u30FC\u4E00\u89A7\u3092\u89E3\u91C8\u3067\u304D\u307E\u305B\u3093\uFF08\u5FDC\u7B54\u306E\u5148\u982D: ${res.raw.slice(0,120)}\uFF09
|
|
10
|
-
`);return EXIT_API_SERVER}const{entries,summary}=parsed;const{evaluateQuery}=await import("./query-XEOVFI4D.js");const{renderOutput}=await import("./render-
|
|
10
|
+
`);return EXIT_API_SERVER}const{entries,summary}=parsed;const{evaluateQuery}=await import("./query-XEOVFI4D.js");const{renderOutput}=await import("./render-I6U5PEYR.js");if(format==="json"){const value={...summary,runners:entries};const selected2=opts.query===void 0?value:await evaluateQuery(opts.query,value);const text2=renderOutput(selected2,"json");io.out(text2.endsWith("\n")?text2:`${text2}
|
|
11
11
|
`);return EXIT_OK}io.err(summaryLine(summary));const selected=opts.query===void 0?entries:await evaluateQuery(opts.query,entries);if(opts.query===void 0&&entries.length===0){io.err("\u4E00\u89A7\u306B\u8868\u793A\u3055\u308C\u308B\u767B\u9332\u306F\u3042\u308A\u307E\u305B\u3093\n");return EXIT_OK}const text=renderOutput(selected,format);io.out(text.endsWith("\n")?text:`${text}
|
|
12
12
|
`);if(opts.query===void 0&&entries.some(e=>e.state==="stale")){io.err(`${removeHint(opts)}
|
|
13
13
|
`)}return EXIT_OK}function summaryLine(s){const n=v=>v===null?"?":String(v);const parts=[`\u7A3C\u50CD ${n(s.live_count)} / ${n(s.max_runners)}\uFF08\u6B7B\u6D3B\u3057\u304D\u3044\u5024 ${n(s.heartbeat_timeout)}\u79D2\uFF09`];parts.push(`${n(s.hide_after_days)}\u65E5\u4EE5\u4E0A\u5FDC\u7B54\u306A\u3057\u3067\u975E\u8868\u793A ${n(s.hidden_count)}\u53F0`);if(s.removed_count!==null)parts.push(`\u624B\u52D5\u3067\u5916\u3057\u305F\u767B\u9332 ${s.removed_count}\u53F0`);return`\u30E9\u30F3\u30CA\u30FC: ${parts.
|