@tocca-systems/twp-cli 0.87.0 → 0.89.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 (121) hide show
  1. package/CHANGELOG.public.md +22 -0
  2. package/README.md +54 -3
  3. package/dist/{agent-SFDNPV24.js → agent-76ZH3E67.js} +1 -1
  4. package/dist/{agent-loop-KNAIM7MN.js → agent-loop-XPV5PNE5.js} +1 -1
  5. package/dist/ai-dispatch-FTZKQHEL.js +80 -0
  6. package/dist/analysis-CUXB6NQF.js +5 -0
  7. package/dist/{announcement-XAIC4CNE.js → announcement-4YNKKG5V.js} +1 -1
  8. package/dist/{api-command-2PNCTAWY.js → api-command-QS6VCLTX.js} +3 -3
  9. package/dist/{app-ALJYSYKI.js → app-GWNEJ24L.js} +4 -4
  10. package/dist/{attendance-correct-CJ3FJSVI.js → attendance-correct-KOTYM2DS.js} +2 -2
  11. package/dist/{attendance-lists-RRGFCDZR.js → attendance-lists-QUSNJQV2.js} +2 -2
  12. package/dist/{backlog-L5VRYZGM.js → backlog-CNTVVRZ6.js} +22 -20
  13. package/dist/budget-X3OMSO3F.js +4 -0
  14. package/dist/capacity-list-command-LKOVLAY4.js +24 -0
  15. package/dist/{capacity-report-command-BUCAQ2P4.js → capacity-report-command-CENWVTKK.js} +1 -1
  16. package/dist/{chunk-LGJPXLMC.js → chunk-2L2EGIWR.js} +1 -1
  17. package/dist/{chunk-2AVQILQQ.js → chunk-2T23XGJF.js} +2 -2
  18. package/dist/chunk-34TCAKT5.js +88 -0
  19. package/dist/{chunk-DR6BUZXT.js → chunk-3D734ED2.js} +1 -1
  20. package/dist/{chunk-QGRBZ2C2.js → chunk-3OCV6SOR.js} +1 -1
  21. package/dist/chunk-5PBNMFNO.js +49 -0
  22. package/dist/{chunk-NMYHFVDR.js → chunk-6FGQNFUV.js} +1 -1
  23. package/dist/{chunk-IIK77LSC.js → chunk-6M5NUVJJ.js} +1 -1
  24. package/dist/{chunk-FJEGS55N.js → chunk-733XATRJ.js} +1 -1
  25. package/dist/{chunk-FBVSHQST.js → chunk-7KD24ABA.js} +1 -1
  26. package/dist/{chunk-QUMDKN3U.js → chunk-7KD5RWFY.js} +1 -1
  27. package/dist/{chunk-WWDNWWPJ.js → chunk-DADDMUI5.js} +1 -1
  28. package/dist/chunk-DG7JPFYK.js +12 -0
  29. package/dist/{chunk-AV7L2IEN.js → chunk-E3UET43F.js} +1 -1
  30. package/dist/{chunk-E4FUHYC6.js → chunk-EGFVST6P.js} +1 -1
  31. package/dist/{chunk-VERYHAWV.js → chunk-EOXTDZTA.js} +4 -4
  32. package/dist/{chunk-RMU72S3D.js → chunk-FM3RHTEQ.js} +1 -1
  33. package/dist/{chunk-Y24FMUYU.js → chunk-INS77QHY.js} +4 -4
  34. package/dist/{chunk-SJDU7HP6.js → chunk-JA7DLMKJ.js} +4 -4
  35. package/dist/{chunk-MLRBDF44.js → chunk-JF2GCXNQ.js} +1 -1
  36. package/dist/{chunk-WDQMYRPE.js → chunk-KW37N7IO.js} +1 -1
  37. package/dist/{chunk-RTYJWZRA.js → chunk-LS7DFMG6.js} +1 -1
  38. package/dist/{chunk-OW23MAVO.js → chunk-M37IYSEG.js} +1 -1
  39. package/dist/{chunk-H4CDX4TX.js → chunk-MMVXE2CJ.js} +4 -3
  40. package/dist/{chunk-M7UEPYUQ.js → chunk-NLDVB4PZ.js} +1 -1
  41. package/dist/{chunk-XJ5EKWQY.js → chunk-OP5WINVG.js} +1 -1
  42. package/dist/{chunk-4FCPLEZN.js → chunk-OVV2PTZF.js} +1 -1
  43. package/dist/{chunk-Y7QW7MHQ.js → chunk-PWKWXZDZ.js} +1 -1
  44. package/dist/{chunk-5LFUD7K3.js → chunk-Q5NZXJNI.js} +28 -30
  45. package/dist/chunk-RACLI3FA.js +8 -0
  46. package/dist/{chunk-VRJF6JLR.js → chunk-RIEBWMKF.js} +1 -1
  47. package/dist/{chunk-GO4KFSBE.js → chunk-TVISFCQN.js} +5 -4
  48. package/dist/chunk-UVCJXHWN.js +5 -0
  49. package/dist/chunk-UZUV5FYG.js +16 -0
  50. package/dist/{chunk-4VBSSXGA.js → chunk-WGAEYNZQ.js} +1 -1
  51. package/dist/{chunk-KPCVSILY.js → chunk-WJJW7VX7.js} +1 -1
  52. package/dist/{chunk-MUIN7OUW.js → chunk-Y7GYWZLW.js} +3 -5
  53. package/dist/cli.js +57 -14
  54. package/dist/{commands-GQBRPBFW.js → commands-3B5GGPY7.js} +69 -68
  55. package/dist/{commands-KKEZJCLF.js → commands-RBN5WGWJ.js} +2 -2
  56. package/dist/{company-TF76Z3U5.js → company-3227PJ3Q.js} +2 -2
  57. package/dist/{completion-C6ZQCDT2.js → completion-32FJZVQR.js} +1 -1
  58. package/dist/{configure-3JID6MQ5.js → configure-DONZ3M6N.js} +3 -3
  59. package/dist/{contract-CFLPFV4I.js → contract-H5QWWRB3.js} +2 -2
  60. package/dist/{department-T22PBYMP.js → department-NIUPNDHH.js} +1 -1
  61. package/dist/{deposit-PLQ7WHOX.js → deposit-HUFSDRRK.js} +1 -1
  62. package/dist/{dispatch-HHWTJ3P4.js → dispatch-GSBMRWQ4.js} +1 -1
  63. package/dist/{domain-knowledge-YFY5H6UB.js → domain-knowledge-M4Y7744J.js} +1 -1
  64. package/dist/{estimate-DYPQ27KU.js → estimate-BIGMD2NU.js} +3 -3
  65. package/dist/evaluation-L4L23IY2.js +122 -0
  66. package/dist/{expense-EA77QGLW.js → expense-JKENK2W2.js} +1 -1
  67. package/dist/{fiscal-year-YSFASZEW.js → fiscal-year-G45WHCZC.js} +1 -1
  68. package/dist/{holiday-E5WEZU6J.js → holiday-EW62DVPW.js} +3 -3
  69. package/dist/{inquiry-LEYPOQWZ.js → inquiry-QGUOVO77.js} +1 -1
  70. package/dist/{invoice-CAYBEW65.js → invoice-ZWUU3FSZ.js} +2 -2
  71. package/dist/{job-title-RSDAHHVJ.js → job-title-CXCW7BAP.js} +1 -1
  72. package/dist/{knowledge-GYLFDEXS.js → knowledge-PBFDM5WJ.js} +2 -2
  73. package/dist/{leave-IG7SWPPB.js → leave-CXTBZFIC.js} +3 -3
  74. package/dist/{license-I2SL53UI.js → license-7WE7UPVX.js} +1 -1
  75. package/dist/{logout-guard-FCCJSF5V.js → logout-guard-PEETWT4A.js} +1 -1
  76. package/dist/{media-UGPQN4GI.js → media-FM53QOC2.js} +3 -3
  77. package/dist/{notification-IEANIYPD.js → notification-Z2VMBWO3.js} +1 -1
  78. package/dist/{onedrive-KWVOUGG6.js → onedrive-Z43D26SJ.js} +1 -1
  79. package/dist/{oneshot-3N2W247J.js → oneshot-YDTQT2T3.js} +1 -1
  80. package/dist/{outlook-FQYNTXOB.js → outlook-ILJN562M.js} +1 -1
  81. package/dist/{plan-submit-F5VH3T37.js → plan-submit-WP25FEYE.js} +1 -1
  82. package/dist/{position-CRVEGXPL.js → position-CLQVRA7Y.js} +1 -1
  83. package/dist/project-OTJCVFOW.js +4 -0
  84. package/dist/{prospect-A2YNQ4DE.js → prospect-3EHNELGI.js} +2 -2
  85. package/dist/{purchase-F3HUNCJE.js → purchase-MMUXAEER.js} +3 -3
  86. package/dist/{receivable-K4UKS46G.js → receivable-E52RNQTW.js} +1 -1
  87. package/dist/{redmine-MC3RIB7W.js → redmine-CKXEOH7Q.js} +1 -1
  88. package/dist/{registry-AQXCC42T.js → registry-A7OXOQPI.js} +1 -1
  89. package/dist/{report-HUP2TXTK.js → report-UTVGNCLP.js} +1 -1
  90. package/dist/{run-E3TOMCP7.js → run-VNV2AVDI.js} +2 -2
  91. package/dist/{sales-ai-review-5BJ3HNP5.js → sales-ai-review-XFMAKAOH.js} +2 -2
  92. package/dist/{sales-master-DUTB2DUX.js → sales-master-I6X4WFV3.js} +2 -2
  93. package/dist/{sales-numbering-WTEFGPOV.js → sales-numbering-P3JG4UPD.js} +1 -1
  94. package/dist/{schedule-command-ZOE3NYAA.js → schedule-command-4TFAFIAO.js} +1 -1
  95. package/dist/{search-JLFW7JSD.js → search-KFMYAVLM.js} +7 -6
  96. package/dist/{segment-ZKJYMOKV.js → segment-LCZFL6QE.js} +1 -1
  97. package/dist/{server-settings-GFWQ5ERV.js → server-settings-RNJ6RVTE.js} +1 -1
  98. package/dist/{server-skills-FVYYZ54O.js → server-skills-5JESWOTH.js} +1 -1
  99. package/dist/{setup-DW2H7BDN.js → setup-ICJPTYKW.js} +1 -1
  100. package/dist/{skill-5NCDQFDN.js → skill-GK2WADKA.js} +2 -2
  101. package/dist/{skill-check-JBRUAUID.js → skill-check-VNUNX6IO.js} +2 -2
  102. package/dist/{staffing-board-NWZLXYXJ.js → staffing-board-5YHU7V6Z.js} +3 -3
  103. package/dist/{status-command-PEL5GWIH.js → status-command-2FL2SVFR.js} +1 -1
  104. package/dist/{supplier-payment-QKWONHRH.js → supplier-payment-V4KRH7VA.js} +2 -2
  105. package/dist/{support-MLNODDQT.js → support-FU5M5LM3.js} +2 -2
  106. package/dist/{task-JGCMQZRK.js → task-PFSBL4A3.js} +4 -4
  107. package/dist/{teams-X5WBB5YH.js → teams-43CJTQHL.js} +1 -1
  108. package/dist/{user-FA2FIC47.js → user-5KHSDIVN.js} +4 -4
  109. package/dist/{user-contract-type-RELV4BV7.js → user-contract-type-4JXN7B7J.js} +1 -1
  110. package/dist/{worker-agent-IPOLSJEA.js → worker-agent-4TVU6AES.js} +1 -1
  111. package/dist/{workflow-VJL4FV3U.js → workflow-U5YJ2I6L.js} +1 -1
  112. package/package.json +1 -1
  113. package/dist/ai-dispatch-QKGK4P7P.js +0 -78
  114. package/dist/analysis-DPQN4BFG.js +0 -5
  115. package/dist/budget-T5YJTALN.js +0 -4
  116. package/dist/chunk-IVFSEXD3.js +0 -48
  117. package/dist/chunk-L37NS5L2.js +0 -8
  118. package/dist/chunk-MZXLMVQM.js +0 -11
  119. package/dist/chunk-O52RKZCC.js +0 -16
  120. package/dist/evaluation-NG4DIIJM.js +0 -61
  121. package/dist/project-JICUCXI5.js +0 -4
@@ -1,25 +1,23 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{placeholderTaskKey,stepToItem}from"./chunk-DR6BUZXT.js";import{redactLoopOutput}from"./chunk-NXPLTDN4.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-3D734ED2.js";import{redactLoopOutput}from"./chunk-NXPLTDN4.js";import{localDate}from"./chunk-INS77QHY.js";import{normalizeSkillName,skillOfItem}from"./chunk-FABDZBDZ.js";import{DEFAULT_SKILL_PREFIX,SKILL_PREFIX_RE,setSkillPrefix,skillCommand,skillPrefix}from"./chunk-6CS5L24D.js";import{describeError,pick,pickString}from"./chunk-UZUV5FYG.js";import{isTaskKey}from"./chunk-II5RVJQN.js";import{createHash,randomBytes}from"crypto";import fs from"fs";import path from"path";var INFLIGHT_STALE_HOURS=3;function staleFloorHours(aiTimeoutSec){return Math.ceil(aiTimeoutSec*2/3600)}function inflightStaleHours(aiTimeoutSec,baseHours=INFLIGHT_STALE_HOURS){const base=Number.isFinite(baseHours)&&baseHours>0?baseHours:INFLIGHT_STALE_HOURS;return Math.max(base,staleFloorHours(aiTimeoutSec))}function ageMinutesOf(item,now){for(const raw of[item.started_at,item.updated_at,item.dequeued_at,item.created_at]){if(!raw)continue;const ts=Date.parse(raw);if(Number.isNaN(ts))continue;return Math.
4
4
  floor((now.getTime()-ts)/6e4)}return null}function inflightEntries(items,now=new Date,staleHours=INFLIGHT_STALE_HOURS){const staleMinutes=staleHours*60;const byKey=new Map;for(const item of items){const key=(item.task_key??"").trim();if(!key)continue;const ageMinutes=ageMinutesOf(item,now);if(ageMinutes!==null&&ageMinutes>staleMinutes)continue;const entry={key,runner:item.runner_id??"-",ageMinutes,label:(item.label??"").slice(0,60)};const prev=byKey.get(key);if(!prev||(entry.ageMinutes??-1)>(prev.
5
- 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")
5
+ ageMinutes??-1))byKey.set(key,entry)}return[...byKey.values()].sort((a,b)=>a.key.localeCompare(b.key))}function formatInflightEntry(entry){const age=entry.ageMinutes===null?"\u4E0D\u660E":`${entry.ageMinutes}\u5206`;return`${entry.key} runner=${entry.runner} \u7D4C\u904E=${age}`}async function createItem(api,body){const res=await api.create(redactItemBody(body));if(!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){
7
7
  const re=new RegExp(`${key.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}(?![0-9])`);return items.some(it=>re.test(`${it.label??""}
8
8
  ${it.prompt??""}
9
- ${it.task_key??""}`))}function localTimestamp(at=new Date){const p2=n=>String(n).padStart(2,"0");const offsetMin=-at.getTimezoneOffset();const sign=offsetMin>=0?"+":"-";const abs=Math.abs(offsetMin);return`${at.getFullYear()}-${p2(at.getMonth()+1)}-${p2(at.getDate())}T${p2(at.getHours())}:${p2(at.getMinutes())}:${p2(at.getSeconds())}${sign}${p2(Math.trunc(abs/60))}${p2(abs%60)}`}var ReleaseOutcomeLog=class{constructor(file){this.file=file}file;record(result,phase,reason,ai){const clean=reason.replace(
10
- /[\t\n]/g," ").slice(0,200);const line=`${localTimestamp()} ${result} ${phase||"unknown"} ${ai||"unknown"} ${clean}
11
- `;try{fs.mkdirSync(path.dirname(this.file),{recursive:true});fs.appendFileSync(this.file,line)}catch{}}};function parseReleaseResult(logText,contractLine){const prefix=contractLine.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");const matches=[...logText.matchAll(new RegExp(`${prefix}:[^|\\n]*\\|[^|\\n]*\\|[^\\n]*`,"g"))];const line=matches.at(-1)?.[0];if(!line)return null;const parts=line.split("|").map(s=>s.trim());return{executed:!/NOT_EXECUTED/.test(parts[0]??""),phase:parts[1]??"",reason:parts[2]??"",
12
- line}}function parseOutcomeCode(logText){const matches=[...logText.matchAll(/\b([A-Z][A-Z0-9_]*_RESULT):[ \t]*([^|\n]*)/g)];const last=matches.at(-1);if(last===void 0)return null;const value=(last[2]??"").trim();return value===""?null:`${last[1]??""}: ${value}`}var RECOVER_KEY_RE=/RECOVER:[ \t]*([^\s|、,,]+-\d+)/;function parseRecoverKey(line){const raw=RECOVER_KEY_RE.exec(line)?.[1];if(raw===void 0)return null;if(!raw.includes("%"))return raw;try{const key=decodeURIComponent(raw);return isTaskKey(
13
- key)&&key.trim()===key?key:null}catch{return null}}function parsePartialMergeCause(line){const m=/PARTIAL_MERGE:\s*([A-Za-z0-9_.:-]+)/.exec(line);return m?.[1]??null}function parsePhase5Pending(line){const m=/PHASE5_PENDING:\s*(\d+)/.exec(line);return m?.[1]??null}function parseKeysLine(logText,keysLine){const prefix=keysLine.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");const matches=[...logText.matchAll(new RegExp(`${prefix}:[ \\t]*([A-Za-z0-9,_-]*)`,"g"))];const raw=matches.at(-1)?.[1];if(raw===void 0)
14
- return null;const trimmed=raw.trim();if(trimmed===""||trimmed==="none")return[];return trimmed.split(",").filter(k=>k!=="")}var PHASE5_RECOVERY_MAX=2;var PARTIAL_MERGE_ESCALATION_MAX=1;var TANI_USER_ID="2f391dda-f0e3-42f8-a9fd-8ffc271be765";var STATUS_HUMAN_DECISION="35e2d271-8a6e-4f3f-8bb6-1588a2d5a894";async function enqueueBlockerRecovery(deps,releaseLine){const{api,config,log}=deps;const key=parseRecoverKey(releaseLine);if(!key)return;const queued=await api.queuedSnapshot();if(queued===null){
15
- log.log(" \u26A0\uFE0F \u30AD\u30E5\u30FC\u306E\u4E00\u89A7\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F \u2192 \u30D6\u30ED\u30C3\u30AB\u30FC\u4FEE\u6B63\u306E\u6295\u5165\u3092\u898B\u9001\u308A\u307E\u3059");log.log(" \uFF08\u65E2\u306B\u30AD\u30E5\u30FC\u306B\u5C45\u308B\u304B\u5224\u5B9A\u3067\u304D\u306A\u3044\u72B6\u614B\u3067\u6295\u5165\u3059\u308B\u3068\u3001\u4E0A\u9650\u67A0\u3092\u6D88\u8CBB\u3057\u3066\u91CD\u8907\u30A2\u30A4\u30C6\u30E0\u3092\u4F5C\u308A\u307E\u3059\uFF09");
16
- return}if(queueContainsKey(queued,key)){log.log(` \u23ED ${key} \u306E\u30A2\u30A4\u30C6\u30E0\u306F\u65E2\u306B\u30AD\u30E5\u30FC\u306B\u3042\u308A\u307E\u3059 \u2192 \u30D6\u30ED\u30C3\u30AB\u30FC\u4FEE\u6B63\u306E\u6295\u5165\u3092\u30B9\u30AD\u30C3\u30D7`);return}const today=localDate(config.counterTimezone);const res=await api.consumeCounter(`blocker_recovery.${key}`,today,config.blockerRecoveryMaxPerDay);if(!res.ok){if(res.status!==null&&res.status>=400&&res.status<500){log.log(` \u26D4 ${key}\
17
- \u306E\u30D6\u30ED\u30C3\u30AB\u30FC\u4FEE\u6B63\u306E\u6295\u5165\u4E0A\u9650\u3092\u78BA\u8A8D\u3067\u304D\u307E\u305B\u3093\uFF08${describeError(res)}\uFF09\u3002**\u518D\u8A66\u884C\u3067\u306F\u89E3\u6D88\u3057\u307E\u305B\u3093**`);log.log(` \u78BA\u8A8D: \u30BF\u30A4\u30E0\u30BE\u30FC\u30F3\uFF08\u73FE\u5728 ${config.counterTimezone}\u30FB\u9001\u4FE1\u3057\u305F\u65E5\u4ED8 ${today}\uFF09\uFF0F\u4E0A\u9650\uFF08\u73FE\u5728 ${config.blockerRecoveryMaxPerDay}\uFF09`)}else{log.log(` \
18
- \u26D4 ${key} \u306E\u30D6\u30ED\u30C3\u30AB\u30FC\u4FEE\u6B63\u306E\u6295\u5165\u4E0A\u9650\u3092\u78BA\u8A8D\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08${describeError(res)}\uFF09\u2192 \u4ECA\u56DE\u306F\u6295\u5165\u3057\u307E\u305B\u3093\uFF08\u6B21\u30B5\u30A4\u30AF\u30EB\u3067\u518D\u5224\u5B9A\uFF09`)}return}const granted=pickString(res.json,"granted");const count=pickString(res.json,"counter.count");if(granted===""){log.log(` \u26D4 ${key} \u306E\u6295\u5165\u4E0A\u9650\u306E\u5FDC\u7B54\u3092\u89E3\u91C8\u3067\u304D\u307E\u305B\u3093\uFF08granted \u304C\u8AAD\u3081\u307E\u305B\u3093\uFF09\u2192 \u4ECA\u56DE\
19
- \u306F\u6295\u5165\u3057\u307E\u305B\u3093\u3002\u5FDC\u7B54\u306E\u5148\u982D: ${res.raw.slice(0,120)}`);return}if(granted!=="true"){log.log(` \u23ED ${key} \u306E\u30D6\u30ED\u30C3\u30AB\u30FC\u4FEE\u6B63\u306F\u672C\u65E5 ${count||"?"} \u56DE\u6295\u5165\u6E08\u307F\uFF08\u4E0A\u9650 ${config.blockerRecoveryMaxPerDay}\uFF09\u2192 \u4ECA\u56DE\u306F\u6295\u5165\u3057\u307E\u305B\u3093\u3002\u4EBA\u9593\u5224\u65AD\u3078\u5BC4\u305B\u3066\u304F\u3060\u3055\u3044`);return}const{itemId,detail}=await createItem(
20
- api,{label:`[\u30EA\u30EA\u30FC\u30B9\u30D6\u30ED\u30C3\u30AB\u30FC] ${key} \u306E\u4FEE\u6B63\uFF08\u672C\u756A\u30EA\u30EA\u30FC\u30B9\u89E3\u9664\u306E\u305F\u3081\u6700\u512A\u5148\uFF09 #ai:complex`,prompt:skillCommand("task-investigate-and-fix",key),ai_type:"claude",task_key:key});if(!itemId){log.log(` \u26A0\uFE0F ${key} \u306E\u30D6\u30ED\u30C3\u30AB\u30FC\u4FEE\u6B63\u30A2\u30A4\u30C6\u30E0\u6295\u5165\u306B\u5931\u6557\u3057\u307E\u3057\u305F\uFF08\u672C\u65E5\u306E\u6295\u5165\u67A0\u306F1\u4EF6\u6D88\u8CBB\u6E08\u307F\uFF09: ${detail}`);
21
- return}const reorderRes=await api.reorder([itemId]);if(reorderRes.ok&&reorderSucceeded(itemId,reorderRes.json)){log.log(` \u23EB \u30EA\u30EA\u30FC\u30B9\u30D6\u30ED\u30C3\u30AB\u30FC ${key} \u306E\u4FEE\u6B63\u30A2\u30A4\u30C6\u30E0\u3092\u30AD\u30E5\u30FC\u5148\u982D\u306B\u6295\u5165\u3057\u307E\u3057\u305F\uFF08\u6B21\u306E\u30C7\u30AD\u30E5\u30FC\u3067\u7740\u624B\uFF09`)}else{log.log(` \u26A0\uFE0F ${key} \u306E\u4FEE\u6B63\u30A2\u30A4\u30C6\u30E0\u306F\u6295\u5165\u3057\u307E\u3057\u305F\u304C\u5148\u982D\u3078\u306E\u4E26\u3073\u66FF\u3048\u306B\u5931\u6557\u3057\u307E\u3057\u305F\uFF08\u30AD\u30E5\u30FC\u672B\u5C3E\u3067\u5B9F\u884C\u3055\u308C\u307E\u3059\uFF09`)}}
22
- function queueContainsSkill(items,skillCommand2){return items.some(it=>(it.prompt??"").includes(skillCommand2))}async function enqueueReleasePhase5Recovery(deps,releaseLine){const{api,config,log}=deps;const releaseId=parsePhase5Pending(releaseLine);if(!releaseId)return;const recoverySkill=config.operations.releaseRecoverySkill;if(!recoverySkill)return;const queued=await api.queuedSnapshot();if(queued===null){log.log(" \u26A0\uFE0F \u30AD\u30E5\u30FC\u306E\u4E00\u89A7\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F \u2192 \u30EA\u30EA\u30FC\u30B9\u56DE\u53CE\u306E\u6295\u5165\u3092\u898B\u9001\u308A\u307E\u3059");
9
+ ${it.task_key??""}`))}function parseReleaseResult(logText,contractLine){const prefix=contractLine.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");const matches=[...logText.matchAll(new RegExp(`${prefix}:[^|\\n]*\\|[^|\\n]*\\|[^\\n]*`,"g"))];const line=matches.at(-1)?.[0];if(!line)return null;const parts=line.split("|").map(s=>s.trim());return{executed:!/NOT_EXECUTED/.test(parts[0]??""),phase:parts[1]??"",reason:parts[2]??"",line}}function parseOutcomeCode(logText){const matches=[...logText.matchAll(/\b([A-Z][A-Z0-9_]*_RESULT):[ \t]*([^|\n]*)/g)];
10
+ const last=matches.at(-1);if(last===void 0)return null;const value=(last[2]??"").trim();return value===""?null:`${last[1]??""}: ${value}`}var RECOVER_KEY_RE=/RECOVER:[ \t]*([^\s|、,,]+-\d+)/;function parseRecoverKey(line){const raw=RECOVER_KEY_RE.exec(line)?.[1];if(raw===void 0)return null;if(!raw.includes("%"))return raw;try{const key=decodeURIComponent(raw);return isTaskKey(key)&&key.trim()===key?key:null}catch{return null}}function parsePartialMergeCause(line){const m=/PARTIAL_MERGE:\s*([A-Za-z0-9_.:-]+)/.
11
+ exec(line);return m?.[1]??null}function parsePhase5Pending(line){const m=/PHASE5_PENDING:\s*(\d+)/.exec(line);return m?.[1]??null}function parseKeysLine(logText,keysLine){const prefix=keysLine.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");const matches=[...logText.matchAll(new RegExp(`${prefix}:[ \\t]*([A-Za-z0-9,_-]*)`,"g"))];const raw=matches.at(-1)?.[1];if(raw===void 0)return null;const trimmed=raw.trim();if(trimmed===""||trimmed==="none")return[];return trimmed.split(",").filter(k=>k!=="")}var PHASE5_RECOVERY_MAX=2;
12
+ var PARTIAL_MERGE_ESCALATION_MAX=1;var TANI_USER_ID="2f391dda-f0e3-42f8-a9fd-8ffc271be765";var STATUS_HUMAN_DECISION="35e2d271-8a6e-4f3f-8bb6-1588a2d5a894";async function enqueueBlockerRecovery(deps,releaseLine){const{api,config,log}=deps;const key=parseRecoverKey(releaseLine);if(!key)return;const queued=await api.queuedSnapshot();if(queued===null){log.log(" \u26A0\uFE0F \u30AD\u30E5\u30FC\u306E\u4E00\u89A7\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F \u2192 \u30D6\u30ED\u30C3\u30AB\u30FC\u4FEE\u6B63\u306E\u6295\u5165\u3092\u898B\u9001\u308A\u307E\u3059");
13
+ log.log(" \uFF08\u65E2\u306B\u30AD\u30E5\u30FC\u306B\u5C45\u308B\u304B\u5224\u5B9A\u3067\u304D\u306A\u3044\u72B6\u614B\u3067\u6295\u5165\u3059\u308B\u3068\u3001\u4E0A\u9650\u67A0\u3092\u6D88\u8CBB\u3057\u3066\u91CD\u8907\u30A2\u30A4\u30C6\u30E0\u3092\u4F5C\u308A\u307E\u3059\uFF09");return}if(queueContainsKey(queued,key)){log.log(` \u23ED ${key} \u306E\u30A2\u30A4\u30C6\u30E0\u306F\u65E2\u306B\u30AD\u30E5\u30FC\u306B\u3042\u308A\u307E\u3059 \u2192 \u30D6\u30ED\u30C3\u30AB\u30FC\u4FEE\u6B63\u306E\u6295\u5165\u3092\u30B9\u30AD\u30C3\u30D7`);
14
+ return}const today=localDate(config.counterTimezone);const res=await api.consumeCounter(`blocker_recovery.${key}`,today,config.blockerRecoveryMaxPerDay);if(!res.ok){if(res.status!==null&&res.status>=400&&res.status<500){log.log(` \u26D4 ${key} \u306E\u30D6\u30ED\u30C3\u30AB\u30FC\u4FEE\u6B63\u306E\u6295\u5165\u4E0A\u9650\u3092\u78BA\u8A8D\u3067\u304D\u307E\u305B\u3093\uFF08${describeError(res)}\uFF09\u3002**\u518D\u8A66\u884C\u3067\u306F\u89E3\u6D88\u3057\u307E\u305B\u3093**`);log.log(` \u78BA\u8A8D:\
15
+ \u30BF\u30A4\u30E0\u30BE\u30FC\u30F3\uFF08\u73FE\u5728 ${config.counterTimezone}\u30FB\u9001\u4FE1\u3057\u305F\u65E5\u4ED8 ${today}\uFF09\uFF0F\u4E0A\u9650\uFF08\u73FE\u5728 ${config.blockerRecoveryMaxPerDay}\uFF09`)}else{log.log(` \u26D4 ${key} \u306E\u30D6\u30ED\u30C3\u30AB\u30FC\u4FEE\u6B63\u306E\u6295\u5165\u4E0A\u9650\u3092\u78BA\u8A8D\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08${describeError(res)}\uFF09\u2192 \u4ECA\u56DE\u306F\u6295\u5165\u3057\u307E\u305B\u3093\uFF08\u6B21\u30B5\u30A4\u30AF\u30EB\u3067\u518D\u5224\u5B9A\uFF09`)}
16
+ return}const granted=pickString(res.json,"granted");const count=pickString(res.json,"counter.count");if(granted===""){log.log(` \u26D4 ${key} \u306E\u6295\u5165\u4E0A\u9650\u306E\u5FDC\u7B54\u3092\u89E3\u91C8\u3067\u304D\u307E\u305B\u3093\uFF08granted \u304C\u8AAD\u3081\u307E\u305B\u3093\uFF09\u2192 \u4ECA\u56DE\u306F\u6295\u5165\u3057\u307E\u305B\u3093\u3002\u5FDC\u7B54\u306E\u5148\u982D: ${res.raw.slice(0,120)}`);return}if(granted!=="true"){log.log(` \u23ED ${key} \u306E\u30D6\u30ED\u30C3\u30AB\u30FC\u4FEE\u6B63\u306F\u672C\u65E5 ${count||
17
+ "?"} \u56DE\u6295\u5165\u6E08\u307F\uFF08\u4E0A\u9650 ${config.blockerRecoveryMaxPerDay}\uFF09\u2192 \u4ECA\u56DE\u306F\u6295\u5165\u3057\u307E\u305B\u3093\u3002\u4EBA\u9593\u5224\u65AD\u3078\u5BC4\u305B\u3066\u304F\u3060\u3055\u3044`);return}const{itemId,detail}=await createItem(api,{label:`[\u30EA\u30EA\u30FC\u30B9\u30D6\u30ED\u30C3\u30AB\u30FC] ${key} \u306E\u4FEE\u6B63\uFF08\u672C\u756A\u30EA\u30EA\u30FC\u30B9\u89E3\u9664\u306E\u305F\u3081\u6700\u512A\u5148\uFF09 #ai:complex`,prompt:skillCommand(
18
+ "task-investigate-and-fix",key),ai_type:"claude",task_key:key});if(!itemId){log.log(` \u26A0\uFE0F ${key} \u306E\u30D6\u30ED\u30C3\u30AB\u30FC\u4FEE\u6B63\u30A2\u30A4\u30C6\u30E0\u6295\u5165\u306B\u5931\u6557\u3057\u307E\u3057\u305F\uFF08\u672C\u65E5\u306E\u6295\u5165\u67A0\u306F1\u4EF6\u6D88\u8CBB\u6E08\u307F\uFF09: ${detail}`);return}const reorderRes=await api.reorder([itemId]);if(reorderRes.ok&&reorderSucceeded(itemId,reorderRes.json)){log.log(` \u23EB \u30EA\u30EA\u30FC\u30B9\u30D6\u30ED\u30C3\u30AB\u30FC ${key}\
19
+ \u306E\u4FEE\u6B63\u30A2\u30A4\u30C6\u30E0\u3092\u30AD\u30E5\u30FC\u5148\u982D\u306B\u6295\u5165\u3057\u307E\u3057\u305F\uFF08\u6B21\u306E\u30C7\u30AD\u30E5\u30FC\u3067\u7740\u624B\uFF09`)}else{log.log(` \u26A0\uFE0F ${key} \u306E\u4FEE\u6B63\u30A2\u30A4\u30C6\u30E0\u306F\u6295\u5165\u3057\u307E\u3057\u305F\u304C\u5148\u982D\u3078\u306E\u4E26\u3073\u66FF\u3048\u306B\u5931\u6557\u3057\u307E\u3057\u305F\uFF08\u30AD\u30E5\u30FC\u672B\u5C3E\u3067\u5B9F\u884C\u3055\u308C\u307E\u3059\uFF09`)}}function queueContainsSkill(items,skillCommand2){
20
+ return items.some(it=>(it.prompt??"").includes(skillCommand2))}async function enqueueReleasePhase5Recovery(deps,releaseLine){const{api,config,log}=deps;const releaseId=parsePhase5Pending(releaseLine);if(!releaseId)return;const recoverySkill=config.operations.releaseRecoverySkill;if(!recoverySkill)return;const queued=await api.queuedSnapshot();if(queued===null){log.log(" \u26A0\uFE0F \u30AD\u30E5\u30FC\u306E\u4E00\u89A7\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F \u2192 \u30EA\u30EA\u30FC\u30B9\u56DE\u53CE\u306E\u6295\u5165\u3092\u898B\u9001\u308A\u307E\u3059");
23
21
  log.log(" \uFF08\u65E2\u306B\u30AD\u30E5\u30FC\u306B\u5C45\u308B\u304B\u5224\u5B9A\u3067\u304D\u306A\u3044\u72B6\u614B\u3067\u6295\u5165\u3059\u308B\u3068\u3001\u672C\u756A\u30EA\u30EA\u30FC\u30B9\u304C\u4E8C\u91CD\u306B\u8D70\u308A\u307E\u3059\uFF09");return}if(queueContainsSkill(queued,recoverySkill)){log.log(" \u23ED \u30EA\u30EA\u30FC\u30B9\u56DE\u53CE\u306E\u30A2\u30A4\u30C6\u30E0\u306F\u65E2\u306B\u30AD\u30E5\u30FC\u306B\u3042\u308A\u307E\u3059 \u2192 \u6295\u5165\u3092\u30B9\u30AD\u30C3\u30D7");
24
22
  return}const today=localDate(config.counterTimezone);const res=await api.consumeCounter(`release_phase5.${releaseId}`,today,PHASE5_RECOVERY_MAX);if(!res.ok){log.log(` \u26D4 release ${releaseId} \u306E\u30EA\u30EA\u30FC\u30B9\u56DE\u53CE\u306E\u6295\u5165\u4E0A\u9650\u3092\u78BA\u8A8D\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08${describeError(res)}\uFF09\u2192 \u4ECA\u56DE\u306F\u6295\u5165\u3057\u307E\u305B\u3093\uFF08\u5B9A\u671F\u67A0\u304C\u62FE\u3044\u307E\u3059\uFF09`);return}const granted=pickString(
25
23
  res.json,"granted");if(granted===""){log.log(` \u26D4 release ${releaseId} \u306E\u6295\u5165\u4E0A\u9650\u306E\u5FDC\u7B54\u3092\u89E3\u91C8\u3067\u304D\u307E\u305B\u3093\uFF08granted \u304C\u8AAD\u3081\u307E\u305B\u3093\uFF09\u2192 \u4ECA\u56DE\u306F\u6295\u5165\u3057\u307E\u305B\u3093\u3002\u5FDC\u7B54\u306E\u5148\u982D: ${res.raw.slice(0,120)}`);return}if(granted!=="true"){log.log(` \u23ED release ${releaseId} \u306E\u30EA\u30EA\u30FC\u30B9\u56DE\u53CE\u306F\u4E0A\u9650\uFF08${PHASE5_RECOVERY_MAX}\
@@ -82,22 +80,22 @@ suppress:true,reason:""}}function formatResumeHold(hold){const age=hold.ageMinut
82
80
  sort();let advanced=src.advancing.size===0?{}:null;const statusUsable=src.taskStatus!==null&&src.taskStatus.complete&&src.taskStatus.windowHours>=RECENT_ADVANCE_WINDOW_HOURS;if(src.recent!==null&&src.advancing.size>0&&statusUsable){advanced={};for(const[key,candidate]of buildRecentCandidateIndex(src.recent,{now})){const advance=await resolveRecentAdvance(candidate,async()=>null,src.advancing);if(advance===null)continue;if(!shouldSuppressForStatus(advance,src.taskStatus,src.advancing).suppress)continue;
83
81
  advanced[key]=`\u76F4\u8FD1\u306B\u540C\u3058\u30B9\u30AD\u30EB\u304C\u72B6\u614B\u3092\u9032\u3081\u3066\u3044\u307E\u3059\uFF08${formatRecentAdvance(advance)}\uFF09`}}return{taken_at:now.toISOString(),inflight,pending,advanced}}function dynamicStepReasons(blocks,taskKey,skill){if(!blocks)return[];const key=taskKey.trim();if(key==="")return[];const reasons=[];const inflight=blocks.inflight?.[key];if(inflight!==void 0)reasons.push(`${key} \u306F${inflight}`);if(blocks.pending?.includes(key))reasons.
84
82
  push(`${key} \u306F\u65E2\u306B\u30AD\u30E5\u30FC\u5F85\u3061\uFF08pending\uFF09\u306B\u5C45\u307E\u3059`);const advanced=skill.trim()===""?void 0:blocks.advanced?.[advanceKey(key,skill)];if(advanced!==void 0)reasons.push(`${key} \u306F${advanced}`);return reasons}function unavailableChecks(blocks){if(blocks===null)return["\u51E6\u7406\u4E2D","\u30AD\u30E5\u30FC\u5F85\u3061","\u76F4\u8FD1\u3067\u72B6\u614B\u3092\u9032\u3081\u305F"];const out=[];if(blocks.inflight===null)out.push("\u51E6\u7406\u4E2D");
85
- if(blocks.pending===null)out.push("\u30AD\u30E5\u30FC\u5F85\u3061");if(blocks.advanced===null)out.push("\u76F4\u8FD1\u3067\u72B6\u614B\u3092\u9032\u3081\u305F");return out}function formatPlanResultLine(summary){return`PLAN_RESULT: ${JSON.stringify(summary)}`}var PLAN_TOKEN_ENV="TWP_LOOP_PLAN_TOKEN";var PLAN_DIR_ENV="TWP_LOOP_PLAN_DIR";var SKILL_NAME_RE=/^[a-z][a-z0-9-]*$/;var PRIORITY_RE=/^P[0-9]$/;function fingerprint(token){return createHash("sha256").update(token).digest("hex").slice(0,32)}function sessionPath(dir,token){return path2.join(dir,`plan-session-${fingerprint(token)}.json`)}function submissionPath(dir,token){return path2.join(dir,`plan-submission-${fingerprint(token)}.json`)}function rejectionsPath(dir,token){return path2.join(dir,`pla\
86
- n-rejections-${fingerprint(token)}.json`)}var MAX_REJECTIONS=5;function readRejections(file){try{const arr=JSON.parse(fs2.readFileSync(file,"utf8"));return Array.isArray(arr)?arr:[]}catch{return[]}}function recordRejection(dir,token,check){try{const entry={at:new Date().toISOString(),errors:check.errors,steps:check.steps.filter(v=>!v.accepted).map(v=>({index:v.index,skill:v.skill,args:v.args,reasons:v.reasons}))};const file=rejectionsPath(dir,token);writeAtomic(file,JSON.stringify([entry,...readRejections(
87
- file)].slice(0,MAX_REJECTIONS)))}catch{}}function writeAtomic(file,body){const tmp=`${file}.${process.pid}.tmp`;fs2.writeFileSync(tmp,body,{mode:384});fs2.renameSync(tmp,file)}var NO_PLAN_SESSION={env:{},submission:()=>null,rejections:()=>[],close:()=>void 0};var STALE_MS=24*60*60*1e3;function sweepStale(dir,now){let names;try{names=fs2.readdirSync(dir)}catch{return}for(const f of names){if(!/^plan-(session|submission|rejections)-/.test(f))continue;try{const file=path2.join(dir,f);if(now-fs2.statSync(
88
- file).mtimeMs>STALE_MS)fs2.rmSync(file,{force:true})}catch{}}}function fileSkillNames(dirs){const out=[];for(const dir of dirs){try{for(const f of fs2.readdirSync(dir))if(f.endsWith(".md"))out.push(f.slice(0,-3))}catch{}}return out}function openPlanSession(dir,skills,blocks=null,prefix=skillPrefix()){fs2.mkdirSync(dir,{recursive:true});sweepStale(dir,Date.now());const token=randomBytes(24).toString("hex");const session={version:1,created_at:new Date().toISOString(),skills:[...new Set(skills)].sort(),
89
- skill_prefix:prefix,blocks};writeAtomic(sessionPath(dir,token),JSON.stringify(session));return{env:{[PLAN_TOKEN_ENV]:token,[PLAN_DIR_ENV]:dir},submission:()=>readSubmission(submissionPath(dir,token)),rejections:()=>readRejections(rejectionsPath(dir,token)),close:()=>{for(const f of[sessionPath(dir,token),submissionPath(dir,token),rejectionsPath(dir,token)]){try{fs2.rmSync(f,{force:true})}catch{}}}}}function readSubmission(file){let raw;try{raw=fs2.readFileSync(file,"utf8")}catch{return null}try{
90
- const obj=JSON.parse(raw);if(obj&&typeof obj==="object"&&obj.plan&&Array.isArray(obj.plan.steps))return obj}catch{}return null}function checkPlan(input,skills,blocks){const errors=[];const prefix=skillPrefix();if(input===null||typeof input!=="object"||Array.isArray(input)){return{errors:['\u8A08\u753B\u306F {"steps": [...]} \u306E\u5F62\u306E\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306B\u3057\u3066\u304F\u3060\u3055\u3044'],steps:[],accepted:false}}const steps=input.steps;if(!Array.isArray(steps)){
91
- return{errors:["steps \u304C\u914D\u5217\u3067\u306F\u3042\u308A\u307E\u305B\u3093"],steps:[],accepted:false}}if(steps.length===0){errors.push("steps \u304C\u7A7A\u3067\u3059\u30020\u4EF6\u306E\u8A08\u753B\u306F --empty \u3067\u63D0\u51FA\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u5931\u6557\u3068\u533A\u5225\u3059\u308B\u305F\u3081\uFF09");return{errors,steps:[],accepted:false}}const seenKeys=new Map;const verdicts=steps.map((raw,index)=>{const reasons=[];if(raw===null||typeof raw!=="object"||Array.
92
- isArray(raw)){return{index,skill:"",args:"",accepted:false,reasons:["step \u304C\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3067\u306F\u3042\u308A\u307E\u305B\u3093"]}}const step=raw;for(const k of["args","label","priority","ai_category"]){if(step[k]!==void 0&&typeof step[k]!=="string")reasons.push(`${k} \u306F\u6587\u5B57\u5217\u306B\u3057\u3066\u304F\u3060\u3055\u3044`)}const skill=typeof step.skill==="string"?step.skill.trim():"";const args=typeof step.args==="string"?step.args.trim():"";if(skill===
93
- ""){reasons.push("skill \u304C\u3042\u308A\u307E\u305B\u3093")}else if(skill.startsWith("/")||prefix!==""&&skill.startsWith(prefix)&&!skills.has(`${prefix}${skill}`)){const bare=skill.replace(/^\//,"");reasons.push(`skill \u306F '/${prefix}' \u3092\u4ED8\u3051\u305A\u306B\u66F8\u3044\u3066\u304F\u3060\u3055\u3044\uFF08\u4F8B: '${prefix!==""&&bare.startsWith(prefix)?bare.slice(prefix.length):bare}'\uFF09`)}else if(!SKILL_NAME_RE.test(skill)){reasons.push(`skill '${skill}' \u306B\u4F7F\u3048\u306A\u3044\u6587\u5B57\u304C\u3042\u308A\u307E\u3059\uFF08\u82F1\u5C0F\u6587\u5B57\u30FB\u6570\u5B57\u30FB\u30CF\u30A4\u30D5\
94
- \u30F3\u306E\u307F\uFF09`)}else if(skills.size>0&&!skills.has(`${prefix}${skill}`)){reasons.push(`\u30B9\u30AD\u30EB '${skillCommand(skill)}' \u306F\u5B58\u5728\u3057\u307E\u305B\u3093`)}if(typeof step.priority==="string"&&!PRIORITY_RE.test(step.priority)){reasons.push(`priority '${step.priority}' \u306F P0\u301CP9 \u306E\u5F62\u306B\u3057\u3066\u304F\u3060\u3055\u3044`)}const placeholder=placeholderTaskKey(args);if(placeholder!==null)reasons.push(`args \u306E\u30BF\u30B9\u30AF\u30AD\u30FC\u304C\u96DB\u5F62\u306E\u307E\u307E\u3067\u3059\uFF08'${placeholder}\
83
+ if(blocks.pending===null)out.push("\u30AD\u30E5\u30FC\u5F85\u3061");if(blocks.advanced===null)out.push("\u76F4\u8FD1\u3067\u72B6\u614B\u3092\u9032\u3081\u305F");return out}function formatPlanResultLine(summary){return`PLAN_RESULT: ${JSON.stringify(summary)}`}var PLAN_TOKEN_ENV="TWP_LOOP_PLAN_TOKEN";var PLAN_DIR_ENV="TWP_LOOP_PLAN_DIR";var SKILL_NAME_RE=/^[a-z][a-z0-9-]*$/;var PRIORITY_RE=/^P[0-9]$/;function fingerprint(token){return createHash("sha256").update(token).digest("hex").slice(0,32)}function sessionPath(dir,token){return path.join(dir,`plan-session-${fingerprint(token)}.json`)}function submissionPath(dir,token){return path.join(dir,`plan-submission-${fingerprint(token)}.json`)}function rejectionsPath(dir,token){return path.join(dir,`plan-r\
84
+ ejections-${fingerprint(token)}.json`)}var MAX_REJECTIONS=5;function readRejections(file){try{const arr=JSON.parse(fs.readFileSync(file,"utf8"));return Array.isArray(arr)?arr:[]}catch{return[]}}function recordRejection(dir,token,check){try{const entry={at:new Date().toISOString(),errors:check.errors,steps:check.steps.filter(v=>!v.accepted).map(v=>({index:v.index,skill:v.skill,args:v.args,reasons:v.reasons}))};const file=rejectionsPath(dir,token);writeAtomic(file,JSON.stringify([entry,...readRejections(
85
+ file)].slice(0,MAX_REJECTIONS)))}catch{}}function writeAtomic(file,body){const tmp=`${file}.${process.pid}.tmp`;fs.writeFileSync(tmp,body,{mode:384});fs.renameSync(tmp,file)}var NO_PLAN_SESSION={env:{},submission:()=>null,rejections:()=>[],close:()=>void 0};var STALE_MS=24*60*60*1e3;function sweepStale(dir,now){let names;try{names=fs.readdirSync(dir)}catch{return}for(const f of names){if(!/^plan-(session|submission|rejections)-/.test(f))continue;try{const file=path.join(dir,f);if(now-fs.statSync(
86
+ file).mtimeMs>STALE_MS)fs.rmSync(file,{force:true})}catch{}}}function fileSkillNames(dirs){const out=[];for(const dir of dirs){try{for(const f of fs.readdirSync(dir))if(f.endsWith(".md"))out.push(f.slice(0,-3))}catch{}}return out}function openPlanSession(dir,skills,blocks=null,prefix=skillPrefix()){fs.mkdirSync(dir,{recursive:true});sweepStale(dir,Date.now());const token=randomBytes(24).toString("hex");const session={version:1,created_at:new Date().toISOString(),skills:[...new Set(skills)].sort(),
87
+ skill_prefix:prefix,blocks};writeAtomic(sessionPath(dir,token),JSON.stringify(session));return{env:{[PLAN_TOKEN_ENV]:token,[PLAN_DIR_ENV]:dir},submission:()=>readSubmission(submissionPath(dir,token)),rejections:()=>readRejections(rejectionsPath(dir,token)),close:()=>{for(const f of[sessionPath(dir,token),submissionPath(dir,token),rejectionsPath(dir,token)]){try{fs.rmSync(f,{force:true})}catch{}}}}}function readSubmission(file){let raw;try{raw=fs.readFileSync(file,"utf8")}catch{return null}try{const obj=JSON.
88
+ parse(raw);if(obj&&typeof obj==="object"&&obj.plan&&Array.isArray(obj.plan.steps))return obj}catch{}return null}function checkPlan(input,skills,blocks){const errors=[];const prefix=skillPrefix();if(input===null||typeof input!=="object"||Array.isArray(input)){return{errors:['\u8A08\u753B\u306F {"steps": [...]} \u306E\u5F62\u306E\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306B\u3057\u3066\u304F\u3060\u3055\u3044'],steps:[],accepted:false}}const steps=input.steps;if(!Array.isArray(steps)){return{errors:[
89
+ "steps \u304C\u914D\u5217\u3067\u306F\u3042\u308A\u307E\u305B\u3093"],steps:[],accepted:false}}if(steps.length===0){errors.push("steps \u304C\u7A7A\u3067\u3059\u30020\u4EF6\u306E\u8A08\u753B\u306F --empty \u3067\u63D0\u51FA\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u5931\u6557\u3068\u533A\u5225\u3059\u308B\u305F\u3081\uFF09");return{errors,steps:[],accepted:false}}const seenKeys=new Map;const verdicts=steps.map((raw,index)=>{const reasons=[];if(raw===null||typeof raw!=="object"||Array.isArray(raw)){
90
+ return{index,skill:"",args:"",accepted:false,reasons:["step \u304C\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3067\u306F\u3042\u308A\u307E\u305B\u3093"]}}const step=raw;for(const k of["args","label","priority","ai_category"]){if(step[k]!==void 0&&typeof step[k]!=="string")reasons.push(`${k} \u306F\u6587\u5B57\u5217\u306B\u3057\u3066\u304F\u3060\u3055\u3044`)}const skill=typeof step.skill==="string"?step.skill.trim():"";const args=typeof step.args==="string"?step.args.trim():"";if(skill===""){reasons.push(
91
+ "skill \u304C\u3042\u308A\u307E\u305B\u3093")}else if(skill.startsWith("/")||prefix!==""&&skill.startsWith(prefix)&&!skills.has(`${prefix}${skill}`)){const bare=skill.replace(/^\//,"");reasons.push(`skill \u306F '/${prefix}' \u3092\u4ED8\u3051\u305A\u306B\u66F8\u3044\u3066\u304F\u3060\u3055\u3044\uFF08\u4F8B: '${prefix!==""&&bare.startsWith(prefix)?bare.slice(prefix.length):bare}'\uFF09`)}else if(!SKILL_NAME_RE.test(skill)){reasons.push(`skill '${skill}' \u306B\u4F7F\u3048\u306A\u3044\u6587\u5B57\u304C\u3042\u308A\u307E\u3059\uFF08\u82F1\u5C0F\u6587\u5B57\u30FB\u6570\u5B57\u30FB\u30CF\u30A4\u30D5\u30F3\u306E\u307F\uFF09`)}else if(skills.
92
+ size>0&&!skills.has(`${prefix}${skill}`)){reasons.push(`\u30B9\u30AD\u30EB '${skillCommand(skill)}' \u306F\u5B58\u5728\u3057\u307E\u305B\u3093`)}if(typeof step.priority==="string"&&!PRIORITY_RE.test(step.priority)){reasons.push(`priority '${step.priority}' \u306F P0\u301CP9 \u306E\u5F62\u306B\u3057\u3066\u304F\u3060\u3055\u3044`)}const placeholder=placeholderTaskKey(args);if(placeholder!==null)reasons.push(`args \u306E\u30BF\u30B9\u30AF\u30AD\u30FC\u304C\u96DB\u5F62\u306E\u307E\u307E\u3067\u3059\uFF08'${placeholder}\
95
93
  '\uFF09`);if(reasons.length===0){const item=stepToItem(step);const key=item?.task_key??"";if(key!==""){const first=seenKeys.get(key);if(first!==void 0)reasons.push(`${key} \u306F steps[${first}] \u3068\u91CD\u8907\u3057\u3066\u3044\u307E\u3059\uFF08\u540C\u3058\u8A08\u753B\u306B1\u4EF6\u307E\u3067\uFF09`);else seenKeys.set(key,index);reasons.push(...dynamicStepReasons(blocks,key,skill))}}return{index,skill,args,accepted:reasons.length===0,reasons}});const unchecked=blocks===void 0?[]:unavailableChecks(
96
94
  blocks);return{errors,...unchecked.length>0?{unchecked}:{},steps:verdicts,accepted:errors.length===0&&verdicts.every(v=>v.accepted)}}function formatCheck(check){const lines=[];for(const e of check.errors)lines.push(`\u2717 ${e}`);for(const v of check.steps){const head=`steps[${v.index}] ${v.accepted?"\u53D7\u7406":"\u68C4\u5374"} ${skillCommand(v.skill,v.args)}`;lines.push(`${v.accepted?"\u2713":"\u2717"} ${head}`);for(const r of v.reasons)lines.push(` - ${r}`)}if(check.unchecked&&check.unchecked.
97
95
  length>0){lines.push(`\uFF08${check.unchecked.join("\u30FB")}\u306E\u691C\u67FB\u306F\u5B9F\u6E2C\u3092\u53D6\u308C\u305A\u3001\u63D0\u51FA\u6642\u306B\u306F\u52B9\u3044\u3066\u3044\u307E\u305B\u3093\u3002\u30A8\u30F3\u30AD\u30E5\u30FC\u6642\u306B\u6539\u3081\u3066\u691C\u67FB\u3055\u308C\u307E\u3059\uFF09`)}return lines.join("\n")}function runPlanSubmit(opts,deps){const token=deps.env[PLAN_TOKEN_ENV]?.trim()??"";const dir=deps.env[PLAN_DIR_ENV]?.trim()??"";if(token===""||dir===""){deps.stderr(`\
98
96
  plan submit \u306F\u8A08\u753B\u30D5\u30A7\u30FC\u30BA\u306E\u4E2D\u3067\u3060\u3051\u4F7F\u3048\u307E\u3059\uFF08${PLAN_TOKEN_ENV} / ${PLAN_DIR_ENV} \u304C\u3042\u308A\u307E\u305B\u3093\uFF09
99
- `);return 2}let session;try{session=JSON.parse(fs2.readFileSync(sessionPath(dir,token),"utf8"))}catch{deps.stderr("\u9375\u304C\u7121\u52B9\u3067\u3059\uFF08\u8A08\u753B\u30D5\u30A7\u30FC\u30BA\u304C\u65E2\u306B\u7D42\u308F\u3063\u3066\u3044\u308B\u304B\u3001\u5225\u306E\u8A08\u753B\u306E\u9375\u3067\u3059\uFF09\n");return 2}if(opts.empty===(opts.file!==void 0)){deps.stderr("--file <\u30D1\u30B9|-> \u304B --empty \u306E\u3069\u3061\u3089\u304B\u4E00\u65B9\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\n");
100
- return 2}let plan;if(opts.empty){plan={steps:[]}}else{let text;try{text=opts.file==="-"?deps.readStdin():fs2.readFileSync(opts.file,"utf8")}catch(err){deps.stderr(`\u8A08\u753B\u3092\u8AAD\u3081\u307E\u305B\u3093: ${err.message}
97
+ `);return 2}let session;try{session=JSON.parse(fs.readFileSync(sessionPath(dir,token),"utf8"))}catch{deps.stderr("\u9375\u304C\u7121\u52B9\u3067\u3059\uFF08\u8A08\u753B\u30D5\u30A7\u30FC\u30BA\u304C\u65E2\u306B\u7D42\u308F\u3063\u3066\u3044\u308B\u304B\u3001\u5225\u306E\u8A08\u753B\u306E\u9375\u3067\u3059\uFF09\n");return 2}if(opts.empty===(opts.file!==void 0)){deps.stderr("--file <\u30D1\u30B9|-> \u304B --empty \u306E\u3069\u3061\u3089\u304B\u4E00\u65B9\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\n");
98
+ return 2}let plan;if(opts.empty){plan={steps:[]}}else{let text;try{text=opts.file==="-"?deps.readStdin():fs.readFileSync(opts.file,"utf8")}catch(err){deps.stderr(`\u8A08\u753B\u3092\u8AAD\u3081\u307E\u305B\u3093: ${err.message}
101
99
  `);return 2}let parsed;try{parsed=JSON.parse(text)}catch(err){deps.stderr(`\u8A08\u753B\u304C JSON \u3068\u3057\u3066\u8AAD\u3081\u307E\u305B\u3093: ${err.message}
102
100
  `);return 1}const sp=session.skill_prefix;const before=skillPrefix();let check;try{setSkillPrefix(typeof sp==="string"&&SKILL_PREFIX_RE.test(sp)?sp:DEFAULT_SKILL_PREFIX);check=checkPlan(parsed,new Set(session.skills??[]),session.blocks);deps.stdout(`${formatCheck(check)}
103
101
 
@@ -105,5 +103,5 @@ ${JSON.stringify(check,null,2)}
105
103
  `)}finally{setSkillPrefix(before)}if(!check.accepted){if(!opts.check)recordRejection(dir,token,check);deps.stderr("\u68C4\u5374\u304C\u3042\u308B\u305F\u3081\u63D0\u51FA\u3057\u3066\u3044\u307E\u305B\u3093\u3002\u7406\u7531\u3092\u76F4\u3057\u3066\u51FA\u3057\u76F4\u3057\u3066\u304F\u3060\u3055\u3044\n");if(readSubmission(submissionPath(dir,token))!==null){deps.stderr("\uFF08\u524D\u56DE\u53D7\u7406\u3057\u305F\u63D0\u51FA\u304C\u6709\u52B9\u306A\u307E\u307E\u3067\u3059\u3002\u51FA\u3057\u76F4\u3055\u306A\u3051\u308C\u3070\u30EB\u30FC\u30D7\u306F\u305D\u308C\u3092\u767B\u9332\u3057\u307E\u3059\uFF09\n")}
106
104
  return 1}plan=parsed}if(opts.check){deps.stdout(opts.empty?"\u691C\u67FB\u306E\u307F: \u7A7A\u306E\u8A08\u753B\uFF080\u4EF6\uFF09\n":"\u691C\u67FB\u306E\u307F: \u7F6E\u3044\u3066\u3044\u307E\u305B\u3093\uFF08--check\uFF09\n");return 0}const submitted={plan,empty:opts.empty,submitted_at:new Date().toISOString()};writeAtomic(submissionPath(dir,token),JSON.stringify(submitted));deps.stdout(opts.empty?"\u7A7A\u306E\u8A08\u753B\uFF080\u4EF6\uFF09\u3092\u63D0\u51FA\u3057\u307E\u3057\u305F\u3002\u8A08\u753B\u30D5\u30A7\u30FC\u30BA\u306E\u7D42\u4E86\u5F8C\u3001\u4F55\u3082\u7A4D\u307F\u307E\u305B\u3093\n":
107
105
  `\u8A08\u753B\uFF08${plan.steps.length}\u4EF6\uFF09\u3092\u63D0\u51FA\u3057\u307E\u3057\u305F\u3002\u8A08\u753B\u30D5\u30A7\u30FC\u30BA\u306E\u7D42\u4E86\u5F8C\u306B\u30EB\u30FC\u30D7\u304C\u4E00\u5EA6\u306B\u767B\u9332\u3057\u307E\u3059\uFF08\u51FA\u3057\u76F4\u3059\u3068\u6700\u5F8C\u306E\u63D0\u51FA\u304C\u6709\u52B9\uFF09
108
- `);return 0}export{createItem,ReleaseOutcomeLog,parseReleaseResult,parseOutcomeCode,enqueueBlockerRecovery,enqueueReleasePhase5Recovery,enqueueReleasePartialMergeRerun,enqueueDevVerifyForMerged,staleFloorHours,inflightStaleHours,inflightEntries,formatInflightEntry,RECENT_ADVANCE_WINDOW_HOURS,buildRecentCandidateIndex,findRecentCandidate,resolveRecentAdvance,formatRecentAdvance,windowStartMicros,parseTaskStatusSnapshot,shouldSuppressForStatus,resolveResumeHold,shouldSuppressForResume,formatResumeHold,pendingTaskKeys,
109
- buildDynamicBlocks,unavailableChecks,formatPlanResultLine,PLAN_TOKEN_ENV,PLAN_DIR_ENV,NO_PLAN_SESSION,fileSkillNames,openPlanSession,checkPlan,formatCheck,runPlanSubmit};
106
+ `);return 0}export{createItem,parseReleaseResult,parseOutcomeCode,enqueueBlockerRecovery,enqueueReleasePhase5Recovery,enqueueReleasePartialMergeRerun,enqueueDevVerifyForMerged,staleFloorHours,inflightStaleHours,inflightEntries,formatInflightEntry,RECENT_ADVANCE_WINDOW_HOURS,buildRecentCandidateIndex,findRecentCandidate,resolveRecentAdvance,formatRecentAdvance,windowStartMicros,parseTaskStatusSnapshot,shouldSuppressForStatus,resolveResumeHold,shouldSuppressForResume,formatResumeHold,pendingTaskKeys,buildDynamicBlocks,
107
+ unavailableChecks,formatPlanResultLine,PLAN_TOKEN_ENV,PLAN_DIR_ENV,NO_PLAN_SESSION,fileSkillNames,openPlanSession,checkPlan,formatCheck,runPlanSubmit};
@@ -0,0 +1,8 @@
1
+ import { createRequire as __twpCreateRequire } from 'node:module';
2
+ const require = __twpCreateRequire(import.meta.url);
3
+ import readline from"readline/promises";var PromptAbortedError=class extends Error{endOfInput;constructor(options={}){super("\u5165\u529B\u304C\u4E2D\u65AD\u3055\u308C\u307E\u3057\u305F");this.endOfInput=options.endOfInput===true}};var pipeBuffer="";var pipeEnded=false;function readPipedLine(){const{stdin}=process;const takeLine=()=>{const nl=pipeBuffer.indexOf("\n");if(nl>=0){const line=pipeBuffer.slice(0,nl).replace(/\r$/,"");pipeBuffer=pipeBuffer.slice(nl+1);return line}if(pipeEnded&&pipeBuffer!==
4
+ ""){const line=pipeBuffer;pipeBuffer="";return line}return null};const immediate=takeLine();if(immediate!==null)return Promise.resolve(immediate);if(pipeEnded)return Promise.reject(new PromptAbortedError({endOfInput:true}));return new Promise((resolve,reject)=>{stdin.setEncoding("utf8");const cleanup=()=>{stdin.off("data",onData);stdin.off("end",onEnd);stdin.pause()};const onData=chunk=>{pipeBuffer+=chunk;const line=takeLine();if(line!==null){cleanup();resolve(line)}};const onEnd=()=>{pipeEnded=
5
+ true;cleanup();const line=takeLine();if(line!==null){resolve(line)}else{reject(new PromptAbortedError({endOfInput:true}))}};stdin.on("data",onData);stdin.on("end",onEnd);stdin.resume()})}async function promptText(question){if(!process.stdin.isTTY){process.stdout.write(question);const line=await readPipedLine();process.stdout.write("\n");return line.trim()}const rl=readline.createInterface({input:process.stdin,output:process.stdout});try{return(await rl.question(question)).trim()}catch(err){if(err instanceof
6
+ Error&&err.name==="AbortError")throw new PromptAbortedError;throw err}finally{rl.close()}}function stepEscape(state,ch){const code=ch.codePointAt(0)??0;if(state!=="none"&&(ch===""||ch==="")){return{state:"none",consumed:false}}if(state==="esc"&&(ch==="\r"||ch==="\n"||ch==="\x7F"||ch==="\b")){return{state:"none",consumed:false}}switch(state){case"none":return ch==="\x1B"?{state:"esc",consumed:true}:{state:"none",consumed:false};case"esc":if(ch==="[")return{state:"csi",consumed:true};if(ch==="O")
7
+ return{state:"ss3",consumed:true};if(ch==="\x1B")return{state:"esc",consumed:true};return{state:"none",consumed:true};case"csi":return code>=64&&code<=126?{state:"none",consumed:true}:{state:"csi",consumed:true};case"ss3":return{state:"none",consumed:true}}}async function promptHidden(question){const{stdin,stdout}=process;if(!stdin.isTTY){return readPipedLine()}stdout.write(question);return new Promise((resolve,reject)=>{let value="";let escape="none";stdin.setRawMode(true);stdin.setEncoding("ut\
8
+ f8");stdin.resume();const cleanup=()=>{stdin.off("data",onData);stdin.setRawMode(false);stdin.pause();stdout.write("\n")};const onData=chunk=>{for(const ch of chunk){const step=stepEscape(escape,ch);escape=step.state;if(step.consumed)continue;if(ch===""||ch===""){cleanup();reject(new PromptAbortedError);return}if(ch==="\r"||ch==="\n"){cleanup();resolve(value);return}if(ch==="\x7F"||ch==="\b"){value=value.slice(0,-1);continue}if(ch<" ")continue;value+=ch}};stdin.on("data",onData)})}export{PromptAbortedError,promptText,promptHidden};
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{featureLicenseGuidance}from"./chunk-QUMDKN3U.js";import{isExactNumericId}from"./chunk-2AVQILQQ.js";import{nonEmpty}from"./chunk-MI6HVYR2.js";import{UsageError}from"./chunk-VFPY2A23.js";var PDF_PATH="/api/v2/sales/pdf";var FEATURE_DENIED="\u3053\u306E\u6A5F\u80FD\u306B\u30A2\u30AF\u30BB\u30B9\u3059\u308B\u6A29\u9650\u304C\u3042\u308A\u307E\u305B\u3093\u3002";function salesFeatureDenied(body){return body?.error==="permission_denied"||body?.error==="forbidden"&&body.error_description===FEATURE_DENIED}function pdfForbidden(body){if(salesFeatureDenied(body))return featureLicenseGuidance("\u8CA9\u58F2\u7BA1\u7406");const reason=body?.error;if(typeof reason==="string"&&reason.endsWith(
3
+ import{featureLicenseGuidance}from"./chunk-7KD5RWFY.js";import{isExactNumericId}from"./chunk-2T23XGJF.js";import{nonEmpty}from"./chunk-MI6HVYR2.js";import{UsageError}from"./chunk-VFPY2A23.js";var PDF_PATH="/api/v2/sales/pdf";var FEATURE_DENIED="\u3053\u306E\u6A5F\u80FD\u306B\u30A2\u30AF\u30BB\u30B9\u3059\u308B\u6A29\u9650\u304C\u3042\u308A\u307E\u305B\u3093\u3002";function salesFeatureDenied(body){return body?.error==="permission_denied"||body?.error==="forbidden"&&body.error_description===FEATURE_DENIED}function pdfForbidden(body){if(salesFeatureDenied(body))return featureLicenseGuidance("\u8CA9\u58F2\u7BA1\u7406");const reason=body?.error;if(typeof reason==="string"&&reason.endsWith(
4
4
  "\u6A29\u9650\u304C\u3042\u308A\u307E\u305B\u3093")){return`${reason}\uFF08\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306B\u7D10\u3065\u304F\u66F8\u985E\u306F\u305D\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u30E1\u30F3\u30D0\u30FC\u3001\u7D10\u3065\u304B\u306A\u3044\u66F8\u985E\u306F\u4F5C\u6210\u8005\u30FB\u62C5\u5F53\u8005\u3068\u7BA1\u7406\u8005\u3060\u3051\u304C\u51FA\u529B\u3067\u304D\u307E\u3059\uFF09`}return void 0}var ESTIMATE={name:"estimate",label:"\u898B\u7A4D",noExample:"EST0000063",
5
5
  defaultKind:"estimate",kinds:{estimate:{segment:"estimate",label:"\u898B\u7A4D\u66F8"},order:{segment:"order",label:"\u6CE8\u6587\u66F8"},"order-acceptance":{segment:"order-acceptance",label:"\u6CE8\u6587\u8ACB\u66F8"}}};var INVOICE={name:"invoice",label:"\u8ACB\u6C42",noExample:"INV0000170",defaultKind:"invoice",kinds:{invoice:{segment:"invoice",label:"\u8ACB\u6C42\u66F8"},delivery:{segment:"delivery",label:"\u7D0D\u54C1\u66F8"},inspection:{segment:"inspection",label:"\u691C\u53CE\u66F8"}}};var PURCHASE={
6
6
  name:"purchase",label:"\u4ED5\u5165",defaultKind:"order",kinds:{order:{segment:"purchase-order",label:"\u6CE8\u6587\u66F8"},"order-acceptance":{segment:"purchase-order-acceptance",label:"\u6CE8\u6587\u8ACB\u66F8"}}};var OUT_FLAG={name:"--out",summary:"\u66F8\u304D\u51FA\u3057\u5148\u306E\u30D5\u30A1\u30A4\u30EB\u30D1\u30B9\uFF08\u5FC5\u9808\uFF09",takesValue:true,placeholder:"<\u30D1\u30B9.pdf>"};var FORCE_FLAG={name:"--force",summary:"\u65E2\u5B58\u306E\u30D5\u30A1\u30A4\u30EB\u3092\u4E0A\u66F8\u304D\u3059\u308B",
@@ -1,7 +1,8 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{FROM_FLAG,MANHOUR_DESCRIPTION,MANHOUR_FROM_FLAG,MANHOUR_TO_FLAG,MONTH_FLAG,TO_FLAG,dataOf,listIn,manhourNotes,manhourQuery,manhourRows,monthRange,rangeNotes,recordOf,workloadDistributionNotes,workloadDistributionRows}from"./chunk-M7UEPYUQ.js";import{USER_REF_FLAG,USER_REF_HELP,userPath}from"./chunk-MUIN7OUW.js";import{createFlags,fieldBody,hasAnyField,resolveRefFields,updateFlags}from"./chunk-WDQMYRPE.js";import{boundedText,isoDate}from"./chunk-JJSBBWJ5.js";import{
4
- readBody}from"./chunk-IWYJSQ5I.js";import{PROJECT_MEMBERS_LIMIT,resolveNamed}from"./chunk-2AVQILQQ.js";import{collapsesInUrlPath,safeProjectIdPolicy}from"./chunk-HVZUXLQ4.js";import{LIST_FLAGS,LIST_PAGING_HELP,envelopePaging,nonEmpty,positiveInteger}from"./chunk-MI6HVYR2.js";import{requireResolved,singleRef,withResolved}from"./chunk-PS5QFKHB.js";import{isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";var PROJECT_FLAG={name:"--project",summary:"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u30B3\u30FC\u30C9\u307E\u305F\u306F ID\uFF08\u7701\u7565\u6642\u306F TWP_PROJECT / .twp/config.json / ~/.twp/config.json\uFF09",takesValue:true,placeholder:"<\u30B3\u30FC\u30C9|ID>"};var ROLE_FLAG={name:"--role",summary:"\u5F79\u5272\uFF08member / manager \u306A\u3069\u30FB\u5024\u306F\u30B5\u30FC\u30D0\u304C\u691C\u67FB\u3059\u308B\uFF09",takesValue:true,placeholder:"<\u5F79\u5272>"};var START_DATE_FLAG={name:"\
3
+ import{projectEvaluationResource}from"./chunk-34TCAKT5.js";import{FROM_FLAG,MANHOUR_DESCRIPTION,MANHOUR_FROM_FLAG,MANHOUR_TO_FLAG,MONTH_FLAG,TO_FLAG,dataOf,listIn,manhourNotes,manhourQuery,manhourRows,monthRange,rangeNotes,recordOf,workloadDistributionNotes,workloadDistributionRows}from"./chunk-NLDVB4PZ.js";import{USER_REF_FLAG,USER_REF_HELP,userPath}from"./chunk-UVCJXHWN.js";import{createFlags,fieldBody,hasAnyField,resolveRefFields,updateFlags}from"./chunk-KW37N7IO.js";import{
4
+ boundedText,isoDate}from"./chunk-JJSBBWJ5.js";import{readBody}from"./chunk-IWYJSQ5I.js";import{PROJECT_MEMBERS_LIMIT,resolveNamed}from"./chunk-2T23XGJF.js";import{collapsesInUrlPath,safeProjectIdPolicy}from"./chunk-HVZUXLQ4.js";import{LIST_FLAGS,LIST_PAGING_HELP,envelopePaging,nonEmpty,positiveInteger}from"./chunk-MI6HVYR2.js";import{requireResolved,singleRef,withResolved}from"./chunk-PS5QFKHB.js";import{isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiResponseError,
5
+ UsageError}from"./chunk-VFPY2A23.js";var PROJECT_FLAG={name:"--project",summary:"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u30B3\u30FC\u30C9\u307E\u305F\u306F ID\uFF08\u7701\u7565\u6642\u306F TWP_PROJECT / .twp/config.json / ~/.twp/config.json\uFF09",takesValue:true,placeholder:"<\u30B3\u30FC\u30C9|ID>"};var ROLE_FLAG={name:"--role",summary:"\u5F79\u5272\uFF08member / manager \u306A\u3069\u30FB\u5024\u306F\u30B5\u30FC\u30D0\u304C\u691C\u67FB\u3059\u308B\uFF09",takesValue:true,placeholder:"<\u5F79\u5272>"};var START_DATE_FLAG={name:"\
5
6
  --start-date",summary:"\u53C2\u753B\u958B\u59CB\u65E5\uFF08YYYY-MM-DD\uFF09",takesValue:true,placeholder:"<YYYY-MM-DD>"};var END_DATE_FLAG={name:"--end-date",summary:"\u53C2\u753B\u7D42\u4E86\u65E5\uFF08YYYY-MM-DD\uFF09",takesValue:true,placeholder:"<YYYY-MM-DD>"};var PERIOD_FILE_FLAG={name:"--period-file",summary:"\u7A3C\u50CD\u671F\u9593\uFF08assignment_periods\uFF09\u306E JSON \u914D\u5217\u30D5\u30A1\u30A4\u30EB\uFF08- \u3067\u6A19\u6E96\u5165\u529B\uFF09",takesValue:true,placeholder:"<\u30D1\u30B9>"};
6
7
  var WIKI_ROLE_FLAG={name:"--wiki-role",summary:"\u3053\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E Wiki \u6A29\u9650\uFF08admin\uFF1DWiki \u7BA1\u7406\u8005 / member\uFF1D\u4E00\u822C\uFF09",takesValue:true,placeholder:"<admin|member>"};var MEMO_FLAG={name:"--memo",summary:"\u30E1\u30E2\uFF0810,000 \u6587\u5B57\u307E\u3067\uFF09",takesValue:true,placeholder:"<\u6587\u5B57\u5217>"};var CLEAR_FLAG={name:"--clear",summary:"\u5225\u540D\u3092\u6D88\u3059",takesValue:false};var WIKI_ROLES=["admin",
7
8
  "member"];var MEMO_MAX_CHARS=1e4;var PERIOD_FILE_MAX_CHARS=2e5;var ALIAS_MAX_CHARS=255;var PERIOD_KEYS=["id","start_date","end_date","daily_hours","total_hours","input_mode"];var PERIOD_REQUIRED=["start_date","end_date","daily_hours"];var ROLE_HELP="--role \u306E\u5024\u306F\u30B5\u30FC\u30D0\u304C\u691C\u67FB\u3057\u307E\u3059\uFF08CLI \u306F\u691C\u67FB\u3057\u307E\u305B\u3093\uFF09\u30022026-10-01 \u6642\u70B9\u306E\u5024\u306F\n member\uFF08\u30E1\u30F3\u30D0\u30FC\uFF09/ manager\uFF08\u7BA1\u7406\u8005\uFF09/ approver\uFF08\u7BA1\u7406\u8005\uFF08\u627F\u8A8D\u8005\uFF09\uFF09/ manager_no_punch\uFF08\u7BA1\u7406\u8005\uFF08\u6253\u523B\u7121\uFF09\uFF09\u3067\u3059\u3002\n \u5024\u306F\u5897\u3048\u308B\u3053\u3068\u304C\u3042\u308A\u307E\u3059\u3002\u4ECA\u306E\u30E1\u30F3\u30D0\u30FC\u306E\u5024\u306F twp project members \u306E role \u5217\u3067\u78BA\u304B\u3081\u3089\u308C\u307E\u3059\u3002";
@@ -160,6 +161,6 @@ usage:MANHOURS_USAGE,description:"GET /api/v2/projects/{id}/manhours\u3002\u7701
160
161
  MANHOUR_DESCRIPTION,flags:[MANHOUR_FROM_FLAG,MANHOUR_TO_FLAG],forbidden:body=>body?.error==="permission_denied"&&(body.error_description??"").includes("\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u7BA1\u7406\u8005")?"\u3053\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u5DE5\u6570\u3092\u8AAD\u3080\u6A29\u9650\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u7BA1\u7406\u8005\uFF08manager\uFF09\u304B\u30C6\u30CA\u30F3\u30C8\u7BA1\u7406\u8005\u3060\u3051\u304C\u8AAD\u3081\u307E\u3059\u3002":
161
162
  void 0,prepare:(input,ctx)=>projectRefInput(input,ctx,"manhours"),plan(input){const projectId=requireResolved(input,"projectId");return{method:"GET",path:`/api/v2/projects/${encodeURIComponent(projectId)}/manhours`,query:manhourQuery(input,MANHOURS_USAGE)}},summarize:body=>manhourRows(body,"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u5DE5\u6570"),raw:body=>{manhourRows(body,"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u5DE5\u6570");return body},notes:body=>manhourNotes(body)},{name:"workload",summary:"\
162
163
  \u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u30E1\u30F3\u30D0\u30FC\u3054\u3068\u306E\u30BF\u30B9\u30AF\u4EF6\u6570\u30FB\u898B\u7A4D\u6642\u9593\u3092\u8868\u793A\u3059\u308B",usage:"twp project workload [<ID|\u30B3\u30FC\u30C9>]",description:"GET /api/v2/projects/{id}/analytics/workload\uFF08\u753B\u9762\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u5206\u6790\u306E\u300C\u30E1\u30F3\u30D0\u30FC\u5225\u8CA0\u8377\u300D\uFF09\u3002\n\u7701\u7565\u3059\u308B\u3068\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306F\u65E2\u5B9A\u3067\u3059\u3002\u672A\u5B8C\u4E86\u306E\u30BF\u30B9\u30AF\u304C\u5BFE\u8C61\u3067\u3001\u62C5\u5F53\u8005\u306E\u7121\u3044\u30BF\u30B9\u30AF\u306F\u300C\uFF08\u672A\u5272\u308A\u5F53\u3066\uFF09\u300D\u306E\u884C\u306B\u5165\u308A\u307E\u3059\u3002\n--output table / text / tsv \u306E by_status \u306F\u300C\u30B9\u30C6\u30FC\u30BF\u30B9\u540D:\u4EF6\u6570\u300D\u3092\u7A7A\u767D\u533A\u5207\u308A\u3067\u4E26\u3079\u305F\u3082\u306E\u3067\u3059\uFF08\u5185\u8A33\u306F --output json\uFF09\u3002",
163
- flags:[],prepare:(input,ctx)=>projectRefInput(input,ctx,"workload"),plan(input){const projectId=requireResolved(input,"projectId");return{method:"GET",path:`/api/v2/projects/${encodeURIComponent(projectId)}/analytics/workload`}},summarize:body=>workloadDistributionRows(body),raw:body=>{workloadDistributionRows(body);return body},notes:body=>workloadDistributionNotes(body)},...projectAnalysisOperations],subresources:[projectMemberResource,projectProcessResource]};var ASSIGNED_PROJECT_COLUMNS=["id",
164
- "code","name","status","role","member_start_date","member_end_date"];function assignedProjectItems(body){const list=isRecord(body)?body["list"]:void 0;if(!Array.isArray(list)){throw new ApiResponseError("\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u4E00\u89A7\u306E\u5FDC\u7B54\u306B list \u914D\u5217\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002")}return list}async function projectRefInput(input,ctx,operation){const[ref,...rest]=input.
164
+ flags:[],prepare:(input,ctx)=>projectRefInput(input,ctx,"workload"),plan(input){const projectId=requireResolved(input,"projectId");return{method:"GET",path:`/api/v2/projects/${encodeURIComponent(projectId)}/analytics/workload`}},summarize:body=>workloadDistributionRows(body),raw:body=>{workloadDistributionRows(body);return body},notes:body=>workloadDistributionNotes(body)},...projectAnalysisOperations],subresources:[projectMemberResource,projectProcessResource,projectEvaluationResource]};var ASSIGNED_PROJECT_COLUMNS=[
165
+ "id","code","name","status","role","member_start_date","member_end_date"];function assignedProjectItems(body){const list=isRecord(body)?body["list"]:void 0;if(!Array.isArray(list)){throw new ApiResponseError("\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u4E00\u89A7\u306E\u5FDC\u7B54\u306B list \u914D\u5217\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002")}return list}async function projectRefInput(input,ctx,operation){const[ref,...rest]=input.
165
166
  args;if(rest.length>0){throw new UsageError(`${operation} \u304C\u53D7\u3051\u53D6\u308C\u308B\u5F15\u6570\u306F1\u3064\u3060\u3051\u3067\u3059: ${rest.join(" ")}`,`twp project ${operation} help`)}return withResolved(input,{projectId:await ctx.projectId(ref)})}export{projectDomain,ASSIGNED_PROJECT_COLUMNS,assignedProjectItems};
@@ -0,0 +1,5 @@
1
+ import { createRequire as __twpCreateRequire } from 'node:module';
2
+ const require = __twpCreateRequire(import.meta.url);
3
+ import{isSafePathSegment}from"./chunk-HVZUXLQ4.js";import{requireResolved,singleRef,withResolved}from"./chunk-PS5QFKHB.js";import{ApiResponseError}from"./chunk-VFPY2A23.js";var USER_REF_HELP="<\u30E6\u30FC\u30B6\u30FC> \u306F ID\u30FB\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\u30FB\u793E\u54E1\u756A\u53F7\u30FB\u6C0F\u540D\u30FBme\uFF08\u81EA\u5206\uFF09\u306E\u3069\u308C\u3067\u3082\u6307\u5B9A\u3067\u304D\u307E\u3059\u3002\n\u6C0F\u540D\u306F\u5B8C\u5168\u4E00\u81F4\u30671\u4EBA\u306B\u7D5E\u308C\u305F\u3068\u304D\u3060\u3051\u53D7\u3051\u4ED8\u3051\u307E\u3059\uFF08\u540C\u59D3\u540C\u540D\u306A\u3089\u5019\u88DC\u3092\u51FA\u3057\u3066\u6B62\u307E\u308B\u306E\u3067\u3001\n\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\u304B\u793E\u54E1\u756A\u53F7\u3067\u6307\u5B9A\u3057\u76F4\u3057\u3066\u304F\u3060\u3055\u3044\uFF09\u3002ID \u4EE5\u5916\u306F\u3001\u30C6\u30CA\u30F3\u30C8\u306E\u30E6\u30FC\u30B6\u30FC\u4E00\u89A7\n\uFF08\u65E2\u5B9A10\u5206\u30AD\u30E3\u30C3\u30B7\u30E5\u30FB--refresh \u3067\u53D6\u308A\u76F4\u3057\uFF09\u3068\u7167\u5408\u3057\u307E\u3059\u3002\n\u8868\u793A\u30D5\u30E9\u30B0\u3092\u5916\u3057\u305F\u30E6\u30FC\u30B6\u30FC\u306F\u793E\u54E1\u756A\u53F7\u3067\u306F\u5F15\u3051\u307E\u305B\u3093\u3002\u7D44\u7E54\u7BA1\u7406\u8005\u3067\u306A\u3044\u5834\u5408\u306F ID \u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002";
4
+ function userPath(input,suffix=""){const userId=requireResolved(input,"userId");if(!isSafePathSegment(userId)){throw new ApiResponseError(`\u30B5\u30FC\u30D0\u304C\u8FD4\u3057\u305F\u30E6\u30FC\u30B6\u30FC ID \u3092\u30D1\u30B9\u306B\u4F7F\u3048\u307E\u305B\u3093: ${userId}\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}return`${encodeURIComponent(userId)}${suffix}`}var USER_REF_FLAG={name:"--user",summary:"\u5BFE\u8C61\u306E\u30E6\u30FC\u30B6\u30FC\uFF08\u4F4D\u7F6E\u5F15\u6570\u306E\u4EE3\u308F\u308A\u306B\u4F7F\u3048\u308B\uFF09",
5
+ takesValue:true,placeholder:"<\u30E6\u30FC\u30B6\u30FC>"};async function prepareUser(input,ctx,usage){const ref=singleRef(input,{flag:"--user",label:"\u30E6\u30FC\u30B6\u30FC",usage});const user=await ctx.resolver.user(ref);return withResolved(input,{userId:user.id})}export{USER_REF_HELP,userPath,USER_REF_FLAG,prepareUser};
@@ -0,0 +1,16 @@
1
+ import { createRequire as __twpCreateRequire } from 'node:module';
2
+ const require = __twpCreateRequire(import.meta.url);
3
+ import{isPrivateProjectId}from"./chunk-RMFLTSOV.js";import{httpFetch}from"./chunk-J7QYPKVK.js";function describeError(res){if(res.status===null)return`transport_error=${res.transportError??"\u4E0D\u660E"}`;const body=res.json;const parts=[`http=${res.status}`];const reason=typeof body?.["reason"]==="string"?body["reason"]:"";if(reason)parts.push(`reason=${reason}`);const error=body?.["error"];const code=typeof error?.["code"]==="string"?error["code"]:"";if(code)parts.push(`code=${code}`);const message=(typeof body?.["message"]==="string"?body["message"]:"")||(typeof error?.["message"]==="\
4
+ string"?error["message"]:"");if(message)parts.push(message.slice(0,160));if(!reason&&!code&&!message)parts.push(`\u5FDC\u7B54\u306E\u5148\u982D: ${res.raw.slice(0,160)}`);return parts.join(" ")}function isPermanent(res){return res.status!==null&&res.status>=400&&res.status<500}var RUNNER_PLATFORMS=["mac","windows","linux"];function normalizeRequiredPlatforms(value){if(!Array.isArray(value))return[];const given=new Set(value.filter(v=>typeof v==="string").map(v=>v.trim().toLowerCase()));return RUNNER_PLATFORMS.
5
+ filter(p=>given.has(p))}function filterByStatus(items,status){return items.filter(item=>item.status===void 0||item.status===status)}var AgentLoopApi=class{constructor(opts){this.opts=opts;const root=opts.apiUrl.replace(/\/+$/,"");this.root=root;this.base=isPrivateProjectId(opts.projectId)?`${root}/api/v2/tasks/private/agent-loop`:`${root}/api/v2/projects/${opts.projectId}/agent-loop`}opts;base;root;get baseUrl(){return this.base}list(query){const qs=new URLSearchParams;for(const[k,v]of Object.entries(
6
+ query)){if(v!==void 0&&v!=="")qs.set(k,String(v))}const suffix=qs.toString()?`?${qs.toString()}`:"";return this.request("GET",suffix)}create(body){return this.request("POST","",body)}getItem(itemId){return this.request("GET",`/${encodeURIComponent(itemId)}`)}update(itemId,body,runId){return this.request("PUT",`/${encodeURIComponent(itemId)}`,{...body,run_id:runId})}updateUnowned(itemId,body){return this.request("PUT",`/${encodeURIComponent(itemId)}`,body)}logUploadUrl(itemId,runId){return this.request(
7
+ "POST",`/${encodeURIComponent(itemId)}/log-upload-url`,{run_id:runId})}async putPresigned(url,body,contentType){const fetchImpl=this.opts.fetchImpl??httpFetch;const controller=new AbortController;const timer=setTimeout(()=>controller.abort(),this.opts.timeoutMs??6e4);try{const res=await fetchImpl(url,{method:"PUT",headers:{"Content-Type":contentType},signal:controller.signal,body});await res.text().catch(()=>"");return{ok:res.ok,status:res.status,json:null,raw:"",transportError:null}}catch(err){
8
+ const reason=err.name==="AbortError"?"timeout":err.message;return{ok:false,status:null,json:null,raw:"",transportError:reason}}finally{clearTimeout(timer)}}reorder(itemIds){return this.request("PUT","/reorder",{item_ids:itemIds})}claim(runnerId,runId){return this.request("POST","/claim",{runner_id:runnerId,run_id:runId})}reclaim(){return this.request("POST","/reclaim",{})}runners(){return this.request("GET","/runners")}registerRunner(payload){return this.request("POST","/runners/register",payload)}capacityReport(payload){
9
+ return this.request("POST","/runners/capacity-report",payload)}heartbeatRunner(payload){return this.request("POST","/runners/heartbeat",payload)}deregisterRunner(payload){return this.request("POST","/runners/deregister",payload)}planStart(runnerId,runId){return this.request("POST","/plan/start",{runner_id:runnerId,run_id:runId})}planFinish(runnerId,runId,planStartedAt,result,record){return this.request("POST","/plan/finish",{runner_id:runnerId,run_id:runId,plan_started_at:planStartedAt,result,...record?
10
+ {record}:{}})}planRun(runnerId,runId,record){return this.request("POST","/plan/runs",{runner_id:runnerId,run_id:runId,record})}consumeCounter(key,date,limit){return this.request("POST","/counters/consume",{key,date,limit})}listCounters(date){return this.request("GET",`/counters?date=${encodeURIComponent(date)}`)}async queuedSnapshot(){return this.snapshotOf(["pending","processing"])}async processingSnapshot(){return this.snapshotOf(["processing"])}async pendingSnapshot(){return this.snapshotOf([
11
+ "pending"])}async completedSince(sinceMicros,maxPages=10){const all=[];let cursor=String(Math.trunc(sinceMicros));for(let page=0;page<maxPages;page++){const res=await this.list({status:"completed",limit:100,cursor});if(!res.ok)return null;const body=res.json;const items=body?.["items"];if(!Array.isArray(items))return null;all.push(...filterByStatus(items,"completed"));const pagination=body?.["pagination"];const hasMore=(pagination?.["has_more"]??body?.["has_more"])===true;const next=pagination?.["\
12
+ next_cursor"]??body?.["next_cursor"];if(!hasMore||!next)return all;cursor=next}return null}async snapshotOf(statuses){const all=[];for(const status of statuses){let cursor;for(let page=0;page<20;page++){const res=await this.list({status,limit:100,cursor});if(!res.ok)return null;const body=res.json;const items=body?.["items"];if(!Array.isArray(items))return null;all.push(...filterByStatus(items,status));const pagination=body?.["pagination"];const hasMore=(pagination?.["has_more"]??body?.["has_mor\
13
+ e"])===true;const next=pagination?.["next_cursor"]??body?.["next_cursor"];if(!hasMore||!next)break;cursor=next;if(page===19)return null}}return all}outcomes(skill,limit=5){return this.request("GET",`/outcomes?skill=${encodeURIComponent(skill)}&limit=${limit}`)}runnersOverview(){return this.requestUrl("GET",`${this.root}/api/v2/agent-loop/runners/overview`)}request(method,suffix,body){return this.requestUrl(method,`${this.base}${suffix}`,body)}async requestUrl(method,url,body){let token;try{token=
14
+ await this.opts.session.getAccessToken()}catch(err){return{ok:false,status:null,json:null,raw:"",transportError:err.message}}let res=await this.send(method,url,token,body);if(res.status===401){try{token=await this.opts.session.refresh(token);res=await this.send(method,url,token,body)}catch(err){return{ok:false,status:401,json:null,raw:res.raw,transportError:err.message}}}return res}async send(method,url,token,body){const fetchImpl=this.opts.fetchImpl??httpFetch;const controller=new AbortController;
15
+ const timer=setTimeout(()=>controller.abort(),this.opts.timeoutMs??6e4);try{const res=await fetchImpl(url,{method,headers:{Authorization:`Bearer ${token}`,"Content-Type":"application/json",Accept:"application/json"},signal:controller.signal,...body===void 0?{}:{body:JSON.stringify(body)}});const raw=await res.text();let json=null;if(raw.trim()!==""){try{json=JSON.parse(raw)}catch{json=null}}return{ok:res.ok,status:res.status,json,raw,transportError:null}}catch(err){const reason=err.name==="Abort\
16
+ Error"?"timeout":err.message;return{ok:false,status:null,json:null,raw:"",transportError:reason}}finally{clearTimeout(timer)}}};function pick(json,path){let cur=json;for(const part of path.split(".")){if(cur===null||typeof cur!=="object")return void 0;cur=cur[part]}return cur===null?void 0:cur}function pickString(json,path){const v=pick(json,path);if(typeof v==="string")return v;if(typeof v==="number")return String(v);if(typeof v==="boolean")return v?"true":"false";return""}export{describeError,isPermanent,RUNNER_PLATFORMS,normalizeRequiredPlatforms,filterByStatus,AgentLoopApi,pick,pickString};
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{salesAdminForbidden}from"./chunk-NMYHFVDR.js";import{featureLicenseGuidance,licenseForbidden}from"./chunk-QUMDKN3U.js";import{repeatedValues}from"./chunk-RX5HWI4L.js";import{booleanText,boundedText}from"./chunk-JJSBBWJ5.js";import{SALES_ESTIMATE_FORMATS_PATH,SALES_ESTIMATE_NO_RULES_PATH,SALES_INVOICE_NO_RULES_PATH,SALES_PURCHASE_NO_RULES_PATH,SALES_ROUNDING_SETTING_PATH,isExactNumericId}from"./chunk-2AVQILQQ.js";import{LIST_PAGING_HELP,PAGE_NUMBER_LIST_FLAGS,
3
+ import{salesAdminForbidden}from"./chunk-6FGQNFUV.js";import{featureLicenseGuidance,licenseForbidden}from"./chunk-7KD5RWFY.js";import{repeatedValues}from"./chunk-RX5HWI4L.js";import{booleanText,boundedText}from"./chunk-JJSBBWJ5.js";import{SALES_ESTIMATE_FORMATS_PATH,SALES_ESTIMATE_NO_RULES_PATH,SALES_INVOICE_NO_RULES_PATH,SALES_PURCHASE_NO_RULES_PATH,SALES_ROUNDING_SETTING_PATH,isExactNumericId}from"./chunk-2T23XGJF.js";import{LIST_PAGING_HELP,PAGE_NUMBER_LIST_FLAGS,
4
4
  nonEmpty,pageNumberPaging,pageNumberQuery,pageRangeNotes}from"./chunk-MI6HVYR2.js";import{requireResolved,withResolved}from"./chunk-PS5QFKHB.js";import{acknowledgement,isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";var INT_MAX=2147483647;var MEMBER_FORBIDDEN=licenseForbidden(featureLicenseGuidance("\u8CA9\u58F2\u7BA1\u7406"));function envelope(body,what){if(!isRecord(body)||body["result"]!==true)throw new ApiResponseError(`${what}\u306E\u5FDC\u7B54\u306E\u5F62\u304C\u60F3\u5B9A\u3068\u9055\u3044\u307E\u3059\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`);return body}function recordOf(body,what){const data=envelope(body,what)["data"];if(!isRecord(data)||typeof data["id"]!==
5
5
  "string")throw new ApiResponseError(`${what}\u306E\u5FDC\u7B54\u306B data.id \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`);return data}function serverMessage(body){const message=isRecord(body)?body["message"]:void 0;return typeof message==="string"&&message!==""?[message]:[]}function text(value){return typeof value==="string"||typeof value==="number"?String(value):""}function integerValue(flag,raw,min,max=INT_MAX){const trimmed=raw.
6
6
  trim();const value=/^\d+$/.test(trimmed)?Number(trimmed):Number.NaN;if(!Number.isSafeInteger(value)||value<min||value>max)throw new UsageError(`${flag} \u306F ${min} \u4EE5\u4E0A ${max} \u4EE5\u4E0B\u306E\u6574\u6570\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044: ${raw}`);return value}var RULE_COLUMNS=["id","rule_name","prefix","digit_count","current_number","count_up_num","next_number","sort_order"];function nextNumber(rule,purchaseFormat){const current=rule["current_number"];const step=rule["\
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{salesAdminForbidden}from"./chunk-NMYHFVDR.js";import{nonEmpty,positiveInteger}from"./chunk-MI6HVYR2.js";import{withResolved}from"./chunk-PS5QFKHB.js";import{isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";var PATH="/api/v2/sales/receivables";var FORBIDDEN=salesAdminForbidden("\u58F2\u639B\u91D1\u6B8B\u9AD8\u3068\u7DE0\u3081");var CLOSING_LIST_MAX=36;var SUMMARY_LABELS=[["previous_balance","\u524D\u6708\u6B8B\u9AD8"],["current_debit","\u5F53\u6708\u501F\u65B9\uFF08\u5F53\u6708\u8ACB\u6C42\u984D\uFF09"],["current_credit","\u5F53\u6708\u8CB8\u65B9\uFF08\u5F53\u6708\u5165\u91D1\u5F15\u5F53\u984D\uFF09"],["current_balance","\u5F53\u6708\u6B8B\u9AD8"],["current_month_uncollected","\u2460 \u5F53\u6708\u8ACB\u6C42 \u672A\u56DE\u53CE"],
3
+ import{salesAdminForbidden}from"./chunk-6FGQNFUV.js";import{nonEmpty,positiveInteger}from"./chunk-MI6HVYR2.js";import{withResolved}from"./chunk-PS5QFKHB.js";import{isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";var PATH="/api/v2/sales/receivables";var FORBIDDEN=salesAdminForbidden("\u58F2\u639B\u91D1\u6B8B\u9AD8\u3068\u7DE0\u3081");var CLOSING_LIST_MAX=36;var SUMMARY_LABELS=[["previous_balance","\u524D\u6708\u6B8B\u9AD8"],["current_debit","\u5F53\u6708\u501F\u65B9\uFF08\u5F53\u6708\u8ACB\u6C42\u984D\uFF09"],["current_credit","\u5F53\u6708\u8CB8\u65B9\uFF08\u5F53\u6708\u5165\u91D1\u5F15\u5F53\u984D\uFF09"],["current_balance","\u5F53\u6708\u6B8B\u9AD8"],["current_month_uncollected","\u2460 \u5F53\u6708\u8ACB\u6C42 \u672A\u56DE\u53CE"],
4
4
  ["previous_uncollected","\u2461 \u524D\u6708\u4EE5\u524D \u672A\u5165\u91D1\u58F2\u639B\u91D1"],["advance_received","\u524D\u53D7\u91D1\uFF08\u7FCC\u6708\u4EE5\u964D\u8ACB\u6C42\u3078\u306E\u5165\u91D1\uFF09"],["future_invoice_total","\u2462 \u7FCC\u6708\u4EE5\u964D \u58F2\u639B\u91D1\uFF08\u8ACB\u6C42\u7DCF\u984D\u30FB\u53C2\u8003\uFF09"]];var ITEM_COLUMNS=["invoice_id","invoice_no","company_name","title","invoice_date","due_date","total","collected","uncollected"];var CLOSING_COLUMNS=["year_mo\
5
5
  nth","basis_date","closed_at","closed_by_name","has_variance"];function usageOf(op){return`twp receivable ${op} help`}function yen(value){return typeof value==="number"?`${value.toLocaleString("ja-JP")} \u5186`:"\uFF08\u4E0D\u660E\uFF09"}function text(value){return typeof value==="string"||typeof value==="number"?String(value):""}function yearMonthValue(raw,label){const value=raw.trim();if(!/^\d{4}-(0[1-9]|1[0-2])$/.test(value))throw new UsageError(`${label} \u306F YYYY-MM \u306E\u5F62\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044: ${raw}`,
6
6
  "\u4F8B: 2026-09");return value}function previousYearMonth(yearMonth){const[y,m]=yearMonth.split("-").map(Number);return m===1?`${y-1}-12`:`${y}-${String(m-1).padStart(2,"0")}`}function envelope(body,what){if(!isRecord(body)||body["result"]!==true)throw new ApiResponseError(`${what}\u306E\u5FDC\u7B54\u306E\u5F62\u304C\u60F3\u5B9A\u3068\u9055\u3044\u307E\u3059\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`);return body}function withoutResult(body){return Object.
@@ -1,9 +1,7 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{dateFlag,monthFlag}from"./chunk-EXT4AIDF.js";import{STATUS_VALUES,createFlags,fieldBody,hasAnyField,idSegment,masterItem,masterRows,targetId,truncationNotes,updateFlags}from"./chunk-WDQMYRPE.js";import{repeatedValues}from"./chunk-RX5HWI4L.js";import{readBody}from"./chunk-IWYJSQ5I.js";import{ATTENDANCE_REPORTS_PATH,ATTENDANCE_REPORT_MASTER_LABELS,ATTENDANCE_REPORT_MASTER_PATHS,ORG_MASTER_LIMIT,resolveNamed}from"./chunk-2AVQILQQ.js";import{isSafePathSegment}from"./chunk-HVZUXLQ4.js";
4
- import{ApiError}from"./chunk-JA5A6UJ2.js";import{nonEmpty,positiveInteger}from"./chunk-MI6HVYR2.js";import{requireResolved,singleRef,withResolved}from"./chunk-PS5QFKHB.js";import{acknowledgement,isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiRejectedError,ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";var USER_REF_HELP="<\u30E6\u30FC\u30B6\u30FC> \u306F ID\u30FB\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\u30FB\u793E\u54E1\u756A\u53F7\u30FB\u6C0F\u540D\u30FBme\uFF08\u81EA\u5206\uFF09\u306E\u3069\u308C\u3067\u3082\u6307\u5B9A\u3067\u304D\u307E\u3059\u3002\n\u6C0F\u540D\u306F\u5B8C\u5168\u4E00\u81F4\u30671\u4EBA\u306B\u7D5E\u308C\u305F\u3068\u304D\u3060\u3051\u53D7\u3051\u4ED8\u3051\u307E\u3059\uFF08\u540C\u59D3\u540C\u540D\u306A\u3089\u5019\u88DC\u3092\u51FA\u3057\u3066\u6B62\u307E\u308B\u306E\u3067\u3001\n\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\u304B\u793E\u54E1\u756A\u53F7\u3067\u6307\u5B9A\u3057\u76F4\u3057\u3066\u304F\u3060\u3055\u3044\uFF09\u3002ID \u4EE5\u5916\u306F\u3001\u30C6\u30CA\u30F3\u30C8\u306E\u30E6\u30FC\u30B6\u30FC\u4E00\u89A7\n\uFF08\u65E2\u5B9A10\u5206\u30AD\u30E3\u30C3\u30B7\u30E5\u30FB--refresh \u3067\u53D6\u308A\u76F4\u3057\uFF09\u3068\u7167\u5408\u3057\u307E\u3059\u3002\n\u8868\u793A\u30D5\u30E9\u30B0\u3092\u5916\u3057\u305F\u30E6\u30FC\u30B6\u30FC\u306F\u793E\u54E1\u756A\u53F7\u3067\u306F\u5F15\u3051\u307E\u305B\u3093\u3002\u7D44\u7E54\u7BA1\u7406\u8005\u3067\u306A\u3044\u5834\u5408\u306F ID \u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002";
5
- function userPath(input,suffix=""){const userId=requireResolved(input,"userId");if(!isSafePathSegment(userId)){throw new ApiResponseError(`\u30B5\u30FC\u30D0\u304C\u8FD4\u3057\u305F\u30E6\u30FC\u30B6\u30FC ID \u3092\u30D1\u30B9\u306B\u4F7F\u3048\u307E\u305B\u3093: ${userId}\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}return`${encodeURIComponent(userId)}${suffix}`}var USER_REF_FLAG={name:"--user",summary:"\u5BFE\u8C61\u306E\u30E6\u30FC\u30B6\u30FC\uFF08\u4F4D\u7F6E\u5F15\u6570\u306E\u4EE3\u308F\u308A\u306B\u4F7F\u3048\u308B\uFF09",
6
- takesValue:true,placeholder:"<\u30E6\u30FC\u30B6\u30FC>"};async function prepareUser(input,ctx,usage){const ref=singleRef(input,{flag:"--user",label:"\u30E6\u30FC\u30B6\u30FC",usage});const user=await ctx.resolver.user(ref);return withResolved(input,{userId:user.id})}var COMMAND="twp attendance";function label(kind){return ATTENDANCE_REPORT_MASTER_LABELS[kind]}function commonFields(name){return[{kind:"text",flag:"--code",key:"code",label:`${name}\u30B3\u30FC\u30C9`,maxChars:50,summary:`${name}\u30B3\u30FC\u30C9\uFF08\u30C6\u30CA\u30F3\u30C8\u5185\u3067\u4E00\u610F\uFF09`},{kind:"text",flag:"--name",key:"name",label:`${name}\u540D`,maxChars:255,summary:`${name}\u540D`}]}function tailFields(){return[{kind:"integer",flag:"--sort",key:"sort",label:"\u8868\u793A\u9806",
3
+ import{USER_REF_HELP}from"./chunk-UVCJXHWN.js";import{dateFlag,monthFlag}from"./chunk-EXT4AIDF.js";import{STATUS_VALUES,createFlags,fieldBody,hasAnyField,idSegment,masterItem,masterRows,targetId,truncationNotes,updateFlags}from"./chunk-KW37N7IO.js";import{repeatedValues}from"./chunk-RX5HWI4L.js";import{readBody}from"./chunk-IWYJSQ5I.js";import{ATTENDANCE_REPORTS_PATH,ATTENDANCE_REPORT_MASTER_LABELS,ATTENDANCE_REPORT_MASTER_PATHS,ORG_MASTER_LIMIT,resolveNamed}from"./chunk-2T23XGJF.js";
4
+ import{isSafePathSegment}from"./chunk-HVZUXLQ4.js";import{ApiError}from"./chunk-JA5A6UJ2.js";import{nonEmpty,positiveInteger}from"./chunk-MI6HVYR2.js";import{requireResolved,withResolved}from"./chunk-PS5QFKHB.js";import{acknowledgement,isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiRejectedError,ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";var COMMAND="twp attendance";function label(kind){return ATTENDANCE_REPORT_MASTER_LABELS[kind]}function commonFields(name){return[{kind:"text",flag:"--code",key:"code",label:`${name}\u30B3\u30FC\u30C9`,maxChars:50,summary:`${name}\u30B3\u30FC\u30C9\uFF08\u30C6\u30CA\u30F3\u30C8\u5185\u3067\u4E00\u610F\uFF09`},{kind:"text",flag:"--name",key:"name",label:`${name}\u540D`,maxChars:255,summary:`${name}\u540D`}]}function tailFields(){return[{kind:"integer",flag:"--sort",key:"sort",label:"\u8868\u793A\u9806",
7
5
  min:0,max:9999,summary:"\u8868\u793A\u9806\uFF080\u301C9999\u3002\u5C0F\u3055\u3044\u307B\u3069\u4E0A\uFF09"},{kind:"enum",flag:"--status",key:"status",values:STATUS_VALUES,summary:"\u72B6\u614B\uFF08active: \u6709\u52B9 / inactive: \u7121\u52B9\uFF1D\u52E4\u6020\u9023\u7D61\u306E\u9078\u629E\u80A2\u306B\u51FA\u306A\u3044\uFF09"},{kind:"boolean",flag:"--admin-only",key:"is_admin_only",summary:"\u7BA1\u7406\u8005\u3060\u3051\u304C\u9078\u3079\u308B\u304B\uFF08true / false\uFF09"},{kind:"text",flag:"\
8
6
  --description",key:"description",label:"\u8AAC\u660E",maxChars:1e3,summary:"\u8AAC\u660E"}]}function parentFlag(parent,mode){const parentLabel=label(parent.kind);const summary=mode==="create"?`\u7D10\u3065\u3051\u308B${parentLabel}\uFF08\u540D\u524D\u30FB\u30B3\u30FC\u30C9\u30FBID\u3002\u8907\u6570\u306A\u3089\u7E70\u308A\u8FD4\u3059\u3002\u7701\u304F\u3068\u6709\u52B9\u306A${parentLabel}\u3059\u3079\u3066\u306B\u7D10\u3065\u304F\uFF09`:`\u7D10\u3065\u3051\u308B${parentLabel}\uFF08\u540D\u524D\u30FB\u30B3\u30FC\u30C9\u30FBID\u3002\u8907\u6570\u306A\u3089\u7E70\u308A\u8FD4\u3059\u3002\
9
7
  \u6307\u5B9A\u3057\u305F\u3082\u306E\u3067\u7F6E\u304D\u63DB\u3048\u308B\uFF09`;return{name:parent.flag,summary,takesValue:true,placeholder:`<${parentLabel}>`,repeatable:true}}async function resolveParents(input,ctx,parent){const refs=repeatedValues(input,parent.flag);if(refs.length===0)return void 0;const ids=[];for(const ref of refs){if(ref.trim()==="")throw new UsageError(`${parent.flag} \u306B\u7A7A\u306E\u5024\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093`);const id=(await ctx.resolver.attendanceReportMaster(
@@ -177,4 +175,4 @@ flags:[{name:"--month",summary:"\u5BFE\u8C61\u306E\u5E74\u6708\uFF08YYYY-MM\uFF0
177
175
  usage:PUNCH_USAGE,description:"POST /api/v1/attendance/punch \u3092\u9001\u308A\u307E\u3059\uFF08\u30ED\u30B0\u30A4\u30F3\u3057\u3066\u3044\u308B\u672C\u4EBA\u306E\u5206\uFF09\u3002\u6253\u523B\u6642\u523B\u306F\u30B5\u30FC\u30D0\u306E\u6642\u523B\u3067\u3059\u3002\n\u7A2E\u985E: clock-in\uFF08\u51FA\u52E4\uFF09/ clock-out\uFF08\u9000\u52E4\uFF09/ break-start\uFF08\u4F11\u61A9\u958B\u59CB\uFF09/ break-end\uFF08\u4F11\u61A9\u7D42\u4E86\uFF09/ switch\uFF08\u4F5C\u696D\u306E\u5207\u308A\u66FF\u3048\uFF09\u3002\n\u3044\u307E\u6253\u3066\u308B\u7A2E\u985E\u306F twp attendance status \u306E available_actions \u3067\u5206\u304B\u308A\u307E\u3059\u3002\n--project \u306F\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u30B3\u30FC\u30C9\u304B ID\u3001--task \u306F\u30BF\u30B9\u30AF\u306E ID\uFF08UUID\uFF09\u3067\u3059\u3002\n\u9001\u308B\u524D\u306B\u4ECA\u6708\u306E\u52E4\u6020\u8868\uFF08GET /api/v1/attendance/timesheet\uFF09\u3092\u898B\u3066\u3001\u7DE0\u3081\u6E08\u307F\u306A\u3089\u6253\u523B\u3092\u9001\u3089\u305A\u306B\u6B62\u3081\u307E\u3059\uFF08\u7D42\u4E86\u30B3\u30FC\u30C9 3\uFF09\u3002\n--dry-run \u306F\u6253\u523B\u306E\u30EA\u30AF\u30A8\u30B9\u30C8\u3060\u3051\u3092\u8868\u793A\u3057\u307E\u3059\uFF08\u7DE0\u3081\u306E\u78BA\u8A8D\u306F\u9001\u308A\u307E\u305B\u3093\uFF09\u3002\n\u904E\u53BB\u306E\u6642\u523B\u3067\u306E\u6253\u523B\u306F twp attendance record create\u3001\u30E1\u30E2\u306E\u5909\u66F4\u30FB\u53D6\u308A\u6D88\u3057\u30FB\u4ED8\u3051\u66FF\u3048\u306F twp attendance record update / de\
178
176
  lete / move \u3067\u3059\u3002",flags:[{name:"--project",summary:"\u4F5C\u696D\u3059\u308B\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\uFF08\u30B3\u30FC\u30C9\u307E\u305F\u306F ID\uFF09",takesValue:true,placeholder:"<\u30B3\u30FC\u30C9|ID>"},{name:"--task",summary:"\u4F5C\u696D\u3059\u308B\u30BF\u30B9\u30AF\u306E ID\uFF08UUID\uFF09",takesValue:true,placeholder:"<\u30BF\u30B9\u30AFID>"},{name:"--memo",summary:`\u30E1\u30E2\uFF08${MEMO_MAX} \u6587\u5B57\u4EE5\u5185\uFF09`,takesValue:true,placeholder:"<\u30E1\u30E2>"}],
179
177
  async prepare(input,ctx){punchType(input);const explicit=input.flags.get("--project");if(explicit===void 0)return input;return withResolved(input,{projectId:await ctx.projectId(explicit)})},plan:punchPlan,plannedNotes:()=>["\u5B9F\u884C\u6642\u306F\u3001\u3053\u306E\u524D\u306B\u4ECA\u6708\u306E\u7DE0\u3081\u306E\u78BA\u8A8D\uFF08GET /api/v1/attendance/timesheet\uFF09\u3092\u9001\u308A\u3001\u7DE0\u3081\u6E08\u307F\u306A\u3089\u6253\u523B\u3092\u9001\u308A\u307E\u305B\u3093\u3002"],execute:punch,
180
- summarize:body=>{const status=isRecord(body)&&isRecord(body["status"])?body["status"]:{};return{...pick(punchRecord(body),PUNCH_COLUMNS),status:status["status"]??null,status_label:status["status_label"]??null}},raw:body=>(punchRecord(body),body)},teamOperation,flexSettlementOperation,overtimeOperation],subresources:[reportResource,reportCategoryResource,reportReasonResource,reportReasonDetailResource,closingsResource]};export{USER_REF_HELP,userPath,USER_REF_FLAG,prepareUser,PUNCH_TYPES,hoursMinutes,assertMonthOpen,assertMonthsOpen,attendanceDomain};
178
+ summarize:body=>{const status=isRecord(body)&&isRecord(body["status"])?body["status"]:{};return{...pick(punchRecord(body),PUNCH_COLUMNS),status:status["status"]??null,status_label:status["status_label"]??null}},raw:body=>(punchRecord(body),body)},teamOperation,flexSettlementOperation,overtimeOperation],subresources:[reportResource,reportCategoryResource,reportReasonResource,reportReasonDetailResource,closingsResource]};export{PUNCH_TYPES,hoursMinutes,assertMonthOpen,assertMonthsOpen,attendanceDomain};
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.87.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-5PBNMFNO.js";import"./chunk-2LOT54OO.js";import"./chunk-JF2GCXNQ.js";import"./chunk-EOXTDZTA.js";import"./chunk-QQRJLH6B.js";import"./chunk-VSJBJXZO.js";var VERSION=true?"0.89.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
@@ -18,7 +18,7 @@ import{GLOBAL_OPTIONS_HELP}from"./chunk-PECIBNFD.js";import{parseArgv}from"./chu
18
18
  twp whoami \u30ED\u30B0\u30A4\u30F3\u4E2D\u306E\u30E6\u30FC\u30B6\u30FC\u30FBID\u30FB\u30C6\u30CA\u30F3\u30C8\u3092\u8868\u793A
19
19
  --output json / --query id \u3067\u6A5F\u68B0\u53EF\u8AAD\u306B\uFF08\u30C8\u30FC\u30AF\u30F3\u306F\u51FA\u3055\u306A\u3044\uFF09
20
20
  twp configure [--profile <\u540D\u524D>]
21
- \u65E2\u5B9A\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u30FB\u51FA\u529B\u5F62\u5F0F\u30FB\u65E2\u5B9A\u30D7\u30ED\u30D5\u30A1\u30A4\u30EB\u3092\u5BFE\u8A71\u3067\u8A2D\u5B9A
21
+ \u65E2\u5B9A\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u30FB\u51FA\u529B\u5F62\u5F0F\u30FBBacklog \u30B9\u30DA\u30FC\u30B9\u30FB\u65E2\u5B9A\u30D7\u30ED\u30D5\u30A1\u30A4\u30EB\u3092\u5BFE\u8A71\u3067\u8A2D\u5B9A
22
22
  \uFF08~/.twp/config.json \u306B\u4FDD\u5B58\u3002\u8A8D\u8A3C\u60C5\u5831\u306B\u306F\u89E6\u3089\u306A\u3044\uFF09
23
23
  twp completion <bash|zsh|fish|powershell>
24
24
  \u30B7\u30A7\u30EB\u88DC\u5B8C\u306E\u30B9\u30AF\u30EA\u30D7\u30C8\u3092\u51FA\u529B\uFF08\u4F8B: eval "$(twp completion bash)"\uFF09
@@ -112,6 +112,12 @@ import{GLOBAL_OPTIONS_HELP}from"./chunk-PECIBNFD.js";import{parseArgv}from"./chu
112
112
  \u7F6E\u63DB\u30FB\u5EC3\u6B62\u3057\u305F\u6A5F\u306E stale \u306A\u767B\u9332\u3092\u4E00\u89A7\u304B\u3089\u5916\u3059\uFF08\u7BA1\u7406\u8005\u306E\u307F\uFF09\u3002
113
113
  \u5BFE\u8C61\uFF08\u30DB\u30B9\u30C8\u540D\u30FB\u6700\u7D42\u5FDC\u7B54\uFF09\u3092\u8868\u793A\u3057\u3066\u6B62\u307E\u308A\u3001--yes \u3067\u78BA\u5B9A\u3002
114
114
  \u7A3C\u50CD\u4E2D\uFF08live\uFF09\u306E\u767B\u9332\u306F\u5916\u305B\u306A\u3044\u3002\u540C\u3058\u6A5F\u304C\u518D\u3073\u5FDC\u7B54\u3059\u308C\u3070\u4E00\u89A7\u306B\u623B\u308B
115
+ twp task-loop capacity list [--project <\u30AD\u30FC|UUID>] [--include-stopped]
116
+ [--output json|table|tsv] [--query <\u5F0F>]
117
+ \u5B9F\u884C\u6A5F\u3068 AI \u30A2\u30AB\u30A6\u30F3\u30C8\u67A0\u306E\u72B6\u614B\uFF08\u753B\u9762\u300C\u30EB\u30FC\u30D7\u5B9F\u884C\u6A5F\u72B6\u614B\u300D\u3068\u540C\u3058\u5185\u5BB9\uFF09\u3092
118
+ \u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u6A2A\u65AD\u3067\u8AAD\u3080\uFF08\u500B\u4EBA\u30AD\u30E5\u30FC\u3092\u542B\u3080\uFF09\u3002\u67A0\u3054\u3068\u306B\u72B6\u614B\u30FB5\u6642\u9593\u67A0\uFF0F\u9031\u9593\u67A0\u306E
119
+ \u5229\u7528\u7387\u3068\u30EA\u30BB\u30C3\u30C8\u6642\u523B\u30FB\u518D\u30ED\u30B0\u30A4\u30F3\u671F\u9650\u30FB\u89B3\u6E2C\u6642\u523B\uFF0830\u5206\u8D85\u306F stale\uFF09\u3092\u51FA\u3059\u3002
120
+ \u505C\u6B62\u4E2D\u306E\u6A5F\u306F\u65E2\u5B9A\u3067\u51FA\u3055\u306A\u3044\u3002--project \u306F\u8FD4\u3063\u305F\u4E2D\u304B\u3089\u7D5E\u308B\u3060\u3051
115
121
  twp task-loop capacity report --project <\u30AD\u30FC|UUID>
116
122
  \u30EB\u30FC\u30D7\u3092\u56DE\u3055\u305A\u306B AI \u30A2\u30AB\u30A6\u30F3\u30C8\u67A0\u306E\u89B3\u6E2C\u5024\u30921\u56DE\u3060\u3051\u9001\u308B\uFF08\u5E38\u99D0\u3057\u306A\u3044\u3002
117
123
  \u5B9A\u671F\u5B9F\u884C\u306F systemd timer / cron / launchd \u306B\u4EFB\u305B\u308B\uFF09\u3002\u8A2D\u5B9A\u306F\u30EB\u30FC\u30D7\u3068
@@ -223,6 +229,8 @@ import{GLOBAL_OPTIONS_HELP}from"./chunk-PECIBNFD.js";import{parseArgv}from"./chu
223
229
  \u30E1\u30F3\u30D0\u30FC\u306B\u964D\u683C\u3059\u308B
224
230
  twp project member alias <\u5225\u540D>
225
231
  \u3053\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3067\u306E\u81EA\u5206\u306E\u5225\u540D\u3092\u8A2D\u5B9A\u3059\u308B\uFF08--clear \u3067\u6D88\u3059\uFF09
232
+ twp project evaluation create <\u30B3\u30FC\u30C9|ID>
233
+ \u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3067\u306E\u8981\u54E1\u8A55\u4FA1\u3092\u4F5C\u308B\uFF08--user\u30FB--period \u304C\u8981\u308B\u30FB\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u7BA1\u7406\u8005\uFF09
226
234
  twp task list \u30BF\u30B9\u30AF\u3092\u4E00\u89A7\u3059\u308B\uFF08--status / --assignee \u306F\u540D\u524D\u3067\u6307\u5B9A\u3067\u304D\u308B\uFF09
227
235
  twp task get <\u30AD\u30FC> \u30BF\u30B9\u30AF1\u4EF6\u306E\u8A73\u7D30\u3092\u8868\u793A\u3059\u308B\uFF08--project \u4E0D\u8981\uFF09
228
236
  twp task subtasks <\u30AD\u30FC>
@@ -611,7 +619,7 @@ import{GLOBAL_OPTIONS_HELP}from"./chunk-PECIBNFD.js";import{parseArgv}from"./chu
611
619
  \u6307\u6458\u306B\u627F\u8A8D\u8005\u30B3\u30E1\u30F3\u30C8\u3092\u66F8\u304F\uFF08--text / --text-file\uFF09
612
620
  twp workflow ai-review-comment delete <\u6307\u6458ID> --instance <\u7533\u8ACBID>
613
621
  \u627F\u8A8D\u8005\u30B3\u30E1\u30F3\u30C8\u3092\u53D6\u308A\u6D88\u3059\uFF08--yes \u304C\u8981\u308B\uFF09
614
- twp backlog space list \u9023\u643A\u6E08\u307F\u306E Backlog \u30B9\u30DA\u30FC\u30B9\u3092\u4E00\u89A7\u3059\u308B
622
+ twp backlog space list \u9023\u643A\u6E08\u307F\u306E Backlog \u30B9\u30DA\u30FC\u30B9\u3092\u4E00\u89A7\u3059\u308B\uFF08--space \u306E\u65E2\u5B9A\u306F twp configure \u3067\u8A2D\u5B9A\u3067\u304D\u308B\uFF09
615
623
  twp backlog project list
616
624
  Backlog \u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3092\u4E00\u89A7\u3059\u308B
617
625
  twp backlog issue list Backlog \u8AB2\u984C\u3092\u4E00\u89A7\u30FB\u691C\u7D22\u3059\u308B\uFF08--project / --status \u306F\u540D\u524D\u3067\u6307\u5B9A\u3067\u304D\u308B\uFF09
@@ -620,7 +628,7 @@ import{GLOBAL_OPTIONS_HELP}from"./chunk-PECIBNFD.js";import{parseArgv}from"./chu
620
628
  twp backlog issue update <\u8AB2\u984C\u30AD\u30FC>
621
629
  Backlog \u8AB2\u984C\u306E\u62C5\u5F53\u30FB\u30B9\u30C6\u30FC\u30BF\u30B9\u3092\u5909\u66F4\u3059\u308B\uFF08\u5916\u90E8\u3078\u51FA\u308B\u30FB--yes \u304C\u8981\u308B\uFF09
622
630
  twp backlog comment list <\u8AB2\u984C\u30AD\u30FC>
623
- Backlog \u8AB2\u984C\u306E\u30B3\u30E1\u30F3\u30C8\u3092\u4E00\u89A7\u3059\u308B\uFF08changeLog \u4ED8\u304D\uFF09
631
+ Backlog \u8AB2\u984C\u306E\u30B3\u30E1\u30F3\u30C8\u3092\u4E00\u89A7\u3059\u308B\uFF08changeLog \u4ED8\u304D\u30FB--all \u3067\u5168\u4EF6\uFF09
624
632
  twp backlog comment create <\u8AB2\u984C\u30AD\u30FC>
625
633
  Backlog \u8AB2\u984C\u306B\u30B3\u30E1\u30F3\u30C8\u3092\u6295\u7A3F\u3059\u308B\uFF08\u5916\u90E8\u3078\u51FA\u308B\u30FB--yes \u304C\u8981\u308B\uFF09
626
634
  twp backlog attachment list <\u8AB2\u984C\u30AD\u30FC>
@@ -858,12 +866,47 @@ import{GLOBAL_OPTIONS_HELP}from"./chunk-PECIBNFD.js";import{parseArgv}from"./chu
858
866
  \u8A55\u4FA1\u671F\u9593\u3092\u4E00\u89A7\u3059\u308B
859
867
  twp evaluation period current
860
868
  \u4ECA\u65E5\u3092\u542B\u3080\u8A55\u4FA1\u671F\u9593\u3092\u8868\u793A\u3059\u308B
869
+ twp evaluation period get <\u8A55\u4FA1\u671F\u9593ID>
870
+ \u8A55\u4FA1\u671F\u95931\u4EF6\u306E\u8A73\u7D30\u3092\u8868\u793A\u3059\u308B
871
+ twp evaluation period create
872
+ \u8A55\u4FA1\u671F\u9593\u3092\u4F5C\u6210\u3059\u308B\uFF08--name\u30FB--start\u30FB--end\u30FB\u7BA1\u7406\u8005\u306E\u307F\uFF09
873
+ twp evaluation period update <\u8A55\u4FA1\u671F\u9593ID>
874
+ \u8A55\u4FA1\u671F\u9593\u3092\u5909\u66F4\u3059\u308B\uFF08\u7DE0\u3081\u6E08\u307F\u306F\u5909\u3048\u3089\u308C\u306A\u3044\u30FB\u7BA1\u7406\u8005\u306E\u307F\uFF09
875
+ twp evaluation period delete <\u8A55\u4FA1\u671F\u9593ID>
876
+ \u8A55\u4FA1\u671F\u9593\u3092\u524A\u9664\u3059\u308B\uFF08--yes \u304C\u8981\u308B\u30FB\u7BA1\u7406\u8005\u306E\u307F\uFF09
877
+ twp evaluation period close <\u8A55\u4FA1\u671F\u9593ID>
878
+ \u8A55\u4FA1\u671F\u9593\u3092\u7DE0\u3081\u308B\uFF08--yes \u304C\u8981\u308B\u30FB--dry-run \u3067\u5BFE\u8C61\u30FB\u7BA1\u7406\u8005\u306E\u307F\uFF09
879
+ twp evaluation period reopen <\u8A55\u4FA1\u671F\u9593ID>
880
+ \u8A55\u4FA1\u671F\u9593\u306E\u7DE0\u3081\u3092\u89E3\u9664\u3059\u308B\uFF08--yes \u304C\u8981\u308B\u30FB\u7BA1\u7406\u8005\u306E\u307F\uFF09
881
+ twp evaluation criteria get
882
+ \u8A55\u4FA1\u57FA\u6E96\uFF08\u8A55\u4FA1\u9805\u76EE\u3054\u3068\u306E A\u301CE \u306E\u8AAC\u660E\uFF09\u3092\u8868\u793A\u3059\u308B
883
+ twp evaluation criteria set --file <JSON>
884
+ \u8A55\u4FA1\u57FA\u6E96\u3092\u7F6E\u304D\u63DB\u3048\u308B\uFF08--yes \u304C\u8981\u308B\u30FB--dry-run \u3067\u5DEE\u5206\u30FB\u7BA1\u7406\u8005\u306E\u307F\uFF09
861
885
  twp evaluation feedback mine
862
886
  \u81EA\u5206\u304C\u53D7\u3051\u53D6\u3063\u305F\u8A55\u4FA1\u306E\u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF\u3092\u4E00\u89A7\u3059\u308B
887
+ twp evaluation feedback save <\u8A55\u4FA1ID>
888
+ \u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF\u3092\u4E0B\u66F8\u304D\u4FDD\u5B58\u3059\u308B\uFF08--body-file\u30FB\u672C\u4EBA\u306B\u306F\u5C4A\u304B\u306A\u3044\uFF09
889
+ twp evaluation feedback send <\u8A55\u4FA1ID>
890
+ \u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF\u3092\u4FDD\u5B58\u3057\u3066\u672C\u4EBA\u3078\u516C\u958B\u3059\u308B\uFF08--yes \u304C\u8981\u308B\u30FB\u53D6\u308A\u6D88\u305B\u306A\u3044\uFF09
891
+ twp evaluation feedback publish <\u8A55\u4FA1ID>
892
+ \u4FDD\u5B58\u6E08\u307F\u306E\u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF\u3092\u672C\u4EBA\u3078\u516C\u958B\u3059\u308B\uFF08--yes \u304C\u8981\u308B\u30FB\u53D6\u308A\u6D88\u305B\u306A\u3044\uFF09
893
+ twp evaluation step update <\u8A55\u4FA1ID>
894
+ \u8A55\u4FA1\u6BB5\u3092\u5165\u529B\u3059\u308B\uFF08--step\u30FB--content-file\u3002--draft \u3067\u4E00\u6642\u4FDD\u5B58\uFF09
863
895
  twp goal-sheet list \u898B\u3066\u3088\u3044\u7BC4\u56F2\u306E\u76EE\u6A19\u30B7\u30FC\u30C8\u3092\u4E00\u89A7\u3059\u308B\uFF08--period\u30FB--status\uFF09
864
896
  twp goal-sheet mine \u81EA\u5206\u306E\u76EE\u6A19\u30B7\u30FC\u30C8\u3092\u4E00\u89A7\u3059\u308B
865
897
  twp goal-sheet get <\u76EE\u6A19\u30B7\u30FC\u30C8ID>
866
898
  \u76EE\u6A19\u30B7\u30FC\u30C81\u4EF6\u306E\u8A73\u7D30\u3092\u8868\u793A\u3059\u308B
899
+ twp goal-sheet update <\u76EE\u6A19\u30B7\u30FC\u30C8ID>
900
+ \u76EE\u6A19\u3092\u66F8\u304D\u63DB\u3048\u308B\uFF08--content-file\u30FBsections \u306F\u4E38\u3054\u3068\u7F6E\u304D\u63DB\u3048\uFF09
901
+ twp goal-sheet submit <\u76EE\u6A19\u30B7\u30FC\u30C8ID>
902
+ \u76EE\u6A19\u30B7\u30FC\u30C8\u3092\u4E0A\u9577\u3078\u63D0\u51FA\u3059\u308B\uFF08--yes \u304C\u8981\u308B\uFF09
903
+ twp role-template list \u5F79\u5272\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u3092\u4E00\u89A7\u3059\u308B\uFF08--active\u30FB--keyword\uFF09
904
+ twp role-template create
905
+ \u5F79\u5272\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u3092\u4F5C\u6210\u3059\u308B\uFF08--name\u30FB--required-skill\u30FB\u7BA1\u7406\u8005\u306E\u307F\uFF09
906
+ twp role-template update <ID>
907
+ \u5F79\u5272\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u3092\u5909\u66F4\u3059\u308B\uFF08\u30B9\u30AD\u30EB\u306F\u4E38\u3054\u3068\u7F6E\u304D\u63DB\u3048\u30FB\u7BA1\u7406\u8005\u306E\u307F\uFF09
908
+ twp role-template delete <ID>
909
+ \u5F79\u5272\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u3092\u524A\u9664\u3059\u308B\uFF08--yes \u304C\u8981\u308B\u30FB\u7BA1\u7406\u8005\u306E\u307F\uFF09
867
910
  twp inquiry category list
868
911
  \u554F\u3044\u5408\u308F\u305B\u30AB\u30C6\u30B4\u30EA\u3092\u4E00\u89A7\u3059\u308B
869
912
  twp inquiry category get <\u30AB\u30C6\u30B4\u30EA>
@@ -1397,16 +1440,16 @@ TUI \u5185:
1397
1440
  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
1398
1441
  \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
1399
1442
  `;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
1400
- `);process.exit(1)}ignoreEpipe(process.stdout);ignoreEpipe(process.stderr);if(process.env["TWP_AUTO_UPDATE_WORKER"]==="1"){const{runAutoUpdateWorker}=await import("./auto-update-worker-XT4VB4LJ.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}
1401
- const[{loadDomain},{loadUserConfig}]=await Promise.all([import("./registry-AQXCC42T.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=
1443
+ `);process.exit(1)}ignoreEpipe(process.stdout);ignoreEpipe(process.stderr);if(process.env["TWP_AUTO_UPDATE_WORKER"]==="1"){const{runAutoUpdateWorker}=await import("./auto-update-worker-XT4VB4LJ.js");await runAutoUpdateWorker().catch(()=>void 0);return}const[first,...rest]=process.argv.slice(2);if(first==="__complete"||first==="completion"){const completion=await import("./completion-32FJZVQR.js");if(first==="completion"){process.exitCode=completion.runCompletion(rest,process.stdout,process.stderr);return}
1444
+ const[{loadDomain},{loadUserConfig}]=await Promise.all([import("./registry-A7OXOQPI.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-DONZ3M6N.js");process.exitCode=
1402
1445
  await runConfigure(rest);return}const args=parseArgv(process.argv.slice(2));if(args.command==="version"){process.stdout.write(`${VERSION}
1403
- `);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(" ")}
1446
+ `);return}if(args.command==="help"){process.stdout.write(HELP);return}if(args.movedCommand!==void 0){const{MOVED_QUEUE_COMMAND_MESSAGE}=await import("./dispatch-GSBMRWQ4.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(" ")}
1404
1447
 
1405
- ${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-E3TOMCP7.js");process.exitCode=await runDomain({domain:args.domain,...args.operation!==void 0?{operation:args.operation}:
1406
- {},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-2PNCTAWY.js");process.exitCode=await runApiCommand({argv:args.domainArgv,help:args.domainHelp,globals:{...args.profile!==void 0?{profile:args.
1407
- 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-5NJSC26F.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-KKEZJCLF.js");
1408
- 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-GQBRPBFW.js");process.exitCode=await runTaskLoop(
1448
+ ${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-VNV2AVDI.js");process.exitCode=await runDomain({domain:args.domain,...args.operation!==void 0?{operation:args.operation}:
1449
+ {},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-QS6VCLTX.js");process.exitCode=await runApiCommand({argv:args.domainArgv,help:args.domainHelp,globals:{...args.profile!==void 0?{profile:args.
1450
+ 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-5NJSC26F.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-RBN5WGWJ.js");
1451
+ 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-3B5GGPY7.js");process.exitCode=await runTaskLoop(
1409
1452
  {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.
1410
- 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.
1411
- workspace,aiConfigFile:args.aiConfigFile,noAiConfigFile:args.noAiConfigFile});return}if(args.command==="print"){const{runOneShot}=await import("./oneshot-3N2W247J.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.
1412
- profile}:{},version:VERSION});return}const{startTui}=await import("./app-ALJYSYKI.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();
1453
+ 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,includeStopped:args.includeStopped,runnerOp:args.runnerOp,runnerId:args.runnerTargetId,planEmpty:args.planEmpty,planCheck:args.planCheck,
1454
+ yes:args.yes,ais:args.ais,workspace:args.workspace,aiConfigFile:args.aiConfigFile,noAiConfigFile:args.noAiConfigFile});return}if(args.command==="print"){const{runOneShot}=await import("./oneshot-YDTQT2T3.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}:
1455
+ {},...args.profile!==void 0?{profile:args.profile}:{},version:VERSION});return}const{startTui}=await import("./app-GWNEJ24L.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();