@tocca-systems/twp-cli 0.83.0 → 0.84.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/CHANGELOG.public.md +8 -0
  2. package/dist/{agent-loop-W2KS5JJV.js → agent-loop-E5XWZV3V.js} +1 -1
  3. package/dist/{ai-dispatch-CE7RIQL6.js → ai-dispatch-PABSQGQA.js} +2 -2
  4. package/dist/{api-command-KBH7ML2J.js → api-command-PWAWH4NR.js} +2 -2
  5. package/dist/{app-ORQBEJPS.js → app-57NA4OFE.js} +3 -3
  6. package/dist/{auto-update-worker-OIVQGG34.js → auto-update-worker-Q4KASOTO.js} +1 -1
  7. package/dist/{chunk-ZPQZLUYY.js → chunk-4P6BO4NM.js} +1 -1
  8. package/dist/{chunk-22CRY6JR.js → chunk-AKQLBUYJ.js} +10 -9
  9. package/dist/{chunk-7KFX2TPV.js → chunk-AR4FQRII.js} +1 -1
  10. package/dist/{chunk-LDBYJPRD.js → chunk-H6XS5AMQ.js} +5 -5
  11. package/dist/{chunk-7VMPEAAL.js → chunk-HR6DHK6N.js} +1 -1
  12. package/dist/{chunk-VON6ODNL.js → chunk-J5QOE2GM.js} +10 -3
  13. package/dist/{chunk-XNYQH5JI.js → chunk-NWCW3ONW.js} +1 -1
  14. package/dist/{chunk-DRERU42W.js → chunk-O67RD5XL.js} +1 -1
  15. package/dist/{chunk-DELIIGWE.js → chunk-SQBPZREE.js} +7 -6
  16. package/dist/{chunk-JUJSF5ZG.js → chunk-UUN3IO3Z.js} +1 -1
  17. package/dist/{chunk-WMIIFPXT.js → chunk-VJ72Y4TG.js} +1 -1
  18. package/dist/{chunk-4DY3NU53.js → chunk-Z5NBJC77.js} +6 -6
  19. package/dist/{chunk-PO35MCYP.js → chunk-ZPSPSYDD.js} +1 -1
  20. package/dist/cli.js +9 -9
  21. package/dist/{commands-XD25HOMA.js → commands-7GDO4YEQ.js} +1 -1
  22. package/dist/{commands-X2FS3DN7.js → commands-SYSUH2RP.js} +8 -8
  23. package/dist/{contract-73RVPBYM.js → contract-5AU5B4NN.js} +1 -1
  24. package/dist/{estimate-NLKTWCYI.js → estimate-Z3ANB4WK.js} +1 -1
  25. package/dist/{invoice-BXSI6SMA.js → invoice-YVUMRHY2.js} +1 -1
  26. package/dist/{leave-W4GHXMSE.js → leave-NVOZB7VQ.js} +1 -1
  27. package/dist/{media-CTIY3IAB.js → media-TDXLP4T6.js} +1 -1
  28. package/dist/{oneshot-R7BDYFEN.js → oneshot-GTOK2ZPQ.js} +2 -2
  29. package/dist/{plan-submit-AZKVMJKV.js → plan-submit-DQRUUZTK.js} +1 -1
  30. package/dist/{registry-7ETH2NOG.js → registry-WXXPS55F.js} +1 -1
  31. package/dist/{render-4SBLHU4J.js → render-2QURVC5V.js} +1 -1
  32. package/dist/{run-OKRSGCIR.js → run-4KFKWIKY.js} +1 -1
  33. package/dist/{runner-command-SRPMAC5S.js → runner-command-FW3WJB42.js} +1 -1
  34. package/dist/{sales-ai-review-L5VW3DU3.js → sales-ai-review-KJICZNUR.js} +2 -2
  35. package/dist/{skill-manage-command-UOWZCF6R.js → skill-manage-command-TFGMSCT4.js} +2 -2
  36. package/dist/{status-command-C42CVQ3Q.js → status-command-PXE4WVOV.js} +2 -2
  37. package/dist/{update-XUIOLVEL.js → update-6E4IPTUE.js} +1 -1
  38. package/dist/{workflow-4NC2C4TX.js → workflow-2FODUREO.js} +1 -1
  39. package/package.json +1 -1
@@ -11,6 +11,14 @@
11
11
  `CHANGELOG.md` に残してあります。顧客向けの履歴は public 公開以降を対象とします。
12
12
  -->
13
13
 
14
+ ## 0.84.0
15
+
16
+ AIチェックの結果表示(`ai-review get`)で、`acknowledged` 列を `referenced_reason` 列に置き換えました。過去に承認された同じ観点の判断が参考として添えられている行が `true` になります(警告そのものは消えません)。
17
+
18
+ OpenAI のモデル(GPT-6 Astra / GPT-6.1 Sol / GPT-6 Luna)を `/model` で選べるようになりました(リレー側の提供開始後に一覧へ表示されます)。Claude から OpenAI のモデルへ切り替えるときは、確認のうえ新しい会話から始まります。
19
+
20
+ `--output json` で、項目名(キー)に含まれるトークンや `?token=…` が伏字にならずに表示されることがあった問題を修正しました。また、`\` を含む秘密の値が途中までしか伏字にならないことがあった問題を修正しました。
21
+
14
22
  ## 0.83.0
15
23
 
16
24
  ループの「本番反映」系スキルに対する特別な後処理が、スキルの名前ではなく設定(`operations.release_hooks`)で有効になるようになりました。設定していない環境では、どのスキル名でも特別扱いされません。
@@ -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-7VMPEAAL.js";import"./chunk-JUJSF5ZG.js";import{loadLocalConfig}from"./chunk-Y24FMUYU.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-O52RKZCC.js";import"./chunk-LDBYJPRD.js";import{PRIVATE_PROJECT_PREFIX,
3
+ import{stepToItem}from"./chunk-HR6DHK6N.js";import"./chunk-UUN3IO3Z.js";import{loadLocalConfig}from"./chunk-Y24FMUYU.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-O52RKZCC.js";import"./chunk-H6XS5AMQ.js";import{PRIVATE_PROJECT_PREFIX,
4
4
  PRIVATE_PROJECT_REF,isPrivateProjectRef}from"./chunk-RMFLTSOV.js";import{LIST_FLAGS,LIST_PAGING_HELP,envelopePaging,nonEmpty,positiveInteger}from"./chunk-MI6HVYR2.js";import"./chunk-II5RVJQN.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";import"./chunk-5WGOHFAS.js";
5
5
  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\
@@ -1,7 +1,7 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{failureHint,isAuthError,isCliFatalText,isRateLimited,isServerAiType,isUntrusted,maxTurnsReached,rateLimitWaitSeconds,tailForScan}from"./chunk-MBPJV745.js";import{expandServerSkills,prepareSkillOverlay}from"./chunk-QGRBZ2C2.js";import{detectAiClis}from"./chunk-5SONMN6K.js";import"./chunk-MYBIPHZ7.js";import"./chunk-A4LFG7MW.js";import"./chunk-VRBI2NPI.js";import{ClaudeStreamRenderer}from"./chunk-JUJSF5ZG.js";import{DEFAULT_CLAUDE_LAUNCHER,activeSlotPath,
4
- detectClaudeAutoSwitch,isClaudeAi,isUsableModelId,modelFitsRoute,resolveSpawnTarget,usesBedrock,wrapWithAutoSwitch}from"./chunk-FABDZBDZ.js";import"./chunk-6CS5L24D.js";import{isForceOnly,killProcessTree,system32}from"./chunk-N2UVRM3Z.js";import"./chunk-O52RKZCC.js";import"./chunk-LDBYJPRD.js";import"./chunk-RMFLTSOV.js";import"./chunk-VFPY2A23.js";import{findExecutable,isWindowsDriveAbsolute}from"./chunk-PMOUHEJQ.js";import"./chunk-J7QYPKVK.js";
3
+ import{failureHint,isAuthError,isCliFatalText,isRateLimited,isServerAiType,isUntrusted,maxTurnsReached,rateLimitWaitSeconds,tailForScan}from"./chunk-MBPJV745.js";import{expandServerSkills,prepareSkillOverlay}from"./chunk-QGRBZ2C2.js";import{detectAiClis}from"./chunk-5SONMN6K.js";import"./chunk-MYBIPHZ7.js";import"./chunk-A4LFG7MW.js";import"./chunk-VRBI2NPI.js";import{ClaudeStreamRenderer}from"./chunk-UUN3IO3Z.js";import{DEFAULT_CLAUDE_LAUNCHER,activeSlotPath,
4
+ detectClaudeAutoSwitch,isClaudeAi,isUsableModelId,modelFitsRoute,resolveSpawnTarget,usesBedrock,wrapWithAutoSwitch}from"./chunk-FABDZBDZ.js";import"./chunk-6CS5L24D.js";import{isForceOnly,killProcessTree,system32}from"./chunk-N2UVRM3Z.js";import"./chunk-O52RKZCC.js";import"./chunk-H6XS5AMQ.js";import"./chunk-RMFLTSOV.js";import"./chunk-VFPY2A23.js";import{findExecutable,isWindowsDriveAbsolute}from"./chunk-PMOUHEJQ.js";import"./chunk-J7QYPKVK.js";
5
5
  import"./chunk-5WGOHFAS.js";import{stripTerminalControls}from"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";import{spawnSync}from"child_process";import fs2 from"fs";import path2 from"path";import{spawn}from"child_process";import fs from"fs";import path from"path";var DEFAULT_AI_TIMING={abortGraceMs:5e3,abortReapMs:2e3,pollIntervalMs:5e3};function resolveTiming(over){return{abortGraceMs:over?.abortGraceMs??DEFAULT_AI_TIMING.abortGraceMs,abortReapMs:over?.abortReapMs??DEFAULT_AI_TIMING.abortReapMs,pollIntervalMs:over?.pollIntervalMs??DEFAULT_AI_TIMING.pollIntervalMs}}var MAX_RETAINED_BYTES=4*1024*1024;function closeStream(stream){return new Promise(resolve=>{if(stream===null)return resolve();stream.once("error",()=>resolve());stream.end(()=>resolve())})}function buildArgs(req,cfg,env,workspace){
6
6
  const warnings=[];const requested=(req.model??"").trim();const usable=requested!==""&&isUsableModelId(requested);if(requested!==""&&!usable){warnings.push(`ai_model '${requested}' \u306F\u4F7F\u3048\u306A\u3044\u5F62\u3067\u3059 \u2192 \u30AB\u30C6\u30B4\u30EA\u65E2\u5B9A\u306E\u30E2\u30C7\u30EB\u3092\u4F7F\u3044\u307E\u3059`)}const fitsRoute=!usable||!isClaudeAi(req.ai)||modelFitsRoute(requested,env);if(usable&&!fitsRoute){warnings.push(`ai_model '${requested}' \u306F\u73FE\u5728\u306E\u5B9F\u884C\u7D4C\u8DEF\u3067\u306F\u89E3\u6C7A\u3067\u304D\u307E\u305B\u3093\uFF08\u3053\u306E\u6A5F\u4F53\u306F ${usesBedrock(
7
7
  env)?"Bedrock":"Anthropic \u76F4"}\uFF09 \u2192 \u30AB\u30C6\u30B4\u30EA\u65E2\u5B9A\u306E\u30E2\u30C7\u30EB\u3092\u4F7F\u3044\u307E\u3059`)}const fallback=cfg.modelFor(req.ai,req.category,env);const safeFallback=fallback===""||!isClaudeAi(req.ai)||modelFitsRoute(fallback,env)?fallback:"";if(fallback!==""&&safeFallback===""){warnings.push(`CLAUDE_MODEL '${fallback}' \u3082\u73FE\u5728\u306E\u5B9F\u884C\u7D4C\u8DEF\u3067\u306F\u89E3\u6C7A\u3067\u304D\u307E\u305B\u3093 \u2192 \u30E2\u30C7\u30EB\u3092\u6307\u5B9A\u3057\u307E\u305B\u3093`)}
@@ -1,7 +1,7 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{CommandModelMissingError,MAX_REPORTED_VIOLATIONS,loadCommandModelDomain,loadCommandModelRoutes,validateBody,validateQuery}from"./chunk-NZ7WI4RZ.js";import{NO_REDACT_FLAG,NO_REDACT_NOTICE,exitCodeFor,fetchAllPages,reportError}from"./chunk-WMIIFPXT.js";import"./chunk-4DY3NU53.js";import{renderOutput}from"./chunk-PO35MCYP.js";import"./chunk-Q3B65OFC.js";import{evaluateQuery}from"./chunk-GFLGXGWE.js";import{describeWaitResult,parseWaitOptions,waitUntilTerminal}from"./chunk-WVCEKC7V.js";
4
- import{redactSecretValues,redactSecrets,withDebug}from"./chunk-LDBYJPRD.js";import{parseOperationArgs,repeatedValues}from"./chunk-RX5HWI4L.js";import{readBody}from"./chunk-6LSQCOCJ.js";import"./chunk-RSSPNFSK.js";import"./chunk-HVZUXLQ4.js";import{ApiError,TwpApiClient,appendQuery}from"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";import{DEFAULT_MAX_ITEMS,DEFAULT_MAX_PAGES,envelopePaging,isPageNumberEnvelope,pageRangeNotes,positiveInteger,readEnvelopeCursor,
3
+ import{CommandModelMissingError,MAX_REPORTED_VIOLATIONS,loadCommandModelDomain,loadCommandModelRoutes,validateBody,validateQuery}from"./chunk-NZ7WI4RZ.js";import{NO_REDACT_FLAG,NO_REDACT_NOTICE,exitCodeFor,fetchAllPages,reportError}from"./chunk-VJ72Y4TG.js";import"./chunk-Z5NBJC77.js";import{renderOutput}from"./chunk-ZPSPSYDD.js";import"./chunk-Q3B65OFC.js";import{evaluateQuery}from"./chunk-GFLGXGWE.js";import{describeWaitResult,parseWaitOptions,waitUntilTerminal}from"./chunk-WVCEKC7V.js";
4
+ import{redactSecretValues,redactSecrets,withDebug}from"./chunk-H6XS5AMQ.js";import{parseOperationArgs,repeatedValues}from"./chunk-RX5HWI4L.js";import{readBody}from"./chunk-6LSQCOCJ.js";import"./chunk-RSSPNFSK.js";import"./chunk-HVZUXLQ4.js";import{ApiError,TwpApiClient,appendQuery}from"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";import{DEFAULT_MAX_ITEMS,DEFAULT_MAX_PAGES,envelopePaging,isPageNumberEnvelope,pageRangeNotes,positiveInteger,readEnvelopeCursor,
5
5
  readPageNumberCursor,shellQuote}from"./chunk-MI6HVYR2.js";import"./chunk-II5RVJQN.js";import"./chunk-3ZRMMBP5.js";import{ApiResponseError,EXIT_OK,EXIT_WAIT_TIMEOUT,NetworkError,UsageError}from"./chunk-VFPY2A23.js";import{GLOBAL_OPTIONS_HELP}from"./chunk-PECIBNFD.js";import{AuthSession,NotLoggedInError,SessionExpiredError,loadCredentials}from"./chunk-XNLIEUAW.js";import{httpFetch}from"./chunk-J7QYPKVK.js";import{effectiveApiUrl,resolveConfiguredOutput,resolveProfile}from"./chunk-EDF4U5BT.js";
6
6
  import"./chunk-RZVI6PMW.js";import{HELP_TOKEN}from"./chunk-MLRBDF44.js";import"./chunk-QQRJLH6B.js";import{OUTPUT_FORMATS,resolveOutputFormat}from"./chunk-74BPZOKU.js";import"./chunk-UREA4ZIG.js";import{stripTerminalControls}from"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var MIN_SEGMENT_CHARS=3;var parsedCache=new WeakMap;function splitSegments(path){return path.split("/").filter(segment=>segment!=="")}function parseRoutes(routes){const cached=parsedCache.get(routes);if(cached!==void 0)return cached;const parsed=[];for(const[key,domain]of Object.entries(routes.routes)){const space=key.indexOf(" ");if(space<=0)continue;const template=key.slice(space+1);parsed.push({method:key.slice(0,space),template,domain,segments:splitSegments(template).map(segment=>/^\{[^/{}]+\}$/.
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.
@@ -1,7 +1,7 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{RESIDENT_TOKEN_CAP,activateModeFiles,activatePermissionSettings,buildResidentSet,buildSystemPrompt,createAuditLogger,createTwpToolkit,currentBranch,describeAuditLog,describeToolCatalog,displayCwd,executeTool,findProjectTwpSubdir,localTools,lstatOrNull,parseFrontMatter,parseRule,persistProjectAllow,projectPermissionsPath,projectRootFor,readFileTool,residentInputs,resolveGitExecutable,runTurn,secretReason}from"./chunk-DRERU42W.js";import"./chunk-NZ7WI4RZ.js";import{buildDiffLines,
4
- diffStat}from"./chunk-VRBI2NPI.js";import{require_fuzzysort}from"./chunk-DIMZRTLE.js";import"./chunk-N2UVRM3Z.js";import"./chunk-LDBYJPRD.js";import"./chunk-RSSPNFSK.js";import"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";import"./chunk-II5RVJQN.js";import"./chunk-VFPY2A23.js";import{RelayError,builtinCatalog,classifyModelSwitch,createRuntime,loadCachedCatalog,modelLabel,pickModel,specFor,toModelInfos}from"./chunk-VON6ODNL.js";
3
+ import{RESIDENT_TOKEN_CAP,activateModeFiles,activatePermissionSettings,buildResidentSet,buildSystemPrompt,createAuditLogger,createTwpToolkit,currentBranch,describeAuditLog,describeToolCatalog,displayCwd,executeTool,findProjectTwpSubdir,localTools,lstatOrNull,parseFrontMatter,parseRule,persistProjectAllow,projectPermissionsPath,projectRootFor,readFileTool,residentInputs,resolveGitExecutable,runTurn,secretReason}from"./chunk-O67RD5XL.js";import"./chunk-NZ7WI4RZ.js";import{buildDiffLines,
4
+ diffStat}from"./chunk-VRBI2NPI.js";import{require_fuzzysort}from"./chunk-DIMZRTLE.js";import"./chunk-N2UVRM3Z.js";import"./chunk-H6XS5AMQ.js";import"./chunk-RSSPNFSK.js";import"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";import"./chunk-II5RVJQN.js";import"./chunk-VFPY2A23.js";import{RelayError,builtinCatalog,classifyModelSwitch,createRuntime,loadCachedCatalog,modelLabel,pickModel,specFor,toModelInfos}from"./chunk-J5QOE2GM.js";
5
5
  import"./chunk-D233KKXW.js";import"./chunk-PMOUHEJQ.js";import"./chunk-XNLIEUAW.js";import{proxyDiagnostics}from"./chunk-J7QYPKVK.js";import{checkMinSupportedVersion,isBelowMinSupported,minSupportedBlockMessage}from"./chunk-DXXFUNYN.js";import"./chunk-EDF4U5BT.js";import{configReadDirs,twpHomeDir}from"./chunk-RZVI6PMW.js";import{parseArgv}from"./chunk-IVFSEXD3.js";import{applyPermissionMode,checkPermission,describePermissionMode,getMode,isModeId,modeSource,
6
6
  nextMode}from"./chunk-2LOT54OO.js";import"./chunk-MLRBDF44.js";import"./chunk-VERYHAWV.js";import"./chunk-QQRJLH6B.js";import{isFullWidth,isWide,stringWidth,stripAnsi}from"./chunk-UREA4ZIG.js";import{stripTerminalControls}from"./chunk-NHYMHCAT.js";import{__commonJS,__export,__require,__toESM}from"./chunk-VSJBJXZO.js";var require_react_production=__commonJS({"node_modules/react/cjs/react.production.js"(exports){"use strict";var REACT_ELEMENT_TYPE=Symbol.for("react.transitional.element");var REACT_PORTAL_TYPE=Symbol.for("react.portal");var REACT_FRAGMENT_TYPE=Symbol.for("react.fragment");var REACT_STRICT_MODE_TYPE=Symbol.for("react.strict_mode");var REACT_PROFILER_TYPE=Symbol.for("react.profiler");var REACT_CONSUMER_TYPE=Symbol.for("react.consumer");var REACT_CONTEXT_TYPE=Symbol.for("react.context");var REACT_FORWARD_REF_TYPE=Symbol.
7
7
  for("react.forward_ref");var REACT_SUSPENSE_TYPE=Symbol.for("react.suspense");var REACT_MEMO_TYPE=Symbol.for("react.memo");var REACT_LAZY_TYPE=Symbol.for("react.lazy");var REACT_ACTIVITY_TYPE=Symbol.for("react.activity");var REACT_VIEW_TRANSITION_TYPE=Symbol.for("react.view_transition");var MAYBE_ITERATOR_SYMBOL=Symbol.iterator;function getIteratorFn(maybeIterable){if(null===maybeIterable||"object"!==typeof maybeIterable)return null;maybeIterable=MAYBE_ITERATOR_SYMBOL&&maybeIterable[MAYBE_ITERATOR_SYMBOL]||
@@ -1212,7 +1212,7 @@ cwd()){const listed=await gitListFiles(cwd2);const raw=listed??await walkFiles(c
1212
1212
  1;const after=/^[^\s]*/.exec(text.slice(cursor))?.[0]??"";return{query,start,end:cursor+after.length}}var TWP_SLASH_ROUTES={"/tasks":{domain:"task",operation:"list"},"/task":{domain:"task",operation:"get"},"/projects":{domain:"project",operation:"list"}};function isTwpSlashCommand(name){return Object.hasOwn(TWP_SLASH_ROUTES,name)}async function runTwpSlashCommand(name,args,deps){const route=TWP_SLASH_ROUTES[name];if(!Object.hasOwn(TWP_SLASH_ROUTES,name)||route===void 0){return{code:2,out:"",err:`\u4E0D\u660E\u306A\u30B3\u30DE\u30F3\u30C9: ${name}
1213
1213
  `}}const parsed=parseArgv([route.domain,route.operation,...args]);if(parsed.command!=="domain"||parsed.domain!==route.domain){return{code:2,out:"",err:`${name}: \u3053\u306E\u5F15\u6570\u306F\u4F7F\u3048\u307E\u305B\u3093\uFF08${args.join(" ")}\uFF09
1214
1214
  `}}if(parsed.unknown.length>0){return{code:2,out:"",err:`\u4E0D\u660E\u306A\u5F15\u6570: ${parsed.unknown.join(" ")}
1215
- `}}let out="";let err="";const io={out:text=>void(out+=text),err:text=>void(err+=text),isTty:true};const globals={profile:parsed.profile??deps.profile,...parsed.output!==void 0?{output:parsed.output}:{},...parsed.query!==void 0?{query:parsed.query}:{},dryRun:parsed.dryRun,debug:parsed.debug,yes:parsed.yes,refresh:parsed.refresh};const{runDomain}=await import("./run-OKRSGCIR.js");try{const code=await runDomain({domain:route.domain,...parsed.operation!==void 0?{operation:parsed.operation}:
1215
+ `}}let out="";let err="";const io={out:text=>void(out+=text),err:text=>void(err+=text),isTty:true};const globals={profile:parsed.profile??deps.profile,...parsed.output!==void 0?{output:parsed.output}:{},...parsed.query!==void 0?{query:parsed.query}:{},dryRun:parsed.dryRun,debug:parsed.debug,yes:parsed.yes,refresh:parsed.refresh};const{runDomain}=await import("./run-4KFKWIKY.js");try{const code=await runDomain({domain:route.domain,...parsed.operation!==void 0?{operation:parsed.operation}:
1216
1216
  {},argv:parsed.domainArgv,help:parsed.domainHelp,globals,version:deps.version,io,...deps.fetchImpl!==void 0?{fetchImpl:deps.fetchImpl}:{}});return{code,out,err}}catch(e){return{code:1,out,err:`${err}${e.message}
1217
1217
  `}}}var GIT_LOG_OUTPUT=["9f3c1a2 feat(ui): \u4E00\u89A7\u306E\u30D5\u30A3\u30EB\u30BF\u3092 URL \u30AF\u30A8\u30EA\u3068\u540C\u671F\u3059\u308B","4b8e0d7 fix(ui): \u4EEE\u60F3\u30B9\u30AF\u30ED\u30FC\u30EB\u306E\u884C\u9AD8\u3055\u3092\u5B9F\u6E2C\u5024\u306B\u5408\u308F\u305B\u308B","c15a99e refactor(api): \u4E00\u89A7\u53D6\u5F97\u306E\u30DA\u30FC\u30B8\u30F3\u30B0\u51E6\u7406\u3092\u5171\u901A\u5316\u3059\u308B","2d70f4b test: \u4E00\u89A7\u30D5\u30A3\u30EB\u30BF\u306E\u56DE\u5E30\u30C6\u30B9\u30C8\u3092\u8FFD\u52A0\u3059\u308B",
1218
1218
  "a6e2b38 fix(api): \u7A7A\u306E\u691C\u7D22\u6761\u4EF6\u3067\u5168\u4EF6\u8FD4\u3089\u306A\u3044\u3088\u3046\u306B\u3059\u308B","7c40d51 chore(deps): \u958B\u767A\u4F9D\u5B58\u3092\u6700\u65B0\u3078\u66F4\u65B0\u3059\u308B","e83b1c6 docs: \u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u624B\u9806\u306B Node 22 \u306E\u524D\u63D0\u3092\u8FFD\u8A18\u3059\u308B","b91f7a4 fix(ui): \u30E2\u30FC\u30C0\u30EB\u306E\u91CD\u306A\u308A\u9806\u3092\u6307\u5B9A\u3059\u308B","5a2c8e0 perf(api): \u4E00\u89A7\u306E N+1 \u3092\u89E3\u6D88\u3059\u308B",
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{fetchLatestVersion,isBehindLatest,resolveNpmCommand}from"./chunk-7KFX2TPV.js";import"./chunk-VON6ODNL.js";import"./chunk-D233KKXW.js";import"./chunk-PMOUHEJQ.js";import"./chunk-XNLIEUAW.js";import"./chunk-J7QYPKVK.js";import{PARENT_PID_ENV,WORKER_ENV,autoUpdateDisabledReason,classifyInstall,isCheckDue,listRegisteredPids,lockFilePath,readUpdateState,resolveCliPath,runDirPath,writeUpdateState}from"./chunk-CH6QU76P.js";import{PACKAGE_NAME,parseVersionCore}from"./chunk-DXXFUNYN.js";
3
+ import{fetchLatestVersion,isBehindLatest,resolveNpmCommand}from"./chunk-AR4FQRII.js";import"./chunk-J5QOE2GM.js";import"./chunk-D233KKXW.js";import"./chunk-PMOUHEJQ.js";import"./chunk-XNLIEUAW.js";import"./chunk-J7QYPKVK.js";import{PARENT_PID_ENV,WORKER_ENV,autoUpdateDisabledReason,classifyInstall,isCheckDue,listRegisteredPids,lockFilePath,readUpdateState,resolveCliPath,runDirPath,writeUpdateState}from"./chunk-CH6QU76P.js";import{PACKAGE_NAME,parseVersionCore}from"./chunk-DXXFUNYN.js";
4
4
  import"./chunk-5WGOHFAS.js";import"./chunk-EDF4U5BT.js";import"./chunk-RZVI6PMW.js";import{stripTerminalControls}from"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";import{execFile}from"child_process";import fs from"fs";import path from"path";var PARENT_WAIT_MAX_MS=12*60*60*1e3;var PARENT_POLL_MS=1e3;var LOCK_STALE_MS=PARENT_WAIT_MAX_MS+60*60*1e3;var INSTALL_TIMEOUT_MS=0;function childEnv(env){const next={...env};delete next[WORKER_ENV];delete next[PARENT_PID_ENV];return next}function createNpmRunner(env=process.env){const cmd=resolveNpmCommand({env});if(cmd===null)return null;return(args,timeoutMs)=>new Promise(resolve=>{execFile(cmd.file,[...cmd.prefix,...args],{timeout:timeoutMs,windowsHide:true,maxBuffer:8*1024*1024,cwd:path.dirname(lockFilePath(env)),env:childEnv(env)},(error,stdout,stderr)=>{if(error===null){resolve({ok:true,stdout:String(stdout),stderr:String(
5
5
  stderr)});return}const e=error;resolve({ok:false,stdout:String(stdout??""),stderr:String(stderr??""),...e.killed?{error:"\u30BF\u30A4\u30E0\u30A2\u30A6\u30C8\u3057\u307E\u3057\u305F"}:typeof e.code==="string"?{error:e.code}:{}})})})}function summarizeNpmFailure(result){const text=`${result.stderr}
6
6
  ${result.stdout}`;const code=/npm (?:ERR!|error) code (\S+)/.exec(text)?.[1]??result.error;let reason;if(code==="EACCES"||code==="EPERM"){reason=`\u30B0\u30ED\u30FC\u30D0\u30EB\u306E\u5C0E\u5165\u5148\u306B\u66F8\u304D\u8FBC\u3080\u6A29\u9650\u304C\u3042\u308A\u307E\u305B\u3093\uFF08${code}\uFF09`}else if(code!==void 0&&/^(ENOTFOUND|ETIMEDOUT|ECONNREFUSED|ECONNRESET|EAI_AGAIN|ENETUNREACH)$/.test(code)){reason=`npm registry \u306B\u63A5\u7D9A\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08${code}\
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{placeholderTaskKey,stepToItem}from"./chunk-7VMPEAAL.js";import{redactLoopOutput}from"./chunk-JUJSF5ZG.js";import{localDate}from"./chunk-Y24FMUYU.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-O52RKZCC.js";import{isTaskKey}from"./chunk-II5RVJQN.js";import{createHash,randomBytes}from"crypto";import fs2 from"fs";import path2 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.
3
+ import{placeholderTaskKey,stepToItem}from"./chunk-HR6DHK6N.js";import{redactLoopOutput}from"./chunk-UUN3IO3Z.js";import{localDate}from"./chunk-Y24FMUYU.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-O52RKZCC.js";import{isTaskKey}from"./chunk-II5RVJQN.js";import{createHash,randomBytes}from"crypto";import fs2 from"fs";import path2 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}`}import fs from"fs";import path from"path";async function createItem(api,body){const res=await api.create(redactItemBody(body));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 redactItemBody(body){const out={...body};for(const key of["prompt","label"]){if(typeof out[key]==="string")
6
6
  out[key]=redactLoopOutput(out[key])}return out}function reorderSucceeded(targetId,json){if(pick(json,"result")===true)return true;const raw=Array.isArray(json)?json:pick(json,"items");if(!Array.isArray(raw)||raw.length===0)return false;const items=raw;const orderOf=it=>typeof it.sort_order==="number"?it.sort_order:Number.POSITIVE_INFINITY;const hit=items.find(it=>(it.item_id??"")===targetId);if(!hit)return false;return orderOf(hit)===Math.min(...items.map(orderOf))}function queueContainsKey(items,key){
@@ -1,18 +1,18 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{CRITERION_RE,checkCounts,checksOf,envelope,reasonsMap,reviewOf,withoutResult}from"./chunk-DELIIGWE.js";import{readBody}from"./chunk-6LSQCOCJ.js";import{WORKFLOWS_PATH}from"./chunk-RSSPNFSK.js";import{UUID_RE,isSafePathSegment}from"./chunk-HVZUXLQ4.js";import{LIST_FLAGS,LIST_PAGING_HELP,envelopePaging,nonEmpty,positiveInteger}from"./chunk-MI6HVYR2.js";import{requireResolved,singleRef,withResolved}from"./chunk-PS5QFKHB.js";import{acknowledgement,isRecord,
4
- pick}from"./chunk-3ZRMMBP5.js";import{ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";var INSTANCES_PATH=`${WORKFLOWS_PATH}/instances`;var COMMENT_MAX_CHARS=2e3;var IN_FLIGHT=new Set(["pending","processing"]);var GET_USAGE="twp workflow ai-review get <\u7533\u8ACBID>";var UPDATE_USAGE="twp workflow ai-review-comment update <\u6307\u6458ID> --instance <\u7533\u8ACBID> (--text <\u672C\u6587> | --text-file <\u30D1\u30B9>)";var DELETE_USAGE="twp workflow ai-review-comment delete <\u6307\u6458ID> --instance <\u7533\u8ACBID> --yes";function instanceUuid(raw,usage,what){const id=raw?.trim()??
3
+ import{CRITERION_RE,checkCounts,checksOf,envelope,hasReferencedReason,reasonsMap,reviewOf,withoutResult}from"./chunk-SQBPZREE.js";import{readBody}from"./chunk-6LSQCOCJ.js";import{WORKFLOWS_PATH}from"./chunk-RSSPNFSK.js";import{UUID_RE,isSafePathSegment}from"./chunk-HVZUXLQ4.js";import{LIST_FLAGS,LIST_PAGING_HELP,envelopePaging,nonEmpty,positiveInteger}from"./chunk-MI6HVYR2.js";import{requireResolved,singleRef,withResolved}from"./chunk-PS5QFKHB.js";import{acknowledgement,
4
+ isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";var INSTANCES_PATH=`${WORKFLOWS_PATH}/instances`;var COMMENT_MAX_CHARS=2e3;var IN_FLIGHT=new Set(["pending","processing"]);var GET_USAGE="twp workflow ai-review get <\u7533\u8ACBID>";var UPDATE_USAGE="twp workflow ai-review-comment update <\u6307\u6458ID> --instance <\u7533\u8ACBID> (--text <\u672C\u6587> | --text-file <\u30D1\u30B9>)";var DELETE_USAGE="twp workflow ai-review-comment delete <\u6307\u6458ID> --instance <\u7533\u8ACBID> --yes";function instanceUuid(raw,usage,what){const id=raw?.trim()??
5
5
  "";if(id==="")throw new UsageError(`\u7533\u8ACBID \u3092${what}\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044`,usage);if(!UUID_RE.test(id))throw new UsageError(`\u7533\u8ACBID \u306F UUID \u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044: ${id}`,`${usage}
6
6
  \u7533\u8ACBID \u306F twp workflow approval pending \u306E id \u5217\u3067\u3059\u3002`);return id}function workflowReviewPath(instanceId){return`${INSTANCES_PATH}/${encodeURIComponent(instanceId)}/ai-review`}function reviewTarget(input){if(input.args.length>1)throw new UsageError(`\u4F59\u5206\u306A\u5F15\u6570\u304C\u3042\u308A\u307E\u3059: ${input.args.slice(1).join(" ")}`,GET_USAGE);return workflowReviewPath(instanceUuid(input.args[0],GET_USAGE,"\u4F4D\u7F6E\u5F15\u6570"))}function commentTarget(input,usage){
7
7
  if(input.args.length>1)throw new UsageError(`\u4F59\u5206\u306A\u5F15\u6570\u304C\u3042\u308A\u307E\u3059: ${input.args.slice(1).join(" ")}\uFF08\u7533\u8ACB\u306F --instance \u3067\u6E21\u3057\u307E\u3059\uFF09`,usage);const criterion=input.args[0]?.trim()??"";if(criterion==="")throw new UsageError("\u6307\u6458\u306E ID\uFF08criterion_id\uFF09\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",`${usage}
8
8
  twp workflow ai-review get <\u7533\u8ACBID> \u306E criterion_id \u5217\u306E\u5024\u3067\u3059\u3002`);if(!CRITERION_RE.test(criterion)||/^\.+$/.test(criterion)){throw new UsageError(`\u6307\u6458\u306E ID \u306F\u82F1\u6570\u5B57\u3068 _ . : - \u3060\u3051\u30FB128 \u6587\u5B57\u307E\u3067\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044: ${criterion}`,usage)}const reviewPath=workflowReviewPath(instanceUuid(input.flags.get("--instance"),usage," --instance "));return{reviewPath,commentPath:`${reviewPath}\
9
- /reasons/${encodeURIComponent(criterion)}/approver-comment`,criterion}}var WHAT="\u7533\u8ACB\u306EAI\u30C1\u30A7\u30C3\u30AF";var CHECK_COLUMNS=["criterion_id","label","severity","acknowledged","reason_judgment","reason","approver_comment","message"];function checkRows(body){const data=envelope(body,WHAT);const reasons=reasonsMap(data);return checksOf(reviewOf(data,WHAT)).map(check=>{const criterion=typeof check["criterion_id"]==="string"?check["criterion_id"]:null;const reason=criterion!==null?
10
- reasons[criterion]:void 0;const field=key=>isRecord(reason)?reason[key]??null:null;return{...pick(check,["criterion_id","label","severity"]),acknowledged:check["acknowledged"]===true,reason_judgment:field("judgment"),reason:field("reason"),approver_comment:field("approver_comment"),message:check["message"]??null}})}function reviewRaw(body){const data=envelope(body,WHAT);reviewOf(data,WHAT);return withoutResult(data)}function getNotes(body){const data=envelope(body,WHAT);const review=reviewOf(data,
11
- WHAT);const notes=[];if(review===null){notes.push("\u3053\u306E\u7533\u8ACB\u306B\u306F AI\u30C1\u30A7\u30C3\u30AF\u306E\u7D50\u679C\u304C\u3042\u308A\u307E\u305B\u3093\uFF08\u5BFE\u8C61\u306F\u53D6\u5F15\uFF1D\u898B\u7A4D\u30FB\u8ACB\u6C42\u30FB\u53D6\u5F15\u5951\u7D04\u306E\u627F\u8A8D\u7533\u8ACB\u3060\u3051\u3067\u3001\u63D0\u51FA\u6642\u306B\u975E\u540C\u671F\u3067\u4F5C\u3089\u308C\u307E\u3059\uFF09")}else{const status=String(review["status"]);if(IN_FLIGHT.has(status))notes.push(`\u751F\u6210\u4E2D\u3067\u3059\uFF08sta\
12
- tus=${status}\uFF09\u3002\u6642\u9593\u3092\u7F6E\u3044\u3066\u540C\u3058\u30B3\u30DE\u30F3\u30C9\u3067\u78BA\u304B\u3081\u3066\u304F\u3060\u3055\u3044`);if(status==="failed")notes.push("\u751F\u6210\u306B\u5931\u6557\u3057\u3066\u3044\u307E\u3059\uFF08status=failed\uFF09\u3002\u627F\u8A8D\u753B\u9762\u306B\u3082\u7D50\u679C\u306F\u51FA\u307E\u305B\u3093");if(status==="completed"){if(typeof review["summary"]==="string"&&review["summary"]!=="")notes.push(`\u8981\u7D04: ${review["summary"]}`);const overall=isRecord(
13
- review["overall"])?review["overall"]:void 0;if(overall!==void 0&&typeof overall["verdict_label"]==="string"){const message=typeof overall["message"]==="string"&&overall["message"]!==""?`\uFF08${overall["message"]}\uFF09`:"";notes.push(`\u7DCF\u5408\u6240\u898B: ${overall["verdict_label"]}${message}`);const recommendations=Array.isArray(overall["recommendations"])?overall["recommendations"]:[];for(const item of recommendations)if(typeof item==="string")notes.push(` \u78BA\u8A8D\u3092\u63A8\u5968\u3059\u308B\u70B9: ${item}`)}
14
- notes.push(`${checkCounts(review)}\u3002\u751F\u6210\u65E5\u6642 ${String(review["generated_at"]??"\u4E0D\u660E")}`)}}const reasons=Object.values(reasonsMap(data)).filter(isRecord);if(reasons.length>0){const commented=reasons.filter(reason=>typeof reason["approver_comment"]==="string"&&reason["approver_comment"]!=="").length;notes.push(`\u7533\u8ACB\u8005\u306E\u7406\u7531 ${String(reasons.length)} \u4EF6\uFF08\u3046\u3061\u627F\u8A8D\u8005\u30B3\u30E1\u30F3\u30C8\u3042\u308A ${String(commented)}\
15
- \u4EF6\uFF09`)}notes.push("\u6307\u6458\u306E\u672C\u6587\u30FB\u5185\u8A33\uFF08details\uFF09\u30FB\u7406\u7531\u306E\u5168\u6587\u306F --output json \u3067\u51FA\u307E\u3059");return notes}var SUMMARY_CONCURRENCY=4;var NO_SUMMARY={ai_warnings:null,ai_severity:null,ai_verdict:null};function reviewSummary(body){const review=reviewOf(envelope(body,WHAT),WHAT);if(review===null)return{ai_review:"none",...NO_SUMMARY};const status=String(review["status"]);if(status!=="completed")return{ai_review:status,
9
+ /reasons/${encodeURIComponent(criterion)}/approver-comment`,criterion}}var WHAT="\u7533\u8ACB\u306EAI\u30C1\u30A7\u30C3\u30AF";var CHECK_COLUMNS=["criterion_id","label","severity","referenced_reason","reason_judgment","reason","approver_comment","message"];function checkRows(body){const data=envelope(body,WHAT);const reasons=reasonsMap(data);return checksOf(reviewOf(data,WHAT)).map(check=>{const criterion=typeof check["criterion_id"]==="string"?check["criterion_id"]:null;const reason=criterion!==
10
+ null?reasons[criterion]:void 0;const field=key=>isRecord(reason)?reason[key]??null:null;return{...pick(check,["criterion_id","label","severity"]),referenced_reason:hasReferencedReason(check),reason_judgment:field("judgment"),reason:field("reason"),approver_comment:field("approver_comment"),message:check["message"]??null}})}function reviewRaw(body){const data=envelope(body,WHAT);reviewOf(data,WHAT);return withoutResult(data)}function getNotes(body){const data=envelope(body,WHAT);const review=reviewOf(
11
+ data,WHAT);const notes=[];if(review===null){notes.push("\u3053\u306E\u7533\u8ACB\u306B\u306F AI\u30C1\u30A7\u30C3\u30AF\u306E\u7D50\u679C\u304C\u3042\u308A\u307E\u305B\u3093\uFF08\u5BFE\u8C61\u306F\u53D6\u5F15\uFF1D\u898B\u7A4D\u30FB\u8ACB\u6C42\u30FB\u53D6\u5F15\u5951\u7D04\u306E\u627F\u8A8D\u7533\u8ACB\u3060\u3051\u3067\u3001\u63D0\u51FA\u6642\u306B\u975E\u540C\u671F\u3067\u4F5C\u3089\u308C\u307E\u3059\uFF09")}else{const status=String(review["status"]);if(IN_FLIGHT.has(status))notes.push(`\u751F\u6210\u4E2D\u3067\
12
+ \u3059\uFF08status=${status}\uFF09\u3002\u6642\u9593\u3092\u7F6E\u3044\u3066\u540C\u3058\u30B3\u30DE\u30F3\u30C9\u3067\u78BA\u304B\u3081\u3066\u304F\u3060\u3055\u3044`);if(status==="failed")notes.push("\u751F\u6210\u306B\u5931\u6557\u3057\u3066\u3044\u307E\u3059\uFF08status=failed\uFF09\u3002\u627F\u8A8D\u753B\u9762\u306B\u3082\u7D50\u679C\u306F\u51FA\u307E\u305B\u3093");if(status==="completed"){if(typeof review["summary"]==="string"&&review["summary"]!=="")notes.push(`\u8981\u7D04: ${review["su\
13
+ mmary"]}`);const overall=isRecord(review["overall"])?review["overall"]:void 0;if(overall!==void 0&&typeof overall["verdict_label"]==="string"){const message=typeof overall["message"]==="string"&&overall["message"]!==""?`\uFF08${overall["message"]}\uFF09`:"";notes.push(`\u7DCF\u5408\u6240\u898B: ${overall["verdict_label"]}${message}`);const recommendations=Array.isArray(overall["recommendations"])?overall["recommendations"]:[];for(const item of recommendations)if(typeof item==="string")notes.push(
14
+ ` \u78BA\u8A8D\u3092\u63A8\u5968\u3059\u308B\u70B9: ${item}`)}notes.push(`${checkCounts(review)}\u3002\u751F\u6210\u65E5\u6642 ${String(review["generated_at"]??"\u4E0D\u660E")}`)}}const reasons=Object.values(reasonsMap(data)).filter(isRecord);if(reasons.length>0){const commented=reasons.filter(reason=>typeof reason["approver_comment"]==="string"&&reason["approver_comment"]!=="").length;notes.push(`\u7533\u8ACB\u8005\u306E\u7406\u7531 ${String(reasons.length)} \u4EF6\uFF08\u3046\u3061\u627F\u8A8D\u8005\u30B3\u30E1\u30F3\u30C8\u3042\u308A ${String(
15
+ commented)} \u4EF6\uFF09`)}notes.push("\u6307\u6458\u306E\u672C\u6587\u30FB\u5185\u8A33\uFF08details\uFF09\u30FB\u7406\u7531\u306E\u5168\u6587\u306F --output json \u3067\u51FA\u307E\u3059");return notes}var SUMMARY_CONCURRENCY=4;var NO_SUMMARY={ai_warnings:null,ai_severity:null,ai_verdict:null};function reviewSummary(body){const review=reviewOf(envelope(body,WHAT),WHAT);if(review===null)return{ai_review:"none",...NO_SUMMARY};const status=String(review["status"]);if(status!=="completed")return{ai_review:status,
16
16
  ...NO_SUMMARY};const checks=checksOf(review);const warnings=checks.filter(check=>check["severity"]==="warning").length;const overall=isRecord(review["overall"])?review["overall"]:void 0;return{ai_review:status,ai_warnings:warnings,ai_severity:warnings>0?"warning":checks.length>0?"ok":null,ai_verdict:typeof overall?.["verdict"]==="string"?overall["verdict"]:null}}async function withReviewSummaries(rows,ctx){const out=[...rows];let failed=0;let next=0;const worker=async()=>{for(;;){const index=next++;
17
17
  if(index>=rows.length)return;const row=rows[index];const id=isRecord(row)&&typeof row["id"]==="string"?row["id"]:void 0;if(!isRecord(row)||id===void 0||!UUID_RE.test(id)){failed+=1;out[index]=isRecord(row)?{...row,ai_review:"unavailable",...NO_SUMMARY}:row;continue}try{out[index]={...row,...reviewSummary(await ctx.send({method:"GET",path:workflowReviewPath(id)}))}}catch{failed+=1;out[index]={...row,ai_review:"unavailable",...NO_SUMMARY}}}};await Promise.all(Array.from({length:Math.min(SUMMARY_CONCURRENCY,
18
18
  rows.length)},worker));if(failed>0)ctx.warn(`${String(failed)} \u4EF6\u306E\u7533\u8ACB\u3067 AI\u30C1\u30A7\u30C3\u30AF\u306E\u7D50\u679C\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08ai_review=unavailable\uFF09\u3002twp workflow ai-review get <\u7533\u8ACBID> \u3067\u500B\u5225\u306B\u78BA\u304B\u3081\u3066\u304F\u3060\u3055\u3044\u3002`);return out}var INSTANCE_FLAG={name:"--instance",summary:"\u7533\u8ACBID\uFF08UUID\u30FB\u5FC5\u9808\u3002twp workflow approval pending \u306E id \u5217\uFF09",
@@ -25,6 +25,7 @@ usage:GET_USAGE,description:`GET /api/v2/workflows/instances/{id}/ai-review\u300
25
25
  \u5BFE\u8C61\u306F\u53D6\u5F15\uFF08\u898B\u7A4D\u30FB\u8ACB\u6C42\u30FB\u53D6\u5F15\u5951\u7D04\uFF09\u306E\u627F\u8A8D\u7533\u8ACB\u3067\u3001\u63D0\u51FA\u6642\u306B\u4F5C\u3089\u308C\u307E\u3059\u3002\u305D\u308C\u4EE5\u5916\u306E\u7533\u8ACB\u3067\u306F\u7D50\u679C\u304C\u7A7A\u3067\u3059\uFF08\u30A8\u30E9\u30FC\u306B\u306F\u306A\u308A\u307E\u305B\u3093\uFF09\u3002
26
26
  --output table / text / tsv \u306F\u78BA\u8A8D\u3057\u305F\u89B3\u70B91\u4EF6\uFF1D1\u884C\uFF08${CHECK_COLUMNS.join(" / ")}\uFF09\u3067\u3001severity \u304C warning \u306E\u884C\u304C\u6307\u6458\u3067\u3059\u3002
27
27
  reason_judgment / reason \u306F\u7533\u8ACB\u8005\u304C\u6DFB\u3048\u305F\u7406\u7531\u3001approver_comment \u306F\u627F\u8A8D\u8005\u306E\u8FFD\u8A18\u3067\u3059\u3002
28
+ referenced_reason \u306F\u540C\u3058\u53D6\u5F15\u5148\u3067\u904E\u53BB\u306B\u627F\u8A8D\u3055\u308C\u305F\u540C\u3058\u89B3\u70B9\u306E\u5224\u65AD\u304C\u53C2\u8003\u3068\u3057\u3066\u6DFB\u3048\u3089\u308C\u3066\u3044\u308B\u304B\uFF08true/false\uFF09\u3067\u3059\u3002\u8B66\u544A\u306F\u6D88\u3048\u307E\u305B\u3093\u3002
28
29
  \u627F\u8A8D\u8005\u30B3\u30E1\u30F3\u30C8\u3092\u66F8\u304F\u306E\u306F twp workflow ai-review-comment update <criterion_id> --instance <\u7533\u8ACBID> \u3067\u3059\u3002
29
30
  \u7533\u8ACB\u8005\u304C\u81EA\u5206\u3067\u5B9F\u884C\u3059\u308B\u7533\u8ACB\u524D\u30C1\u30A7\u30C3\u30AF\uFF08twp estimate ai-review \u7B49\uFF09\u3068\u306F\u5225\u306E\u7D50\u679C\u3067\u3059\u3002`,flags:[],forbidden:FORBIDDEN_VIEW,plan:input=>({method:"GET",path:reviewTarget(input)}),summarize:checkRows,raw:reviewRaw,notes:getNotes}]},{name:"ai-review-comment",summary:"\u7533\u8ACB\u306EAI\u30C1\u30A7\u30C3\u30AF\u306E\u6307\u6458\u306B\u627F\u8A8D\u8005\u306E\u78BA\u8A8D\u7D50\u679C\u3092\u8FFD\u8A18\u3059\u308B\uFF08\u767B\u9332\u30FB\u66F4\u65B0\u30FB\u53D6\u6D88\uFF09",
30
31
  operations:[{name:"update",summary:"\u6307\u64581\u4EF6\u306B\u627F\u8A8D\u8005\u30B3\u30E1\u30F3\u30C8\u3092\u66F8\u304F\uFF08\u3042\u308C\u3070\u66F8\u304D\u63DB\u3048\u308B\uFF09",usage:UPDATE_USAGE,description:`PUT /api/v2/workflows/instances/{id}/ai-review/reasons/{criterion_id}/approver-comment\u3002\u627F\u8A8D\u753B\u9762\u306E\u6307\u6458\u306E\u300C\u627F\u8A8D\u8005\u30B3\u30E1\u30F3\u30C8\u300D\u3068\u540C\u3058\u3067\u3059\u3002
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{createRuntime}from"./chunk-VON6ODNL.js";import{findExecutable}from"./chunk-PMOUHEJQ.js";import{httpFetch}from"./chunk-J7QYPKVK.js";import{describeAutoUpdate}from"./chunk-CH6QU76P.js";import{PACKAGE_NAME,UPDATE_COMMAND,compareVersionCores,isBelowMinSupported,parseVersionCore}from"./chunk-DXXFUNYN.js";import{stripTerminalControls}from"./chunk-NHYMHCAT.js";import{execFile}from"child_process";import fs from"fs";import path from"path";function resolveNpmCommand(deps={}){const platform=deps.platform??process.platform;const env=deps.env??process.env;const npmPath=(deps.find??(name=>findExecutable(name,{env,platform})))("npm");if(npmPath===null)return null;if(platform!=="win32")return{file:npmPath,prefix:[]};if(/\.exe$/i.test(npmPath))return{file:npmPath,prefix:[]};const cliJs=path.win32.join(path.win32.dirname(npmPath),"node_modules","npm","bin","npm-cli.js");return(deps.exists??fs.existsSync)(cliJs)?{file:deps.nodePath??process.
3
+ import{createRuntime}from"./chunk-J5QOE2GM.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(
@@ -1,10 +1,10 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{stripTerminalControls}from"./chunk-NHYMHCAT.js";var SENSITIVE_HEADERS=new Set(["authorization","proxy-authorization","cookie","set-cookie","x-api-key","x-auth-token","x-vercel-protection-bypass"]);var REDACTED="***\uFF08\u4F0F\u5B57\uFF09";var SECRET_KEY_PATTERN="[A-Za-z0-9_-]*(?:token|secret|password|passwd|api[_-]?key|credential|signature|tempauth|upload_?url)[A-Za-z0-9_-]*";var NOT_SECRET_FLAGS="(?:starting-token)";var NOT_SECRET_QUERY="(?:skiptoken)";function redactSecrets(text){return text.replace(/\bBearer\s+[^\s"'`,;)\]}\\]+/gi,`Bearer\
4
- ${REDACTED}`).replace(/(\/v2\/(?:admin\/)?invitations\/)[A-Za-z0-9_-]{16,}/g,`$1${REDACTED}`).replace(new RegExp(`("${SECRET_KEY_PATTERN}"\\s*:\\s*)"(?:[^"\\\\]|\\\\.)*"`,"gi"),`$1"${REDACTED}"`).replace(new RegExp(`([?&](?!${NOT_SECRET_QUERY}=)${SECRET_KEY_PATTERN}=)[^&\\s"'\`,;)\\]}\\\\]+`,"gi"),`$1${REDACTED}`).replace(new RegExp(`(--(?!${NOT_SECRET_FLAGS}(?:=|\\s))${SECRET_KEY_PATTERN}(?:=|\\s+))('[^']*'|"[^"]*"|[A-Za-z0-9_.~+/=|:%-]+)`,"gi"),`$1${REDACTED}`)}var SECRET_KEY_NAME=new RegExp(
5
- `^${SECRET_KEY_PATTERN}$`,"i");function redactSecretValues(value){if(Array.isArray(value))return value.map(item=>redactSecretValues(item));if(value!==null&&typeof value==="object"){const out={};for(const[key,item]of Object.entries(value)){out[key]=SECRET_KEY_NAME.test(key)?REDACTED:redactSecretValues(item)}return out}if(typeof value==="string")return redactSecrets(value);return value}function formatHeaders(headers){if(!headers)return[];const entries=headers instanceof Headers?[...headers.entries()]:
6
- Array.isArray(headers)?headers:Object.entries(headers);return entries.map(([name,value])=>{const shown=SENSITIVE_HEADERS.has(name.toLowerCase())?REDACTED:redactSecrets(String(value));return` ${name.toLowerCase()}: ${shown}`})}var BODY_LIMIT=4e3;function omitAttachmentBytes(body){return body.replace(/"contentBytes":"([A-Za-z0-9+/=]*)"/g,(_,b64)=>`"contentBytes":"\uFF08base64 ${b64.length} \u6587\u5B57\u30FB\u51FA\u529B\u3057\u306A\u3044\uFF09"`)}function formatBody(raw){const safe=omitAttachmentBytes(
7
- redactSecrets(stripTerminalControls(raw)));return safe.length>BODY_LIMIT?`${safe.slice(0,BODY_LIMIT)}
3
+ import{stripTerminalControls}from"./chunk-NHYMHCAT.js";var SENSITIVE_HEADERS=new Set(["authorization","proxy-authorization","cookie","set-cookie","x-api-key","x-auth-token","x-vercel-protection-bypass"]);var REDACTED="***\uFF08\u4F0F\u5B57\uFF09";var SECRET_KEY_PATTERN="[A-Za-z0-9_-]*(?:token|secret|password|passwd|api[_-]?key|credential|signature|tempauth|upload_?url)[A-Za-z0-9_-]*";var NOT_SECRET_FLAGS="(?:starting-token)";var NOT_SECRET_QUERY="(?:skiptoken)";function redactSecrets(text){return text.replace(/\bBearer\s+(?:[^\s"'`,;)\]}\\]|\\[^\s"])+/gi,
4
+ `Bearer ${REDACTED}`).replace(/(\/v2\/(?:admin\/)?invitations\/)[A-Za-z0-9_-]{16,}/g,`$1${REDACTED}`).replace(new RegExp(`("${SECRET_KEY_PATTERN}"\\s*:\\s*)"(?:[^"\\\\]|\\\\.)*"`,"gi"),`$1"${REDACTED}"`).replace(new RegExp(`([?&](?!${NOT_SECRET_QUERY}=)${SECRET_KEY_PATTERN}=)(?:[^&\\s"'\`,;)\\]}\\\\]|\\\\[^\\s"])+`,"gi"),`$1${REDACTED}`).replace(new RegExp(`(--(?!${NOT_SECRET_FLAGS}(?:=|\\s))${SECRET_KEY_PATTERN}(?:=|\\s+))('[^']*'|"[^"]*"|(?:[A-Za-z0-9_.~+/=|:%-]|\\\\[^\\s"])+)`,"gi"),`$1${REDACTED}`)}
5
+ var SECRET_KEY_NAME=new RegExp(`^${SECRET_KEY_PATTERN}$`,"i");function redactSecretValues(value){if(Array.isArray(value))return value.map(item=>redactSecretValues(item));if(value!==null&&typeof value==="object"){const out={};for(const[key,item]of Object.entries(value)){const shownKey=uniqueKey(out,redactSecrets(key));out[shownKey]=SECRET_KEY_NAME.test(key)?REDACTED:redactSecretValues(item)}return out}if(typeof value==="string")return redactSecrets(value);return value}function uniqueKey(out,key){
6
+ if(!Object.hasOwn(out,key))return key;let n=2;while(Object.hasOwn(out,`${key} (${n})`))n+=1;return`${key} (${n})`}function formatHeaders(headers){if(!headers)return[];const entries=headers instanceof Headers?[...headers.entries()]:Array.isArray(headers)?headers:Object.entries(headers);return entries.map(([name,value])=>{const shown=SENSITIVE_HEADERS.has(name.toLowerCase())?REDACTED:redactSecrets(String(value));return` ${name.toLowerCase()}: ${shown}`})}var BODY_LIMIT=4e3;function omitAttachmentBytes(body){
7
+ return body.replace(/"contentBytes":"([A-Za-z0-9+/=]*)"/g,(_,b64)=>`"contentBytes":"\uFF08base64 ${b64.length} \u6587\u5B57\u30FB\u51FA\u529B\u3057\u306A\u3044\uFF09"`)}function formatBody(raw){const safe=omitAttachmentBytes(redactSecrets(stripTerminalControls(raw)));return safe.length>BODY_LIMIT?`${safe.slice(0,BODY_LIMIT)}
8
8
  \u2026\uFF08\u4EE5\u964D ${safe.length-BODY_LIMIT} \u6587\u5B57\u3092\u7701\u7565\uFF09`:safe}function isTextualContentType(contentType){if(contentType===null)return false;return/^\s*(text\/|application\/(json|xml|javascript|x-www-form-urlencoded)|application\/[\w.+-]*\+(json|xml))/i.test(contentType)}function withDebug(inner,options={}){const write=options.write??(text=>void process.stderr.write(text));const now=options.now??(()=>Date.now());return async(input,init)=>{const method=init?.method??
9
9
  "GET";const lines=[`[debug] \u2192 ${method} ${redactSecrets(input)}`,...formatHeaders(init?.headers)];if(options.omitBodies!==void 0&&init?.body!==void 0&&init.body!==null)lines.push(` \uFF08\u672C\u6587\u306F${options.omitBodies}\u305F\u3081\u51FA\u529B\u3057\u306A\u3044\uFF09`);else if(typeof init?.body==="string")lines.push(` ${formatBody(init.body)}`);else if(init?.body instanceof Uint8Array)lines.push(` \uFF08\u672C\u6587\u306F ${init.body.byteLength} \u30D0\u30A4\u30C8\u306E\u30D0\u30A4\u30C8\u5217\u3002\u51FA\u529B\u3057\u306A\u3044\uFF09`);
10
10
  write(`${lines.join("\n")}
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{FINAL_REPORT_BEGIN,FINAL_REPORT_END,redactLoopOutput}from"./chunk-JUJSF5ZG.js";import{skillCommand,skillPrefix}from"./chunk-6CS5L24D.js";import{normalizeRequiredPlatforms}from"./chunk-O52RKZCC.js";import{extractLeadingTaskKey}from"./chunk-II5RVJQN.js";var LEDGER_TASK_KEY_MAX=50;var CONTROL_CHAR_RE=/[\u0000-\u001f\u007f]/;var FLAG_TOKEN_RE=/(?:^|\s)-/;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==="object"&&Array.isArray(obj.steps)){return obj}}catch{}}return null}
3
+ import{FINAL_REPORT_BEGIN,FINAL_REPORT_END,redactLoopOutput}from"./chunk-UUN3IO3Z.js";import{skillCommand,skillPrefix}from"./chunk-6CS5L24D.js";import{normalizeRequiredPlatforms}from"./chunk-O52RKZCC.js";import{extractLeadingTaskKey}from"./chunk-II5RVJQN.js";var LEDGER_TASK_KEY_MAX=50;var CONTROL_CHAR_RE=/[\u0000-\u001f\u007f]/;var FLAG_TOKEN_RE=/(?:^|\s)-/;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==="object"&&Array.isArray(obj.steps)){return obj}}catch{}}return null}
4
4
  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.length;i++){const c=text[i];if(escape){escape=false;continue}if(c===
5
5
  "\\"){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];if(escape){escape=false;continue}if(inStr){if(c==="\\")escape=true;else if(c===
6
6
  '"')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<MAX_OPEN_CANDIDATES;open=text.lastIndexOf("{",open-1)){tried++;const close=matchingBrace(
@@ -15,7 +15,14 @@ block.id,model)})}else{parts.push({functionResponse:{id:block.tool_use_id,name:t
15
15
  "object"&&args!==null&&!Array.isArray(args)?JSON.stringify(args):""});out.push({kind:"tool_end",index});continue}if(typeof part.text==="string"&&part.text!==""&&part.thought!==true){out.push({kind:"text",delta:part.text})}}const usage=usageOf(parsed["usageMetadata"]);if(usage)out.push({kind:"usage",usage});const feedback=parsed["promptFeedback"];if(typeof feedback?.blockReason==="string"&&feedback.blockReason!==""){out.push({kind:"error",message:`Gemini \u304C\u8981\u6C42\u3092\u62D2\u5426\u3057\u307E\u3057\u305F: ${feedback.
16
16
  blockReason}`})}if(typeof candidate?.finishReason==="string"&&candidate.finishReason!==""){const reason=candidate.finishReason;out.push({kind:"stop",reason:stopReasonOf(reason)});if(!NORMAL_FINISH_REASONS.has(reason)){out.push({kind:"error",message:`Gemini \u304C\u5FDC\u7B54\u3092\u6253\u3061\u5207\u308A\u307E\u3057\u305F: ${reason}`})}}return out}var NORMAL_FINISH_REASONS=new Set(["STOP","MAX_TOKENS","FINISH_REASON_UNSPECIFIED"]);function usageOf(source){if(typeof source!=="object"||source===null)
17
17
  return null;const raw=source;const num=key=>{const v=raw[key];return typeof v==="number"&&Number.isFinite(v)?Math.max(0,v):null};const prompt=num("promptTokenCount");const candidates=num("candidatesTokenCount");if(prompt===null&&candidates===null)return null;const usage={};if(prompt!==null){const cached=Math.min(num("cachedContentTokenCount")??0,prompt);usage.inputTokens=prompt-cached;usage.cacheReadTokens=cached;usage.cacheWriteTokens=0}if(candidates!==null||num("thoughtsTokenCount")!==null){usage.
18
- outputTokens=(candidates??0)+(num("thoughtsTokenCount")??0)}return usage}function stopReasonOf(finishReason){if(finishReason==="STOP")return"end_turn";if(finishReason==="MAX_TOKENS")return"max_tokens";return finishReason.toLowerCase()}function safeJson2(text){try{const parsed=JSON.parse(text);return typeof parsed==="object"&&parsed!==null&&!Array.isArray(parsed)?parsed:null}catch{return null}}var ADAPTERS={anthropic:anthropicAdapter,gemini:geminiAdapter};var PROTOCOLS_HEADER="X-TWP-CLI-Protocols";function supportedProtocols(){return Object.keys(ADAPTERS)}function isModelProtocol(value){return value==="anthropic"||value==="openai-chat"||value==="gemini"}function adapterFor(protocol){return ADAPTERS[protocol]??null}var DEFAULT_PROVIDER="anthropic";function effectiveModelSpec(spec){return{provider:spec?.provider??DEFAULT_PROVIDER,protocol:spec?.protocol??"anthropic",contextWindow:spec?.contextWindow??null,maxOutputTokens:spec?.maxOutputTokens??null,tools:spec?.capabilities?.tools??true,promptCache:spec?.capabilities?.promptCache??"explicit"}}var PROVIDER_PATTERN=/^[a-z0-9-]{1,32}$/;function positiveInt(value){return typeof value==="number"&&Number.isInteger(value)&&value>0?value:void 0}function parseModelSpec(id,raw){
18
+ outputTokens=(candidates??0)+(num("thoughtsTokenCount")??0)}return usage}function stopReasonOf(finishReason){if(finishReason==="STOP")return"end_turn";if(finishReason==="MAX_TOKENS")return"max_tokens";return finishReason.toLowerCase()}function safeJson2(text){try{const parsed=JSON.parse(text);return typeof parsed==="object"&&parsed!==null&&!Array.isArray(parsed)?parsed:null}catch{return null}}var openAiChatAdapter={protocol:"openai-chat",streamPath:"/api/cli/v1/chat/completions",toRequestBody:toRequestBody3,decode:decode3};function toRequestBody3(request){const hasTools=request.tools!==void 0&&request.tools.length>0;return{model:request.model,max_completion_tokens:request.maxTokens,messages:[...request.system!==void 0?[{role:"system",content:request.system}]:[],...request.messages.flatMap(toOpenAiMessages)],...hasTools?{tools:request.tools.map(tool=>({type:"function",function:{name:tool.
19
+ name,description:tool.description,parameters:tool.input_schema}}))}:{},reasoning_effort:"none",stream_options:{include_usage:true}}}function toOpenAiMessages(message){const text=message.content.filter(block=>block.type==="text").map(block=>block.type==="text"?block.text:"").join("");if(message.role==="assistant"){const toolCalls=message.content.flatMap(block=>block.type==="tool_use"?[{id:block.id,type:"function",function:{name:block.name,arguments:JSON.stringify(block.input)}}]:[]);return[{role:"\
20
+ assistant",content:text===""?null:text,...toolCalls.length>0?{tool_calls:toolCalls}:{}}]}const toolResults=message.content.flatMap(block=>block.type==="tool_result"?[{role:"tool",tool_call_id:block.tool_use_id,content:block.is_error===true?`[tool error] ${block.content}`:block.content}]:[]);return[...toolResults,...text!==""||toolResults.length===0?[{role:"user",content:text}]:[]]}var STOP_REASONS={tool_calls:"tool_use",stop:"end_turn",length:"max_tokens"};function decode3(ev){if(ev.data.trim()===
21
+ "[DONE]")return[];const parsed=safeJson3(ev.data);if(!parsed)return[];if(parsed["error"]!==void 0&&parsed["error"]!==null){const raw=parsed["error"];const message=typeof raw==="string"?raw:raw.message;return[{kind:"error",message:typeof message==="string"&&message!==""?message:"\u30B9\u30C8\u30EA\u30FC\u30E0\u304C\u4E2D\u65AD\u3055\u308C\u307E\u3057\u305F"}]}const out=[];const choices=Array.isArray(parsed["choices"])?parsed["choices"]:[];const choice=choices[0];if(choice&&typeof choice.delta==="\
22
+ object"&&choice.delta!==null){const delta=choice.delta;if(typeof delta.content==="string"&&delta.content!==""){out.push({kind:"text",delta:delta.content})}if(typeof delta.refusal==="string"&&delta.refusal!==""){out.push({kind:"text",delta:delta.refusal})}if(Array.isArray(delta.tool_calls)){for(const call of delta.tool_calls){const index=typeof call["index"]==="number"?call["index"]:-1;const fn=call["function"]??{};const args=typeof fn.arguments==="string"?fn.arguments:"";if(typeof call["id"]==="\
23
+ string"&&typeof fn.name==="string"){out.push({kind:"tool_start",index,id:call["id"],name:fn.name,initialJson:args})}else if(args!==""){out.push({kind:"tool_delta",index,json:args})}}}}if(choice&&typeof choice.finish_reason==="string"){out.push({kind:"stop",reason:STOP_REASONS[choice.finish_reason]??choice.finish_reason})}out.push(...usageEvent2(parsed["usage"]));return out}function usageEvent2(source){if(typeof source!=="object"||source===null)return[];const raw=source;const prompt=raw["prompt_t\
24
+ okens"];const completion=raw["completion_tokens"];if(typeof prompt!=="number"||typeof completion!=="number")return[];const details=typeof raw["prompt_tokens_details"]==="object"&&raw["prompt_tokens_details"]!==null?raw["prompt_tokens_details"]:{};const count=value=>typeof value==="number"&&Number.isFinite(value)?Math.max(0,value):0;const total=Math.max(0,prompt);const cacheReadTokens=Math.min(count(details["cached_tokens"]),total);const cacheWriteTokens=Math.min(count(details["cache_write_tokens"]),
25
+ total-cacheReadTokens);const usage={inputTokens:total-cacheReadTokens-cacheWriteTokens,cacheReadTokens,cacheWriteTokens,outputTokens:Math.max(0,completion)};return[{kind:"usage",usage}]}function safeJson3(text){try{const parsed=JSON.parse(text);return typeof parsed==="object"&&parsed!==null?parsed:null}catch{return null}}var ADAPTERS={anthropic:anthropicAdapter,"openai-chat":openAiChatAdapter,gemini:geminiAdapter};var PROTOCOLS_HEADER="X-TWP-CLI-Protocols";function supportedProtocols(){return Object.keys(ADAPTERS)}function isModelProtocol(value){return value==="anthropic"||value==="openai-chat"||value==="gemini"}function adapterFor(protocol){return ADAPTERS[protocol]??null}var DEFAULT_PROVIDER="anthropic";function effectiveModelSpec(spec){return{provider:spec?.provider??DEFAULT_PROVIDER,protocol:spec?.protocol??"anthropic",contextWindow:spec?.contextWindow??null,maxOutputTokens:spec?.maxOutputTokens??null,tools:spec?.capabilities?.tools??true,promptCache:spec?.capabilities?.promptCache??"explicit"}}var PROVIDER_PATTERN=/^[a-z0-9-]{1,32}$/;function positiveInt(value){return typeof value==="number"&&Number.isInteger(value)&&value>0?value:void 0}function parseModelSpec(id,raw){
19
26
  const spec={id};if(typeof raw!=="object"||raw===null)return spec;const r=raw;if(typeof r["provider"]==="string"&&PROVIDER_PATTERN.test(r["provider"]))spec.provider=r["provider"];if(isModelProtocol(r["protocol"]))spec.protocol=r["protocol"];const contextWindow=positiveInt(r["context_window"]);if(contextWindow!==void 0)spec.contextWindow=contextWindow;const maxOutputTokens=positiveInt(r["max_output_tokens"]);if(maxOutputTokens!==void 0)spec.maxOutputTokens=maxOutputTokens;const caps=r["capabilitie\
20
27
  s"];if(typeof caps==="object"&&caps!==null){const c=caps;const capabilities={};if(typeof c["tools"]==="boolean")capabilities.tools=c["tools"];const cache=c["prompt_cache"];if(cache==="explicit"||cache==="automatic"||cache==="none")capabilities.promptCache=cache;if(Object.keys(capabilities).length>0)spec.capabilities=capabilities}return spec}function toWireSpec(spec){return{id:spec.id,...spec.provider!==void 0?{provider:spec.provider}:{},...spec.protocol!==void 0?{protocol:spec.protocol}:{},...spec.
21
28
  contextWindow!==void 0?{context_window:spec.contextWindow}:{},...spec.maxOutputTokens!==void 0?{max_output_tokens:spec.maxOutputTokens}:{},...spec.capabilities!==void 0?{capabilities:{...spec.capabilities.tools!==void 0?{tools:spec.capabilities.tools}:{},...spec.capabilities.promptCache!==void 0?{prompt_cache:spec.capabilities.promptCache}:{}}}:{}}}function modelCachePath(env=process.env){return path.join(twpHomeDir(env),"models.json")}function modelCacheLockPath(env=process.env){return path.join(twpHomeDir(env),"models.lock")}function builtinCatalog(){return{ids:MODELS.map(m=>m.id),source:"builtin",fetchedAt:null,minSupportedVersion:null}}function readCacheFile(env){const file=modelCachePath(env);if(!isTrustworthyCacheFile(file)){return{version:1,entries:{}}}const parsed=JSON.parse(fs.readFileSync(file,"utf8"));if(!parsed||typeof parsed!==
@@ -34,7 +41,7 @@ timeout(MODELS_TIMEOUT_MS));const body=await res.json().catch(()=>null);const mo
34
41
  const floor=body?.min_supported_version;const minSupportedVersion=typeof floor==="string"&&parseVersionCore(floor)!==null?floor.trim():null;return{ids,models,minSupportedVersion}}async stream(request,hooks){const protocol=request.protocol??"anthropic";const adapter=adapterFor(protocol);if(!adapter){throw new RelayError("validation",`\u30E2\u30C7\u30EB ${request.model} \u306F ${protocol} \u30D7\u30ED\u30C8\u30B3\u30EB\u306E\u305F\u3081\u3001\u3053\u306E\u7248\u306E twp \u3067\u306F\u5229\u7528\u3067\u304D\u307E\u305B\u3093\uFF08twp \u3092\u66F4\u65B0\u3057\u3066\u304F\u3060\u3055\u3044\uFF09`)}
35
42
  let res;try{res=await this.send("POST",adapter.streamPath,adapter.toRequestBody({model:request.model,maxTokens:request.maxTokens,...request.system!==void 0?{system:request.system}:{},messages:request.messages,...request.tools!==void 0?{tools:request.tools}:{},promptCache:request.promptCache??"explicit"}),hooks.signal)}catch(err){if(isAbortError(err)||hooks.signal?.aborted===true){return{text:"",usage:emptyUsage(),toolUses:[],stopReason:null,aborted:true,upstreamError:null}}throw err}const body=res.
36
43
  body;if(!body){throw new RelayError("upstream","\u30EA\u30EC\u30FC\u304C\u5FDC\u7B54\u672C\u6587\u3092\u8FD4\u3057\u307E\u305B\u3093\u3067\u3057\u305F")}const parser=new SseParser;const decoder=new TextDecoder;const usage=emptyUsage();let text="";let stopReason=null;let streamError=null;const reader=body.getReader();const building=new Map;const toolUses=[];const finalizeBlock=index=>{const pending=building.get(index);if(!pending)return;building.delete(index);const input=pending.json.trim()===""?
37
- {}:safeJson3(pending.json);if(input===null){streamError=`\u30C4\u30FC\u30EB ${pending.name} \u306E\u5F15\u6570\u3092\u89E3\u91C8\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F`;return}toolUses.push({type:"tool_use",id:pending.id,name:pending.name,input})};const apply=ev=>{switch(ev.kind){case"usage":Object.assign(usage,ev.usage);return;case"text":text+=ev.delta;hooks.onTextDelta(ev.delta);return;case"tool_start":building.set(ev.index,{id:ev.id,name:ev.name,json:ev.initialJson});return;case"tool\
44
+ {}:safeJson4(pending.json);if(input===null){streamError=`\u30C4\u30FC\u30EB ${pending.name} \u306E\u5F15\u6570\u3092\u89E3\u91C8\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F`;return}toolUses.push({type:"tool_use",id:pending.id,name:pending.name,input})};const apply=ev=>{switch(ev.kind){case"usage":Object.assign(usage,ev.usage);return;case"text":text+=ev.delta;hooks.onTextDelta(ev.delta);return;case"tool_start":building.set(ev.index,{id:ev.id,name:ev.name,json:ev.initialJson});return;case"tool\
38
45
  _delta":{const pending=building.get(ev.index);if(pending)pending.json+=ev.json;return}case"tool_end":finalizeBlock(ev.index);return;case"stop":stopReason=ev.reason;return;case"error":streamError=ev.message;return}};const handle=events=>{for(const ev of events){for(const neutral of adapter.decode(ev))apply(neutral)}};const onAbort=()=>{void reader.cancel().catch(()=>void 0)};if(hooks.signal){if(hooks.signal.aborted)onAbort();else hooks.signal.addEventListener("abort",onAbort,{once:true})}try{for(;;){
39
46
  const{done,value}=await reader.read();if(done)break;handle(parser.push(decoder.decode(value,{stream:true})))}handle(parser.flush())}catch(err){if(err instanceof SseBufferOverflowError){streamError=err.message}else if(!isAbortError(err)&&hooks.signal?.aborted!==true){throw new RelayError("network",`\u30B9\u30C8\u30EA\u30FC\u30E0\u304C\u5207\u65AD\u3055\u308C\u307E\u3057\u305F: ${errorMessage(err)}`)}}finally{hooks.signal?.removeEventListener("abort",onAbort);void reader.cancel().catch(()=>void 0)}
40
47
  for(const index of[...building.keys()])finalizeBlock(index);return{text,usage,toolUses,stopReason,aborted:hooks.signal?.aborted===true,upstreamError:streamError===null?null:stripTerminalControls(streamError)}}async send(method,path2,body,signal){let token;try{token=await this.session.getAccessToken()}catch(err){throw new RelayError("not_logged_in",errorMessage(err))}let res=await this.fetchOrThrow(method,path2,token,body,signal);if(res.status===401){try{token=await this.session.refresh(token)}catch(err){
@@ -42,7 +49,7 @@ throw new RelayError("not_logged_in",errorMessage(err))}res=await this.fetchOrTh
42
49
  void 0?{"Content-Type":"application/json"}:{}},...body!==void 0?{body:JSON.stringify(body)}:{},...signal?{signal}:{}})}catch(err){if(isAbortError(err))throw err;throw new RelayError("network",`\u30E2\u30C7\u30EB\u53D6\u6B21\u30B5\u30FC\u30D0\u306B\u63A5\u7D9A\u3067\u304D\u307E\u305B\u3093\uFF08${this.relayUrl}\uFF09: ${errorMessage(err)}`)}}};async function toRelayError(res){const body=await res.json().catch(()=>null);const nested=typeof body?.error==="object"&&body.error!==null?body.error:void 0;
43
50
  const message=stripTerminalControls(body?.message??nested?.message??`HTTP ${res.status}`);if(res.status===401){return new RelayError("unauthorized","\u30E2\u30C7\u30EB\u53D6\u6B21\u306E\u8A8D\u8A3C\u306B\u5931\u6557\u3057\u307E\u3057\u305F\u3002`twp login`\uFF08\u30D6\u30E9\u30A6\u30B6\u59D4\u8B72\uFF09\u307E\u305F\u306F `twp login --password` \u3067\u30ED\u30B0\u30A4\u30F3\u3057\u76F4\u3057\u3066\u304F\u3060\u3055\u3044\uFF08`twp login --token` \u3067\u4FDD\u5B58\u3057\u305F\u901A\u5E38\u30C8\u30FC\u30AF\u30F3\u306F\u30E2\u30C7\u30EB\u53D6\u6B21\u306B\u306F\u4F7F\u3048\u307E\u305B\u3093\uFF09\u3002",
44
51
  401)}if(res.status===403){return new RelayError("cli_disabled",message,403)}if(res.status===429){return new RelayError("rate_limit",message,429)}if(res.status===400){const detail=body?.details;if(Array.isArray(detail?.allowed_models)){return new RelayError("model_not_allowed",`${message}
45
- \u5229\u7528\u3067\u304D\u308B\u30E2\u30C7\u30EB: ${detail.allowed_models.join(" / ")}`,400)}return new RelayError("validation",message,400)}if(res.status===503){return new RelayError("unavailable",message,503)}return new RelayError("upstream",message,res.status)}function safeJson3(text){try{const parsed=JSON.parse(text);return typeof parsed==="object"&&parsed!==null?parsed:null}catch{return null}}function isAbortError(err){return err instanceof Error&&(err.name==="AbortError"||err.name==="Timeo\
52
+ \u5229\u7528\u3067\u304D\u308B\u30E2\u30C7\u30EB: ${detail.allowed_models.join(" / ")}`,400)}return new RelayError("validation",message,400)}if(res.status===503){return new RelayError("unavailable",message,503)}return new RelayError("upstream",message,res.status)}function safeJson4(text){try{const parsed=JSON.parse(text);return typeof parsed==="object"&&parsed!==null?parsed:null}catch{return null}}function isAbortError(err){return err instanceof Error&&(err.name==="AbortError"||err.name==="Timeo\
46
53
  utError")}function errorMessage(err){return err instanceof Error?err.message:String(err)}var DEFAULT_CONTEXT_WINDOW_TOKENS=2e5;var DEFAULT_MAX_TOKENS=8192;var TRIM_THRESHOLD=.8;var ContextManager=class{constructor(defaultContextWindowTokens=DEFAULT_CONTEXT_WINDOW_TOKENS){this.defaultContextWindowTokens=defaultContextWindowTokens;this.contextWindowTokens=defaultContextWindowTokens}defaultContextWindowTokens;messages=[];totals=emptyUsage();turns=0;lastPromptTokens=0;pendingChars=0;droppedMessages=0;contextWindowTokens;setContextWindow(tokens){this.contextWindowTokens=tokens!==null&&tokens>
47
54
  0?tokens:this.defaultContextWindowTokens}addUser(text){this.pendingChars+=text.length;const last=this.messages[this.messages.length-1];if(last?.role==="user"){last.content.push({type:"text",text});return}this.messages.push({role:"user",content:[{type:"text",text}]})}addToolExchange(assistantText,toolUses,results){if(toolUses.length===0)return;const blocks=[];if(assistantText.trim()!=="")blocks.push({type:"text",text:assistantText});blocks.push(...toolUses);this.messages.push({role:"assistant",content:blocks});
48
55
  this.messages.push({role:"user",content:results});this.pendingChars+=blocks.reduce((n,b)=>n+blockLength(b),0);this.pendingChars+=results.reduce((n,b)=>n+blockLength(b),0)}completeTurn(assistantText){const text=assistantText.trim();if(text===""){const last=this.messages[this.messages.length-1];if(last?.role==="user"&&!hasToolResult(last)){this.messages.pop();this.pendingChars=Math.max(0,this.pendingChars-lengthOf(last))}return false}this.messages.push({role:"assistant",content:[{type:"text",text:assistantText}]});
@@ -7,7 +7,7 @@ body,"hidden_count"),removed_count:pickNumber(body,"removed_count"),hide_after_d
7
7
  const{resolveOutputFormat}=await import("./format-F6PPBPY5.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-4SBLHU4J.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}
10
+ `);return EXIT_API_SERVER}const{entries,summary}=parsed;const{evaluateQuery}=await import("./query-XEOVFI4D.js");const{renderOutput}=await import("./render-2QURVC5V.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.
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{CommandModelMissingError,MAX_REPORTED_VIOLATIONS,loadCommandModelDomain,loadCommandModelIndex,validateBody,validateQuery}from"./chunk-NZ7WI4RZ.js";import{isForceOnly,killProcessTree,system32}from"./chunk-N2UVRM3Z.js";import{redactSecretValues}from"./chunk-LDBYJPRD.js";import{isSafePathSegment}from"./chunk-HVZUXLQ4.js";import{ApiError,TwpApiClient,appendQuery}from"./chunk-JA5A6UJ2.js";import{DEFAULT_MAX_TOKENS,effectiveModelSpec,emptyUsage}from"./chunk-VON6ODNL.js";
3
+ import{CommandModelMissingError,MAX_REPORTED_VIOLATIONS,loadCommandModelDomain,loadCommandModelIndex,validateBody,validateQuery}from"./chunk-NZ7WI4RZ.js";import{isForceOnly,killProcessTree,system32}from"./chunk-N2UVRM3Z.js";import{redactSecretValues}from"./chunk-H6XS5AMQ.js";import{isSafePathSegment}from"./chunk-HVZUXLQ4.js";import{ApiError,TwpApiClient,appendQuery}from"./chunk-JA5A6UJ2.js";import{DEFAULT_MAX_TOKENS,effectiveModelSpec,emptyUsage}from"./chunk-J5QOE2GM.js";
4
4
  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,isModeId,setActiveModes}from"./chunk-2LOT54OO.js";
5
5
  import{stripTerminalControls}from"./chunk-NHYMHCAT.js";import fs2 from"fs";import path3 from"path";import os2 from"os";import{realpathSync}from"fs";import{homedir}from"os";import{dirname,isAbsolute,relative,resolve,sep}from"path";var PathDeniedError=class extends Error{constructor(message){super(message);this.name="PathDeniedError"}};function resolveToolPath(input,cwd,home=homedir()){if(typeof input!=="string"||input.trim()===""){throw new PathDeniedError("path must be a non-empty string")}const expanded=expandHome(input,home);const abs=isAbsolute(expanded)?resolve(expanded):resolve(cwd,expanded);const root=realOrSelf(resolve(cwd));assertInside(abs,resolve(cwd),abs);assertNotSecret(abs,home);const real=realOrSelf(abs);if(real!==
6
6
  abs){assertInside(real,root,abs);assertNotSecret(real,home)}return abs}function realToolPath(input,cwd,home=homedir()){return realOrSelf(resolveToolPath(input,cwd,home))}function assertInside(target,root,reported){const rel=relative(root,target);const outside=rel===".."||rel.startsWith(`..${sep}`)||isAbsolute(rel);if(outside){throw new PathDeniedError(`path escapes the working directory (${reported}). Only paths under ${root} can be accessed.`)}}function realOrSelf(target){let current=target;const rest=[];
@@ -12,11 +12,11 @@ return id}function reviewPath(input,doc,op){const usage=usageOf(doc,"ai-review",
12
12
  /^\.+$/.test(criterion)){throw new UsageError(`\u6307\u6458\u306E ID \u306F\u82F1\u6570\u5B57\u3068 _ . : - \u3060\u3051\u30FB128 \u6587\u5B57\u307E\u3067\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044: ${criterion}`,usage)}const id=numericDocumentId(input.flags.get(`--${doc.name}`)??"",doc,usage,` --${doc.name}`);const base=`${SALES_PATH}/${doc.segment}/${encodeURIComponent(id)}/ai-review`;return{reviewPath:base,reasonPath:`${base}/reasons/${encodeURIComponent(criterion)}`,criterion}}function envelope(body,what){
13
13
  if(!isRecord(body)||body["result"]!==true){throw new ApiResponseError(`${what}\u306E\u5FDC\u7B54\u304C\u60F3\u5B9A\u306E\u5F62\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}return body}function withoutResult(body){return Object.fromEntries(Object.entries(body).filter(([key])=>key!=="result"))}function reviewOf(body,what){const review=body["review"];if(review===null)return null;if(!isRecord(review)||typeof review["s\
14
14
  tatus"]!=="string"){throw new ApiResponseError(`${what}\u306E\u5FDC\u7B54\u306B review.status \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}return review}function checksOf(review){const checks=review?.["checks"];return Array.isArray(checks)?checks.filter(isRecord):[]}function checkCounts(review){const checks=checksOf(review);return`\u78BA\u8A8D\u3057\u305F\u89B3\u70B9 ${checks.length} \u4EF6\uFF08\u3046\u3061\u8B66\u544A ${checks.
15
- filter(check=>check["severity"]==="warning").length} \u4EF6\uFF09`}function reasonsMap(body){return isRecord(body["reasons"])?body["reasons"]:{}}var CHECK_COLUMNS=["criterion_id","label","severity","acknowledged","reason_judgment","message"];function checkRows(body){const data=envelope(body,"\u7533\u8ACB\u524DAI\u30C1\u30A7\u30C3\u30AF");const reasons=reasonsMap(data);return checksOf(reviewOf(data,"\u7533\u8ACB\u524DAI\u30C1\u30A7\u30C3\u30AF")).map(check=>{const criterion=typeof check["criterio\
16
- n_id"]==="string"?check["criterion_id"]:null;const reason=criterion!==null?reasons[criterion]:void 0;return{...pick(check,["criterion_id","label","severity"]),acknowledged:check["acknowledged"]===true,reason_judgment:isRecord(reason)?reason["judgment"]??null:null,message:check["message"]??null}})}function reviewRaw(body){const data=envelope(body,"\u7533\u8ACB\u524DAI\u30C1\u30A7\u30C3\u30AF");reviewOf(data,"\u7533\u8ACB\u524DAI\u30C1\u30A7\u30C3\u30AF");return withoutResult(data)}function statusNotes(doc,id,review){
17
- if(review===null)return[`\u307E\u3060\u7533\u8ACB\u524DAI\u30C1\u30A7\u30C3\u30AF\u3092\u5B9F\u884C\u3057\u3066\u3044\u307E\u305B\u3093\uFF08twp ${doc.name} ai-review run ${id} --yes \u3067\u5B9F\u884C\u3067\u304D\u307E\u3059\uFF09`];const status=review["status"];if(IN_FLIGHT.has(String(status))){return[`\u751F\u6210\u4E2D\u3067\u3059\uFF08status=${String(status)}\uFF09\u3002twp ${doc.name} ai-review get ${id} \u3067\u7D50\u679C\u3092\u78BA\u304B\u3081\u3066\u304F\u3060\u3055\u3044\uFF08run \u306B --wait \u3092\u4ED8\u3051\u308B\u3068\u5B8C\u4E86\u307E\u3067\u5F85\u3061\u307E\u3059\uFF09`]}
18
- if(status==="failed")return[`\u524D\u56DE\u306E\u751F\u6210\u306F\u5931\u6557\u3057\u307E\u3057\u305F\uFF08status=failed\uFF09\u3002twp ${doc.name} ai-review run ${id} --yes \u3067\u518D\u5B9F\u884C\u3067\u304D\u307E\u3059`];return[]}function getNotes(doc){return(body,input)=>{const data=envelope(body,"\u7533\u8ACB\u524DAI\u30C1\u30A7\u30C3\u30AF");const review=reviewOf(data,"\u7533\u8ACB\u524DAI\u30C1\u30A7\u30C3\u30AF");const id=input.args[0]?.trim()??"<ID>";const notes=statusNotes(doc,id,review);
19
- if(review!==null&&review["status"]==="completed"){if(typeof review["summary"]==="string"&&review["summary"]!=="")notes.push(`\u8981\u7D04: ${review["summary"]}`);notes.push(`${checkCounts(review)}\u3002\u751F\u6210\u65E5\u6642 ${String(review["generated_at"]??"\u4E0D\u660E")}`)}if(data["stale"]===true)notes.push(`\u3053\u306E\u7D50\u679C\u306F${doc.label}\u306E\u4FDD\u5B58\u3088\u308A\u524D\u306E\u3082\u306E\u3067\u3059\uFF08\u5185\u5BB9\u304C\u5909\u308F\u3063\u3066\u3044\u307E\u3059\uFF09\u3002\u627F\u8A8D\u7533\u8ACB\u306E\u524D\u306B\u518D\u5B9F\u884C\u3057\u3066\u304F\u3060\u3055\u3044`);
15
+ filter(check=>check["severity"]==="warning").length} \u4EF6\uFF09`}function reasonsMap(body){return isRecord(body["reasons"])?body["reasons"]:{}}function hasReferencedReason(check){return isRecord(check["referenced_reason"])}var CHECK_COLUMNS=["criterion_id","label","severity","referenced_reason","reason_judgment","message"];function checkRows(body){const data=envelope(body,"\u7533\u8ACB\u524DAI\u30C1\u30A7\u30C3\u30AF");const reasons=reasonsMap(data);return checksOf(reviewOf(data,"\u7533\u8ACB\u524DAI\u30C1\u30A7\u30C3\u30AF")).
16
+ map(check=>{const criterion=typeof check["criterion_id"]==="string"?check["criterion_id"]:null;const reason=criterion!==null?reasons[criterion]:void 0;return{...pick(check,["criterion_id","label","severity"]),referenced_reason:hasReferencedReason(check),reason_judgment:isRecord(reason)?reason["judgment"]??null:null,message:check["message"]??null}})}function reviewRaw(body){const data=envelope(body,"\u7533\u8ACB\u524DAI\u30C1\u30A7\u30C3\u30AF");reviewOf(data,"\u7533\u8ACB\u524DAI\u30C1\u30A7\u30C3\u30AF");
17
+ return withoutResult(data)}function statusNotes(doc,id,review){if(review===null)return[`\u307E\u3060\u7533\u8ACB\u524DAI\u30C1\u30A7\u30C3\u30AF\u3092\u5B9F\u884C\u3057\u3066\u3044\u307E\u305B\u3093\uFF08twp ${doc.name} ai-review run ${id} --yes \u3067\u5B9F\u884C\u3067\u304D\u307E\u3059\uFF09`];const status=review["status"];if(IN_FLIGHT.has(String(status))){return[`\u751F\u6210\u4E2D\u3067\u3059\uFF08status=${String(status)}\uFF09\u3002twp ${doc.name} ai-review get ${id} \u3067\u7D50\u679C\u3092\u78BA\u304B\u3081\u3066\u304F\u3060\u3055\u3044\uFF08run \u306B --wa\
18
+ it \u3092\u4ED8\u3051\u308B\u3068\u5B8C\u4E86\u307E\u3067\u5F85\u3061\u307E\u3059\uFF09`]}if(status==="failed")return[`\u524D\u56DE\u306E\u751F\u6210\u306F\u5931\u6557\u3057\u307E\u3057\u305F\uFF08status=failed\uFF09\u3002twp ${doc.name} ai-review run ${id} --yes \u3067\u518D\u5B9F\u884C\u3067\u304D\u307E\u3059`];return[]}function getNotes(doc){return(body,input)=>{const data=envelope(body,"\u7533\u8ACB\u524DAI\u30C1\u30A7\u30C3\u30AF");const review=reviewOf(data,"\u7533\u8ACB\u524DAI\u30C1\u30A7\u30C3\u30AF");
19
+ const id=input.args[0]?.trim()??"<ID>";const notes=statusNotes(doc,id,review);if(review!==null&&review["status"]==="completed"){if(typeof review["summary"]==="string"&&review["summary"]!=="")notes.push(`\u8981\u7D04: ${review["summary"]}`);notes.push(`${checkCounts(review)}\u3002\u751F\u6210\u65E5\u6642 ${String(review["generated_at"]??"\u4E0D\u660E")}`)}if(data["stale"]===true)notes.push(`\u3053\u306E\u7D50\u679C\u306F${doc.label}\u306E\u4FDD\u5B58\u3088\u308A\u524D\u306E\u3082\u306E\u3067\u3059\uFF08\u5185\u5BB9\u304C\u5909\u308F\u3063\u3066\u3044\u307E\u3059\uFF09\u3002\u627F\u8A8D\u7533\u8ACB\u306E\u524D\u306B\u518D\u5B9F\u884C\u3057\u3066\u304F\u3060\u3055\u3044`);
20
20
  if(data["reason_editable"]===false){notes.push(data["reason_lock_reason"]==="approved"?"\u627F\u8A8D\u6E08\u307F\u306E\u305F\u3081\u3001\u78BA\u8A8D\u6E08\u307F\u306E\u7406\u7531\u306F\u5909\u66F4\u3067\u304D\u307E\u305B\u3093":"\u627F\u8A8D\u5F85\u3061\u306E\u9593\u306F\u3001\u78BA\u8A8D\u6E08\u307F\u306E\u7406\u7531\u3092\u5909\u66F4\u3067\u304D\u307E\u305B\u3093\uFF08\u5DEE\u3057\u623B\u3055\u308C\u308B\u3068\u5909\u66F4\u3067\u304D\u307E\u3059\uFF09")}notes.push("\u6307\u6458\u306E\u672C\u6587\u30FB\u5185\u8A33\uFF08details\uFF09\u30FB\u7406\u7531\u306E\u5168\u6587\u306F --o\
21
21
  utput json \u3067\u51FA\u307E\u3059");return notes}}var WAIT_FLAG={name:"--wait",summary:"\u751F\u6210\u304C\u7D42\u308F\u308B\uFF08completed / failed\uFF09\u307E\u3067\u5F85\u3064",takesValue:false};var TIMEOUT_FLAG={name:"--timeout",summary:`--wait \u3067\u5F85\u3064\u4E0A\u9650\u306E\u79D2\u6570\uFF08\u65E2\u5B9A ${WAIT_DEFAULT_SECONDS}\u30FB\u6700\u5927 ${WAIT_MAX_SECONDS}\uFF09`,takesValue:true,placeholder:"<\u79D2>"};function waitSeconds(input,doc){const timeout=positiveInteger(input.flags,
22
22
  TIMEOUT_FLAG.name);if(!input.flags.has(WAIT_FLAG.name)){if(timeout!==void 0)throw new UsageError("--timeout \u306F --wait \u3068\u4E00\u7DD2\u306B\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",usageOf(doc,"ai-review","run"));return void 0}if(timeout!==void 0&&timeout>WAIT_MAX_SECONDS){throw new UsageError(`--timeout \u306F ${WAIT_MAX_SECONDS} \u79D2\u4EE5\u4E0B\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u305D\u308C\u3088\u308A\u9577\u304F\u5F85\u3064\u306A\u3089 --wait \u3092\u5916\u3057\u3001\u3042\u3068\u3067 twp ${doc.
@@ -41,6 +41,7 @@ usage:`twp ${doc.name} ai-review get <${doc.label}ID>`,description:`GET ${SALES_
41
41
  \u4E00\u5EA6\u3082\u5B9F\u884C\u3057\u3066\u3044\u306A\u3044\u66F8\u985E\u3067\u306F\u7D50\u679C\u304C\u7A7A\u3067\u3059\uFF08\u30A8\u30E9\u30FC\u306B\u306F\u306A\u308A\u307E\u305B\u3093\uFF09\u3002
42
42
  --output table / text / tsv \u306F\u78BA\u8A8D\u3057\u305F\u89B3\u70B91\u4EF6\uFF1D1\u884C\uFF08${CHECK_COLUMNS.join(" / ")}\uFF09\u3067\u3001severity \u304C warning \u306E\u884C\u304C\u6307\u6458\u3067\u3059\u3002
43
43
  reason_judgment \u306F\u305D\u306E\u89B3\u70B9\u306B\u6DFB\u3048\u305F\u78BA\u8A8D\u6E08\u307F\u306E\u7406\u7531\u306E\u5224\u65AD\u3067\u3059\u3002
44
+ referenced_reason \u306F\u540C\u3058\u53D6\u5F15\u5148\u3067\u904E\u53BB\u306B\u627F\u8A8D\u3055\u308C\u305F\u540C\u3058\u89B3\u70B9\u306E\u5224\u65AD\u304C\u53C2\u8003\u3068\u3057\u3066\u6DFB\u3048\u3089\u308C\u3066\u3044\u308B\u304B\uFF08true/false\uFF09\u3067\u3059\u3002\u8B66\u544A\u306F\u6D88\u3048\u307E\u305B\u3093\u3002
44
45
  \u7406\u7531\u3092\u6DFB\u3048\u308B\u306E\u306F twp ${doc.name} ai-review-reason update <criterion_id> --${doc.name} <${doc.label}ID> \u3067\u3059\u3002`,flags:[],forbidden:documentForbidden,plan:input=>({method:"GET",path:reviewPath(input,doc,"get")}),summarize:checkRows,raw:reviewRaw,notes:getNotes(doc)}]}}function documentFlag(doc){return{name:`--${doc.name}`,summary:`${doc.label}\u306E ID\uFF08twp ${doc.name} list \u306E id \u5217\u306E\u6570\u5B57\u30FB\u5FC5\u9808\uFF09`,takesValue:true,placeholder:`\
45
46
  <${doc.label}ID>`}}var JUDGMENT_FLAG={name:"--judgment",summary:`\u5224\u65AD\uFF08${Object.keys(JUDGMENTS).join(" / ")}\u30FB\u5FC5\u9808\uFF09`,takesValue:true,placeholder:"<\u5224\u65AD>"};var REASON_FLAGS=[JUDGMENT_FLAG,{name:"--text",summary:`\u7406\u7531\u306E\u672C\u6587\uFF08${REASON_MAX_CHARS.toLocaleString()} \u6587\u5B57\u307E\u3067\uFF09`,takesValue:true,placeholder:"<\u7406\u7531>"},{name:"--text-file",summary:"\u7406\u7531\u306E\u672C\u6587\u3092\u8AAD\u3080\u30D5\u30A1\u30A4\u30EB\uFF08- \u3067\u6A19\u6E96\u5165\u529B\uFF09",
46
47
  takesValue:true,placeholder:"<\u30D1\u30B9>"},{name:"--label",summary:"\u8A18\u9332\u306B\u6B8B\u3059\u6307\u6458\u306E\u30E9\u30D9\u30EB\uFF08\u7701\u7565\u6642\u306F\u4FDD\u5B58\u6E08\u307F\u306E\u30C1\u30A7\u30C3\u30AF\u7D50\u679C\u304B\u3089\u88DC\u3046\uFF09",takesValue:true,placeholder:"<\u30E9\u30D9\u30EB>"}];function judgmentOf(input,doc){const raw=nonEmpty(input.flags,JUDGMENT_FLAG.name)?.trim();const list=Object.entries(JUDGMENTS).map(([key,label])=>`${key}\uFF08${label}\uFF09`).join("\
@@ -99,4 +100,4 @@ PR \u306E\u672C\u6587\u306B\u306F\u3001\u9078\u3093\u3060\u7406\u7531\u306E\u630
99
100
  \uFF09`,takesValue:true,placeholder:"<\u30D1\u30B9>"}],forbidden:reasonsForbidden,prepare:preparePublish,plan:publishPlan,plannedNotes:input=>["GitHub \u306B PR \u3092\u4F5C\u308A\u307E\u3059\u3002\u9589\u3058\u3066\u3082 PR \u306E\u672C\u6587\u306F\u5C65\u6B74\u306B\u6B8B\u308A\u3001\u4F7F\u3063\u305F\u7406\u7531\u306B\u306F PR \u756A\u53F7\u304C\u8A18\u9332\u3055\u308C\u307E\u3059\uFF08\u540C\u3058\u7406\u7531\u3067\u306F2\u5EA6\u3068\u4F5C\u308C\u307E\u305B\u3093\uFF09"," \u5B9B\u5148: \u30B5\u30FC\u30D0\u306B\u8A2D\u5B9A\u3055\u308C\u305F\u793E\u5185\u30CA\u30EC\u30C3\u30B8\
100
101
  \u306E\u30EA\u30DD\u30B8\u30C8\u30EA\uFF08\u65E2\u5B9A\u306E\u30D6\u30E9\u30F3\u30C1\u304B\u3089\u65B0\u3057\u3044\u30D6\u30E9\u30F3\u30C1\u3092\u5207\u308A\u307E\u3059\u3002\u30EA\u30DD\u30B8\u30C8\u30EA\u540D\u3068\u30D6\u30E9\u30F3\u30C1\u540D\u306F\u5FDC\u7B54\u306B\u51FA\u307E\u3059\uFF09",` \u8FFD\u8A18\u5148: ${targetPathOf(input)??DEFAULT_TARGET}`,` PR \u672C\u6587: \u9078\u3093\u3060\u7406\u7531 ${reasonIds(input,"publish").length} \u4EF6\u306E\u6307\u6458\u30FB\u5224\u65AD\u30FB\u7406\u7531\u306E\u539F\u6587\uFF08\u539F\u6587\u306F\u53D6\u5F15\u5148\u540D\u30FB\u6848\u4EF6\u540D\u306E\u691C\u67FB\u3092\u53D7\u3051\u307E\u305B\u3093\uFF09`],
101
102
  execute:async(input,ctx)=>{try{return await ctx.send(publishPlan(input))}catch(err){if(!refusedBeforeSending(err)){ctx.warn("PR \u306E\u4F5C\u6210\u306F\u9001\u4FE1\u3057\u307E\u3057\u305F\u304C\u3001\u7D50\u679C\u3092\u53D7\u3051\u53D6\u308C\u307E\u305B\u3093\u3067\u3057\u305F\u3002\u4F5C\u6210\u6E08\u307F\u306E\u3053\u3068\u304C\u3042\u308A\u307E\u3059\u3002\u6253\u3061\u76F4\u3059\u524D\u306B twp ai-review-reason list \u306E knowledge_pr_number \u5217\u3067\u78BA\u304B\u3081\u3066\u304F\u3060\u3055\u3044\u3002")}
102
- throw err}},summarize:body=>pick(prOf(body),["pull_request_number","pull_request_url","repository","branch","target_path"]),raw:body=>withoutResult(prOf(body)),notes:body=>[`PR \u3092\u4F5C\u308A\u307E\u3057\u305F: ${String(prOf(body)["pull_request_url"])}\uFF08\u81EA\u52D5\u3067\u306F\u30DE\u30FC\u30B8\u3055\u308C\u307E\u305B\u3093\u3002\u5185\u5BB9\u3092\u78BA\u304B\u3081\u3066\u30DE\u30FC\u30B8\u3057\u3066\u304F\u3060\u3055\u3044\uFF09`]}]};export{CRITERION_RE,WAIT_POLL_INTERVAL_MS,envelope,withoutResult,reviewOf,checksOf,checkCounts,reasonsMap,estimateAiReviewResources,invoiceAiReviewResources,contractAiReviewResources,aiReviewReasonDomain};
103
+ throw err}},summarize:body=>pick(prOf(body),["pull_request_number","pull_request_url","repository","branch","target_path"]),raw:body=>withoutResult(prOf(body)),notes:body=>[`PR \u3092\u4F5C\u308A\u307E\u3057\u305F: ${String(prOf(body)["pull_request_url"])}\uFF08\u81EA\u52D5\u3067\u306F\u30DE\u30FC\u30B8\u3055\u308C\u307E\u305B\u3093\u3002\u5185\u5BB9\u3092\u78BA\u304B\u3081\u3066\u30DE\u30FC\u30B8\u3057\u3066\u304F\u3060\u3055\u3044\uFF09`]}]};export{CRITERION_RE,WAIT_POLL_INTERVAL_MS,envelope,withoutResult,reviewOf,checksOf,checkCounts,reasonsMap,hasReferencedReason,estimateAiReviewResources,invoiceAiReviewResources,contractAiReviewResources,aiReviewReasonDomain};
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{REDACTED,redactSecrets}from"./chunk-LDBYJPRD.js";var ENV_SECRET_ASSIGNMENT=/\b([A-Z0-9_]{0,128}?(?:TOKEN|SECRET|PASSWORD|PASSWD|API_?KEY|CREDENTIALS?|PRIVATE_KEY)(?:_[A-Z0-9_]{0,128})?=)(?:\\?"(?!\$)[^"\n]+?\\?"|\\?'(?!\$)[^'\n]+?\\?'|(?![$(])[^\s"'`;&)]{8,})/g;var PEM_BEGIN=/-----BEGIN [A-Z ]{0,64}PRIVATE KEY-----/g;var PEM_END=/-----END [A-Z ]{0,64}PRIVATE KEY-----/g;var PEM_UNCLOSED_BODY=/(?:(?:\r?\n|\\(?:r\\)?n)[ \t]*(?:(?:Proc-Type|DEK-Info):[^\n\\]*|(?:[A-Za-z0-9+/]{16,}={0,2}|[A-Za-z0-9+/]*={1,2})[ \t]*(?=[\r\n"\\]|$)))*/y;function redactPemPrivateKeys(text){
3
+ import{REDACTED,redactSecrets}from"./chunk-H6XS5AMQ.js";var ENV_SECRET_ASSIGNMENT=/\b([A-Z0-9_]{0,128}?(?:TOKEN|SECRET|PASSWORD|PASSWD|API_?KEY|CREDENTIALS?|PRIVATE_KEY)(?:_[A-Z0-9_]{0,128})?=)(?:\\?"(?!\$)[^"\n]+?\\?"|\\?'(?!\$)[^'\n]+?\\?'|(?![$(])[^\s"'`;&)]{8,})/g;var PEM_BEGIN=/-----BEGIN [A-Z ]{0,64}PRIVATE KEY-----/g;var PEM_END=/-----END [A-Z ]{0,64}PRIVATE KEY-----/g;var PEM_UNCLOSED_BODY=/(?:(?:\r?\n|\\(?:r\\)?n)[ \t]*(?:(?:Proc-Type|DEK-Info):[^\n\\]*|(?:[A-Za-z0-9+/]{16,}={0,2}|[A-Za-z0-9+/]*={1,2})[ \t]*(?=[\r\n"\\]|$)))*/y;function redactPemPrivateKeys(text){
4
4
  if(!text.includes("PRIVATE KEY-----"))return text;let out="";let last=0;let end=null;let noMoreEnd=false;PEM_BEGIN.lastIndex=0;for(let begin=PEM_BEGIN.exec(text);begin!==null;begin=PEM_BEGIN.exec(text)){const after=begin.index+begin[0].length;if(!noMoreEnd&&(end===null||end.index<after)){PEM_END.lastIndex=after;end=PEM_END.exec(text);noMoreEnd=end===null}let stop;if(end!==null&&!noMoreEnd){stop=end.index+end[0].length}else{PEM_UNCLOSED_BODY.lastIndex=after;PEM_UNCLOSED_BODY.exec(text);stop=Math.
5
5
  max(after,PEM_UNCLOSED_BODY.lastIndex)}out+=text.slice(last,begin.index)+REDACTED;last=stop;PEM_BEGIN.lastIndex=stop}return out+text.slice(last)}var KNOWN_TOKEN_PATTERNS=[/\b(?:gh[pousr]_[A-Za-z0-9]{20,}|github_pat_[A-Za-z0-9_]{20,}|sk-ant-[A-Za-z0-9_-]{20,}|(?:AKIA|ASIA)[0-9A-Z]{16}|npm_[A-Za-z0-9]{30,}|xox[abprs]-[A-Za-z0-9-]{10,})\b/g,/\beyJ[A-Za-z0-9_-]{8,}\.eyJ[A-Za-z0-9_-]{8,}\.[A-Za-z0-9_-]{8,}/g];var URL_USERINFO=/((?<![A-Za-z0-9+.-])[a-z][a-z0-9+.-]{0,31}:\/\/)[^\s/@:"'`]+:[^\s/"'`]+@/gi;
6
6
  var HEADER_TOKEN="[^\\s\"'`\\\\\\u0080-\\uFFFF]+";var HEADER_SEP=`(\\\\?["']?[ \\t]*:[ \\t]*\\\\?["']?)`;var AUTH_SCHEME="(?:basic|bearer|token|digest|negotiate|ntlm|aws4-hmac-sha256)";var HEADER_SECRET=new RegExp(`(?<![\\w-])(x-api-key|x-auth-token|x-vercel-protection-bypass)${HEADER_SEP}(?![$(]|\\*\\*\\*\uFF08)${HEADER_TOKEN}`,"gi");var AUTHORIZATION_HEADER=new RegExp(`(?<![\\w-])((?:proxy-)?authorization)${HEADER_SEP}(?!(?:${AUTH_SCHEME}[ \\t]+)?(?:[$(]|\\*\\*\\*\uFF08))(${AUTH_SCHEME}[ \\t]+)\
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{loadDomain}from"./chunk-4DY3NU53.js";import{renderDocument,renderOutput}from"./chunk-PO35MCYP.js";import{JsonBodyWithView}from"./chunk-Q3B65OFC.js";import{evaluateQuery}from"./chunk-GFLGXGWE.js";import{redactSecretValues,redactSecrets,withDebug}from"./chunk-LDBYJPRD.js";import{parseOperationArgs}from"./chunk-RX5HWI4L.js";import{Resolver,requireDefaultProject}from"./chunk-RSSPNFSK.js";import{ResolveError}from"./chunk-HVZUXLQ4.js";import{ApiError,
3
+ import{loadDomain}from"./chunk-Z5NBJC77.js";import{renderDocument,renderOutput}from"./chunk-ZPSPSYDD.js";import{JsonBodyWithView}from"./chunk-Q3B65OFC.js";import{evaluateQuery}from"./chunk-GFLGXGWE.js";import{redactSecretValues,redactSecrets,withDebug}from"./chunk-H6XS5AMQ.js";import{parseOperationArgs}from"./chunk-RX5HWI4L.js";import{Resolver,requireDefaultProject}from"./chunk-RSSPNFSK.js";import{ResolveError}from"./chunk-HVZUXLQ4.js";import{ApiError,
4
4
  MultipartBody,TwpApiClient,appendQuery}from"./chunk-JA5A6UJ2.js";import{DEFAULT_MAX_ITEMS,DEFAULT_MAX_PAGES,nextPageNotes,positiveInteger,shellQuote}from"./chunk-MI6HVYR2.js";import{isRecord}from"./chunk-3ZRMMBP5.js";import{ApiRejectedError,ApiResponseError,EXIT_API_CLIENT,EXIT_API_SERVER,EXIT_AUTH,EXIT_FAILURE,EXIT_OK,EXIT_USAGE,EXIT_WAIT_TIMEOUT,NetworkError,UsageError,WaitTimeoutError}from"./chunk-VFPY2A23.js";import{GLOBAL_OPTIONS_HELP}from"./chunk-PECIBNFD.js";
5
5
  import{AuthSession,NotLoggedInError,SessionExpiredError,loadCredentials}from"./chunk-XNLIEUAW.js";import{httpFetch}from"./chunk-J7QYPKVK.js";import{effectiveApiUrl,loadUserConfig,resolveConfiguredBacklogSpace,resolveConfiguredOutput,resolveProfile}from"./chunk-EDF4U5BT.js";import{HELP_TOKEN}from"./chunk-MLRBDF44.js";import{OUTPUT_FORMATS,resolveOutputFormat}from"./chunk-74BPZOKU.js";import{stringWidth}from"./chunk-UREA4ZIG.js";import{stripTerminalControls}from"./chunk-NHYMHCAT.js";import fs from"fs";import path from"path";var NO_REDACT_FLAG={name:"--no-redact",summary:"\u5FDC\u7B54\u306E\u4F0F\u5B57\u5316\u3092\u89E3\u9664\u3057\u3066\u751F\u306E\u5024\u3092\u51FA\u3059\uFF08\u9375\u306E\u53D7\u3051\u53D6\u308A\u7B49\uFF09",takesValue:false};var NO_REDACT_NOTICE="\u6CE8\u8A18: --no-redact \u306E\u305F\u3081\u51FA\u529B\u3092\u4F0F\u5B57\u5316\u3057\u307E\u305B\u3093\uFF08\u7AEF\u672B\u3068\u30ED\u30B0\u306B\u5E73\u6587\u3067\u6B8B\u308A\u307E\u3059\uFF09\u3002";function withCommonFlags(flags){return flags.some(flag=>flag.
6
6
  name===NO_REDACT_FLAG.name)?flags:[...flags,NO_REDACT_FLAG]}function alignedList(entries,indent=" "){const width=entries.reduce((max,[left])=>Math.max(max,stringWidth(left)),0);return entries.map(([left,right])=>`${indent}${left}${" ".repeat(Math.max(0,width-stringWidth(left)))} ${right}`).join("\n")}function subresourcesOf(resource){return resource.subresources??[]}function renderResourceHelp(resource,path2){const subresources=subresourcesOf(resource);const operationSection=resource.operations.length===0?"":`
@@ -1,11 +1,11 @@
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-WTDLGRNM.js")).agentDomain,"agent-loop":async()=>(await import("./agent-loop-W2KS5JJV.js")).agentLoopDomain,"ai-review-reason":async()=>(await import("./sales-ai-review-L5VW3DU3.js")).aiReviewReasonDomain,analysis:async()=>(await import("./analysis-H52FJIFO.js")).analysisDomain,announcement:async()=>(await import("./announcement-RTTVGW4K.js")).announcementDomain,attendance:async()=>(await import("./attendance-correct-OLWRCDP4.js")).attendanceDomainWithRecords,
4
- backlog:async()=>(await import("./backlog-HDDV2NTC.js")).backlogDomain,budget:async()=>(await import("./budget-T246BG2P.js")).budgetDomain,"business-hours":async()=>(await import("./business-hours-I4X6YQS3.js")).businessHoursDomain,"business-place":async()=>(await import("./sales-master-BQML5IJT.js")).businessPlaceDomain,company:async()=>(await import("./company-2CRWKBJL.js")).companyDomain,contract:async()=>(await import("./contract-73RVPBYM.js")).contractDomain,customer:async()=>(await import("./company-2CRWKBJL.js")).
5
- customerDomain,department:async()=>(await import("./department-GPVHVFFP.js")).departmentDomain,deposit:async()=>(await import("./deposit-3I3NV556.js")).depositDomain,estimate:async()=>(await import("./estimate-NLKTWCYI.js")).estimateDomain,evaluation:async()=>(await import("./evaluation-VP7OFTBS.js")).evaluationDomain,expense:async()=>(await import("./expense-O2O4623X.js")).expenseDomain,"fiscal-year":async()=>(await import("./fiscal-year-ZTCSF46U.js")).fiscalYearDomain,holiday:async()=>(await import("./holiday-WDI4CSNL.js")).
6
- holidayDomain,"goal-sheet":async()=>(await import("./evaluation-VP7OFTBS.js")).goalSheetDomain,inquiry:async()=>(await import("./inquiry-4Q4BRYM3.js")).inquiryDomain,invoice:async()=>(await import("./invoice-BXSI6SMA.js")).invoiceDomain,"job-title":async()=>(await import("./job-title-NCFHCA4M.js")).jobTitleDomain,knowledge:async()=>(await import("./domain-knowledge-SZZCV6IO.js")).knowledgeDomain,leave:async()=>(await import("./leave-W4GHXMSE.js")).leaveDomain,license:async()=>(await import("./license-XSWDXSJE.js")).
7
- licenseDomain,media:async()=>(await import("./media-CTIY3IAB.js")).mediaDomain,meeting:async()=>(await import("./knowledge-TCADQEPU.js")).meetingDomain,note:async()=>(await import("./knowledge-TCADQEPU.js")).noteDomain,notification:async()=>(await import("./notification-WP7CH734.js")).notificationDomain,onedrive:async()=>(await import("./onedrive-KWVOUGG6.js")).onedriveDomain,outlook:async()=>(await import("./outlook-GYRF5TXA.js")).outlookDomain,payee:async()=>(await import("./sales-master-BQML5IJT.js")).
3
+ var LOADERS={agent:async()=>(await import("./agent-WTDLGRNM.js")).agentDomain,"agent-loop":async()=>(await import("./agent-loop-E5XWZV3V.js")).agentLoopDomain,"ai-review-reason":async()=>(await import("./sales-ai-review-KJICZNUR.js")).aiReviewReasonDomain,analysis:async()=>(await import("./analysis-H52FJIFO.js")).analysisDomain,announcement:async()=>(await import("./announcement-RTTVGW4K.js")).announcementDomain,attendance:async()=>(await import("./attendance-correct-OLWRCDP4.js")).attendanceDomainWithRecords,
4
+ backlog:async()=>(await import("./backlog-HDDV2NTC.js")).backlogDomain,budget:async()=>(await import("./budget-T246BG2P.js")).budgetDomain,"business-hours":async()=>(await import("./business-hours-I4X6YQS3.js")).businessHoursDomain,"business-place":async()=>(await import("./sales-master-BQML5IJT.js")).businessPlaceDomain,company:async()=>(await import("./company-2CRWKBJL.js")).companyDomain,contract:async()=>(await import("./contract-5AU5B4NN.js")).contractDomain,customer:async()=>(await import("./company-2CRWKBJL.js")).
5
+ customerDomain,department:async()=>(await import("./department-GPVHVFFP.js")).departmentDomain,deposit:async()=>(await import("./deposit-3I3NV556.js")).depositDomain,estimate:async()=>(await import("./estimate-Z3ANB4WK.js")).estimateDomain,evaluation:async()=>(await import("./evaluation-VP7OFTBS.js")).evaluationDomain,expense:async()=>(await import("./expense-O2O4623X.js")).expenseDomain,"fiscal-year":async()=>(await import("./fiscal-year-ZTCSF46U.js")).fiscalYearDomain,holiday:async()=>(await import("./holiday-WDI4CSNL.js")).
6
+ holidayDomain,"goal-sheet":async()=>(await import("./evaluation-VP7OFTBS.js")).goalSheetDomain,inquiry:async()=>(await import("./inquiry-4Q4BRYM3.js")).inquiryDomain,invoice:async()=>(await import("./invoice-YVUMRHY2.js")).invoiceDomain,"job-title":async()=>(await import("./job-title-NCFHCA4M.js")).jobTitleDomain,knowledge:async()=>(await import("./domain-knowledge-SZZCV6IO.js")).knowledgeDomain,leave:async()=>(await import("./leave-NVOZB7VQ.js")).leaveDomain,license:async()=>(await import("./license-XSWDXSJE.js")).
7
+ licenseDomain,media:async()=>(await import("./media-TDXLP4T6.js")).mediaDomain,meeting:async()=>(await import("./knowledge-TCADQEPU.js")).meetingDomain,note:async()=>(await import("./knowledge-TCADQEPU.js")).noteDomain,notification:async()=>(await import("./notification-WP7CH734.js")).notificationDomain,onedrive:async()=>(await import("./onedrive-KWVOUGG6.js")).onedriveDomain,outlook:async()=>(await import("./outlook-GYRF5TXA.js")).outlookDomain,payee:async()=>(await import("./sales-master-BQML5IJT.js")).
8
8
  payeeDomain,position:async()=>(await import("./position-H3NSDVKQ.js")).positionDomain,project:async()=>(await import("./project-UDHRIZZN.js")).projectDomain,prospect:async()=>(await import("./prospect-QY3NYP2A.js")).prospectDomain,purchase:async()=>(await import("./purchase-7XCGCQ2G.js")).purchaseDomain,qualification:async()=>(await import("./skill-4TSTVUXY.js")).qualificationDomain,receivable:async()=>(await import("./receivable-GW5WCVJ7.js")).receivableDomain,redmine:async()=>(await import("./redmine-644RTL42.js")).
9
9
  redmineDomain,report:async()=>(await import("./report-P74LSHTE.js")).reportDomain,"rounding-setting":async()=>(await import("./sales-numbering-OW4O6WH6.js")).roundingSettingDomain,"seal-impression":async()=>(await import("./sales-master-BQML5IJT.js")).sealImpressionDomain,search:async()=>(await import("./search-BLMSVPIL.js")).searchDomain,segment:async()=>(await import("./segment-G4IPD43F.js")).segmentDomain,shift:async()=>(await import("./attendance-lists-TBUZCRKK.js")).shiftDomain,skill:async()=>(await import("./skill-4TSTVUXY.js")).
10
10
  skillDomain,"staffing-board":async()=>(await import("./staffing-board-MQREMSVJ.js")).staffingBoardDomain,storage:async()=>(await import("./storage-AQDCEBDJ.js")).storageDomain,"supplier-payment":async()=>(await import("./supplier-payment-KRLYWEKY.js")).supplierPaymentDomain,support:async()=>(await import("./support-ITRXFVMK.js")).supportDomain,task:async()=>(await import("./task-AGNMPS4F.js")).taskDomain,teams:async()=>(await import("./teams-MZR3256V.js")).teamsDomain,user:async()=>(await import("./user-3IHEIFAT.js")).
11
- userDomain,"user-contract-type":async()=>(await import("./user-contract-type-HDA5TITL.js")).userContractTypeDomain,wiki:async()=>(await import("./knowledge-TCADQEPU.js")).wikiDomain,workchange:async()=>(await import("./attendance-lists-TBUZCRKK.js")).workchangeDomain,"worker-agent":async()=>(await import("./worker-agent-52PXQO4N.js")).workerAgentDomain,workflow:async()=>(await import("./workflow-4NC2C4TX.js")).workflowDomain};async function loadDomain(name){return LOADERS[name]()}export{loadDomain};
11
+ userDomain,"user-contract-type":async()=>(await import("./user-contract-type-HDA5TITL.js")).userContractTypeDomain,wiki:async()=>(await import("./knowledge-TCADQEPU.js")).wikiDomain,workchange:async()=>(await import("./attendance-lists-TBUZCRKK.js")).workchangeDomain,"worker-agent":async()=>(await import("./worker-agent-52PXQO4N.js")).workerAgentDomain,workflow:async()=>(await import("./workflow-2FODUREO.js")).workflowDomain};async function loadDomain(name){return LOADERS[name]()}export{loadDomain};
@@ -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-LDBYJPRD.js";import{formatOutput}from"./chunk-74BPZOKU.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};
3
+ import{redactSecretValues,redactSecrets}from"./chunk-H6XS5AMQ.js";import{formatOutput}from"./chunk-74BPZOKU.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};
package/dist/cli.js CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire as __twpCreateRequire } from 'node:module';
3
3
  const require = __twpCreateRequire(import.meta.url);
4
- import{GLOBAL_OPTIONS_HELP}from"./chunk-PECIBNFD.js";import{parseArgv}from"./chunk-IVFSEXD3.js";import"./chunk-2LOT54OO.js";import"./chunk-MLRBDF44.js";import"./chunk-VERYHAWV.js";import"./chunk-QQRJLH6B.js";import"./chunk-VSJBJXZO.js";var VERSION=true?"0.83.0":"0.0.0-dev";var HELP=`twp ${VERSION} \u2014 TWP CLI
4
+ import{GLOBAL_OPTIONS_HELP}from"./chunk-PECIBNFD.js";import{parseArgv}from"./chunk-IVFSEXD3.js";import"./chunk-2LOT54OO.js";import"./chunk-MLRBDF44.js";import"./chunk-VERYHAWV.js";import"./chunk-QQRJLH6B.js";import"./chunk-VSJBJXZO.js";var VERSION=true?"0.84.0":"0.0.0-dev";var HELP=`twp ${VERSION} \u2014 TWP CLI
5
5
 
6
6
  \u4F7F\u3044\u65B9:
7
7
  twp \u5BFE\u8A71 TUI \u3092\u8D77\u52D5
@@ -1391,16 +1391,16 @@ TUI \u5185:
1391
1391
  TWP API \u3092\u547C\u3079\u307E\u3059\u3002TWP API \u306E\u30C4\u30FC\u30EB\u306F\u65E2\u5B9A\u3067\u78BA\u8A8D\u304C\u51FA\u307E\u3059\uFF08-p \u3067\u306F\u62D2\u5426\u3002--allowed-tools \u3067\u540D\u524D\u3092\u8A31\u53EF\uFF09\u3002
1392
1392
  \u4F1A\u8A71\u30FB\u30ED\u30FC\u30AB\u30EB\u30C4\u30FC\u30EB\uFF08\u30D5\u30A1\u30A4\u30EB\u30FB\u30B3\u30DE\u30F3\u30C9\u30FBgit\uFF09\u306F\u30C6\u30CA\u30F3\u30C8\u306E\u30AF\u30EC\u30B8\u30C3\u30C8\u3067\u5B9F\u969B\u306B\u52D5\u304D\u307E\u3059\u3002
1393
1393
  `;function ignoreEpipe(stream){stream.on("error",err=>{if(err.code==="EPIPE")process.exit(0);throw err})}async function main(){const nodeMajor=Number(process.versions.node.split(".")[0]);if(nodeMajor<22){process.stderr.write(`twp-cli \u306B\u306F Node.js 22 \u4EE5\u4E0A\u304C\u5FC5\u8981\u3067\u3059\uFF08\u73FE\u5728: ${process.versions.node}\uFF09
1394
- `);process.exit(1)}ignoreEpipe(process.stdout);ignoreEpipe(process.stderr);if(process.env["TWP_AUTO_UPDATE_WORKER"]==="1"){const{runAutoUpdateWorker}=await import("./auto-update-worker-OIVQGG34.js");await runAutoUpdateWorker().catch(()=>void 0);return}const[first,...rest]=process.argv.slice(2);if(first==="__complete"||first==="completion"){const completion=await import("./completion-C6ZQCDT2.js");if(first==="completion"){process.exitCode=completion.runCompletion(rest,process.stdout,process.stderr);return}
1395
- const[{loadDomain},{loadUserConfig}]=await Promise.all([import("./registry-7ETH2NOG.js"),import("./config-XYWRBIC6.js")]);process.exitCode=await completion.runComplete(rest,process.stdout,{loadDomain,profileNames:()=>Object.keys(loadUserConfig().profiles??{})});return}if(first==="configure"){const autoUpdate2=await import("./auto-update-FXXQHBV5.js");autoUpdate2.registerRunning();autoUpdate2.onStartup(VERSION);const{runConfigure}=await import("./configure-3JID6MQ5.js");process.exitCode=
1394
+ `);process.exit(1)}ignoreEpipe(process.stdout);ignoreEpipe(process.stderr);if(process.env["TWP_AUTO_UPDATE_WORKER"]==="1"){const{runAutoUpdateWorker}=await import("./auto-update-worker-Q4KASOTO.js");await runAutoUpdateWorker().catch(()=>void 0);return}const[first,...rest]=process.argv.slice(2);if(first==="__complete"||first==="completion"){const completion=await import("./completion-C6ZQCDT2.js");if(first==="completion"){process.exitCode=completion.runCompletion(rest,process.stdout,process.stderr);return}
1395
+ const[{loadDomain},{loadUserConfig}]=await Promise.all([import("./registry-WXXPS55F.js"),import("./config-XYWRBIC6.js")]);process.exitCode=await completion.runComplete(rest,process.stdout,{loadDomain,profileNames:()=>Object.keys(loadUserConfig().profiles??{})});return}if(first==="configure"){const autoUpdate2=await import("./auto-update-FXXQHBV5.js");autoUpdate2.registerRunning();autoUpdate2.onStartup(VERSION);const{runConfigure}=await import("./configure-3JID6MQ5.js");process.exitCode=
1396
1396
  await runConfigure(rest);return}const args=parseArgv(process.argv.slice(2));if(args.command==="version"){process.stdout.write(`${VERSION}
1397
1397
  `);return}if(args.command==="help"){process.stdout.write(HELP);return}if(args.movedCommand!==void 0){const{MOVED_QUEUE_COMMAND_MESSAGE}=await import("./dispatch-HHWTJ3P4.js");process.stderr.write(MOVED_QUEUE_COMMAND_MESSAGE);process.exitCode=2;return}if(args.unknown.length>0){process.stderr.write(`\u4E0D\u660E\u306A\u5F15\u6570: ${args.unknown.join(" ")}
1398
1398
 
1399
- ${HELP}`);process.exitCode=2;return}const autoUpdate=await import("./auto-update-FXXQHBV5.js");autoUpdate.registerRunning();if(args.command==="task-loop"&&args.taskLoopAction!=="capacity"){process.env[autoUpdate.DISABLE_ENV]="1"}else if(args.command!=="update"){autoUpdate.onStartup(VERSION)}if(args.command==="domain"&&args.domain!==void 0){const{runDomain}=await import("./run-OKRSGCIR.js");process.exitCode=await runDomain({domain:args.domain,...args.operation!==void 0?{operation:args.operation}:
1400
- {},argv:args.domainArgv,help:args.domainHelp,globals:{...args.profile!==void 0?{profile:args.profile}:{},...args.output!==void 0?{output:args.output}:{},...args.query!==void 0?{query:args.query}:{},dryRun:args.dryRun,debug:args.debug,yes:args.yes,refresh:args.refresh},version:VERSION});return}if(args.command==="api"){const{runApiCommand}=await import("./api-command-KBH7ML2J.js");process.exitCode=await runApiCommand({argv:args.domainArgv,help:args.domainHelp,globals:{...args.profile!==void 0?{profile:args.
1401
- profile}:{},...args.output!==void 0?{output:args.output}:{},...args.query!==void 0?{query:args.query}:{},dryRun:args.dryRun,debug:args.debug,yes:args.yes},version:VERSION});return}if(args.command==="update"){const{runUpdate}=await import("./update-XUIOLVEL.js");process.exitCode=await runUpdate({...args.profile!==void 0?{profile:args.profile}:{},version:VERSION});return}if(args.command==="login"||args.command==="logout"||args.command==="whoami"){const{runLogin,runLogout,runWhoami}=await import("./commands-XD25HOMA.js");
1402
- const options={profile:args.profile,method:args.loginMethod,tenant:args.tenant,noBrowser:args.loginNoBrowser,cliVersion:VERSION,force:args.logoutForce,...args.output!==void 0?{output:args.output}:{},...args.query!==void 0?{query:args.query}:{}};const runner=args.command==="login"?runLogin:args.command==="logout"?runLogout:runWhoami;process.exitCode=await runner(options);return}if(args.command==="task-loop"){const{runTaskLoop}=await import("./commands-X2FS3DN7.js");process.exitCode=await runTaskLoop(
1399
+ ${HELP}`);process.exitCode=2;return}const autoUpdate=await import("./auto-update-FXXQHBV5.js");autoUpdate.registerRunning();if(args.command==="task-loop"&&args.taskLoopAction!=="capacity"){process.env[autoUpdate.DISABLE_ENV]="1"}else if(args.command!=="update"){autoUpdate.onStartup(VERSION)}if(args.command==="domain"&&args.domain!==void 0){const{runDomain}=await import("./run-4KFKWIKY.js");process.exitCode=await runDomain({domain:args.domain,...args.operation!==void 0?{operation:args.operation}:
1400
+ {},argv:args.domainArgv,help:args.domainHelp,globals:{...args.profile!==void 0?{profile:args.profile}:{},...args.output!==void 0?{output:args.output}:{},...args.query!==void 0?{query:args.query}:{},dryRun:args.dryRun,debug:args.debug,yes:args.yes,refresh:args.refresh},version:VERSION});return}if(args.command==="api"){const{runApiCommand}=await import("./api-command-PWAWH4NR.js");process.exitCode=await runApiCommand({argv:args.domainArgv,help:args.domainHelp,globals:{...args.profile!==void 0?{profile:args.
1401
+ profile}:{},...args.output!==void 0?{output:args.output}:{},...args.query!==void 0?{query:args.query}:{},dryRun:args.dryRun,debug:args.debug,yes:args.yes},version:VERSION});return}if(args.command==="update"){const{runUpdate}=await import("./update-6E4IPTUE.js");process.exitCode=await runUpdate({...args.profile!==void 0?{profile:args.profile}:{},version:VERSION});return}if(args.command==="login"||args.command==="logout"||args.command==="whoami"){const{runLogin,runLogout,runWhoami}=await import("./commands-7GDO4YEQ.js");
1402
+ const options={profile:args.profile,method:args.loginMethod,tenant:args.tenant,noBrowser:args.loginNoBrowser,cliVersion:VERSION,force:args.logoutForce,...args.output!==void 0?{output:args.output}:{},...args.query!==void 0?{query:args.query}:{}};const runner=args.command==="login"?runLogin:args.command==="logout"?runLogout:runWhoami;process.exitCode=await runner(options);return}if(args.command==="task-loop"){const{runTaskLoop}=await import("./commands-SYSUH2RP.js");process.exitCode=await runTaskLoop(
1403
1403
  {action:args.taskLoopAction??"run",project:args.project,profile:args.profile,safe:args.safe,daemon:args.daemon,interval:args.interval,maxCycles:args.maxCycles,forceRunner:args.forceRunner,force:args.stopForce,drain:args.stopDrain,engine:args.engine,version:VERSION,verbose:args.verbose,scheduleNow:args.scheduleNow,scheduleCounts:args.scheduleCounts,scheduleGate:args.scheduleGate,scheduleOp:args.scheduleOp,scheduleConfigOp:args.scheduleConfigOp,scheduleId:args.scheduleId,charterOp:args.charterOp,charterInput:args.
1404
1404
  charterFile,charterOutput:args.charterOut,charterRevision:args.charterRevision,settingsOp:args.settingsOp,skillOp:args.skillOp,skillName:args.skillName,skillAll:args.skillAll,skillDir:args.skillDir,skillConfig:args.skillConfig,output:args.output,query:args.query,revisionFrom:args.revisionFrom,revisionTo:args.revisionTo,planOp:args.planOp,capacityOp:args.capacityOp,runnerOp:args.runnerOp,runnerId:args.runnerTargetId,planEmpty:args.planEmpty,planCheck:args.planCheck,yes:args.yes,ais:args.ais,workspace:args.
1405
- workspace,aiConfigFile:args.aiConfigFile,noAiConfigFile:args.noAiConfigFile});return}if(args.command==="print"){const{runOneShot}=await import("./oneshot-R7BDYFEN.js");process.exitCode=await runOneShot({prompt:args.prompt??"",fromStdin:args.promptFromStdin,mode:args.mode??"dev",...args.permissionMode!==void 0?{permissionMode:args.permissionMode}:{},allowedTools:args.allowedTools,disallowedTools:args.disallowedTools,...args.model!==void 0?{model:args.model}:{},...args.profile!==void 0?{profile:args.
1406
- profile}:{},version:VERSION});return}const{startTui}=await import("./app-ORQBEJPS.js");await startTui({mode:args.mode,permissionMode:args.permissionMode,allowedTools:args.allowedTools,disallowedTools:args.disallowedTools,model:args.model,profile:args.profile,noTui:args.noTui||!process.stdout.isTTY,doctor:args.doctor,version:VERSION})}await main();
1405
+ workspace,aiConfigFile:args.aiConfigFile,noAiConfigFile:args.noAiConfigFile});return}if(args.command==="print"){const{runOneShot}=await import("./oneshot-GTOK2ZPQ.js");process.exitCode=await runOneShot({prompt:args.prompt??"",fromStdin:args.promptFromStdin,mode:args.mode??"dev",...args.permissionMode!==void 0?{permissionMode:args.permissionMode}:{},allowedTools:args.allowedTools,disallowedTools:args.disallowedTools,...args.model!==void 0?{model:args.model}:{},...args.profile!==void 0?{profile:args.
1406
+ profile}:{},version:VERSION});return}const{startTui}=await import("./app-57NA4OFE.js");await startTui({mode:args.mode,permissionMode:args.permissionMode,allowedTools:args.allowedTools,disallowedTools:args.disallowedTools,model:args.model,profile:args.profile,noTui:args.noTui||!process.stdout.isTTY,doctor:args.doctor,version:VERSION})}await main();
@@ -55,7 +55,7 @@ ation/json",Authorization:`Bearer ${creds.token}`}}).then(res=>res.ok,()=>false)
55
55
  `);if(!revoked){writeOut("\u26A0 \u30B5\u30FC\u30D0\u5074\u306E\u30C8\u30FC\u30AF\u30F3\u5931\u52B9\u306B\u5931\u6557\u3057\u307E\u3057\u305F\uFF08\u30AA\u30D5\u30E9\u30A4\u30F3\u7B49\uFF09\u3002TWP \u306E\u300C\u8A2D\u5B9A > CLI\u7AEF\u672B\u300D\u304B\u3089\u3082\u5931\u52B9\u3067\u304D\u307E\u3059\u3002\n")}})}async function runWhoami(options){return run(async()=>{const profile=resolveProfile(options.profile);const structured=options.output!==void 0||options.query!==void 0;let format=null;if(structured){
56
56
  const{resolveOutputFormat,OUTPUT_FORMATS}=await import("./format-F6PPBPY5.js");format=resolveOutputFormat({...options.output!==void 0?{flag:options.output}:{},isTty:process.stdout.isTTY===true});if(format===null){throw new UsageError(`--output \u306B\u300C${options.output??""}\u300D\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093`,`\u6307\u5B9A\u3067\u304D\u308B\u306E\u306F ${OUTPUT_FORMATS.join(" / ")} \u3067\u3059`)}}const stored=loadCredentials(profile.name);const apiUrl=effectiveApiUrl(
57
57
  profile,stored?.api_url);const session=new AuthSession(profile.name,apiUrl);const client=new TwpApiClient(apiUrl,session,httpFetch,options.cliVersion);const me=await client.get("/api/v2/user");const user=me.user;const creds=loadCredentials(profile.name);if(format!==null){const value={id:user?.id??null,name:user?.name??null,email:user?.email??null,tenant_code:user?.tenant_code??null,role:user?.role??null,is_admin:user?.is_admin??null,profile:profile.name,api_url:apiUrl,expires_at:creds?.token_expires_at??
58
- null};const{evaluateQuery}=await import("./query-XEOVFI4D.js");const{renderOutput}=await import("./render-4SBLHU4J.js");const selected=options.query===void 0?value:await evaluateQuery(options.query,value);const text=renderOutput(selected,format);process.stdout.write(text.endsWith("\n")?text:`${text}
58
+ null};const{evaluateQuery}=await import("./query-XEOVFI4D.js");const{renderOutput}=await import("./render-2QURVC5V.js");const selected=options.query===void 0?value:await evaluateQuery(options.query,value);const text=renderOutput(selected,format);process.stdout.write(text.endsWith("\n")?text:`${text}
59
59
  `);return}writeOut(`\u30E6\u30FC\u30B6\u30FC: ${user?.name??"?"}\uFF08${user?.email??"?"}\uFF09
60
60
  `);writeOut(`ID: ${user?.id??"?"}
61
61
  `);writeOut(`\u30C6\u30CA\u30F3\u30C8: ${user?.tenant_code??"?"}
@@ -1,10 +1,10 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
3
  import{ScheduleApi,collectDue,gateStatus,nowInZone,parseCounts,promptSection}from"./chunk-IIK77LSC.js";import{NO_PLAN_SESSION,RECENT_ADVANCE_WINDOW_HOURS,ReleaseOutcomeLog,buildDynamicBlocks,buildRecentCandidateIndex,createItem,enqueueBlockerRecovery,enqueueDevVerifyForMerged,enqueueReleasePartialMergeRerun,enqueueReleasePhase5Recovery,fileSkillNames,findRecentCandidate,formatInflightEntry,formatPlanResultLine,formatRecentAdvance,formatResumeHold,inflightEntries,inflightStaleHours,openPlanSession,
4
- parseOutcomeCode,parseReleaseResult,parseTaskStatusSnapshot,pendingTaskKeys,resolveRecentAdvance,resolveResumeHold,shouldSuppressForResume,shouldSuppressForStatus,staleFloorHours,unavailableChecks,windowStartMicros}from"./chunk-ZPQZLUYY.js";import{EngineNotConfiguredError,NoopEngine,UnknownEngineError,aiUnavailableLabel,assertKnownEngine,failureHint,isAiUnavailable,needsHumanToRestoreAi}from"./chunk-MBPJV745.js";import{ServerSkillCatalog,formatSkillOrigins}from"./chunk-QGRBZ2C2.js";
4
+ parseOutcomeCode,parseReleaseResult,parseTaskStatusSnapshot,pendingTaskKeys,resolveRecentAdvance,resolveResumeHold,shouldSuppressForResume,shouldSuppressForStatus,staleFloorHours,unavailableChecks,windowStartMicros}from"./chunk-4P6BO4NM.js";import{EngineNotConfiguredError,NoopEngine,UnknownEngineError,aiUnavailableLabel,assertKnownEngine,failureHint,isAiUnavailable,needsHumanToRestoreAi}from"./chunk-MBPJV745.js";import{ServerSkillCatalog,formatSkillOrigins}from"./chunk-QGRBZ2C2.js";
5
5
  import{claudeConfigDir,resolveDetectDeps}from"./chunk-5SONMN6K.js";import{InstanceLock,buildLockOwner,defaultIsLoopProcess,writeLockOwner}from"./chunk-3WHC4FSG.js";import{LoopSettingsApplier,renderStepBudget}from"./chunk-4FCPLEZN.js";import"./chunk-MYBIPHZ7.js";import"./chunk-A4LFG7MW.js";import"./chunk-VRBI2NPI.js";import{duplicateTaskKeyDropReason,excludedKeyInArgs,extractPlanJson,parseOpsCount,parsePlanExcludeKeys,placeholderTaskKey,releaseDeployDropReason,
6
- stepToItem,zeroTargetDropReasons}from"./chunk-7VMPEAAL.js";import{redactLoopOutput}from"./chunk-JUJSF5ZG.js";import{buildLoopConfig,evaluateOwnership,exportStateDirEnv,localConfigPath,loopStateDir}from"./chunk-Y24FMUYU.js";import{describeOperations,evaluatePlanGate,planGateStatePath,recordPlanned}from"./chunk-CVX2YWHC.js";import{CapacityReporter}from"./chunk-VYDPW2YO.js";import{formatHookIds,formatHookWiring,runHook,runPrefetch,runPreflight}from"./chunk-TTST7UDR.js";
7
- import{exclusiveInflightEntries,formatExclusiveEntry,normalizeSkillName,spawnSyncResolved}from"./chunk-FABDZBDZ.js";import{setSkillPrefix,skillCommand,skillFromPrompt,stripSkillCommand}from"./chunk-6CS5L24D.js";import{killProcessTree}from"./chunk-N2UVRM3Z.js";import{AgentLoopApi,describeError,filterByStatus,isPermanent,pick,pickString}from"./chunk-O52RKZCC.js";import"./chunk-LDBYJPRD.js";import{PRIVATE_PROJECT_REF,isPrivateProjectId,isPrivateProjectRef,privateProjectId,
6
+ stepToItem,zeroTargetDropReasons}from"./chunk-HR6DHK6N.js";import{redactLoopOutput}from"./chunk-UUN3IO3Z.js";import{buildLoopConfig,evaluateOwnership,exportStateDirEnv,localConfigPath,loopStateDir}from"./chunk-Y24FMUYU.js";import{describeOperations,evaluatePlanGate,planGateStatePath,recordPlanned}from"./chunk-CVX2YWHC.js";import{CapacityReporter}from"./chunk-VYDPW2YO.js";import{formatHookIds,formatHookWiring,runHook,runPrefetch,runPreflight}from"./chunk-TTST7UDR.js";
7
+ import{exclusiveInflightEntries,formatExclusiveEntry,normalizeSkillName,spawnSyncResolved}from"./chunk-FABDZBDZ.js";import{setSkillPrefix,skillCommand,skillFromPrompt,stripSkillCommand}from"./chunk-6CS5L24D.js";import{killProcessTree}from"./chunk-N2UVRM3Z.js";import{AgentLoopApi,describeError,filterByStatus,isPermanent,pick,pickString}from"./chunk-O52RKZCC.js";import"./chunk-H6XS5AMQ.js";import{PRIVATE_PROJECT_REF,isPrivateProjectId,isPrivateProjectRef,privateProjectId,
8
8
  projectFileKey}from"./chunk-RMFLTSOV.js";import{ULID_RE,loopProjectIdPolicy,resolveProjectRef}from"./chunk-HVZUXLQ4.js";import"./chunk-II5RVJQN.js";import"./chunk-VFPY2A23.js";import{joinFor}from"./chunk-PMOUHEJQ.js";import{AuthSession}from"./chunk-XNLIEUAW.js";import{httpFetch}from"./chunk-J7QYPKVK.js";import{compareVersionCores,parseVersionCore}from"./chunk-DXXFUNYN.js";import"./chunk-5WGOHFAS.js";import{effectiveApiUrl,resolveProfile}from"./chunk-EDF4U5BT.js";
9
9
  import{twpHomeDir}from"./chunk-RZVI6PMW.js";import{stripTerminalControls}from"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";import fs9 from"fs";import path7 from"path";import fs from"fs";import path from"path";var LoopLogger=class{constructor(runnerId,logFile,out=process.stdout,now=()=>new Date){this.runnerId=runnerId;this.out=out;this.now=now;if(logFile){fs.mkdirSync(path.dirname(logFile),{recursive:true});this.stream=fs.createWriteStream(logFile,{flags:"a"})}}runnerId;out;now;stream=null;log(message){const d=this.now();const ts=`${d.getFullYear()}-${pad(d.getMonth()+1)}-${pad(d.getDate())} ${pad(d.getHours())}:${pad(d.getMinutes())}:${pad(d.getSeconds())}`;const line=`[${ts}] [${this.runnerId}] ${stripTerminalControls(
10
10
  message)}
@@ -295,10 +295,10 @@ const startedAtMs=now();let warned="";let done=false;const check=()=>{if(done)re
295
295
  decision.key)return;warned=decision.key;handlers.onWarn(decision.reason);return}done=true;const recorded=writeRestartAttempt(opts.stateDir,opts.projectKey,{from:decision.from,to:decision.to,at:new Date(now()).toISOString()},opts.store);if(!recorded){handlers.onWarn(`\u518D\u8D77\u52D5\u8A18\u9332\u3092\u66F8\u3051\u307E\u305B\u3093\u3067\u3057\u305F\uFF08${restartAttemptPath(opts.stateDir,opts.projectKey)}\uFF09\u3002\u540C\u3058\u7248\u30C9\u30EA\u30D5\u30C8\u304C\u89E3\u6D88\u3057\u306A\u3044\u5834\u5408\u3001\u518D\u8D77\u52D5\u3092\u7E70\u308A\u8FD4\u3059\u9632\u6CE2\u5824\u304C\u52B9\u304D\u307E\u305B\u3093`)}
296
296
  handlers.onRestart({from:decision.from,to:decision.to})};const timer=setInterval(check,opts.intervalMs??DRIFT_POLL_MS);timer.unref?.();return{stop:()=>{done=true;clearInterval(timer)},check}}import fs8 from"fs";import path6 from"path";var POLL_MS=1e3;var MAX_STOP_BYTES=4096;var MAX_AT_LENGTH=64;function markerPath(lockDir2,kind){return path6.join(lockDir2,kind)}function requestMarker(lockDir2,kind,pid,deps={}){const target=markerPath(lockDir2,kind);const write=deps.writeFileSync??((p,d)=>fs8.writeFileSync(p,d,{flag:"wx",mode:384}));const now=deps.now??(()=>new Date);clearMarker(lockDir2,kind,deps);try{write(target,`${JSON.stringify({pid,at:now().toISOString()})}
297
297
  `);return{ok:true}}catch(err){const e=err;return{ok:false,reason:e.code??"UNKNOWN"}}}function readMarker(lockDir2,kind,deps={}){const target=markerPath(lockDir2,kind);const read=deps.readFileSync??(p=>fs8.readFileSync(p,"utf8"));const size=deps.statSize??(p=>fs8.statSync(p).size);let raw;try{if(size(target)>MAX_STOP_BYTES)return null;raw=read(target)}catch{return null}if(raw.length>MAX_STOP_BYTES)return null;try{const parsed=JSON.parse(raw);if(typeof parsed!=="object"||parsed===null)return null;const pid=parsed.pid;const at=parsed.at;if(typeof pid!=="number"||!Number.isInteger(pid)||
298
- pid<=0)return null;return{pid,at:sanitizeAt(at)}}catch{return null}}function sanitizeAt(at){if(typeof at!=="string")return"";return at.replace(/[\u0000-\u001f\u007f]/g," ").slice(0,MAX_AT_LENGTH)}function clearMarker(lockDir2,kind,deps={}){const rm=deps.rmSync??(p=>fs8.rmSync(p,{recursive:true,force:true}));try{rm(markerPath(lockDir2,kind))}catch{}}function watchMarker(lockDir2,kind,selfPid,onStop,deps={}){let fired=false;const timer=setInterval(()=>{if(fired)return;const req=readMarker(lockDir2,kind,deps);if(req===null||req.pid!==selfPid)return;fired=true;onStop(req)},deps.intervalMs??POLL_MS);timer.unref?.();return()=>{fired=true;clearInterval(timer)}}function safe(s){return stripTerminalControls(s)}function compactTimestamp(at=new Date){const p2=n=>String(n).padStart(2,"0");return`${at.getFullYear()}${p2(at.getMonth()+1)}${p2(at.getDate())}-${p2(at.getHours())}${p2(at.getMinutes())}${p2(at.getSeconds())}`}async function buildEngine(config,log){if(config.engine==="noop")return new NoopEngine;const{DispatchEngine}=await import("./ai-dispatch-CE7RIQL6.js");const{DEFAULT_PREFLIGHT_HOSTS}=await import("./ai-dispatch-CE7RIQL6.js");const extraHosts=config.
298
+ pid<=0)return null;return{pid,at:sanitizeAt(at)}}catch{return null}}function sanitizeAt(at){if(typeof at!=="string")return"";return at.replace(/[\u0000-\u001f\u007f]/g," ").slice(0,MAX_AT_LENGTH)}function clearMarker(lockDir2,kind,deps={}){const rm=deps.rmSync??(p=>fs8.rmSync(p,{recursive:true,force:true}));try{rm(markerPath(lockDir2,kind))}catch{}}function watchMarker(lockDir2,kind,selfPid,onStop,deps={}){let fired=false;const timer=setInterval(()=>{if(fired)return;const req=readMarker(lockDir2,kind,deps);if(req===null||req.pid!==selfPid)return;fired=true;onStop(req)},deps.intervalMs??POLL_MS);timer.unref?.();return()=>{fired=true;clearInterval(timer)}}function safe(s){return stripTerminalControls(s)}function compactTimestamp(at=new Date){const p2=n=>String(n).padStart(2,"0");return`${at.getFullYear()}${p2(at.getMonth()+1)}${p2(at.getDate())}-${p2(at.getHours())}${p2(at.getMinutes())}${p2(at.getSeconds())}`}async function buildEngine(config,log){if(config.engine==="noop")return new NoopEngine;const{DispatchEngine}=await import("./ai-dispatch-PABSQGQA.js");const{DEFAULT_PREFLIGHT_HOSTS}=await import("./ai-dispatch-PABSQGQA.js");const extraHosts=config.
299
299
  operations.preflightHosts;return new DispatchEngine(config.ai,log,{workspace:config.workspace,charterFile:config.charterFile??void 0,charterEnabled:config.charterEnabled,...config.charterPrefix===null?{}:{charterPrefix:config.charterPrefix},...config.charterSuffix===null?{}:{charterSuffix:config.charterSuffix},serverPrompts:()=>config.serverPrompts??{},compileCommand:config.compileCommand??void 0,skillOverlayDir:path7.join(config.stateDir,"skill-overlay",projectFileKey(config.projectId)),launcherBin:config.
300
300
  claudeLauncher.bin,...extraHosts.length>0?{preflightHosts:[...DEFAULT_PREFLIGHT_HOSTS,...extraHosts]}:{}})}function lockDir(config){return path7.join(config.stateDir,`task-loop-${projectFileKey(config.projectId)}.lock.d`)}function runnerIdPersisted(stateDir,env=process.env){if((env.RUNNER_ID?.trim()??"")!=="")return true;const file=env.RUNNER_ID_FILE&&env.RUNNER_ID_FILE.trim()!==""?env.RUNNER_ID_FILE:path7.join(stateDir,"runner-id");return fs9.existsSync(file)}async function runTaskLoop(opts){if(opts.
301
- action==="stop")return await stopLoop(opts);if(opts.action==="plan"){if(opts.planOp!=="submit"){process.stderr.write("plan \u306B\u306F submit \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\n");return 2}const{runPlanSubmit}=await import("./plan-submit-AZKVMJKV.js");return runPlanSubmit({file:opts.charterInput,empty:opts.planEmpty===true,check:opts.planCheck===true},{env:process.env,readStdin:()=>fs9.readFileSync(0,"utf8"),stdout:s=>process.stdout.write(s),stderr:s=>process.stderr.write(s)})}
301
+ action==="stop")return await stopLoop(opts);if(opts.action==="plan"){if(opts.planOp!=="submit"){process.stderr.write("plan \u306B\u306F submit \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\n");return 2}const{runPlanSubmit}=await import("./plan-submit-DQRUUZTK.js");return runPlanSubmit({file:opts.charterInput,empty:opts.planEmpty===true,check:opts.planCheck===true},{env:process.env,readStdin:()=>fs9.readFileSync(0,"utf8"),stdout:s=>process.stdout.write(s),stderr:s=>process.stderr.write(s)})}
302
302
  const profile=resolveProfile(opts.profile);let creds;try{creds=new AuthSession(profile.name,profile.apiUrl).loadOrThrow()}catch(err){process.stderr.write(`${err.message}
303
303
  `);return 1}const apiUrl=effectiveApiUrl(profile,creds.api_url);const session=new AuthSession(profile.name,apiUrl);const projectRef=opts.project??process.env.TWP_PROJECT??"";if(projectRef===""){process.stderr.write("--project <\u30AD\u30FC|UUID> \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08TWP_PROJECT \u3067\u3082\u53EF\uFF09\n");return 2}const projectApi=new ProjectApi(apiUrl,session);let project;try{project=await projectApi.resolve(projectRef)}catch(err){process.stderr.write(`${err.
304
304
  message}
@@ -306,11 +306,11 @@ message}
306
306
  `);return 2}ais=parsed.ais}return runSetup({projectId,projectRef,projectName:project.name===project.id?projectRef:`${project.code} / ${project.name}`,apiUrl,yes:opts.yes===true,...ais!==void 0?{ais}:{},...opts.workspace!==void 0?{workspace:opts.workspace}:{},...opts.aiConfigFile!==void 0?{aiConfigFile:opts.aiConfigFile}:{},...opts.noAiConfigFile===true?{noAiConfigFile:true}:{},...opts.profile!==void 0?{profile:opts.profile}:{}})}if(opts.action==="charter"){if(opts.charterOp===void 0){process.stderr.
307
307
  write("charter \u306B\u306F push / pull / history / diff / revert \u306E\u3044\u305A\u308C\u304B\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\n");return 2}if(isPrivateProjectId(projectId)){process.stderr.write("\u500B\u4EBA\u30BF\u30B9\u30AF\u306E\u30AD\u30E5\u30FC\uFF08--project __private__\uFF09\u306B\u306F\u61B2\u7AE0\u306E\u8A2D\u5B9A\u304C\u3042\u308A\u307E\u305B\u3093\n");return 2}if(opts.charterOp!=="push"&&opts.charterOp!=="pull"){const{runRevisionCommand}=await import("./revision-command-KT7NMRES.js");
308
308
  return runRevisionCommand({api:new AgentLoopApi({apiUrl,projectId,session})},{target:"charter",op:opts.charterOp,from:opts.revisionFrom,to:opts.revisionTo,revision:opts.charterRevision,yes:opts.yes===true,projectRef,profile:opts.profile})}const{runCharterCommand}=await import("./charter-command-A4MFFBGE.js");return runCharterCommand({api:new AgentLoopApi({apiUrl,projectId,session})},{op:opts.charterOp,file:opts.charterInput,out:opts.charterOutput,revision:opts.charterRevision,yes:opts.yes===true,projectRef,
309
- profile:opts.profile})}if(opts.action==="runner"){if(opts.runnerOp===void 0){process.stderr.write("runner \u306B\u306F list / remove \u306E\u3044\u305A\u308C\u304B\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\n");return 2}const{runRunnerCommand}=await import("./runner-command-SRPMAC5S.js");return runRunnerCommand({api:new AgentLoopApi({apiUrl,projectId,session})},{op:opts.runnerOp,runnerId:opts.runnerId,output:opts.output,query:opts.query,yes:opts.yes===true,projectRef,profile:opts.profile})}
309
+ profile:opts.profile})}if(opts.action==="runner"){if(opts.runnerOp===void 0){process.stderr.write("runner \u306B\u306F list / remove \u306E\u3044\u305A\u308C\u304B\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\n");return 2}const{runRunnerCommand}=await import("./runner-command-FW3WJB42.js");return runRunnerCommand({api:new AgentLoopApi({apiUrl,projectId,session})},{op:opts.runnerOp,runnerId:opts.runnerId,output:opts.output,query:opts.query,yes:opts.yes===true,projectRef,profile:opts.profile})}
310
310
  if(opts.action==="schedule"&&opts.scheduleOp!==void 0){const{runScheduleDefCommand}=await import("./schedule-def-command-OFCA5VH3.js");return runScheduleDefCommand({api:new AgentLoopApi({apiUrl,projectId,session})},{op:opts.scheduleOp,configOp:opts.scheduleConfigOp,id:opts.scheduleId,file:opts.charterInput,out:opts.charterOutput,revision:opts.charterRevision,yes:opts.yes===true,projectRef,profile:opts.profile})}if(opts.action==="settings"){if(opts.settingsOp===void 0){process.stderr.write("settings \u306B\u306F pu\
311
311
  sh / pull \u306E\u3044\u305A\u308C\u304B\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\n");return 2}if(isPrivateProjectId(projectId)){process.stderr.write("\u500B\u4EBA\u30BF\u30B9\u30AF\u306E\u30AD\u30E5\u30FC\uFF08--project __private__\uFF09\u306B\u306F\u30EB\u30FC\u30D7\u8A2D\u5B9A\u304C\u3042\u308A\u307E\u305B\u3093\n");return 2}const{runSettingsCommand}=await import("./settings-command-TEVH2MNY.js");return runSettingsCommand({api:new AgentLoopApi({apiUrl,projectId,session})},{op:opts.settingsOp,
312
312
  file:opts.charterInput,out:opts.charterOutput,revision:opts.charterRevision,yes:opts.yes===true,projectRef,profile:opts.profile})}if(opts.action==="skill"){if(opts.skillOp===void 0){process.stderr.write("skill \u306B\u306F push / pull / list / show / delete / history / diff / revert / check \u306E\u3044\u305A\u308C\u304B\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\n");return 2}if(isPrivateProjectId(projectId)){process.stderr.write("\u500B\u4EBA\u30BF\u30B9\u30AF\u306E\u30AD\u30E5\u30FC\uFF08--project __private__\uFF09\u306B\u306F\u30B9\u30AD\u30EB\u5B9A\u7FA9\u306E\u8A2D\u5B9A\u304C\u3042\u308A\u307E\u305B\u3093\n");
313
- return 2}if(opts.skillOp==="check"){const{runSkillCheck}=await import("./skill-check-JBRUAUID.js");return runSkillCheck({api:new AgentLoopApi({apiUrl,projectId,session})},{configPath:opts.skillConfig,defaultConfigPath:localConfigPath(projectId),output:opts.output})}if(opts.skillOp==="list"||opts.skillOp==="show"||opts.skillOp==="delete"){const{runSkillManageCommand}=await import("./skill-manage-command-UOWZCF6R.js");return runSkillManageCommand({api:new AgentLoopApi({apiUrl,projectId,session})},{op:opts.
313
+ return 2}if(opts.skillOp==="check"){const{runSkillCheck}=await import("./skill-check-JBRUAUID.js");return runSkillCheck({api:new AgentLoopApi({apiUrl,projectId,session})},{configPath:opts.skillConfig,defaultConfigPath:localConfigPath(projectId),output:opts.output})}if(opts.skillOp==="list"||opts.skillOp==="show"||opts.skillOp==="delete"){const{runSkillManageCommand}=await import("./skill-manage-command-TFGMSCT4.js");return runSkillManageCommand({api:new AgentLoopApi({apiUrl,projectId,session})},{op:opts.
314
314
  skillOp,name:opts.skillName,output:opts.output,query:opts.query,revision:opts.charterRevision,yes:opts.yes===true,projectRef,profile:opts.profile})}if(opts.skillOp!=="push"&&opts.skillOp!=="pull"){const{runRevisionCommand}=await import("./revision-command-KT7NMRES.js");return runRevisionCommand({api:new AgentLoopApi({apiUrl,projectId,session})},{target:"skill",op:opts.skillOp,name:opts.skillName,from:opts.revisionFrom,to:opts.revisionTo,revision:opts.charterRevision,yes:opts.yes===true,projectRef,profile:opts.
315
315
  profile})}const{runSkillCommand}=await import("./skill-command-4VMZ2H6A.js");return runSkillCommand({api:new AgentLoopApi({apiUrl,projectId,session})},{op:opts.skillOp,name:opts.skillName,all:opts.skillAll===true,dir:opts.skillDir,revision:opts.charterRevision,yes:opts.yes===true,projectRef,profile:opts.profile})}const config=buildLoopConfig({projectId,projectRef,apiUrl,safeMode:opts.safe,daemon:opts.daemon,...opts.maxCycles!==void 0?{maxCycles:opts.maxCycles}:{},...opts.interval!==void 0?{intervalSec:opts.
316
316
  interval}:{},forceRunner:opts.forceRunner,...opts.engine!==void 0?{engine:opts.engine}:{},version:opts.version});const api=new AgentLoopApi({apiUrl,projectId,session});if(opts.action==="capacity"){if(opts.capacityOp!=="report"){process.stderr.write("capacity \u306B\u306F report \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\n");return 2}for(const warning of config.warnings)process.stderr.write(`\u26A0\uFE0F ${warning}
@@ -334,7 +334,7 @@ log.log("\u4E2D\u65AD\u30B7\u30B0\u30CA\u30EB\u3092\u53D7\u4FE1\u3057\u307E\u305
334
334
  log(`\u7248\u30C9\u30EA\u30D5\u30C8\u3092\u691C\u51FA\u3057\u307E\u3057\u305F\uFF08${from} \u2192 ${to}\uFF09\u3002`);log.log(` \u5B9F\u884C\u4E2D\u306E\u30A2\u30A4\u30C6\u30E0\u3092\u5B8C\u8D70\u3055\u305B\u3066\u304B\u3089\u7D42\u4E86\u3057\u307E\u3059\uFF08\u7D42\u4E86\u30B3\u30FC\u30C9 ${EXIT_VERSION_DRIFT}\uFF09\u3002\u518D\u8D77\u52D5\u306F systemd\uFF08Restart=always\uFF09\u304C\u884C\u3044\u307E\u3059`);const reason=`\u7248\u30C9\u30EA\u30D5\u30C8 ${from} \u2192 ${to} \u306B\u3088\u308B\u81EA\u52D5\u518D\u8D77\u52D5`;
335
335
  if(loop===null)pendingDrain.value={reason,exitCode:EXIT_VERSION_DRIFT};else loop.requestDrain(reason,EXIT_VERSION_DRIFT)}});driftWatcher=watch.stop}try{const{LoopSettingsApplier:LoopSettingsApplier2}=await import("./server-settings-GFWQ5ERV.js");const settings=new LoopSettingsApplier2({api,config,log:m=>log.log(m)});await settings.apply();const{ServerSkillCatalog:ServerSkillCatalog2}=await import("./server-skills-FVYYZ54O.js");const skills=new ServerSkillCatalog2({api,config,log:m=>log.log(m)});await skills.
336
336
  refresh();await runner.checkHeartbeatInterval();await runner.registerOrThrow();runner.startHeartbeatWorker();log.log(` heartbeat: ${config.heartbeatIntervalSec}\u79D2\u3054\u3068\u306B\u9001\u4FE1${runner.heartbeatTimeoutServer?`\uFF08\u30B5\u30FC\u30D0\u306E\u6B7B\u6D3B\u3057\u304D\u3044\u5024 ${runner.heartbeatTimeoutServer}\u79D2\uFF09`:""}`);loop=new TaskLoop({api,projectApi,config,log,runner,engine:await buildEngine(config,m=>log.log(m)),settings,skills});if(pendingDrain.value!==null){loop.
337
- requestDrain(pendingDrain.value.reason,pendingDrain.value.exitCode)}exitCode=await loop.run()}catch(err){if(err instanceof RunnerRegistrationError){exitCode=1}else{log.log(`\u26D4 \u4E88\u671F\u3057\u306A\u3044\u30A8\u30E9\u30FC\u3067\u7D42\u4E86\u3057\u307E\u3059: ${err.message}`);exitCode=1}}finally{await shutdown()}return exitCode}async function showStatus(api,config,opts){const{runStatusCommand}=await import("./status-command-C42CVQ3Q.js");const lock=lockDir(config);return runStatusCommand(api,
337
+ requestDrain(pendingDrain.value.reason,pendingDrain.value.exitCode)}exitCode=await loop.run()}catch(err){if(err instanceof RunnerRegistrationError){exitCode=1}else{log.log(`\u26D4 \u4E88\u671F\u3057\u306A\u3044\u30A8\u30E9\u30FC\u3067\u7D42\u4E86\u3057\u307E\u3059: ${err.message}`);exitCode=1}}finally{await shutdown()}return exitCode}async function showStatus(api,config,opts){const{runStatusCommand}=await import("./status-command-PXE4WVOV.js");const lock=lockDir(config);return runStatusCommand(api,
338
338
  {projectRef:config.projectRef,projectId:config.projectId,apiUrl:config.apiUrl,lockPath:lock,lockHeld:fs9.existsSync(lock),profile:opts.profile},{output:opts.output,query:opts.query},{out:s=>process.stdout.write(s),err:s=>process.stderr.write(s)})}var STOP_WAIT_MS=18e4;var STOP_POLL_MS=250;function defaultIsAlive(pid){try{process.kill(pid,0);return true}catch(err){return err.code==="EPERM"}}async function stopLoop(opts,deps={}){const platform=deps.platform??process.platform;const isLoopProcess=deps.
339
339
  isLoopProcess??defaultIsLoopProcess;const isAlive=deps.isAlive??defaultIsAlive;const waitMs=deps.waitMs??STOP_WAIT_MS;const pollMs=deps.pollMs??STOP_POLL_MS;const now=deps.now??Date.now;const nap=deps.sleep??(ms=>new Promise(r=>setTimeout(r,ms)));const request=deps.requestMarkerFn??requestMarker;const out=m=>void process.stdout.write(m);const err=m=>void process.stderr.write(m);if(opts.force&&opts.drain){err("\u26A0\uFE0F --force \u3068 --drain \u306F\u540C\u6642\u306B\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\uFF08\u8981\u6C42\u304C\u6B63\u53CD\u5BFE\u3067\u3059\uFF09\u3002\u3069\u3061\u3089\u3082\u5B9F\u884C\u3057\u307E\u305B\u3093\n");
340
340
  return 2}const stateDir=deps.stateDir??loopStateDir();let dirs;try{dirs=fs9.readdirSync(stateDir).filter(d=>/^task-loop-.*\.lock\.d$/.test(d))}catch{dirs=[]}if(opts.project){if(/^[0-9a-f-]{36}$/i.test(opts.project)||ULID_RE.test(opts.project)){dirs=dirs.filter(d=>d===`task-loop-${opts.project}.lock.d`)}else if(isPrivateProjectRef(opts.project)){dirs=dirs.filter(d=>d.startsWith("task-loop-private-"))}else{err(`\u26A0\uFE0F --project \u306F ID\uFF08UUID / ULID\uFF09\u6307\u5B9A\u306E\u3068\u304D\u3060\u3051\u7D5E\u308A\u8FBC\u3081\u307E\u3059\uFF08${safe(
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{contractAiReviewResources}from"./chunk-DELIIGWE.js";import"./chunk-V3RZ4RFP.js";import{featureLicenseGuidance,licenseForbidden}from"./chunk-4RNL462J.js";import{repeatedValues}from"./chunk-RX5HWI4L.js";import{isoDate}from"./chunk-JJSBBWJ5.js";import{readBody}from"./chunk-6LSQCOCJ.js";import{SALES_CONTRACTS_PATH,isExactNumericId,resolveNamed}from"./chunk-RSSPNFSK.js";import"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";
3
+ import{contractAiReviewResources}from"./chunk-SQBPZREE.js";import"./chunk-V3RZ4RFP.js";import{featureLicenseGuidance,licenseForbidden}from"./chunk-4RNL462J.js";import{repeatedValues}from"./chunk-RX5HWI4L.js";import{isoDate}from"./chunk-JJSBBWJ5.js";import{readBody}from"./chunk-6LSQCOCJ.js";import{SALES_CONTRACTS_PATH,isExactNumericId,resolveNamed}from"./chunk-RSSPNFSK.js";import"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";
4
4
  import{LIST_PAGING_HELP,PAGE_NUMBER_LIST_FLAGS,PAGE_NUMBER_PAGING_HELP,STABLE_PAGE_ORDER,nonEmpty,pageNumberPaging,pageNumberQuery,pageRangeNotes}from"./chunk-MI6HVYR2.js";import"./chunk-II5RVJQN.js";import{requireResolved,withResolved}from"./chunk-PS5QFKHB.js";import{acknowledgement,isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";import"./chunk-XNLIEUAW.js";import"./chunk-J7QYPKVK.js";import"./chunk-EDF4U5BT.js";
5
5
  import"./chunk-RZVI6PMW.js";import"./chunk-QQRJLH6B.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var PATH=SALES_CONTRACTS_PATH;var SALES_FORBIDDEN=licenseForbidden(featureLicenseGuidance("\u8CA9\u58F2\u7BA1\u7406"));var DISAMBIGUATION="\u53D6\u5F15\u5951\u7D04\u306F\u898B\u7A4D\u304B\u3089\u4F5C\u308B\u8CA9\u58F2\u7BA1\u7406\u306E\u66F8\u985E\u3067\u3059\uFF08\u660E\u7D30\u30FB\u91D1\u984D\u3092\u6301\u3061\u3001\u627F\u8A8D\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u306B\u4E57\u308A\u307E\u3059\uFF09\u3002\n\u9867\u5BA2\u306B\u7D10\u3065\u3051\u3066\u4FDD\u7BA1\u3059\u308B\u5951\u7D04\u66F8\u306E PDF \u306F\u5225\u7269\u3067\u3001twp customer contract \u3067\u6271\u3044\u307E\u3059\u3002\n\n";
6
6
  var CONTRACT_STATUSES={new:"\u4F5C\u6210\u4E2D",create_completed:"\u4F5C\u6210\u5B8C\u4E86",in_progress:"\u7533\u8ACB\u4E2D",approved:"\u627F\u8A8D\u6E08",rejected:"\u5DEE\u3057\u623B\u3057",submitted:"\u63D0\u793A\u6E08",contracted:"\u5951\u7D04\u7DE0\u7D50\u6E08",deleted:"\u524A\u9664\u6E08"};var RENEWAL_TYPES={auto_renewal:"\u81EA\u52D5\u66F4\u65B0",application_renewal:"\u7533\u8FBC\u306B\u3088\u308B\u66F4\u65B0"};function statusName(code){return CONTRACT_STATUSES[code]??code}function tableHelp(table){
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{estimateCaseDocumentResource}from"./chunk-VYIYENEU.js";import{estimateNoRuleResource}from"./chunk-UZLHJ2RF.js";import{salesAdminForbidden}from"./chunk-U5EYLW6X.js";import"./chunk-NTT2QG3J.js";import"./chunk-CZVQS3WP.js";import{contentTypeFor,inspectLocalFile,issued}from"./chunk-WTYIFLVB.js";import{checkUploadQuota}from"./chunk-V64CGX7V.js";import"./chunk-QLENN5DD.js";import"./chunk-RMFLTSOV.js";import{estimateAiReviewResources}from"./chunk-DELIIGWE.js";
3
+ import{estimateCaseDocumentResource}from"./chunk-VYIYENEU.js";import{estimateNoRuleResource}from"./chunk-UZLHJ2RF.js";import{salesAdminForbidden}from"./chunk-U5EYLW6X.js";import"./chunk-NTT2QG3J.js";import"./chunk-CZVQS3WP.js";import{contentTypeFor,inspectLocalFile,issued}from"./chunk-WTYIFLVB.js";import{checkUploadQuota}from"./chunk-V64CGX7V.js";import"./chunk-QLENN5DD.js";import"./chunk-RMFLTSOV.js";import{estimateAiReviewResources}from"./chunk-SQBPZREE.js";
4
4
  import{estimatePdfOperation}from"./chunk-V3RZ4RFP.js";import{estimateReadOperations,featureLicenseGuidance,licenseForbidden}from"./chunk-4RNL462J.js";import"./chunk-CADCERVL.js";import{repeatedValues}from"./chunk-RX5HWI4L.js";import"./chunk-JJSBBWJ5.js";import{charCount,readBody}from"./chunk-6LSQCOCJ.js";import{SALES_ESTIMATES_PATH,SALES_ESTIMATE_FORMATS_PATH,SALES_ESTIMATE_NO_RULES_PATH,SALES_INVOICE_NO_RULES_PATH,isExactNumericId}from"./chunk-RSSPNFSK.js";
5
5
  import{isSafePathSegment}from"./chunk-HVZUXLQ4.js";import{ApiError}from"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";import{LIST_PAGING_HELP,PAGE_NUMBER_LIST_FLAGS,nonEmpty,pageNumberPaging,pageNumberQuery,pageRangeNotes}from"./chunk-MI6HVYR2.js";import"./chunk-II5RVJQN.js";import{requireResolved,withResolved}from"./chunk-PS5QFKHB.js";import{acknowledgement,isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";
6
6
  import"./chunk-XNLIEUAW.js";import"./chunk-J7QYPKVK.js";import"./chunk-EDF4U5BT.js";import"./chunk-RZVI6PMW.js";import"./chunk-QQRJLH6B.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var PATH=SALES_ESTIMATE_FORMATS_PATH;var LABEL="\u898B\u7A4D\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8";var CONTENT_KEYS=["format_name","start_date","end_date","default_unit","default_tax_rate","default_business_place_id","default_seal_impression_id","default_estimate_no_id","default_invoice_no_id","default_payee_id","default_terms","default_invoice_memo","default_purchase_terms","default_purchase_acceptance_terms","estimate_workflow_id","contract_workflow_id","invoice_workflow_id","purchase_workflow_\
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{invoiceNoRuleResource}from"./chunk-UZLHJ2RF.js";import"./chunk-U5EYLW6X.js";import"./chunk-QLENN5DD.js";import{invoiceAiReviewResources}from"./chunk-DELIIGWE.js";import{invoicePdfOperation}from"./chunk-V3RZ4RFP.js";import{featureLicenseGuidance,invoiceFilters,invoiceReadOperations,licenseForbidden}from"./chunk-4RNL462J.js";import{repeatedValues}from"./chunk-RX5HWI4L.js";import{booleanText,isoDate}from"./chunk-JJSBBWJ5.js";import{readBody}from"./chunk-6LSQCOCJ.js";
3
+ import{invoiceNoRuleResource}from"./chunk-UZLHJ2RF.js";import"./chunk-U5EYLW6X.js";import"./chunk-QLENN5DD.js";import{invoiceAiReviewResources}from"./chunk-SQBPZREE.js";import{invoicePdfOperation}from"./chunk-V3RZ4RFP.js";import{featureLicenseGuidance,invoiceFilters,invoiceReadOperations,licenseForbidden}from"./chunk-4RNL462J.js";import{repeatedValues}from"./chunk-RX5HWI4L.js";import{booleanText,isoDate}from"./chunk-JJSBBWJ5.js";import{readBody}from"./chunk-6LSQCOCJ.js";
4
4
  import{SALES_INVOICES_PATH,SALES_INVOICE_AUTO_TEMPLATES_PATH,isExactNumericId,resolveNamed}from"./chunk-RSSPNFSK.js";import"./chunk-HVZUXLQ4.js";import{ApiError}from"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";import{LIST_PAGING_HELP,PAGE_NUMBER_LIST_FLAGS,PAGE_NUMBER_PAGING_HELP,STABLE_PAGE_ORDER,nonEmpty,pageNumberPaging,pageNumberQuery,pageRangeNotes}from"./chunk-MI6HVYR2.js";import"./chunk-II5RVJQN.js";import{requireResolved,withResolved}from"./chunk-PS5QFKHB.js";
5
5
  import{acknowledgement,isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";import"./chunk-XNLIEUAW.js";import"./chunk-J7QYPKVK.js";import"./chunk-EDF4U5BT.js";import"./chunk-RZVI6PMW.js";import"./chunk-QQRJLH6B.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var PATH=SALES_INVOICE_AUTO_TEMPLATES_PATH;var HISTORY_SEARCH_PATH="/api/v2/sales/invoice-auto-issue-histories";var FORMATS_PATH="/api/v2/sales/estimate-formats";function adminForbidden(body){return body?.error==="permission_denied"?featureLicenseGuidance("\u8CA9\u58F2\u7BA1\u7406"):"\u81EA\u52D5\u8ACB\u6C42\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u3068\u767A\u884C\u5C65\u6B74\u306F\u3001\u8CA9\u58F2\u7BA1\u7406\u306E\u6A29\u9650\u304C\u300C\u7BA1\u7406\u8005\u300D\u306E\u4EBA\u3060\u3051\u304C\u6271\u3048\u307E\u3059\u3002\u30C6\u30CA\u30F3\u30C8\u7BA1\u7406\u8005\u306B\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002"}
6
6
  var CONTENT_KEYS=["template_name","estimate_format_id","interval_months","next_issue_date","period_start_date","period_end_date","payment_term_months","payment_term_day","estimate_expiration_months","estimate_expiration_day","order_acceptance_months","order_acceptance_day","invoice_date_months","invoice_date_day","estimate_business_place_id","estimate_seal_impression_id","invoice_business_place_id","invoice_seal_impression_id","company_id","project_id","payee_id","estimate_user_id","invoice_user\
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{applyInstancePlan,createInstancePlan,formColumns,writtenInstance}from"./chunk-22CRY6JR.js";import"./chunk-DELIIGWE.js";import"./chunk-V3RZ4RFP.js";import"./chunk-4RNL462J.js";import{USER_REF_FLAG,USER_REF_HELP,assertMonthsOpen,userPath}from"./chunk-HKEW6XIC.js";import{dateFlag}from"./chunk-EXT4AIDF.js";import"./chunk-CADCERVL.js";import"./chunk-RX5HWI4L.js";import"./chunk-JJSBBWJ5.js";import"./chunk-6LSQCOCJ.js";import"./chunk-RSSPNFSK.js";
3
+ import{applyInstancePlan,createInstancePlan,formColumns,writtenInstance}from"./chunk-AKQLBUYJ.js";import"./chunk-SQBPZREE.js";import"./chunk-V3RZ4RFP.js";import"./chunk-4RNL462J.js";import{USER_REF_FLAG,USER_REF_HELP,assertMonthsOpen,userPath}from"./chunk-HKEW6XIC.js";import{dateFlag}from"./chunk-EXT4AIDF.js";import"./chunk-CADCERVL.js";import"./chunk-RX5HWI4L.js";import"./chunk-JJSBBWJ5.js";import"./chunk-6LSQCOCJ.js";import"./chunk-RSSPNFSK.js";
4
4
  import{UUID_RE}from"./chunk-HVZUXLQ4.js";import{ApiError}from"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";import"./chunk-MI6HVYR2.js";import"./chunk-II5RVJQN.js";import{requireResolved,singleRef,withResolved}from"./chunk-PS5QFKHB.js";import{isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiRejectedError,ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";import{NotLoggedInError,SessionExpiredError}from"./chunk-XNLIEUAW.js";import"./chunk-J7QYPKVK.js";
5
5
  import"./chunk-EDF4U5BT.js";import"./chunk-RZVI6PMW.js";import"./chunk-QQRJLH6B.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var LIST_USAGE="twp leave list";var GRANTS_USAGE="twp leave grants [<\u30E6\u30FC\u30B6\u30FC> | --user <\u30E6\u30FC\u30B6\u30FC>]";var USAGE_COLUMNS=["used_date","type_label","days","hours","status_label","reason","is_post_application","id"];var GRANT_COLUMNS=["grant_date","type_label","days","remaining_days","remaining_hours","expiry_date","status_label","reason","id"];function noArgs(input,operation){if(input.args.length>0){throw new UsageError(`${operation} \u306F\u4F4D\u7F6E\u5F15\u6570\u3092\u53D7\u3051\u53D6\u308A\u307E\u305B\u3093: ${input.
6
6
  args.join(" ")}`,`twp leave ${operation} help`)}}function summaryBody(body){if(!isRecord(body)||!isRecord(body["summary"])){throw new ApiResponseError("\u6709\u7D66\u30B5\u30DE\u30EA\u306E\u5FDC\u7B54\u306B summary \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002")}return body}function usagesBody(body){if(!isRecord(body)||!Array.isArray(body["usages"])){throw new ApiResponseError("\u6709\u7D66\u306E\u53D6\u5F97\u5C65\u6B74\u306E\u5FDC\u7B54\u306B usages \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002")}
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{checkOutTarget}from"./chunk-WMIIFPXT.js";import"./chunk-4DY3NU53.js";import"./chunk-PO35MCYP.js";import"./chunk-Q3B65OFC.js";import"./chunk-GFLGXGWE.js";import{contentTypeFor,inspectLocalFile}from"./chunk-WTYIFLVB.js";import{checkUploadQuota}from"./chunk-V64CGX7V.js";import{parseWaitOptions,waitUntilTerminal}from"./chunk-WVCEKC7V.js";import"./chunk-LDBYJPRD.js";import"./chunk-RMFLTSOV.js";import{repeatedValues}from"./chunk-RX5HWI4L.js";
3
+ import{checkOutTarget}from"./chunk-VJ72Y4TG.js";import"./chunk-Z5NBJC77.js";import"./chunk-ZPSPSYDD.js";import"./chunk-Q3B65OFC.js";import"./chunk-GFLGXGWE.js";import{contentTypeFor,inspectLocalFile}from"./chunk-WTYIFLVB.js";import{checkUploadQuota}from"./chunk-V64CGX7V.js";import{parseWaitOptions,waitUntilTerminal}from"./chunk-WVCEKC7V.js";import"./chunk-H6XS5AMQ.js";import"./chunk-RMFLTSOV.js";import{repeatedValues}from"./chunk-RX5HWI4L.js";
4
4
  import{readBody}from"./chunk-6LSQCOCJ.js";import"./chunk-RSSPNFSK.js";import{collapsesInUrlPath,isSafePathSegment}from"./chunk-HVZUXLQ4.js";import{ApiError}from"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";import{LIST_FLAGS,LIST_PAGING_HELP,envelopePaging,nonEmpty,positiveInteger,readEnvelopeCursor,shellQuote}from"./chunk-MI6HVYR2.js";import"./chunk-II5RVJQN.js";import{requireResolved,singleRef,withResolved}from"./chunk-PS5QFKHB.js";import{acknowledgement,
5
5
  isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiRejectedError,ApiResponseError,NetworkError,UsageError,WaitTimeoutError}from"./chunk-VFPY2A23.js";import"./chunk-PECIBNFD.js";import"./chunk-XNLIEUAW.js";import"./chunk-J7QYPKVK.js";import"./chunk-EDF4U5BT.js";import"./chunk-RZVI6PMW.js";import"./chunk-MLRBDF44.js";import"./chunk-QQRJLH6B.js";import"./chunk-74BPZOKU.js";import"./chunk-UREA4ZIG.js";import"./chunk-NHYMHCAT.js";
6
6
  import"./chunk-VSJBJXZO.js";import crypto2 from"crypto";import fs2 from"fs";import path from"path";var SCOPE_PERSONAL="personal";var SCOPE_PROJECT="project";var UUID=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;var FORBIDDEN_NAME=/[/\\:*?"<>|]/;var NAME_MAX=255;var ROW_COLUMNS=["id","path","name","file_count","subfolder_count","parent_id","updated_at"];var TRASH_COLUMNS=["id","path","name","file_count","subfolder_count","parent_id","deleted_at"];function folderRows(raw){return raw.map(row=>{const id=row["id"];const name=row["name"];const parentId=row["parent_id"];if(typeof id!==
@@ -1,7 +1,7 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{activateModeFiles,activatePermissionSettings,buildResidentSet,buildSystemPrompt,createAuditLogger,createTwpToolkit,currentBranch,displayCwd,residentInputs,runTurn}from"./chunk-DRERU42W.js";import"./chunk-NZ7WI4RZ.js";import"./chunk-N2UVRM3Z.js";import"./chunk-LDBYJPRD.js";import"./chunk-RSSPNFSK.js";import"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";import"./chunk-II5RVJQN.js";import"./chunk-VFPY2A23.js";
4
- import{RelayError,createRuntime,pickModel,specFor}from"./chunk-VON6ODNL.js";import"./chunk-D233KKXW.js";import"./chunk-PMOUHEJQ.js";import"./chunk-XNLIEUAW.js";import"./chunk-J7QYPKVK.js";import{checkMinSupportedVersion,enforceMinSupportedVersion,floorNeedsRefresh}from"./chunk-DXXFUNYN.js";import"./chunk-EDF4U5BT.js";import"./chunk-RZVI6PMW.js";import{getMode}from"./chunk-2LOT54OO.js";import{stripTerminalControls}from"./chunk-NHYMHCAT.js";
3
+ import{activateModeFiles,activatePermissionSettings,buildResidentSet,buildSystemPrompt,createAuditLogger,createTwpToolkit,currentBranch,displayCwd,residentInputs,runTurn}from"./chunk-O67RD5XL.js";import"./chunk-NZ7WI4RZ.js";import"./chunk-N2UVRM3Z.js";import"./chunk-H6XS5AMQ.js";import"./chunk-RSSPNFSK.js";import"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";import"./chunk-II5RVJQN.js";import"./chunk-VFPY2A23.js";
4
+ import{RelayError,createRuntime,pickModel,specFor}from"./chunk-J5QOE2GM.js";import"./chunk-D233KKXW.js";import"./chunk-PMOUHEJQ.js";import"./chunk-XNLIEUAW.js";import"./chunk-J7QYPKVK.js";import{checkMinSupportedVersion,enforceMinSupportedVersion,floorNeedsRefresh}from"./chunk-DXXFUNYN.js";import"./chunk-EDF4U5BT.js";import"./chunk-RZVI6PMW.js";import{getMode}from"./chunk-2LOT54OO.js";import{stripTerminalControls}from"./chunk-NHYMHCAT.js";
5
5
  import"./chunk-VSJBJXZO.js";async function runOneShot(opts,deps={}){const out=deps.out??(text=>void process.stdout.write(stripTerminalControls(text)));const err=deps.err??(text=>void process.stderr.write(stripTerminalControls(text)));activateModeFiles(err);const permissionLayers=activatePermissionSettings(err,{...opts.allowedTools?{allowedTools:opts.allowedTools}:{},...opts.disallowedTools?{disallowedTools:opts.disallowedTools}:{}});const prompt=opts.fromStdin?await(deps.readStdin??readStdin)():opts.prompt;if(prompt.trim()===
6
6
  ""){err('\u30D7\u30ED\u30F3\u30D7\u30C8\u304C\u7A7A\u3067\u3059\u3002`twp -p "\u8CEA\u554F"`\uFF08`-p -` \u3067\u6A19\u6E96\u5165\u529B\uFF09\n');return 2}const runtime=deps.runtime??createRuntime({...opts.profile!==void 0?{profile:opts.profile}:{},...opts.model!==void 0?{model:opts.model}:{},cliVersion:opts.version});const cachedFloor=runtime.loadCachedFloor();if(await checkMinSupportedVersion({current:opts.version,cachedFloor:cachedFloor.minSupportedVersion,refresh:async()=>(await runtime.loadCatalog()).
7
7
  minSupportedVersion,write:err})){return 1}if(!runtime.loggedIn){err("\u30ED\u30B0\u30A4\u30F3\u3057\u3066\u3044\u307E\u305B\u3093\u3002`twp login` \u3092\u5B9F\u884C\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n");return 1}let model=runtime.configuredModel??"";let catalog=null;if(model===""){catalog=await runtime.loadCatalog();const picked=pickModel(catalog,void 0);model=picked.model;if(catalog.source!=="server"){err(`\u26A0 \u30E2\u30C7\u30EB\u4E00\u89A7\u3092\u53D6\u5F97\u3067\u304D\u306A\u304B\u3063\u305F\u305F\u3081 ${model}\
@@ -1,4 +1,4 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{NO_PLAN_SESSION,PLAN_DIR_ENV,PLAN_TOKEN_ENV,checkPlan,fileSkillNames,formatCheck,openPlanSession,runPlanSubmit}from"./chunk-ZPQZLUYY.js";import"./chunk-7VMPEAAL.js";import"./chunk-JUJSF5ZG.js";import"./chunk-Y24FMUYU.js";import"./chunk-CVX2YWHC.js";import"./chunk-VYDPW2YO.js";import"./chunk-TTST7UDR.js";import"./chunk-FABDZBDZ.js";import"./chunk-6CS5L24D.js";import"./chunk-N2UVRM3Z.js";import"./chunk-O52RKZCC.js";import"./chunk-LDBYJPRD.js";
3
+ import{NO_PLAN_SESSION,PLAN_DIR_ENV,PLAN_TOKEN_ENV,checkPlan,fileSkillNames,formatCheck,openPlanSession,runPlanSubmit}from"./chunk-4P6BO4NM.js";import"./chunk-HR6DHK6N.js";import"./chunk-UUN3IO3Z.js";import"./chunk-Y24FMUYU.js";import"./chunk-CVX2YWHC.js";import"./chunk-VYDPW2YO.js";import"./chunk-TTST7UDR.js";import"./chunk-FABDZBDZ.js";import"./chunk-6CS5L24D.js";import"./chunk-N2UVRM3Z.js";import"./chunk-O52RKZCC.js";import"./chunk-H6XS5AMQ.js";
4
4
  import"./chunk-RMFLTSOV.js";import"./chunk-II5RVJQN.js";import"./chunk-PMOUHEJQ.js";import"./chunk-J7QYPKVK.js";import"./chunk-5WGOHFAS.js";import"./chunk-RZVI6PMW.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";export{NO_PLAN_SESSION,PLAN_DIR_ENV,PLAN_TOKEN_ENV,checkPlan,fileSkillNames,formatCheck,openPlanSession,runPlanSubmit};
@@ -1,3 +1,3 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{loadDomain}from"./chunk-4DY3NU53.js";import"./chunk-VSJBJXZO.js";export{loadDomain};
3
+ import{loadDomain}from"./chunk-Z5NBJC77.js";import"./chunk-VSJBJXZO.js";export{loadDomain};
@@ -1,3 +1,3 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{renderDocument,renderOutput}from"./chunk-PO35MCYP.js";import"./chunk-LDBYJPRD.js";import"./chunk-74BPZOKU.js";import"./chunk-UREA4ZIG.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";export{renderDocument,renderOutput};
3
+ import{renderDocument,renderOutput}from"./chunk-ZPSPSYDD.js";import"./chunk-H6XS5AMQ.js";import"./chunk-74BPZOKU.js";import"./chunk-UREA4ZIG.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";export{renderDocument,renderOutput};
@@ -1,4 +1,4 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{CURATED_PAGING_VOCABULARY,buildPrepareContext,checkOutTarget,exitCodeFor,fetchAllPages,outputValue,reportError,requiresYes,resolvePaging,runDomain}from"./chunk-WMIIFPXT.js";import"./chunk-4DY3NU53.js";import"./chunk-PO35MCYP.js";import"./chunk-Q3B65OFC.js";import"./chunk-GFLGXGWE.js";import"./chunk-LDBYJPRD.js";import"./chunk-RX5HWI4L.js";import"./chunk-RSSPNFSK.js";import"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";
3
+ import{CURATED_PAGING_VOCABULARY,buildPrepareContext,checkOutTarget,exitCodeFor,fetchAllPages,outputValue,reportError,requiresYes,resolvePaging,runDomain}from"./chunk-VJ72Y4TG.js";import"./chunk-Z5NBJC77.js";import"./chunk-ZPSPSYDD.js";import"./chunk-Q3B65OFC.js";import"./chunk-GFLGXGWE.js";import"./chunk-H6XS5AMQ.js";import"./chunk-RX5HWI4L.js";import"./chunk-RSSPNFSK.js";import"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";
4
4
  import"./chunk-MI6HVYR2.js";import"./chunk-II5RVJQN.js";import"./chunk-3ZRMMBP5.js";import"./chunk-VFPY2A23.js";import"./chunk-PECIBNFD.js";import"./chunk-XNLIEUAW.js";import"./chunk-J7QYPKVK.js";import"./chunk-EDF4U5BT.js";import"./chunk-RZVI6PMW.js";import"./chunk-MLRBDF44.js";import"./chunk-QQRJLH6B.js";import"./chunk-74BPZOKU.js";import"./chunk-UREA4ZIG.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";export{CURATED_PAGING_VOCABULARY,buildPrepareContext,checkOutTarget,exitCodeFor,fetchAllPages,outputValue,reportError,requiresYes,resolvePaging,runDomain};
@@ -1,3 +1,3 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{hasRemovableRunner,parseRunners,removeHint,runRunnerCommand}from"./chunk-XNYQH5JI.js";import"./chunk-MYBIPHZ7.js";import"./chunk-A4LFG7MW.js";import"./chunk-VRBI2NPI.js";import"./chunk-VFPY2A23.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";export{hasRemovableRunner,parseRunners,removeHint,runRunnerCommand};
3
+ import{hasRemovableRunner,parseRunners,removeHint,runRunnerCommand}from"./chunk-NWCW3ONW.js";import"./chunk-MYBIPHZ7.js";import"./chunk-A4LFG7MW.js";import"./chunk-VRBI2NPI.js";import"./chunk-VFPY2A23.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";export{hasRemovableRunner,parseRunners,removeHint,runRunnerCommand};
@@ -1,4 +1,4 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{CRITERION_RE,WAIT_POLL_INTERVAL_MS,aiReviewReasonDomain,checkCounts,checksOf,contractAiReviewResources,envelope,estimateAiReviewResources,invoiceAiReviewResources,reasonsMap,reviewOf,withoutResult}from"./chunk-DELIIGWE.js";import"./chunk-V3RZ4RFP.js";import"./chunk-4RNL462J.js";import"./chunk-RX5HWI4L.js";import"./chunk-JJSBBWJ5.js";import"./chunk-6LSQCOCJ.js";import"./chunk-RSSPNFSK.js";import"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";
4
- import"./chunk-H4CDX4TX.js";import"./chunk-MI6HVYR2.js";import"./chunk-II5RVJQN.js";import"./chunk-PS5QFKHB.js";import"./chunk-3ZRMMBP5.js";import"./chunk-VFPY2A23.js";import"./chunk-XNLIEUAW.js";import"./chunk-J7QYPKVK.js";import"./chunk-EDF4U5BT.js";import"./chunk-RZVI6PMW.js";import"./chunk-QQRJLH6B.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";export{CRITERION_RE,WAIT_POLL_INTERVAL_MS,aiReviewReasonDomain,checkCounts,checksOf,contractAiReviewResources,envelope,estimateAiReviewResources,invoiceAiReviewResources,reasonsMap,reviewOf,withoutResult};
3
+ import{CRITERION_RE,WAIT_POLL_INTERVAL_MS,aiReviewReasonDomain,checkCounts,checksOf,contractAiReviewResources,envelope,estimateAiReviewResources,hasReferencedReason,invoiceAiReviewResources,reasonsMap,reviewOf,withoutResult}from"./chunk-SQBPZREE.js";import"./chunk-V3RZ4RFP.js";import"./chunk-4RNL462J.js";import"./chunk-RX5HWI4L.js";import"./chunk-JJSBBWJ5.js";import"./chunk-6LSQCOCJ.js";import"./chunk-RSSPNFSK.js";import"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";
4
+ import"./chunk-H4CDX4TX.js";import"./chunk-MI6HVYR2.js";import"./chunk-II5RVJQN.js";import"./chunk-PS5QFKHB.js";import"./chunk-3ZRMMBP5.js";import"./chunk-VFPY2A23.js";import"./chunk-XNLIEUAW.js";import"./chunk-J7QYPKVK.js";import"./chunk-EDF4U5BT.js";import"./chunk-RZVI6PMW.js";import"./chunk-QQRJLH6B.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";export{CRITERION_RE,WAIT_POLL_INTERVAL_MS,aiReviewReasonDomain,checkCounts,checksOf,contractAiReviewResources,envelope,estimateAiReviewResources,hasReferencedReason,invoiceAiReviewResources,reasonsMap,reviewOf,withoutResult};
@@ -8,11 +8,11 @@ ${e.hint?`${e.hint}
8
8
  const res=await api.request("GET","/settings/skills");if(!res.ok){io.err(`\u26D4 \u30B9\u30AD\u30EB\u5B9A\u7FA9\u306E\u4E00\u89A7\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\uFF08${errorDetail(res)}\uFF09
9
9
  `);return apiExit(res)}const raw=unwrap(res,"skills")["skills"];if(!Array.isArray(raw)){io.err(`\u26D4 \u30B9\u30AD\u30EB\u5B9A\u7FA9\u306E\u4E00\u89A7\u3092\u89E3\u91C8\u3067\u304D\u307E\u305B\u3093\uFF08\u5FDC\u7B54\u306E\u5148\u982D: ${res.raw.slice(0,120)}\uFF09
10
10
  `);return EXIT_API_SERVER}const entries=[];for(const item of raw){const r=item&&typeof item==="object"?item:{};const name=str(r["name"]);const revision=pickNumber(r,"revision");const digest=str(r["digest"]);if(!isValidSkillName(name)||revision===null||!/^sha256:[0-9a-f]{64}$/.test(digest)){io.err(`\u26D4 \u30B9\u30AD\u30EB\u5B9A\u7FA9\u306E\u4E00\u89A7\u306B\u5951\u7D04\u5916\u306E\u8981\u7D20\u304C\u3042\u308A\u307E\u3059\uFF08${JSON.stringify(item).slice(0,160)}\uFF09
11
- `);return EXIT_API_SERVER}entries.push({name,revision,updated_by_name:str(r["updated_by_name"]),updated_at:str(r["updated_at"]),bytes:pickNumber(r,"bytes"),digest})}entries.sort((a,b)=>a.name<b.name?-1:a.name>b.name?1:0);const{evaluateQuery}=await import("./query-XEOVFI4D.js");const{renderOutput}=await import("./render-4SBLHU4J.js");const selected=opts.query===void 0?entries:await evaluateQuery(opts.query,entries);if(format!=="json"&&opts.query===void 0&&entries.length===0){io.err("\u30B5\u30FC\
11
+ `);return EXIT_API_SERVER}entries.push({name,revision,updated_by_name:str(r["updated_by_name"]),updated_at:str(r["updated_at"]),bytes:pickNumber(r,"bytes"),digest})}entries.sort((a,b)=>a.name<b.name?-1:a.name>b.name?1:0);const{evaluateQuery}=await import("./query-XEOVFI4D.js");const{renderOutput}=await import("./render-2QURVC5V.js");const selected=opts.query===void 0?entries:await evaluateQuery(opts.query,entries);if(format!=="json"&&opts.query===void 0&&entries.length===0){io.err("\u30B5\u30FC\
12
12
  \u30D0\u306B\u30B9\u30AD\u30EB\u304C\u767B\u9332\u3055\u308C\u3066\u3044\u307E\u305B\u3093\uFF08\u30EB\u30FC\u30D7\u306F\u3059\u3079\u3066\u4F5C\u696D\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306E\u30D5\u30A1\u30A4\u30EB\u7248\u3092\u4F7F\u3044\u307E\u3059\uFF09\n");return EXIT_OK}const text=renderOutput(selected,format);io.out(text.endsWith("\n")?text:`${text}
13
13
  `);return EXIT_OK}async function showSkill(api,opts,name,io){if(opts.output!==void 0&&opts.output!=="json"){throw new UsageError(`skill show \u306E --output \u306B\u300C${opts.output}\u300D\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093`,"\u6307\u5B9A\u3067\u304D\u308B\u306E\u306F json \u3060\u3051\u3067\u3059\uFF08\u7701\u7565\u3059\u308B\u3068\u672C\u6587\u3092\u305D\u306E\u307E\u307E\u51FA\u3057\u307E\u3059\uFF09")}const structured=opts.output==="json"||opts.query!==void 0;const current=await fetchSkill(
14
14
  api,name,io.err);if(typeof current==="number")return current;if(current===null){io.err(`\u30B5\u30FC\u30D0\u306B\u30B9\u30AD\u30EB ${name} \u304C\u767B\u9332\u3055\u308C\u3066\u3044\u307E\u305B\u3093\uFF08\u30EB\u30FC\u30D7\u306F\u4F5C\u696D\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306E\u30D5\u30A1\u30A4\u30EB\u7248\u3092\u4F7F\u3044\u307E\u3059\uFF09
15
- `);return EXIT_FAILURE}if(structured){const value={name:current.name,revision:current.revision,updated_by_name:current.updatedByName,updated_at:current.updatedAt,bytes:Buffer.byteLength(current.body,"utf8"),digest:skillDigest(current.body),body:current.body};const{evaluateQuery}=await import("./query-XEOVFI4D.js");const{renderOutput}=await import("./render-4SBLHU4J.js");const selected=opts.query===void 0?value:await evaluateQuery(opts.query,value);const text=renderOutput(selected,"jso\
15
+ `);return EXIT_FAILURE}if(structured){const value={name:current.name,revision:current.revision,updated_by_name:current.updatedByName,updated_at:current.updatedAt,bytes:Buffer.byteLength(current.body,"utf8"),digest:skillDigest(current.body),body:current.body};const{evaluateQuery}=await import("./query-XEOVFI4D.js");const{renderOutput}=await import("./render-2QURVC5V.js");const selected=opts.query===void 0?value:await evaluateQuery(opts.query,value);const text=renderOutput(selected,"jso\
16
16
  n",true);io.out(text.endsWith("\n")?text:`${text}
17
17
  `);return EXIT_OK}if(io.isTty){warnHiddenChars(io.err,current.body,name);io.out(current.body);if(!current.body.endsWith("\n"))io.out("\n");return EXIT_OK}io.rawOut(current.body);return EXIT_OK}async function deleteSkill(api,opts,name,io){let expected;if(opts.revision!==void 0){if(!/^\d{1,15}$/.test(opts.revision)){io.err(`--revision \u306F0\u4EE5\u4E0A\u306E\u6574\u6570\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044: ${opts.revision}
18
18
  `);return EXIT_USAGE}if(!opts.yes){io.err("--revision \u306F --yes \u3068\u4E00\u7DD2\u306B\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08--yes \u306A\u3057\u3067\u306F\u524A\u9664\u3057\u307E\u305B\u3093\uFF09\n");return EXIT_USAGE}expected=opts.revision}else if(opts.yes){io.err("skill delete \u306E\u78BA\u5B9A\u306B\u306F --yes \u3068 --revision <N> \u306E\u4E21\u65B9\u304C\u5FC5\u8981\u3067\u3059\uFF08--yes \u3092\u5916\u3057\u3066\u5B9F\u884C\u3059\u308B\u3068\u3001\u6D88\u3059\u5185\u5BB9\u3068 revision \u3092\u8868\u793A\u3057\u307E\u3059\uFF09\n");
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{hasRemovableRunner,removeHint}from"./chunk-XNYQH5JI.js";import"./chunk-MYBIPHZ7.js";import"./chunk-A4LFG7MW.js";import"./chunk-VRBI2NPI.js";import{describeError,filterByStatus,pick}from"./chunk-O52RKZCC.js";import"./chunk-RMFLTSOV.js";import{EXIT_OK,EXIT_USAGE,UsageError}from"./chunk-VFPY2A23.js";import"./chunk-J7QYPKVK.js";import{stripTerminalControls}from"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";function str(v){return typeof v==="string"&&v!==""?v:null}function num(v){return typeof v==="number"&&Number.isFinite(v)?v:null}function secondsSince(iso,now){if(iso===null)return null;const at=Date.parse(iso);if(Number.isNaN(at))return null;return Math.max(0,Math.floor((now.getTime()-at)/1e3))}async function collectStatus(api,ctx){const now=ctx.now??new Date;const runnersRes=await api.runners();let runners;if(!runnersRes.ok){runners={ok:false,error:describeError(runnersRes)}}else{const raw=pick(
3
+ import{hasRemovableRunner,removeHint}from"./chunk-NWCW3ONW.js";import"./chunk-MYBIPHZ7.js";import"./chunk-A4LFG7MW.js";import"./chunk-VRBI2NPI.js";import{describeError,filterByStatus,pick}from"./chunk-O52RKZCC.js";import"./chunk-RMFLTSOV.js";import{EXIT_OK,EXIT_USAGE,UsageError}from"./chunk-VFPY2A23.js";import"./chunk-J7QYPKVK.js";import{stripTerminalControls}from"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";function str(v){return typeof v==="string"&&v!==""?v:null}function num(v){return typeof v==="number"&&Number.isFinite(v)?v:null}function secondsSince(iso,now){if(iso===null)return null;const at=Date.parse(iso);if(Number.isNaN(at))return null;return Math.max(0,Math.floor((now.getTime()-at)/1e3))}async function collectStatus(api,ctx){const now=ctx.now??new Date;const runnersRes=await api.runners();let runners;if(!runnersRes.ok){runners={ok:false,error:describeError(runnersRes)}}else{const raw=pick(
4
4
  runnersRes.json,"runners");const list=Array.isArray(raw)?raw:[];runners={ok:true,live_count:num(pick(runnersRes.json,"live_count")),max_runners:num(pick(runnersRes.json,"max_runners")),heartbeat_timeout:num(pick(runnersRes.json,"heartbeat_timeout")),items:list.map(r=>{const lastSeen=str(r?.["last_seen_at"]);return{runner_id:str(r?.["runner_id"]),is_live:r?.["is_live"]===true,is_reporting:r?.["is_reporting"]===true,kind:str(r?.["kind"]),phase:str(r?.["phase"]),current_item_id:str(r?.["current_ite\
5
5
  m_id"]),hostname:str(r?.["hostname"]),last_seen_at:lastSeen,seconds_since_last_seen:secondsSince(lastSeen,now)}})}}const queue={};for(const status of["pending","processing"]){const res=await api.list({status,limit:100});if(!res.ok){queue[status]={ok:false,error:describeError(res)};continue}const items=pick(res.json,"items");const more=pick(res.json,"has_more")===true||pick(res.json,"pagination.has_more")===true;const counted=Array.isArray(items)?filterByStatus(items,status).length:null;queue[status]=
6
6
  {ok:true,count:counted,has_more:more}}const state=await api.request("GET","/state");const plan_lock=state.ok?{held:pick(state.json,"state.planning")===true,owner_runner_id:str(pick(state.json,"state.plan_owner_runner_id")),expires_at:str(pick(state.json,"state.plan_lock_expires_at"))}:null;return{project:{ref:ctx.projectRef,id:ctx.projectId},api_url:ctx.apiUrl,runners,queue,plan_lock,local_lock:{held:ctx.lockHeld,path:ctx.lockPath}}}function formatElapsed(seconds){if(seconds<60)return`${seconds}\
@@ -11,7 +11,7 @@ ref,profile:opts.profile}))}for(const status of["pending","processing"]){const q
11
11
  local_lock.held?`\u4FDD\u6301\u4E2D\uFF08${report.local_lock.path}\uFF09`:"\u7121\u3057"}`);return`${lines.join("\n")}
12
12
  `}async function runStatusCommand(api,ctx,opts,io){if(opts.output!==void 0&&opts.output!=="json"){io.err(`task-loop status \u306E --output \u306B\u300C${opts.output}\u300D\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093
13
13
  \u6307\u5B9A\u3067\u304D\u308B\u306E\u306F json \u3060\u3051\u3067\u3059\uFF08\u7701\u7565\u3059\u308B\u3068\u4EBA\u5411\u3051\u306E\u6587\u9762\u3092\u51FA\u3057\u307E\u3059\uFF09
14
- `);return EXIT_USAGE}if(opts.query!==void 0&&opts.query.trim()===""){io.err("--query \u306B\u7A7A\u306E\u5F0F\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\n");return EXIT_USAGE}const report=await collectStatus(api,ctx);if(opts.output===void 0&&opts.query===void 0){io.out(stripTerminalControls(renderStatusText(report,{profile:ctx.profile})));return EXIT_OK}const{evaluateQuery}=await import("./query-XEOVFI4D.js");const{renderOutput}=await import("./render-4SBLHU4J.js");let selected=report;
14
+ `);return EXIT_USAGE}if(opts.query!==void 0&&opts.query.trim()===""){io.err("--query \u306B\u7A7A\u306E\u5F0F\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\n");return EXIT_USAGE}const report=await collectStatus(api,ctx);if(opts.output===void 0&&opts.query===void 0){io.out(stripTerminalControls(renderStatusText(report,{profile:ctx.profile})));return EXIT_OK}const{evaluateQuery}=await import("./query-XEOVFI4D.js");const{renderOutput}=await import("./render-2QURVC5V.js");let selected=report;
15
15
  if(opts.query!==void 0){try{selected=await evaluateQuery(opts.query,report)}catch(e){if(e instanceof UsageError){io.err(`${e.message}
16
16
  `);return EXIT_USAGE}throw e}}const text=renderOutput(selected,"json");io.out(text.endsWith("\n")?text:`${text}
17
17
  `);return EXIT_OK}export{collectStatus,formatElapsed,formatLocalTime,renderStatusText,runStatusCommand};
@@ -1,3 +1,3 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{fetchLatestVersion,isBehindLatest,runUpdate}from"./chunk-7KFX2TPV.js";import"./chunk-VON6ODNL.js";import"./chunk-D233KKXW.js";import"./chunk-PMOUHEJQ.js";import"./chunk-XNLIEUAW.js";import"./chunk-J7QYPKVK.js";import"./chunk-CH6QU76P.js";import"./chunk-DXXFUNYN.js";import"./chunk-5WGOHFAS.js";import"./chunk-EDF4U5BT.js";import"./chunk-RZVI6PMW.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";export{fetchLatestVersion,isBehindLatest,runUpdate};
3
+ import{fetchLatestVersion,isBehindLatest,runUpdate}from"./chunk-AR4FQRII.js";import"./chunk-J5QOE2GM.js";import"./chunk-D233KKXW.js";import"./chunk-PMOUHEJQ.js";import"./chunk-XNLIEUAW.js";import"./chunk-J7QYPKVK.js";import"./chunk-CH6QU76P.js";import"./chunk-DXXFUNYN.js";import"./chunk-5WGOHFAS.js";import"./chunk-EDF4U5BT.js";import"./chunk-RZVI6PMW.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";export{fetchLatestVersion,isBehindLatest,runUpdate};
@@ -1,4 +1,4 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{applyInstancePlan,createInstancePlan,formColumns,parseInstanceContent,workflowDomain,writtenInstance}from"./chunk-22CRY6JR.js";import"./chunk-DELIIGWE.js";import"./chunk-V3RZ4RFP.js";import"./chunk-4RNL462J.js";import"./chunk-RX5HWI4L.js";import"./chunk-JJSBBWJ5.js";import"./chunk-6LSQCOCJ.js";import"./chunk-RSSPNFSK.js";import"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";import"./chunk-MI6HVYR2.js";
3
+ import{applyInstancePlan,createInstancePlan,formColumns,parseInstanceContent,workflowDomain,writtenInstance}from"./chunk-AKQLBUYJ.js";import"./chunk-SQBPZREE.js";import"./chunk-V3RZ4RFP.js";import"./chunk-4RNL462J.js";import"./chunk-RX5HWI4L.js";import"./chunk-JJSBBWJ5.js";import"./chunk-6LSQCOCJ.js";import"./chunk-RSSPNFSK.js";import"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";import"./chunk-MI6HVYR2.js";
4
4
  import"./chunk-II5RVJQN.js";import"./chunk-PS5QFKHB.js";import"./chunk-3ZRMMBP5.js";import"./chunk-VFPY2A23.js";import"./chunk-XNLIEUAW.js";import"./chunk-J7QYPKVK.js";import"./chunk-EDF4U5BT.js";import"./chunk-RZVI6PMW.js";import"./chunk-QQRJLH6B.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";export{applyInstancePlan,createInstancePlan,formColumns,parseInstanceContent,workflowDomain,writtenInstance};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tocca-systems/twp-cli",
3
- "version": "0.83.0",
3
+ "version": "0.84.0",
4
4
  "description": "TWP CLI — Tocca Working Platform の CLI 型統合インターフェース(AIエージェントハーネス)",
5
5
  "type": "module",
6
6
  "bin": {