@tocca-systems/twp-cli 0.77.2 → 0.79.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 (118) hide show
  1. package/CHANGELOG.public.md +14 -0
  2. package/README.md +56 -15
  3. package/dist/{agent-76W4NFZE.js → agent-WTDLGRNM.js} +3 -3
  4. package/dist/{agent-loop-6Q5QQC5H.js → agent-loop-ZGHJGHFQ.js} +32 -32
  5. package/dist/{ai-dispatch-U2MEAOHY.js → ai-dispatch-DJ5JT5BE.js} +1 -1
  6. package/dist/analysis-H52FJIFO.js +5 -0
  7. package/dist/{announcement-HYMSN6ZR.js → announcement-RTTVGW4K.js} +2 -2
  8. package/dist/{api-command-D3H2QWSH.js → api-command-Y6J7EAOT.js} +4 -4
  9. package/dist/{app-LH2Z63XY.js → app-YVRIMXZY.js} +5 -5
  10. package/dist/{attendance-correct-7IKTSZ6I.js → attendance-correct-OLWRCDP4.js} +2 -2
  11. package/dist/{attendance-lists-7SOG6G4N.js → attendance-lists-TBUZCRKK.js} +2 -2
  12. package/dist/{auto-update-YMI3F44R.js → auto-update-FXXQHBV5.js} +1 -1
  13. package/dist/{auto-update-worker-VG77U4UA.js → auto-update-worker-6K24JYLQ.js} +2 -2
  14. package/dist/{backlog-IJTBHL3Z.js → backlog-HDDV2NTC.js} +37 -31
  15. package/dist/{budget-ZWB346BP.js → budget-T246BG2P.js} +2 -2
  16. package/dist/{chunk-MZVXEYOV.js → chunk-22CRY6JR.js} +1 -1
  17. package/dist/{chunk-DLDDMXZT.js → chunk-4RNL462J.js} +1 -1
  18. package/dist/{chunk-47C3XM23.js → chunk-5YJAT7HE.js} +1 -1
  19. package/dist/chunk-64VHXDB6.js +11 -0
  20. package/dist/{chunk-436IBRP4.js → chunk-6JAOPRD5.js} +1 -1
  21. package/dist/{chunk-DYNNGNXR.js → chunk-7PTFN3H7.js} +1 -1
  22. package/dist/{chunk-AITUAHWK.js → chunk-CADCERVL.js} +1 -1
  23. package/dist/{chunk-NWI2TBO6.js → chunk-CH6QU76P.js} +1 -1
  24. package/dist/{chunk-MTUOPTBS.js → chunk-CZVQS3WP.js} +2 -2
  25. package/dist/{chunk-H7MIIYRN.js → chunk-DELIIGWE.js} +1 -1
  26. package/dist/{chunk-R4Y3OLFY.js → chunk-DJ5OD2HW.js} +18 -18
  27. package/dist/{chunk-4VAWX7TW.js → chunk-DLJQE2B5.js} +1 -1
  28. package/dist/{chunk-4VZKNEVN.js → chunk-EDF4U5BT.js} +2 -1
  29. package/dist/{chunk-XG2JN66A.js → chunk-HKEW6XIC.js} +2 -2
  30. package/dist/{chunk-AVFQ2LM5.js → chunk-HYBXFEHH.js} +1 -1
  31. package/dist/chunk-IVFSEXD3.js +48 -0
  32. package/dist/{chunk-5WTFZJT7.js → chunk-JQBXLZTJ.js} +1 -1
  33. package/dist/{chunk-RQEX2WC5.js → chunk-KZQGIM2C.js} +1 -1
  34. package/dist/{chunk-W4E4F2ZA.js → chunk-MLRBDF44.js} +1 -1
  35. package/dist/{chunk-3WFZOOXZ.js → chunk-MO2UEAWW.js} +1 -1
  36. package/dist/{chunk-SAH5WS3K.js → chunk-MPX2Q3BJ.js} +1 -1
  37. package/dist/{chunk-L7T2CQ3M.js → chunk-NLCJXS5S.js} +2 -2
  38. package/dist/{chunk-GYXKBPEN.js → chunk-NTT2QG3J.js} +2 -2
  39. package/dist/{chunk-DLD736A2.js → chunk-OW23MAVO.js} +1 -1
  40. package/dist/{chunk-3WPHZXST.js → chunk-QXYY7DUV.js} +2 -2
  41. package/dist/{chunk-6SAHK3OR.js → chunk-RCUI6WWU.js} +1 -1
  42. package/dist/{chunk-GHE6X45G.js → chunk-RSSPNFSK.js} +7 -7
  43. package/dist/{chunk-AM7Y4QRF.js → chunk-U5EYLW6X.js} +2 -2
  44. package/dist/{chunk-4OJD5FKD.js → chunk-UZLHJ2RF.js} +2 -2
  45. package/dist/{chunk-GQEXST5N.js → chunk-V3RZ4RFP.js} +1 -1
  46. package/dist/chunk-VERYHAWV.js +13 -0
  47. package/dist/{chunk-YM4U6A4Y.js → chunk-VLCR2U77.js} +1 -1
  48. package/dist/{chunk-4H3ECPJF.js → chunk-VYIYENEU.js} +1 -1
  49. package/dist/{chunk-HZYP3BMS.js → chunk-X2WD2H3B.js} +2 -2
  50. package/dist/chunk-XNYQH5JI.js +44 -0
  51. package/dist/{chunk-RMOBVFPJ.js → chunk-YV65V2F6.js} +1 -1
  52. package/dist/cli.js +65 -25
  53. package/dist/{commands-445XWMKY.js → commands-UDG7E3X3.js} +20 -20
  54. package/dist/{commands-YJU4HHPP.js → commands-ZIRZVBH6.js} +2 -2
  55. package/dist/{company-NXL4WVLD.js → company-2CRWKBJL.js} +3 -3
  56. package/dist/{completion-RL6VCPB5.js → completion-C6ZQCDT2.js} +8 -7
  57. package/dist/config-XYWRBIC6.js +3 -0
  58. package/dist/{configure-3H3CGGBI.js → configure-3JID6MQ5.js} +7 -3
  59. package/dist/{contract-MC6HSQER.js → contract-73RVPBYM.js} +2 -2
  60. package/dist/{department-3YEKQJ6I.js → department-GPVHVFFP.js} +2 -2
  61. package/dist/{deposit-RFTXWS5D.js → deposit-3I3NV556.js} +2 -2
  62. package/dist/dispatch-HHWTJ3P4.js +3 -0
  63. package/dist/{domain-knowledge-EXMD2NMI.js → domain-knowledge-5SCZLCPF.js} +2 -2
  64. package/dist/{estimate-RIJRRKZZ.js → estimate-NLKTWCYI.js} +4 -4
  65. package/dist/{evaluation-ESIPIC3K.js → evaluation-VP7OFTBS.js} +1 -1
  66. package/dist/{expense-ISK4RPCY.js → expense-O2O4623X.js} +2 -2
  67. package/dist/{fiscal-year-F2DVA2GB.js → fiscal-year-ZTCSF46U.js} +2 -2
  68. package/dist/{holiday-5ZAH6U6Z.js → holiday-WDI4CSNL.js} +2 -2
  69. package/dist/{inquiry-3KEU4MAN.js → inquiry-4Q4BRYM3.js} +2 -2
  70. package/dist/{invoice-BTVMPVKS.js → invoice-BXSI6SMA.js} +3 -3
  71. package/dist/{job-title-NO5VRM5J.js → job-title-NCFHCA4M.js} +1 -1
  72. package/dist/{knowledge-TXUSVHRG.js → knowledge-TCADQEPU.js} +2 -2
  73. package/dist/{leave-VZCKDT73.js → leave-W4GHXMSE.js} +3 -3
  74. package/dist/{license-JVYLYTSV.js → license-XSWDXSJE.js} +2 -2
  75. package/dist/{logout-guard-T3IAROLQ.js → logout-guard-57LHDX6L.js} +1 -1
  76. package/dist/{media-AQID56Z4.js → media-D7BZTPXD.js} +3 -3
  77. package/dist/{notification-TSLB2ZHF.js → notification-WP7CH734.js} +2 -2
  78. package/dist/{onedrive-ZY3GTU26.js → onedrive-KWVOUGG6.js} +1 -1
  79. package/dist/{oneshot-GF6TO7AH.js → oneshot-EAXT2LLB.js} +2 -2
  80. package/dist/{outlook-YG7GFF44.js → outlook-GYRF5TXA.js} +1 -1
  81. package/dist/{plan-submit-7KDB74QH.js → plan-submit-ELEIJM6I.js} +1 -1
  82. package/dist/{position-IREP6O4N.js → position-H3NSDVKQ.js} +1 -1
  83. package/dist/{project-XIBLUUAR.js → project-HGUUMTEE.js} +2 -2
  84. package/dist/{prospect-UZLWLOAI.js → prospect-QY3NYP2A.js} +3 -3
  85. package/dist/{purchase-OLJD37QK.js → purchase-7XCGCQ2G.js} +4 -4
  86. package/dist/receivable-GW5WCVJ7.js +4 -0
  87. package/dist/{redmine-WOVVB7SU.js → redmine-644RTL42.js} +2 -2
  88. package/dist/{registry-GUS42T5G.js → registry-TFHSCQK3.js} +1 -1
  89. package/dist/{report-52ZHE57K.js → report-P74LSHTE.js} +2 -2
  90. package/dist/{run-DKDJACXL.js → run-EO7J3QYK.js} +2 -2
  91. package/dist/runner-command-SRPMAC5S.js +3 -0
  92. package/dist/{sales-ai-review-JBDTSY67.js → sales-ai-review-L5VW3DU3.js} +2 -2
  93. package/dist/{sales-master-KL5XHTVS.js → sales-master-BQML5IJT.js} +3 -3
  94. package/dist/{sales-numbering-NZW2RNOS.js → sales-numbering-OW4O6WH6.js} +2 -2
  95. package/dist/{search-FOUZEY5X.js → search-BLMSVPIL.js} +2 -2
  96. package/dist/{segment-3CMYFOFP.js → segment-G4IPD43F.js} +1 -1
  97. package/dist/{server-settings-CRH7UU45.js → server-settings-OB7JF757.js} +1 -1
  98. package/dist/{setup-VPHP4HDM.js → setup-FMSAHRGZ.js} +1 -1
  99. package/dist/{skill-U6757V7A.js → skill-4TSTVUXY.js} +2 -2
  100. package/dist/staffing-board-MQREMSVJ.js +110 -0
  101. package/dist/status-command-C42CVQ3Q.js +17 -0
  102. package/dist/{supplier-payment-NG3PYZAH.js → supplier-payment-KRLYWEKY.js} +3 -3
  103. package/dist/{support-JBL45TWL.js → support-ITRXFVMK.js} +2 -2
  104. package/dist/{task-OR5JLUKO.js → task-AGNMPS4F.js} +5 -4
  105. package/dist/{teams-RLMFGND2.js → teams-MZR3256V.js} +1 -1
  106. package/dist/{update-NCAVUXSX.js → update-7GYGZEK3.js} +1 -1
  107. package/dist/{user-4BL2ILYK.js → user-U4VHKBLE.js} +3 -3
  108. package/dist/{user-contract-type-XHCKC6T7.js → user-contract-type-HDA5TITL.js} +2 -2
  109. package/dist/{worker-agent-XTDV36WT.js → worker-agent-52PXQO4N.js} +2 -2
  110. package/dist/{workflow-Q7XCMDRH.js → workflow-4NC2C4TX.js} +2 -2
  111. package/package.json +1 -1
  112. package/dist/analysis-7PNFFLPQ.js +0 -5
  113. package/dist/chunk-6C75QARV.js +0 -49
  114. package/dist/chunk-BMJMOUBS.js +0 -11
  115. package/dist/config-3CNEQ7KN.js +0 -3
  116. package/dist/receivable-JNXWOLJN.js +0 -4
  117. package/dist/status-command-3GA23BGD.js +0 -17
  118. /package/dist/{skill-manage-command-QYJLCLDK.js → skill-manage-command-UOWZCF6R.js} +0 -0
@@ -0,0 +1,44 @@
1
+ import { createRequire as __twpCreateRequire } from 'node:module';
2
+ const require = __twpCreateRequire(import.meta.url);
3
+ import{reasonOf,unwrap}from"./chunk-MYBIPHZ7.js";import{apiExit,errorDetail,pickNumber,shellQuote,str}from"./chunk-A4LFG7MW.js";import{EXIT_API_CLIENT,EXIT_API_SERVER,EXIT_FAILURE,EXIT_OK,EXIT_USAGE,UsageError}from"./chunk-VFPY2A23.js";import{stripTerminalControls}from"./chunk-NHYMHCAT.js";var LIST_FORMATS=["json","table","tsv"];var RUNNER_ID_PATTERN=/^[A-Za-z0-9._-]{1,128}$/;async function runRunnerCommand(deps,opts){const io={out:deps.out??(t=>void process.stdout.write(stripTerminalControls(t))),err:deps.err??(t=>void process.stderr.write(stripTerminalControls(t))),isTty:deps.isTty??process.stdout.isTTY===true};try{return opts.op==="list"?await listRunners(deps.api,opts,io):await removeRunner(deps.api,opts,io)}catch(e){if(e instanceof UsageError){io.err(`${e.message}
4
+ ${e.hint?`${e.hint}
5
+ `:""}`);return EXIT_USAGE}throw e}}function parseRunners(res){const body=unwrap(res,"runners");const raw=body["runners"];if(!Array.isArray(raw))return null;const entries=[];for(const item of raw){const r=item&&typeof item==="object"?item:{};const runnerId=str(r["runner_id"]);if(runnerId==="")return null;entries.push(toEntry(r))}return{entries,summary:{live_count:pickNumber(body,"live_count"),max_runners:pickNumber(body,"max_runners"),heartbeat_timeout:pickNumber(body,"heartbeat_timeout"),hidden_count:pickNumber(
6
+ body,"hidden_count"),removed_count:pickNumber(body,"removed_count"),hide_after_days:pickNumber(body,"hide_after_days")}}}function toEntry(r){const kind=str(r["kind"])||"loop";const state=kind==="loop"?r["is_live"]===true?"live":"stale":r["is_reporting"]===true?"reporting":"stale";return{runner_id:str(r["runner_id"]),kind,state,hostname:str(r["hostname"]),phase:str(r["phase"]),last_seen_at:str(r["last_seen_at"]),last_reported_at:str(r["last_reported_at"]),version:str(r["version"])}}async function listRunners(api,opts,io){
7
+ const{resolveOutputFormat}=await import("./format-F6PPBPY5.js");const format=resolveOutputFormat({...opts.output!==void 0?{flag:opts.output}:{},isTty:io.isTty});if(format===null||!LIST_FORMATS.includes(format)){throw new UsageError(`runner list \u306E --output \u306B\u300C${opts.output??""}\u300D\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093`,`\u6307\u5B9A\u3067\u304D\u308B\u306E\u306F ${LIST_FORMATS.join(" / ")} \u3067\u3059`)}const res=await api.request("GET","/runners");if(!res.ok){io.
8
+ err(`\u26D4 \u30E9\u30F3\u30CA\u30FC\u4E00\u89A7\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\uFF08${errorDetail(res)}\uFF09
9
+ `);return apiExit(res)}const parsed=parseRunners(res);if(parsed===null){io.err(`\u26D4 \u30E9\u30F3\u30CA\u30FC\u4E00\u89A7\u3092\u89E3\u91C8\u3067\u304D\u307E\u305B\u3093\uFF08\u5FDC\u7B54\u306E\u5148\u982D: ${res.raw.slice(0,120)}\uFF09
10
+ `);return EXIT_API_SERVER}const{entries,summary}=parsed;const{evaluateQuery}=await import("./query-XEOVFI4D.js");const{renderOutput}=await import("./render-4SBLHU4J.js");if(format==="json"){const value={...summary,runners:entries};const selected2=opts.query===void 0?value:await evaluateQuery(opts.query,value);const text2=renderOutput(selected2,"json");io.out(text2.endsWith("\n")?text2:`${text2}
11
+ `);return EXIT_OK}io.err(summaryLine(summary));const selected=opts.query===void 0?entries:await evaluateQuery(opts.query,entries);if(opts.query===void 0&&entries.length===0){io.err("\u4E00\u89A7\u306B\u8868\u793A\u3055\u308C\u308B\u767B\u9332\u306F\u3042\u308A\u307E\u305B\u3093\n");return EXIT_OK}const text=renderOutput(selected,format);io.out(text.endsWith("\n")?text:`${text}
12
+ `);if(opts.query===void 0&&entries.some(e=>e.state==="stale")){io.err(`${removeHint(opts)}
13
+ `)}return EXIT_OK}function summaryLine(s){const n=v=>v===null?"?":String(v);const parts=[`\u7A3C\u50CD ${n(s.live_count)} / ${n(s.max_runners)}\uFF08\u6B7B\u6D3B\u3057\u304D\u3044\u5024 ${n(s.heartbeat_timeout)}\u79D2\uFF09`];parts.push(`${n(s.hide_after_days)}\u65E5\u4EE5\u4E0A\u5FDC\u7B54\u306A\u3057\u3067\u975E\u8868\u793A ${n(s.hidden_count)}\u53F0`);if(s.removed_count!==null)parts.push(`\u624B\u52D5\u3067\u5916\u3057\u305F\u767B\u9332 ${s.removed_count}\u53F0`);return`\u30E9\u30F3\u30CA\u30FC: ${parts.
14
+ join("\u30FB")}
15
+ `}function hasRemovableRunner(list){return list.some(r=>r.is_live!==true&&r.is_reporting!==true)}function removeHint(opts){const parts=["twp task-loop runner remove","--project",shellQuote(opts.projectRef)];if(opts.profile!==void 0)parts.push("--profile",shellQuote(opts.profile));parts.push("<runner_id>");return` \u203B \u7F6E\u63DB\u30FB\u5EC3\u6B62\u3057\u305F\u6A5F\u306E stale \u306A\u767B\u9332\u306F ${parts.join(" ")} \u3067\u4E00\u89A7\u304B\u3089\u5916\u305B\u307E\u3059`}async function removeRunner(api,opts,io){
16
+ const runnerId=opts.runnerId;if(runnerId===void 0){io.err("runner remove \u306B\u306F runner_id \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08runner list \u3067\u78BA\u8A8D\u3067\u304D\u307E\u3059\uFF09\n");return EXIT_USAGE}if(!RUNNER_ID_PATTERN.test(runnerId)||runnerId==="."||runnerId===".."){io.err(`runner_id \u304C\u4E0D\u6B63\u3067\u3059: ${runnerId}\uFF08\u82F1\u6570\u5B57\u3068 . _ - \u3060\u3051\u306E128\u6587\u5B57\u4EE5\u5185\uFF09
17
+ `);return EXIT_USAGE}if(opts.output!==void 0&&opts.output!=="json"){throw new UsageError(`runner remove \u306E --output \u306B\u300C${opts.output}\u300D\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093`,"\u6307\u5B9A\u3067\u304D\u308B\u306E\u306F json \u3060\u3051\u3067\u3059")}const json=opts.output==="json";if(!opts.yes){const res2=await api.request("GET","/runners");if(!res2.ok){io.err(`\u26D4 \u30E9\u30F3\u30CA\u30FC\u4E00\u89A7\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\uFF08${errorDetail(
18
+ res2)}\uFF09
19
+ `);return apiExit(res2)}const parsed=parseRunners(res2);if(parsed===null){io.err(`\u26D4 \u30E9\u30F3\u30CA\u30FC\u4E00\u89A7\u3092\u89E3\u91C8\u3067\u304D\u307E\u305B\u3093\uFF08\u5FDC\u7B54\u306E\u5148\u982D: ${res2.raw.slice(0,120)}\uFF09
20
+ `);return EXIT_API_SERVER}const target=parsed.entries.find(e=>e.runner_id===runnerId);if(target===void 0){if(json)io.out(`${JSON.stringify({removed:false,reason:"not_listed",runner_id:runnerId})}
21
+ `);io.err(`${runnerId} \u306F\u4E00\u89A7\u306B\u3042\u308A\u307E\u305B\u3093\uFF08\u672A\u767B\u9332\u304B\u3001\u65E2\u306B\u4E00\u89A7\u304B\u3089\u5916\u308C\u3066\u3044\u307E\u3059\uFF09\u3002\u4F55\u3082\u5909\u66F4\u3057\u307E\u305B\u3093\u3067\u3057\u305F\u3002
22
+ `);return EXIT_FAILURE}if(target.state!=="stale"){if(json)io.out(`${JSON.stringify({removed:false,reason:target.state,runner:target})}
23
+ `);io.err(`${describeTarget(target)}
24
+ ${blockedMessage(target.state)}
25
+ `);return EXIT_FAILURE}if(json){io.out(`${JSON.stringify({removed:false,reason:"confirm_required",runner:target,confirm:confirmCommand(opts,runnerId)})}
26
+ `)}else{io.out(`${describeTarget(target)}
27
+ `);io.out(`
28
+ \u5916\u3057\u3066\u3044\u307E\u305B\u3093\u3002\u4E00\u89A7\u304B\u3089\u5916\u3059\u306B\u306F\u6B21\u3092\u5B9F\u884C\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u767B\u9332\u306F\u975E\u8868\u793A\u306B\u306A\u308B\u3060\u3051\u3067\u3001\u540C\u3058 runner_id \u304C\u518D\u3073\u5FDC\u7B54\u3059\u308C\u3070\u4E00\u89A7\u306B\u623B\u308A\u307E\u3059\uFF09:
29
+ ${confirmCommand(opts,runnerId)}
30
+ `)}return EXIT_USAGE}const res=await api.request("DELETE",`/runners/${encodeURIComponent(runnerId)}`);if(!res.ok){const reason=reasonOf(res);if(res.status===409&&(reason==="live"||reason==="reporting")){if(json)io.out(`${JSON.stringify({removed:false,reason,runner_id:runnerId})}
31
+ `);io.err(`\u26D4 ${runnerId}: ${blockedMessage(reason)}
32
+ `);return EXIT_API_CLIENT}if(res.status===404&&reason==="not_found"){if(json)io.out(`${JSON.stringify({removed:false,reason,runner_id:runnerId})}
33
+ `);io.err(`${runnerId} \u306F\u767B\u9332\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002\u4F55\u3082\u5909\u66F4\u3057\u307E\u305B\u3093\u3067\u3057\u305F\u3002
34
+ `);return EXIT_FAILURE}io.err(`\u26D4 ${runnerId}: \u4E00\u89A7\u304B\u3089\u5916\u305B\u307E\u305B\u3093\uFF08${errorDetail(res)}\uFF09
35
+ `);return apiExit(res)}const body=unwrap(res,"removed");if(body["removed"]!==true){io.err(`\u26A0\uFE0F ${runnerId}: \u5FDC\u7B54\u3092\u89E3\u91C8\u3067\u304D\u307E\u305B\u3093\u3002\u5916\u308C\u305F\u304B\u3092 runner list \u3067\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u5FDC\u7B54\u306E\u5148\u982D: ${res.raw.slice(0,120)}\uFF09
36
+ `);return EXIT_API_SERVER}const runner=body["runner"]&&typeof body["runner"]==="object"?toEntry(body["runner"]):null;if(json){io.out(`${JSON.stringify({removed:true,runner_id:runnerId,runner})}
37
+ `)}else{io.out(`${runnerId}: \u4E00\u89A7\u304B\u3089\u5916\u3057\u307E\u3057\u305F${runner?.hostname?`\uFF08@${runner.hostname}\uFF09`:""}\u3002\u540C\u3058 runner_id \u304C\u518D\u3073\u5FDC\u7B54\u3059\u308C\u3070\u4E00\u89A7\u306B\u623B\u308A\u307E\u3059\u3002
38
+ `)}return EXIT_OK}function describeTarget(e){const lastSeen=e.kind==="loop"?e.last_seen_at:e.last_reported_at||e.last_seen_at;return(`\u5BFE\u8C61: ${e.runner_id} [${e.state}]
39
+ \u7A2E\u5225: ${e.kind==="loop"?"\u30EB\u30FC\u30D7\u5B9F\u884C\u6A5F":e.kind==="capacity_reporter"?"\u67A0\u5831\u544A\u5C02\u7528\u6A5F":e.kind}
40
+ \u30DB\u30B9\u30C8\u540D: ${e.hostname||"\u4E0D\u660E"}
41
+ \u6700\u7D42\u5FDC\u7B54: ${lastSeen||"\u4E0D\u660E"}
42
+ `+(e.version?` \u7248: ${e.version}
43
+ `:"")).trimEnd()}function blockedMessage(state){return state==="reporting"?"\u3053\u306E\u67A0\u5831\u544A\u5C02\u7528\u6A5F\u306F\u5831\u544A\u304C\u7D9A\u3044\u3066\u3044\u308B\u305F\u3081\u4E00\u89A7\u304B\u3089\u5916\u305B\u307E\u305B\u3093\uFF08\u5831\u544A\u3092\u6B62\u3081\u3066\u304B\u3089\u5B9F\u884C\u3057\u3066\u304F\u3060\u3055\u3044\uFF09\u3002":"\u3053\u306E\u30E9\u30F3\u30CA\u30FC\u306F\u7A3C\u50CD\u4E2D\uFF08live\uFF09\u306E\u305F\u3081\u4E00\u89A7\u304B\u3089\u5916\u305B\u307E\u305B\u3093\u3002\u6A5F\u4F53\u3092\u6B62\u3081\u3001\u5FDC\u7B54\u304C\u9014\u7D76\u3048\u3066 stale \u306B\u306A\u3063\u3066\u304B\u3089\u5B9F\u884C\u3057\u3066\u304F\u3060\u3055\u3044\u3002"}
44
+ function confirmCommand(opts,runnerId){const parts=["twp task-loop runner remove","--project",shellQuote(opts.projectRef)];if(opts.profile!==void 0)parts.push("--profile",shellQuote(opts.profile));parts.push(shellQuote(runnerId),"--yes");return parts.join(" ")}export{runRunnerCommand,parseRunners,hasRemovableRunner,removeHint};
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{placeholderTaskKey,stepToItem}from"./chunk-QGJYT4NH.js";import{redactLoopOutput}from"./chunk-JUJSF5ZG.js";import{localDate}from"./chunk-6SAHK3OR.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-QGJYT4NH.js";import{redactLoopOutput}from"./chunk-JUJSF5ZG.js";import{localDate}from"./chunk-RCUI6WWU.js";import{normalizeSkillName,skillOfItem}from"./chunk-FABDZBDZ.js";import{DEFAULT_SKILL_PREFIX,SKILL_PREFIX_RE,setSkillPrefix,skillCommand,skillPrefix}from"./chunk-6CS5L24D.js";import{describeError,pick,pickString}from"./chunk-O52RKZCC.js";import{isTaskKey}from"./chunk-II5RVJQN.js";import{createHash,randomBytes}from"crypto";import fs2 from"fs";import path2 from"path";var INFLIGHT_STALE_HOURS=3;function staleFloorHours(aiTimeoutSec){return Math.ceil(aiTimeoutSec*2/3600)}function inflightStaleHours(aiTimeoutSec,baseHours=INFLIGHT_STALE_HOURS){const base=Number.isFinite(baseHours)&&baseHours>0?baseHours:INFLIGHT_STALE_HOURS;return Math.max(base,staleFloorHours(aiTimeoutSec))}function ageMinutesOf(item,now){for(const raw of[item.started_at,item.updated_at,item.dequeued_at,item.created_at]){if(!raw)continue;const ts=Date.parse(raw);if(Number.isNaN(ts))continue;return Math.
4
4
  floor((now.getTime()-ts)/6e4)}return null}function inflightEntries(items,now=new Date,staleHours=INFLIGHT_STALE_HOURS){const staleMinutes=staleHours*60;const byKey=new Map;for(const item of items){const key=(item.task_key??"").trim();if(!key)continue;const ageMinutes=ageMinutesOf(item,now);if(ageMinutes!==null&&ageMinutes>staleMinutes)continue;const entry={key,runner:item.runner_id??"-",ageMinutes,label:(item.label??"").slice(0,60)};const prev=byKey.get(key);if(!prev||(entry.ageMinutes??-1)>(prev.
5
5
  ageMinutes??-1))byKey.set(key,entry)}return[...byKey.values()].sort((a,b)=>a.key.localeCompare(b.key))}function formatInflightEntry(entry){const age=entry.ageMinutes===null?"\u4E0D\u660E":`${entry.ageMinutes}\u5206`;return`${entry.key} runner=${entry.runner} \u7D4C\u904E=${age}`}import fs from"fs";import path from"path";async function createItem(api,body){const res=await api.create(redactItemBody(body));if(!res.ok)return{itemId:null,detail:describeError(res)};for(const p of["item_id","id","item.item_id","item.id","data.item_id","data.id"]){const v=pickString(res.json,p);if(v)return{itemId:v,detail:""}}return{itemId:null,detail:`item_id \u3092\u8AAD\u3081\u307E\u305B\u3093: ${res.raw.slice(0,200)}`}}function redactItemBody(body){const out={...body};for(const key of["prompt","label"]){if(typeof out[key]==="string")
6
6
  out[key]=redactLoopOutput(out[key])}return out}function reorderSucceeded(targetId,json){if(pick(json,"result")===true)return true;const raw=Array.isArray(json)?json:pick(json,"items");if(!Array.isArray(raw)||raw.length===0)return false;const items=raw;const orderOf=it=>typeof it.sort_order==="number"?it.sort_order:Number.POSITIVE_INFINITY;const hit=items.find(it=>(it.item_id??"")===targetId);if(!hit)return false;return orderOf(hit)===Math.min(...items.map(orderOf))}function queueContainsKey(items,key){
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-6C75QARV.js";import"./chunk-2LOT54OO.js";import"./chunk-W4E4F2ZA.js";import"./chunk-QQRJLH6B.js";import"./chunk-VSJBJXZO.js";var VERSION=true?"0.77.2":"0.0.0-dev";var HELP=`twp ${VERSION} \u2014 TWP CLI
4
+ import{GLOBAL_OPTIONS_HELP}from"./chunk-PECIBNFD.js";import{parseArgv}from"./chunk-IVFSEXD3.js";import"./chunk-2LOT54OO.js";import"./chunk-MLRBDF44.js";import"./chunk-VERYHAWV.js";import"./chunk-QQRJLH6B.js";import"./chunk-VSJBJXZO.js";var VERSION=true?"0.79.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
@@ -105,11 +105,34 @@ import{GLOBAL_OPTIONS_HELP}from"./chunk-PECIBNFD.js";import{parseArgv}from"./chu
105
105
  \u8A08\u753BAI\u304C\u8A08\u753B\u3092\u30EB\u30FC\u30D7\u3078\u63D0\u51FA\u3059\u308B\uFF08\u8A08\u753B\u30D5\u30A7\u30FC\u30BA\u306E\u4E2D\u3067\u3060\u3051\u53D7\u3051\u4ED8\u3051\u308B\uFF09\u3002
106
106
  step \u3054\u3068\u306B\u53D7\u7406/\u68C4\u5374\u3068\u7406\u7531\u3092\u8868\u793A\u3057\u3001\u68C4\u5374\u304C\u3042\u308C\u3070\u975E0\u3067\u7D42\u308F\u308B\u3002
107
107
  \u51FA\u3057\u76F4\u3059\u3068\u6700\u5F8C\u306E\u63D0\u51FA\u304C\u6709\u52B9\u3002--check \u306F\u691C\u67FB\u3060\u3051\u3067\u7F6E\u304B\u306A\u3044
108
+ twp task-loop runner list --project <\u30AD\u30FC|UUID> [--output json|table|tsv] [--query <\u5F0F>]
109
+ \u30E9\u30F3\u30CA\u30FC\u767B\u9332\u306E\u4E00\u89A7\uFF08live/stale\u30FB\u30DB\u30B9\u30C8\u540D\u30FB\u6700\u7D42\u5FDC\u7B54\uFF09\u3068\u3001\u4E00\u89A7\u304B\u3089
110
+ \u5916\u308C\u3066\u3044\u308B\u53F0\u6570\uFF08\u5FDC\u7B54\u306A\u3057\u3067\u81EA\u52D5\u975E\u8868\u793A\uFF0F\u624B\u52D5\u3067\u5916\u3057\u305F\u767B\u9332\uFF09
111
+ twp task-loop runner remove --project <\u30AD\u30FC|UUID> <runner_id> [--output json]
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
+ \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
+ \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
108
115
  twp task-loop capacity report --project <\u30AD\u30FC|UUID>
109
116
  \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
110
117
  \u5B9A\u671F\u5B9F\u884C\u306F systemd timer / cron / launchd \u306B\u4EFB\u305B\u308B\uFF09\u3002\u8A2D\u5B9A\u306F\u30EB\u30FC\u30D7\u3068
111
118
  \u540C\u3058 capacity_probe\u3002\u672A\u8A2D\u5B9A\u306A\u3089\u4F55\u3082\u305B\u305A 0\u3001\u540C\u3058\u6A5F\u306E\u30EB\u30FC\u30D7\u304C\u767B\u9332\u6E08\u307F
112
119
  \u306A\u3089\u9001\u3089\u305A 0\u3001\u30D7\u30ED\u30FC\u30D6\u304C\u5931\u6557\u3057\u3066\u3082 error \u3092\u9001\u308C\u308C\u3070 0\u3001\u9001\u4FE1\u306E\u5931\u6557\u306F 1
120
+ twp task-loop item list --project <\u30AD\u30FC|UUID>
121
+ \u30AD\u30E5\u30FC\u306E\u30A2\u30A4\u30C6\u30E0\u3092\u4E00\u89A7\u3059\u308B\uFF08--status \u3067\u7D5E\u308A\u8FBC\u3080\uFF09
122
+ twp task-loop item get <\u30A2\u30A4\u30C6\u30E0ID>
123
+ \u30AD\u30E5\u30FC\u306E\u30A2\u30A4\u30C6\u30E01\u4EF6\u306E\u8A73\u7D30\u3092\u8868\u793A\u3059\u308B
124
+ twp task-loop item create --prompt "/<\u63A5\u982D\u8F9E><\u30B9\u30AD\u30EB> <\u5F15\u6570>"
125
+ \u30AD\u30E5\u30FC\u306B\u30A2\u30A4\u30C6\u30E0\u3092\u6295\u5165\u3059\u308B\uFF08--priority / --label / --ai-effort\uFF09
126
+ twp task-loop item update <\u30A2\u30A4\u30C6\u30E0ID>
127
+ \u30A2\u30A4\u30C6\u30E0\u306E\u30E9\u30D9\u30EB\u30FB\u30D7\u30ED\u30F3\u30D7\u30C8\u30FBAI \u6307\u5B9A\u3092\u66F4\u65B0\u3059\u308B\uFF08\u7BA1\u7406\u8005\u306E\u307F\uFF09
128
+ twp task-loop item move <\u30A2\u30A4\u30C6\u30E0ID>
129
+ \u30A2\u30A4\u30C6\u30E0\u3092\u30AD\u30E5\u30FC\u306E\u5148\u982D\u3078\u79FB\u3059\uFF08--yes \u304C\u8981\u308B\u30FB\u7BA1\u7406\u8005\u306E\u307F\uFF09
130
+ twp task-loop item delete <\u30A2\u30A4\u30C6\u30E0ID>
131
+ \u30A2\u30A4\u30C6\u30E0\u3092\u524A\u9664\u3059\u308B\uFF08--yes \u304C\u8981\u308B\u30FB\u7BA1\u7406\u8005\u306E\u307F\uFF09
132
+ twp task-loop history list --since <\u65E5\u4ED8|\u65E5\u6642>
133
+ \u671F\u9593\u3092\u6307\u5B9A\u3057\u3066\u5B9F\u884C\u5C65\u6B74\u3092\u4E00\u89A7\u3059\u308B\uFF08\u53F0\u5E33\u306E\u6B63\u672C\uFF09
134
+ twp task-loop plan-history list --since <\u65E5\u4ED8|\u65E5\u6642>
135
+ \u671F\u9593\u3092\u6307\u5B9A\u3057\u3066\u8A08\u753B\u306E\u5B9F\u884C\u8A18\u9332\u3092\u4E00\u89A7\u3059\u308B
113
136
  twp --mode <id> \u8D77\u52D5\u6642\u306E\u30E2\u30FC\u30C9\u3092\u6307\u5B9A\uFF08dev | biz | plan\uFF09
114
137
  twp --permission-mode <v>
115
138
  \u30C4\u30FC\u30EB\u5B9F\u884C\u306E\u65E2\u5B9A\u3092\u4E0A\u66F8\u304D\uFF08plan | acceptEdits | denyAll\uFF09\u3002
@@ -173,20 +196,6 @@ import{GLOBAL_OPTIONS_HELP}from"./chunk-PECIBNFD.js";import{parseArgv}from"./chu
173
196
  \u4ECA\u3059\u30501\u56DE\u5B9F\u884C\u3059\u308B\uFF08--yes\u30FB\u898B\u9001\u308A\u306F\u7D42\u4E86\u30B3\u30FC\u30C9 3\uFF09
174
197
  twp agent schedule runs <\u5B9A\u671F\u5B9F\u884C>
175
198
  \u5B9F\u884C\u5C65\u6B74\uFF08\u8D77\u52D5\u30FB\u898B\u9001\u308A\u30FB\u5931\u6557\u3068\u7406\u7531\uFF09\u3092\u4E00\u89A7\u3059\u308B
176
- twp agent-loop list \u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u30EB\u30FC\u30D7\u306E\u30AD\u30E5\u30FC\u3092\u4E00\u89A7\u3059\u308B\uFF08--status \u3067\u7D5E\u308A\u8FBC\u3080\uFF09
177
- twp agent-loop get <\u30A2\u30A4\u30C6\u30E0ID>
178
- \u30AD\u30E5\u30FC\u306E\u30A2\u30A4\u30C6\u30E01\u4EF6\u306E\u8A73\u7D30\u3092\u8868\u793A\u3059\u308B
179
- twp agent-loop create \u30AD\u30E5\u30FC\u306B\u30A2\u30A4\u30C6\u30E0\u3092\u6295\u5165\u3059\u308B\uFF08--prompt "/<\u63A5\u982D\u8F9E><\u30B9\u30AD\u30EB> <\u5F15\u6570>"\uFF09
180
- twp agent-loop update <\u30A2\u30A4\u30C6\u30E0ID>
181
- \u30A2\u30A4\u30C6\u30E0\u306E\u30E9\u30D9\u30EB\u30FB\u30D7\u30ED\u30F3\u30D7\u30C8\u30FBAI \u6307\u5B9A\u3092\u66F4\u65B0\u3059\u308B\uFF08\u7BA1\u7406\u8005\u306E\u307F\uFF09
182
- twp agent-loop move <\u30A2\u30A4\u30C6\u30E0ID>
183
- \u30A2\u30A4\u30C6\u30E0\u3092\u30AD\u30E5\u30FC\u306E\u5148\u982D\u3078\u79FB\u3059\uFF08--yes \u304C\u8981\u308B\u30FB\u7BA1\u7406\u8005\u306E\u307F\uFF09
184
- twp agent-loop delete <\u30A2\u30A4\u30C6\u30E0ID>
185
- \u30A2\u30A4\u30C6\u30E0\u3092\u524A\u9664\u3059\u308B\uFF08--yes \u304C\u8981\u308B\u30FB\u7BA1\u7406\u8005\u306E\u307F\uFF09
186
- twp agent-loop history list
187
- \u671F\u9593\u3092\u6307\u5B9A\u3057\u3066\u5B9F\u884C\u5C65\u6B74\u3092\u4E00\u89A7\u3059\u308B\uFF08--since \u304C\u8981\u308B\uFF09
188
- twp agent-loop plan-history list
189
- \u671F\u9593\u3092\u6307\u5B9A\u3057\u3066\u8A08\u753B\u306E\u5B9F\u884C\u8A18\u9332\u3092\u4E00\u89A7\u3059\u308B\uFF08--since \u304C\u8981\u308B\uFF09
190
199
  twp project list \u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3092\u4E00\u89A7\u3059\u308B
191
200
  twp project get <\u53C2\u7167> \u30D7\u30ED\u30B8\u30A7\u30AF\u30C81\u4EF6\u306E\u8A73\u7D30\u3092\u8868\u793A\u3059\u308B
192
201
  twp project create \u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3092\u4F5C\u6210\u3059\u308B\uFF08--name / --code \u304C\u5FC5\u9808\u30FB\u7BA1\u7406\u8005\uFF09
@@ -463,6 +472,37 @@ import{GLOBAL_OPTIONS_HELP}from"./chunk-PECIBNFD.js";import{parseArgv}from"./chu
463
472
  \u4EBA\u6750KPI\u306E\u96C6\u8A08\u5BFE\u8C61\u306E\u898B\u7A4D\uFF08--department \u304C\u8981\u308B\uFF09
464
473
  twp analysis staff-kpi settings
465
474
  \u90E8\u7F72\u306E\u4EBA\u6750KPI\u306E\u8A2D\u5B9A\uFF08--department \u304C\u8981\u308B\uFF09
475
+ twp staffing-board show \u8981\u54E1\u8ABF\u6574\u30DC\u30FC\u30C9\u306E\u8868\uFF08\u30E1\u30F3\u30D0\u30FC\xD7\u6708\u30FB--unit hours|fte|percent\u30FB\u65E2\u5B9A\u306F\u7FCC\u6708\u304B\u30894\u304B\u6708\uFF09
476
+ twp staffing-board cell set
477
+ \u30E1\u30F3\u30D0\u30FC\xD7\u6848\u4EF6\xD7\u6708\u306E\u5DE5\u6570\u3092\u8A2D\u5B9A\u3059\u308B\uFF08\u753B\u9762\u306E\u30BB\u30EB\u7DE8\u96C6\u3068\u540C\u3058\u3002\u7DE8\u96C6\u53EF\uFF0B\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u7BA1\u7406\u8005\uFF09
478
+ twp staffing-board cell history
479
+ \u30E1\u30F3\u30D0\u30FC\xD7\u6848\u4EF6\u306E\u5DE5\u6570\u306E\u4FEE\u6B63\u5C65\u6B74
480
+ twp staffing-board tentative list
481
+ \u4EEE\u30A2\u30B5\u30A4\u30F3\uFF08\u672A\u767B\u9332\u306E\u898B\u8FBC\u307F\u6848\u4EF6\u30FB\u78BA\u5EA6\uFF09\u306E\u4E00\u89A7
482
+ twp staffing-board tentative create
483
+ \u4EEE\u30A2\u30B5\u30A4\u30F3\u3092\u767B\u9332\u3059\u308B\uFF08--user\u30FB--probability\u30FB--hours YYYY-MM=\u6642\u9593\u3002\u7DE8\u96C6\u53EF\uFF09
484
+ twp staffing-board tentative update <ID>
485
+ \u4EEE\u30A2\u30B5\u30A4\u30F3\u3092\u5909\u66F4\u3059\u308B\uFF08--hours \u306F\u6708\u306E\u96C6\u5408\u3092\u7F6E\u304D\u63DB\u3048\u308B\u3002\u7DE8\u96C6\u53EF\uFF09
486
+ twp staffing-board tentative delete <ID>
487
+ \u4EEE\u30A2\u30B5\u30A4\u30F3\u3092\u524A\u9664\u3059\u308B\uFF08--yes \u304C\u8981\u308B\u3002\u7DE8\u96C6\u53EF\uFF09
488
+ twp staffing-board tentative promote <ID>
489
+ \u4EEE\u30A2\u30B5\u30A4\u30F3\u3092\u6B63\u5F0F\u30A2\u30B5\u30A4\u30F3\u3078\u6607\u683C\u3059\u308B\uFF08--yes \u304C\u8981\u308B\u3002\u7DE8\u96C6\u53EF\uFF0B\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u7BA1\u7406\u8005\uFF09
490
+ twp staffing-board note list
491
+ \u30E1\u30E2\uFF08\u30E1\u30F3\u30D0\u30FC\xD7\u6708\u30FB\u30E1\u30F3\u30D0\u30FC\u30FB\u4F1A\u8B70\u65E5\uFF09\u306E\u4E00\u89A7
492
+ twp staffing-board note set
493
+ \u30E1\u30E2\u3092\u4F5C\u6210\u30FB\u4E0A\u66F8\u304D\u3059\u308B\uFF08--scope\u30FB--content\u3002\u7DE8\u96C6\u53EF\uFF09
494
+ twp staffing-board note delete <ID>
495
+ \u30E1\u30E2\u3092\u524A\u9664\u3059\u308B\uFF08--yes \u304C\u8981\u308B\u3002\u7DE8\u96C6\u53EF\uFF09
496
+ twp staffing-board snapshot list
497
+ \u30B9\u30CA\u30C3\u30D7\u30B7\u30E7\u30C3\u30C8\u306E\u4E00\u89A7\uFF08\u65B0\u3057\u3044\u9806\uFF09
498
+ twp staffing-board snapshot get <ID>
499
+ \u4FDD\u5B58\u6642\u70B9\u306E\u8868\u3068\u7A7A\u304D\uFF0F\u8D85\u904E\uFF0F\u5951\u7D04\u7D42\u4E86\u4E88\u5B9A\u306E\u62BD\u51FA
500
+ twp staffing-board snapshot diff <ID>
501
+ \u524D\u56DE\uFF08--base\uFF09\u304B\u3089\u306E\u5DEE\u5206
502
+ twp staffing-board snapshot create
503
+ \u3044\u307E\u306E\u30DC\u30FC\u30C9\u3092\u4FDD\u5B58\u3059\u308B\uFF08\u65E2\u5B9A\u306F\u7FCC\u6708\u304B\u30894\u304B\u6708\u3002\u7DE8\u96C6\u53EF\uFF09
504
+ twp staffing-board snapshot delete <ID>
505
+ \u30B9\u30CA\u30C3\u30D7\u30B7\u30E7\u30C3\u30C8\u3092\u524A\u9664\u3059\u308B\uFF08--yes \u304C\u8981\u308B\u3002\u7DE8\u96C6\u53EF\uFF09
466
506
  twp budget dashboard \u5E74\u5EA6\u306E\u4E88\u5B9F\uFF08\u5168\u793E\u3068\u90E8\u7F72\u3054\u3068\u306E\u76EE\u6A19\u30FB\u898B\u8FBC\u30FB\u5B9F\u7E3E\u30FB\u5DEE\u7570\u30FB--year\uFF09
467
507
  twp budget summary \u58F2\u4E0A\u30FB\u5229\u76CA\u306E\u76EE\u6A19\u3068\u5B9F\u7E3E\u306E\u5408\u8A08\uFF08--department \u3067\u90E8\u7F72\u3068\u914D\u4E0B\uFF09
468
508
  twp budget breakdown \u90E8\u7F72\u884C\u306E\u5185\u8A33\uFF08\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u30FB\u62C5\u5F53\u8005\u30FB\u78BA\u5EA6\u30FB\u6848\u4EF6\u3054\u3068\u3002\u7701\u304F\u3068\u672A\u5272\u5F53\uFF09
@@ -1351,16 +1391,16 @@ TUI \u5185:
1351
1391
  TWP API \u3092\u547C\u3079\u307E\u3059\u3002TWP API \u306E\u30C4\u30FC\u30EB\u306F\u65E2\u5B9A\u3067\u78BA\u8A8D\u304C\u51FA\u307E\u3059\uFF08-p \u3067\u306F\u62D2\u5426\u3002--allowed-tools \u3067\u540D\u524D\u3092\u8A31\u53EF\uFF09\u3002
1352
1392
  \u4F1A\u8A71\u30FB\u30ED\u30FC\u30AB\u30EB\u30C4\u30FC\u30EB\uFF08\u30D5\u30A1\u30A4\u30EB\u30FB\u30B3\u30DE\u30F3\u30C9\u30FBgit\uFF09\u306F\u30C6\u30CA\u30F3\u30C8\u306E\u30AF\u30EC\u30B8\u30C3\u30C8\u3067\u5B9F\u969B\u306B\u52D5\u304D\u307E\u3059\u3002
1353
1393
  `;function ignoreEpipe(stream){stream.on("error",err=>{if(err.code==="EPIPE")process.exit(0);throw err})}async function main(){const nodeMajor=Number(process.versions.node.split(".")[0]);if(nodeMajor<22){process.stderr.write(`twp-cli \u306B\u306F Node.js 22 \u4EE5\u4E0A\u304C\u5FC5\u8981\u3067\u3059\uFF08\u73FE\u5728: ${process.versions.node}\uFF09
1354
- `);process.exit(1)}ignoreEpipe(process.stdout);ignoreEpipe(process.stderr);if(process.env["TWP_AUTO_UPDATE_WORKER"]==="1"){const{runAutoUpdateWorker}=await import("./auto-update-worker-VG77U4UA.js");await runAutoUpdateWorker().catch(()=>void 0);return}const[first,...rest]=process.argv.slice(2);if(first==="__complete"||first==="completion"){const completion=await import("./completion-RL6VCPB5.js");if(first==="completion"){process.exitCode=completion.runCompletion(rest,process.stdout,process.stderr);return}
1355
- const[{loadDomain},{loadUserConfig}]=await Promise.all([import("./registry-GUS42T5G.js"),import("./config-3CNEQ7KN.js")]);process.exitCode=await completion.runComplete(rest,process.stdout,{loadDomain,profileNames:()=>Object.keys(loadUserConfig().profiles??{})});return}if(first==="configure"){const autoUpdate2=await import("./auto-update-YMI3F44R.js");autoUpdate2.registerRunning();autoUpdate2.onStartup(VERSION);const{runConfigure}=await import("./configure-3H3CGGBI.js");process.exitCode=
1394
+ `);process.exit(1)}ignoreEpipe(process.stdout);ignoreEpipe(process.stderr);if(process.env["TWP_AUTO_UPDATE_WORKER"]==="1"){const{runAutoUpdateWorker}=await import("./auto-update-worker-6K24JYLQ.js");await runAutoUpdateWorker().catch(()=>void 0);return}const[first,...rest]=process.argv.slice(2);if(first==="__complete"||first==="completion"){const completion=await import("./completion-C6ZQCDT2.js");if(first==="completion"){process.exitCode=completion.runCompletion(rest,process.stdout,process.stderr);return}
1395
+ const[{loadDomain},{loadUserConfig}]=await Promise.all([import("./registry-TFHSCQK3.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=
1356
1396
  await runConfigure(rest);return}const args=parseArgv(process.argv.slice(2));if(args.command==="version"){process.stdout.write(`${VERSION}
1357
- `);return}if(args.command==="help"){process.stdout.write(HELP);return}if(args.unknown.length>0){process.stderr.write(`\u4E0D\u660E\u306A\u5F15\u6570: ${args.unknown.join(" ")}
1397
+ `);return}if(args.command==="help"){process.stdout.write(HELP);return}if(args.movedCommand!==void 0){const{MOVED_QUEUE_COMMAND_MESSAGE}=await import("./dispatch-HHWTJ3P4.js");process.stderr.write(MOVED_QUEUE_COMMAND_MESSAGE);process.exitCode=2;return}if(args.unknown.length>0){process.stderr.write(`\u4E0D\u660E\u306A\u5F15\u6570: ${args.unknown.join(" ")}
1358
1398
 
1359
- ${HELP}`);process.exitCode=2;return}const autoUpdate=await import("./auto-update-YMI3F44R.js");autoUpdate.registerRunning();if(args.command==="task-loop"&&args.taskLoopAction!=="capacity"){process.env[autoUpdate.DISABLE_ENV]="1"}else if(args.command!=="update"){autoUpdate.onStartup(VERSION)}if(args.command==="domain"&&args.domain!==void 0){const{runDomain}=await import("./run-DKDJACXL.js");process.exitCode=await runDomain({domain:args.domain,...args.operation!==void 0?{operation:args.operation}:
1360
- {},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-D3H2QWSH.js");process.exitCode=await runApiCommand({argv:args.domainArgv,help:args.domainHelp,globals:{...args.profile!==void 0?{profile:args.
1361
- profile}:{},...args.output!==void 0?{output:args.output}:{},...args.query!==void 0?{query:args.query}:{},dryRun:args.dryRun,debug:args.debug,yes:args.yes},version:VERSION});return}if(args.command==="update"){const{runUpdate}=await import("./update-NCAVUXSX.js");process.exitCode=await runUpdate({...args.profile!==void 0?{profile:args.profile}:{},version:VERSION});return}if(args.command==="login"||args.command==="logout"||args.command==="whoami"){const{runLogin,runLogout,runWhoami}=await import("./commands-YJU4HHPP.js");
1362
- 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-445XWMKY.js");process.exitCode=await runTaskLoop(
1399
+ ${HELP}`);process.exitCode=2;return}const autoUpdate=await import("./auto-update-FXXQHBV5.js");autoUpdate.registerRunning();if(args.command==="task-loop"&&args.taskLoopAction!=="capacity"){process.env[autoUpdate.DISABLE_ENV]="1"}else if(args.command!=="update"){autoUpdate.onStartup(VERSION)}if(args.command==="domain"&&args.domain!==void 0){const{runDomain}=await import("./run-EO7J3QYK.js");process.exitCode=await runDomain({domain:args.domain,...args.operation!==void 0?{operation:args.operation}:
1400
+ {},argv:args.domainArgv,help:args.domainHelp,globals:{...args.profile!==void 0?{profile:args.profile}:{},...args.output!==void 0?{output:args.output}:{},...args.query!==void 0?{query:args.query}:{},dryRun:args.dryRun,debug:args.debug,yes:args.yes,refresh:args.refresh},version:VERSION});return}if(args.command==="api"){const{runApiCommand}=await import("./api-command-Y6J7EAOT.js");process.exitCode=await runApiCommand({argv:args.domainArgv,help:args.domainHelp,globals:{...args.profile!==void 0?{profile:args.
1401
+ profile}:{},...args.output!==void 0?{output:args.output}:{},...args.query!==void 0?{query:args.query}:{},dryRun:args.dryRun,debug:args.debug,yes:args.yes},version:VERSION});return}if(args.command==="update"){const{runUpdate}=await import("./update-7GYGZEK3.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-ZIRZVBH6.js");
1402
+ const options={profile:args.profile,method:args.loginMethod,tenant:args.tenant,noBrowser:args.loginNoBrowser,cliVersion:VERSION,force:args.logoutForce,...args.output!==void 0?{output:args.output}:{},...args.query!==void 0?{query:args.query}:{}};const runner=args.command==="login"?runLogin:args.command==="logout"?runLogout:runWhoami;process.exitCode=await runner(options);return}if(args.command==="task-loop"){const{runTaskLoop}=await import("./commands-UDG7E3X3.js");process.exitCode=await runTaskLoop(
1363
1403
  {action:args.taskLoopAction??"run",project:args.project,profile:args.profile,safe:args.safe,daemon:args.daemon,interval:args.interval,maxCycles:args.maxCycles,forceRunner:args.forceRunner,force:args.stopForce,drain:args.stopDrain,engine:args.engine,version:VERSION,verbose:args.verbose,scheduleNow:args.scheduleNow,scheduleCounts:args.scheduleCounts,scheduleGate:args.scheduleGate,scheduleOp:args.scheduleOp,scheduleConfigOp:args.scheduleConfigOp,scheduleId:args.scheduleId,charterOp:args.charterOp,charterInput:args.
1364
- 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,planEmpty:args.planEmpty,planCheck:args.planCheck,yes:args.yes,ais:args.ais,workspace:args.workspace,aiConfigFile:args.aiConfigFile,noAiConfigFile:args.
1365
- noAiConfigFile});return}if(args.command==="print"){const{runOneShot}=await import("./oneshot-GF6TO7AH.js");process.exitCode=await runOneShot({prompt:args.prompt??"",fromStdin:args.promptFromStdin,mode:args.mode??"dev",...args.permissionMode!==void 0?{permissionMode:args.permissionMode}:{},allowedTools:args.allowedTools,disallowedTools:args.disallowedTools,...args.model!==void 0?{model:args.model}:{},...args.profile!==void 0?{profile:args.profile}:{},version:VERSION});return}const{startTui}=await import("./app-LH2Z63XY.js");
1366
- 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();
1404
+ charterFile,charterOutput:args.charterOut,charterRevision:args.charterRevision,settingsOp:args.settingsOp,skillOp:args.skillOp,skillName:args.skillName,skillAll:args.skillAll,skillDir:args.skillDir,skillConfig:args.skillConfig,output:args.output,query:args.query,revisionFrom:args.revisionFrom,revisionTo:args.revisionTo,planOp:args.planOp,capacityOp:args.capacityOp,runnerOp:args.runnerOp,runnerId:args.runnerTargetId,planEmpty:args.planEmpty,planCheck:args.planCheck,yes:args.yes,ais:args.ais,workspace:args.
1405
+ workspace,aiConfigFile:args.aiConfigFile,noAiConfigFile:args.noAiConfigFile});return}if(args.command==="print"){const{runOneShot}=await import("./oneshot-EAXT2LLB.js");process.exitCode=await runOneShot({prompt:args.prompt??"",fromStdin:args.promptFromStdin,mode:args.mode??"dev",...args.permissionMode!==void 0?{permissionMode:args.permissionMode}:{},allowedTools:args.allowedTools,disallowedTools:args.disallowedTools,...args.model!==void 0?{model:args.model}:{},...args.profile!==void 0?{profile:args.
1406
+ profile}:{},version:VERSION});return}const{startTui}=await import("./app-YVRIMXZY.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();
@@ -1,11 +1,11 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{EngineNotConfiguredError,NoopEngine,UnknownEngineError,aiUnavailableLabel,assertKnownEngine,failureHint,isAiUnavailable,needsHumanToRestoreAi}from"./chunk-ZOOEH7ZE.js";import{claudeConfigDir,resolveDetectDeps}from"./chunk-5SONMN6K.js";import{ScheduleApi,collectDue,gateStatus,nowInZone,parseCounts,promptSection}from"./chunk-IIK77LSC.js";import{InstanceLock,buildLockOwner,defaultIsLoopProcess,writeLockOwner}from"./chunk-3WHC4FSG.js";import{LoopSettingsApplier,renderStepBudget}from"./chunk-47C3XM23.js";
4
- import{ServerSkillCatalog,formatSkillOrigins}from"./chunk-QGRBZ2C2.js";import"./chunk-MYBIPHZ7.js";import"./chunk-A4LFG7MW.js";import{NO_PLAN_SESSION,RECENT_ADVANCE_WINDOW_HOURS,ReleaseOutcomeLog,buildDynamicBlocks,buildRecentCandidateIndex,createItem,enqueueBlockerRecovery,enqueueDevVerifyForMerged,enqueueReleasePartialMergeRerun,enqueueReleasePhase5Recovery,fileSkillNames,findRecentCandidate,formatInflightEntry,formatPlanResultLine,formatRecentAdvance,inflightEntries,inflightStaleHours,
5
- openPlanSession,parseOutcomeCode,parseReleaseResult,parseTaskStatusSnapshot,pendingTaskKeys,resolveRecentAdvance,shouldSuppressForStatus,staleFloorHours,unavailableChecks,windowStartMicros}from"./chunk-RMOBVFPJ.js";import"./chunk-VRBI2NPI.js";import{duplicateTaskKeyDropReason,excludedKeyInArgs,extractPlanJson,parseOpsCount,parsePlanExcludeKeys,placeholderTaskKey,releaseDeployDropReason,stepToItem,zeroTargetDropReasons}from"./chunk-QGJYT4NH.js";import{redactLoopOutput}from"./chunk-JUJSF5ZG.js";
6
- import{buildLoopConfig,evaluateOwnership,exportStateDirEnv,localConfigPath,loopStateDir}from"./chunk-6SAHK3OR.js";import{CapacityReporter}from"./chunk-VYDPW2YO.js";import{exclusiveInflightEntries,formatExclusiveEntry,normalizeSkillName,spawnSyncResolved}from"./chunk-FABDZBDZ.js";import{describeOperations,evaluatePlanGate,planGateStatePath,recordPlanned}from"./chunk-XMPHGOW4.js";import{formatHookIds,formatHookWiring,runHook,runPrefetch,runPreflight}from"./chunk-TTST7UDR.js";
3
+ import{ScheduleApi,collectDue,gateStatus,nowInZone,parseCounts,promptSection}from"./chunk-IIK77LSC.js";import{NO_PLAN_SESSION,RECENT_ADVANCE_WINDOW_HOURS,ReleaseOutcomeLog,buildDynamicBlocks,buildRecentCandidateIndex,createItem,enqueueBlockerRecovery,enqueueDevVerifyForMerged,enqueueReleasePartialMergeRerun,enqueueReleasePhase5Recovery,fileSkillNames,findRecentCandidate,formatInflightEntry,formatPlanResultLine,formatRecentAdvance,inflightEntries,inflightStaleHours,openPlanSession,parseOutcomeCode,
4
+ parseReleaseResult,parseTaskStatusSnapshot,pendingTaskKeys,resolveRecentAdvance,shouldSuppressForStatus,staleFloorHours,unavailableChecks,windowStartMicros}from"./chunk-YV65V2F6.js";import{EngineNotConfiguredError,NoopEngine,UnknownEngineError,aiUnavailableLabel,assertKnownEngine,failureHint,isAiUnavailable,needsHumanToRestoreAi}from"./chunk-ZOOEH7ZE.js";import{ServerSkillCatalog,formatSkillOrigins}from"./chunk-QGRBZ2C2.js";import{claudeConfigDir,resolveDetectDeps}from"./chunk-5SONMN6K.js";
5
+ import{InstanceLock,buildLockOwner,defaultIsLoopProcess,writeLockOwner}from"./chunk-3WHC4FSG.js";import{LoopSettingsApplier,renderStepBudget}from"./chunk-5YJAT7HE.js";import"./chunk-MYBIPHZ7.js";import"./chunk-A4LFG7MW.js";import"./chunk-VRBI2NPI.js";import{duplicateTaskKeyDropReason,excludedKeyInArgs,extractPlanJson,parseOpsCount,parsePlanExcludeKeys,placeholderTaskKey,releaseDeployDropReason,stepToItem,zeroTargetDropReasons}from"./chunk-QGJYT4NH.js";import{redactLoopOutput}from"./chunk-JUJSF5ZG.js";
6
+ import{buildLoopConfig,evaluateOwnership,exportStateDirEnv,localConfigPath,loopStateDir}from"./chunk-RCUI6WWU.js";import{describeOperations,evaluatePlanGate,planGateStatePath,recordPlanned}from"./chunk-XMPHGOW4.js";import{CapacityReporter}from"./chunk-VYDPW2YO.js";import{formatHookIds,formatHookWiring,runHook,runPrefetch,runPreflight}from"./chunk-TTST7UDR.js";import{exclusiveInflightEntries,formatExclusiveEntry,normalizeSkillName,spawnSyncResolved}from"./chunk-FABDZBDZ.js";
7
7
  import{setSkillPrefix,skillCommand,skillFromPrompt,stripSkillCommand}from"./chunk-6CS5L24D.js";import{killProcessTree}from"./chunk-N2UVRM3Z.js";import{AgentLoopApi,describeError,filterByStatus,isPermanent,pick,pickString}from"./chunk-O52RKZCC.js";import"./chunk-LDBYJPRD.js";import{PRIVATE_PROJECT_REF,isPrivateProjectId,isPrivateProjectRef,privateProjectId,projectFileKey}from"./chunk-RMFLTSOV.js";import{ULID_RE,loopProjectIdPolicy,resolveProjectRef}from"./chunk-HVZUXLQ4.js";
8
- import"./chunk-II5RVJQN.js";import"./chunk-VFPY2A23.js";import{joinFor}from"./chunk-PMOUHEJQ.js";import{AuthSession}from"./chunk-XNLIEUAW.js";import{httpFetch}from"./chunk-J7QYPKVK.js";import{compareVersionCores,parseVersionCore}from"./chunk-DXXFUNYN.js";import"./chunk-5WGOHFAS.js";import{effectiveApiUrl,resolveProfile}from"./chunk-4VZKNEVN.js";import{twpHomeDir}from"./chunk-RZVI6PMW.js";import{stripTerminalControls}from"./chunk-NHYMHCAT.js";
8
+ import"./chunk-II5RVJQN.js";import"./chunk-VFPY2A23.js";import{joinFor}from"./chunk-PMOUHEJQ.js";import{AuthSession}from"./chunk-XNLIEUAW.js";import{httpFetch}from"./chunk-J7QYPKVK.js";import{compareVersionCores,parseVersionCore}from"./chunk-DXXFUNYN.js";import"./chunk-5WGOHFAS.js";import{effectiveApiUrl,resolveProfile}from"./chunk-EDF4U5BT.js";import{twpHomeDir}from"./chunk-RZVI6PMW.js";import{stripTerminalControls}from"./chunk-NHYMHCAT.js";
9
9
  import"./chunk-VSJBJXZO.js";import fs9 from"fs";import path7 from"path";import fs from"fs";import path from"path";var LoopLogger=class{constructor(runnerId,logFile,out=process.stdout,now=()=>new Date){this.runnerId=runnerId;this.out=out;this.now=now;if(logFile){fs.mkdirSync(path.dirname(logFile),{recursive:true});this.stream=fs.createWriteStream(logFile,{flags:"a"})}}runnerId;out;now;stream=null;log(message){const d=this.now();const ts=`${d.getFullYear()}-${pad(d.getMonth()+1)}-${pad(d.getDate())} ${pad(d.getHours())}:${pad(d.getMinutes())}:${pad(d.getSeconds())}`;const line=`[${ts}] [${this.runnerId}] ${stripTerminalControls(
10
10
  message)}
11
11
  `;this.out.write(line);this.stream?.write(line)}separator(){this.log("=".repeat(60))}close(){this.stream?.end();this.stream=null}};function pad(n){return String(n).padStart(2,"0")}function rotateLogs(dir,retentionDays,now=Date.now()){if(retentionDays<=0)return;const cutoff=now-retentionDays*864e5;let entries;try{entries=fs.readdirSync(dir)}catch{return}for(const name of entries){if(!/^(agent-loop|task-loop|step|plan|schedule-enqueued)-.*\.(log|txt)$/.test(name))continue;const file=path.join(dir,
@@ -290,25 +290,25 @@ const startedAtMs=now();let warned="";let done=false;const check=()=>{if(done)re
290
290
  decision.key)return;warned=decision.key;handlers.onWarn(decision.reason);return}done=true;const recorded=writeRestartAttempt(opts.stateDir,opts.projectKey,{from:decision.from,to:decision.to,at:new Date(now()).toISOString()},opts.store);if(!recorded){handlers.onWarn(`\u518D\u8D77\u52D5\u8A18\u9332\u3092\u66F8\u3051\u307E\u305B\u3093\u3067\u3057\u305F\uFF08${restartAttemptPath(opts.stateDir,opts.projectKey)}\uFF09\u3002\u540C\u3058\u7248\u30C9\u30EA\u30D5\u30C8\u304C\u89E3\u6D88\u3057\u306A\u3044\u5834\u5408\u3001\u518D\u8D77\u52D5\u3092\u7E70\u308A\u8FD4\u3059\u9632\u6CE2\u5824\u304C\u52B9\u304D\u307E\u305B\u3093`)}
291
291
  handlers.onRestart({from:decision.from,to:decision.to})};const timer=setInterval(check,opts.intervalMs??DRIFT_POLL_MS);timer.unref?.();return{stop:()=>{done=true;clearInterval(timer)},check}}import fs8 from"fs";import path6 from"path";var POLL_MS=1e3;var MAX_STOP_BYTES=4096;var MAX_AT_LENGTH=64;function markerPath(lockDir2,kind){return path6.join(lockDir2,kind)}function requestMarker(lockDir2,kind,pid,deps={}){const target=markerPath(lockDir2,kind);const write=deps.writeFileSync??((p,d)=>fs8.writeFileSync(p,d,{flag:"wx",mode:384}));const now=deps.now??(()=>new Date);clearMarker(lockDir2,kind,deps);try{write(target,`${JSON.stringify({pid,at:now().toISOString()})}
292
292
  `);return{ok:true}}catch(err){const e=err;return{ok:false,reason:e.code??"UNKNOWN"}}}function readMarker(lockDir2,kind,deps={}){const target=markerPath(lockDir2,kind);const read=deps.readFileSync??(p=>fs8.readFileSync(p,"utf8"));const size=deps.statSize??(p=>fs8.statSync(p).size);let raw;try{if(size(target)>MAX_STOP_BYTES)return null;raw=read(target)}catch{return null}if(raw.length>MAX_STOP_BYTES)return null;try{const parsed=JSON.parse(raw);if(typeof parsed!=="object"||parsed===null)return null;const pid=parsed.pid;const at=parsed.at;if(typeof pid!=="number"||!Number.isInteger(pid)||
293
- pid<=0)return null;return{pid,at:sanitizeAt(at)}}catch{return null}}function sanitizeAt(at){if(typeof at!=="string")return"";return at.replace(/[\u0000-\u001f\u007f]/g," ").slice(0,MAX_AT_LENGTH)}function clearMarker(lockDir2,kind,deps={}){const rm=deps.rmSync??(p=>fs8.rmSync(p,{recursive:true,force:true}));try{rm(markerPath(lockDir2,kind))}catch{}}function watchMarker(lockDir2,kind,selfPid,onStop,deps={}){let fired=false;const timer=setInterval(()=>{if(fired)return;const req=readMarker(lockDir2,kind,deps);if(req===null||req.pid!==selfPid)return;fired=true;onStop(req)},deps.intervalMs??POLL_MS);timer.unref?.();return()=>{fired=true;clearInterval(timer)}}function safe(s){return stripTerminalControls(s)}function compactTimestamp(at=new Date){const p2=n=>String(n).padStart(2,"0");return`${at.getFullYear()}${p2(at.getMonth()+1)}${p2(at.getDate())}-${p2(at.getHours())}${p2(at.getMinutes())}${p2(at.getSeconds())}`}async function buildEngine(config,log){if(config.engine==="noop")return new NoopEngine;const{DispatchEngine}=await import("./ai-dispatch-U2MEAOHY.js");const{DEFAULT_PREFLIGHT_HOSTS}=await import("./ai-dispatch-U2MEAOHY.js");const extraHosts=config.
293
+ pid<=0)return null;return{pid,at:sanitizeAt(at)}}catch{return null}}function sanitizeAt(at){if(typeof at!=="string")return"";return at.replace(/[\u0000-\u001f\u007f]/g," ").slice(0,MAX_AT_LENGTH)}function clearMarker(lockDir2,kind,deps={}){const rm=deps.rmSync??(p=>fs8.rmSync(p,{recursive:true,force:true}));try{rm(markerPath(lockDir2,kind))}catch{}}function watchMarker(lockDir2,kind,selfPid,onStop,deps={}){let fired=false;const timer=setInterval(()=>{if(fired)return;const req=readMarker(lockDir2,kind,deps);if(req===null||req.pid!==selfPid)return;fired=true;onStop(req)},deps.intervalMs??POLL_MS);timer.unref?.();return()=>{fired=true;clearInterval(timer)}}function safe(s){return stripTerminalControls(s)}function compactTimestamp(at=new Date){const p2=n=>String(n).padStart(2,"0");return`${at.getFullYear()}${p2(at.getMonth()+1)}${p2(at.getDate())}-${p2(at.getHours())}${p2(at.getMinutes())}${p2(at.getSeconds())}`}async function buildEngine(config,log){if(config.engine==="noop")return new NoopEngine;const{DispatchEngine}=await import("./ai-dispatch-DJ5JT5BE.js");const{DEFAULT_PREFLIGHT_HOSTS}=await import("./ai-dispatch-DJ5JT5BE.js");const extraHosts=config.
294
294
  operations.preflightHosts;return new DispatchEngine(config.ai,log,{workspace:config.workspace,charterFile:config.charterFile??void 0,charterEnabled:config.charterEnabled,...config.charterPrefix===null?{}:{charterPrefix:config.charterPrefix},...config.charterSuffix===null?{}:{charterSuffix:config.charterSuffix},serverPrompts:()=>config.serverPrompts??{},compileCommand:config.compileCommand??void 0,skillOverlayDir:path7.join(config.stateDir,"skill-overlay",projectFileKey(config.projectId)),launcherBin:config.
295
295
  claudeLauncher.bin,...extraHosts.length>0?{preflightHosts:[...DEFAULT_PREFLIGHT_HOSTS,...extraHosts]}:{}})}function lockDir(config){return path7.join(config.stateDir,`task-loop-${projectFileKey(config.projectId)}.lock.d`)}function runnerIdPersisted(stateDir,env=process.env){if((env.RUNNER_ID?.trim()??"")!=="")return true;const file=env.RUNNER_ID_FILE&&env.RUNNER_ID_FILE.trim()!==""?env.RUNNER_ID_FILE:path7.join(stateDir,"runner-id");return fs9.existsSync(file)}async function runTaskLoop(opts){if(opts.
296
- action==="stop")return await stopLoop(opts);if(opts.action==="plan"){if(opts.planOp!=="submit"){process.stderr.write("plan \u306B\u306F submit \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\n");return 2}const{runPlanSubmit}=await import("./plan-submit-7KDB74QH.js");return runPlanSubmit({file:opts.charterInput,empty:opts.planEmpty===true,check:opts.planCheck===true},{env:process.env,readStdin:()=>fs9.readFileSync(0,"utf8"),stdout:s=>process.stdout.write(s),stderr:s=>process.stderr.write(s)})}
296
+ action==="stop")return await stopLoop(opts);if(opts.action==="plan"){if(opts.planOp!=="submit"){process.stderr.write("plan \u306B\u306F submit \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\n");return 2}const{runPlanSubmit}=await import("./plan-submit-ELEIJM6I.js");return runPlanSubmit({file:opts.charterInput,empty:opts.planEmpty===true,check:opts.planCheck===true},{env:process.env,readStdin:()=>fs9.readFileSync(0,"utf8"),stdout:s=>process.stdout.write(s),stderr:s=>process.stderr.write(s)})}
297
297
  const profile=resolveProfile(opts.profile);let creds;try{creds=new AuthSession(profile.name,profile.apiUrl).loadOrThrow()}catch(err){process.stderr.write(`${err.message}
298
298
  `);return 1}const apiUrl=effectiveApiUrl(profile,creds.api_url);const session=new AuthSession(profile.name,apiUrl);const projectRef=opts.project??process.env.TWP_PROJECT??"";if(projectRef===""){process.stderr.write("--project <\u30AD\u30FC|UUID> \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08TWP_PROJECT \u3067\u3082\u53EF\uFF09\n");return 2}const projectApi=new ProjectApi(apiUrl,session);let project;try{project=await projectApi.resolve(projectRef)}catch(err){process.stderr.write(`${err.
299
299
  message}
300
- `);return 1}const projectId=project.id;if(opts.action==="setup"){const{runSetup,parseAiList}=await import("./setup-VPHP4HDM.js");let ais;if(opts.ais!==void 0&&opts.ais.length>0){const parsed=parseAiList(opts.ais.join(","));if(parsed.unknown.length>0){process.stderr.write(`--ai \u306B\u672A\u77E5\u306E\u5024\u304C\u3042\u308A\u307E\u3059: ${parsed.unknown.join(" / ")}
300
+ `);return 1}const projectId=project.id;if(opts.action==="setup"){const{runSetup,parseAiList}=await import("./setup-FMSAHRGZ.js");let ais;if(opts.ais!==void 0&&opts.ais.length>0){const parsed=parseAiList(opts.ais.join(","));if(parsed.unknown.length>0){process.stderr.write(`--ai \u306B\u672A\u77E5\u306E\u5024\u304C\u3042\u308A\u307E\u3059: ${parsed.unknown.join(" / ")}
301
301
  `);return 2}ais=parsed.ais}return runSetup({projectId,projectRef,projectName:project.name===project.id?projectRef:`${project.code} / ${project.name}`,apiUrl,yes:opts.yes===true,...ais!==void 0?{ais}:{},...opts.workspace!==void 0?{workspace:opts.workspace}:{},...opts.aiConfigFile!==void 0?{aiConfigFile:opts.aiConfigFile}:{},...opts.noAiConfigFile===true?{noAiConfigFile:true}:{},...opts.profile!==void 0?{profile:opts.profile}:{}})}if(opts.action==="charter"){if(opts.charterOp===void 0){process.stderr.
302
302
  write("charter \u306B\u306F push / pull / history / diff / revert \u306E\u3044\u305A\u308C\u304B\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\n");return 2}if(isPrivateProjectId(projectId)){process.stderr.write("\u500B\u4EBA\u30BF\u30B9\u30AF\u306E\u30AD\u30E5\u30FC\uFF08--project __private__\uFF09\u306B\u306F\u61B2\u7AE0\u306E\u8A2D\u5B9A\u304C\u3042\u308A\u307E\u305B\u3093\n");return 2}if(opts.charterOp!=="push"&&opts.charterOp!=="pull"){const{runRevisionCommand}=await import("./revision-command-KT7NMRES.js");
303
303
  return runRevisionCommand({api:new AgentLoopApi({apiUrl,projectId,session})},{target:"charter",op:opts.charterOp,from:opts.revisionFrom,to:opts.revisionTo,revision:opts.charterRevision,yes:opts.yes===true,projectRef,profile:opts.profile})}const{runCharterCommand}=await import("./charter-command-A4MFFBGE.js");return runCharterCommand({api:new AgentLoopApi({apiUrl,projectId,session})},{op:opts.charterOp,file:opts.charterInput,out:opts.charterOutput,revision:opts.charterRevision,yes:opts.yes===true,projectRef,
304
- profile:opts.profile})}if(opts.action==="schedule"&&opts.scheduleOp!==void 0){const{runScheduleDefCommand}=await import("./schedule-def-command-OFCA5VH3.js");return runScheduleDefCommand({api:new AgentLoopApi({apiUrl,projectId,session})},{op:opts.scheduleOp,configOp:opts.scheduleConfigOp,id:opts.scheduleId,file:opts.charterInput,out:opts.charterOutput,revision:opts.charterRevision,yes:opts.yes===true,projectRef,profile:opts.profile})}if(opts.action==="settings"){if(opts.settingsOp===void 0){process.stderr.
305
- write("settings \u306B\u306F push / pull \u306E\u3044\u305A\u308C\u304B\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\n");return 2}if(isPrivateProjectId(projectId)){process.stderr.write("\u500B\u4EBA\u30BF\u30B9\u30AF\u306E\u30AD\u30E5\u30FC\uFF08--project __private__\uFF09\u306B\u306F\u30EB\u30FC\u30D7\u8A2D\u5B9A\u304C\u3042\u308A\u307E\u305B\u3093\n");return 2}const{runSettingsCommand}=await import("./settings-command-TEVH2MNY.js");return runSettingsCommand({api:new AgentLoopApi({apiUrl,projectId,
306
- session})},{op:opts.settingsOp,file:opts.charterInput,out:opts.charterOutput,revision:opts.charterRevision,yes:opts.yes===true,projectRef,profile:opts.profile})}if(opts.action==="skill"){if(opts.skillOp===void 0){process.stderr.write("skill \u306B\u306F push / pull / list / show / delete / history / diff / revert / check \u306E\u3044\u305A\u308C\u304B\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\n");return 2}if(isPrivateProjectId(projectId)){process.stderr.write("\u500B\u4EBA\u30BF\u30B9\u30AF\u306E\u30AD\u30E5\u30FC\uFF08--project __p\
307
- rivate__\uFF09\u306B\u306F\u30B9\u30AD\u30EB\u5B9A\u7FA9\u306E\u8A2D\u5B9A\u304C\u3042\u308A\u307E\u305B\u3093\n");return 2}if(opts.skillOp==="check"){const{runSkillCheck}=await import("./skill-check-CKLMW2AJ.js");return runSkillCheck({api:new AgentLoopApi({apiUrl,projectId,session})},{configPath:opts.skillConfig,defaultConfigPath:localConfigPath(projectId),output:opts.output})}if(opts.skillOp==="list"||opts.skillOp==="show"||opts.skillOp==="delete"){const{runSkillManageCommand}=await import("./skill-manage-command-QYJLCLDK.js");
308
- return runSkillManageCommand({api:new AgentLoopApi({apiUrl,projectId,session})},{op:opts.skillOp,name:opts.skillName,output:opts.output,query:opts.query,revision:opts.charterRevision,yes:opts.yes===true,projectRef,profile:opts.profile})}if(opts.skillOp!=="push"&&opts.skillOp!=="pull"){const{runRevisionCommand}=await import("./revision-command-KT7NMRES.js");return runRevisionCommand({api:new AgentLoopApi({apiUrl,projectId,session})},{target:"skill",op:opts.skillOp,name:opts.skillName,from:opts.revisionFrom,
309
- to:opts.revisionTo,revision:opts.charterRevision,yes:opts.yes===true,projectRef,profile:opts.profile})}const{runSkillCommand}=await import("./skill-command-4VMZ2H6A.js");return runSkillCommand({api:new AgentLoopApi({apiUrl,projectId,session})},{op:opts.skillOp,name:opts.skillName,all:opts.skillAll===true,dir:opts.skillDir,revision:opts.charterRevision,yes:opts.yes===true,projectRef,profile:opts.profile})}const config=buildLoopConfig({projectId,projectRef,apiUrl,safeMode:opts.safe,daemon:opts.daemon,
310
- ...opts.maxCycles!==void 0?{maxCycles:opts.maxCycles}:{},...opts.interval!==void 0?{intervalSec:opts.interval}:{},forceRunner:opts.forceRunner,...opts.engine!==void 0?{engine:opts.engine}:{},version:opts.version});const api=new AgentLoopApi({apiUrl,projectId,session});if(opts.action==="capacity"){if(opts.capacityOp!=="report"){process.stderr.write("capacity \u306B\u306F report \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\n");return 2}for(const warning of config.warnings)process.stderr.
311
- write(`\u26A0\uFE0F ${warning}
304
+ profile:opts.profile})}if(opts.action==="runner"){if(opts.runnerOp===void 0){process.stderr.write("runner \u306B\u306F list / remove \u306E\u3044\u305A\u308C\u304B\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\n");return 2}const{runRunnerCommand}=await import("./runner-command-SRPMAC5S.js");return runRunnerCommand({api:new AgentLoopApi({apiUrl,projectId,session})},{op:opts.runnerOp,runnerId:opts.runnerId,output:opts.output,query:opts.query,yes:opts.yes===true,projectRef,profile:opts.profile})}
305
+ if(opts.action==="schedule"&&opts.scheduleOp!==void 0){const{runScheduleDefCommand}=await import("./schedule-def-command-OFCA5VH3.js");return runScheduleDefCommand({api:new AgentLoopApi({apiUrl,projectId,session})},{op:opts.scheduleOp,configOp:opts.scheduleConfigOp,id:opts.scheduleId,file:opts.charterInput,out:opts.charterOutput,revision:opts.charterRevision,yes:opts.yes===true,projectRef,profile:opts.profile})}if(opts.action==="settings"){if(opts.settingsOp===void 0){process.stderr.write("settings \u306B\u306F pu\
306
+ sh / pull \u306E\u3044\u305A\u308C\u304B\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\n");return 2}if(isPrivateProjectId(projectId)){process.stderr.write("\u500B\u4EBA\u30BF\u30B9\u30AF\u306E\u30AD\u30E5\u30FC\uFF08--project __private__\uFF09\u306B\u306F\u30EB\u30FC\u30D7\u8A2D\u5B9A\u304C\u3042\u308A\u307E\u305B\u3093\n");return 2}const{runSettingsCommand}=await import("./settings-command-TEVH2MNY.js");return runSettingsCommand({api:new AgentLoopApi({apiUrl,projectId,session})},{op:opts.settingsOp,
307
+ file:opts.charterInput,out:opts.charterOutput,revision:opts.charterRevision,yes:opts.yes===true,projectRef,profile:opts.profile})}if(opts.action==="skill"){if(opts.skillOp===void 0){process.stderr.write("skill \u306B\u306F push / pull / list / show / delete / history / diff / revert / check \u306E\u3044\u305A\u308C\u304B\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\n");return 2}if(isPrivateProjectId(projectId)){process.stderr.write("\u500B\u4EBA\u30BF\u30B9\u30AF\u306E\u30AD\u30E5\u30FC\uFF08--project __private__\uFF09\u306B\u306F\u30B9\u30AD\u30EB\u5B9A\u7FA9\u306E\u8A2D\u5B9A\u304C\u3042\u308A\u307E\u305B\u3093\n");
308
+ return 2}if(opts.skillOp==="check"){const{runSkillCheck}=await import("./skill-check-CKLMW2AJ.js");return runSkillCheck({api:new AgentLoopApi({apiUrl,projectId,session})},{configPath:opts.skillConfig,defaultConfigPath:localConfigPath(projectId),output:opts.output})}if(opts.skillOp==="list"||opts.skillOp==="show"||opts.skillOp==="delete"){const{runSkillManageCommand}=await import("./skill-manage-command-UOWZCF6R.js");return runSkillManageCommand({api:new AgentLoopApi({apiUrl,projectId,session})},{op:opts.
309
+ skillOp,name:opts.skillName,output:opts.output,query:opts.query,revision:opts.charterRevision,yes:opts.yes===true,projectRef,profile:opts.profile})}if(opts.skillOp!=="push"&&opts.skillOp!=="pull"){const{runRevisionCommand}=await import("./revision-command-KT7NMRES.js");return runRevisionCommand({api:new AgentLoopApi({apiUrl,projectId,session})},{target:"skill",op:opts.skillOp,name:opts.skillName,from:opts.revisionFrom,to:opts.revisionTo,revision:opts.charterRevision,yes:opts.yes===true,projectRef,profile:opts.
310
+ profile})}const{runSkillCommand}=await import("./skill-command-4VMZ2H6A.js");return runSkillCommand({api:new AgentLoopApi({apiUrl,projectId,session})},{op:opts.skillOp,name:opts.skillName,all:opts.skillAll===true,dir:opts.skillDir,revision:opts.charterRevision,yes:opts.yes===true,projectRef,profile:opts.profile})}const config=buildLoopConfig({projectId,projectRef,apiUrl,safeMode:opts.safe,daemon:opts.daemon,...opts.maxCycles!==void 0?{maxCycles:opts.maxCycles}:{},...opts.interval!==void 0?{intervalSec:opts.
311
+ interval}:{},forceRunner:opts.forceRunner,...opts.engine!==void 0?{engine:opts.engine}:{},version:opts.version});const api=new AgentLoopApi({apiUrl,projectId,session});if(opts.action==="capacity"){if(opts.capacityOp!=="report"){process.stderr.write("capacity \u306B\u306F report \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\n");return 2}for(const warning of config.warnings)process.stderr.write(`\u26A0\uFE0F ${warning}
312
312
  `);const{runCapacityReport}=await import("./capacity-report-command-BUCAQ2P4.js");return runCapacityReport({api,projectId,runnerId:config.runnerId,stateDir:config.stateDir,cwd:config.workspace,probe:config.capacityProbe,runnerIdPersisted:runnerIdPersisted(config.stateDir),version:opts.version,platform:runnerPlatform(),stdout:s=>process.stdout.write(s),stderr:s=>process.stderr.write(s)})}if(opts.action==="status"||opts.action==="schedule"){for(const warning of config.warnings)process.stderr.write(`\u26A0\uFE0F ${warning}\
313
313
 
314
314
  `)}if(opts.action==="status")return showStatus(api,config,opts);if(opts.action==="schedule"){const{runScheduleCommand}=await import("./schedule-command-ZOE3NYAA.js");return runScheduleCommand({api,projectApi,config},{now:opts.scheduleNow,counts:opts.scheduleCounts,gate:opts.scheduleGate,verbose:opts.verbose===true})}if(config.engine===""){process.stderr.write(`${new EngineNotConfiguredError().message}
@@ -327,11 +327,11 @@ log.log("\u4E2D\u65AD\u30B7\u30B0\u30CA\u30EB\u3092\u53D7\u4FE1\u3057\u307E\u305
327
327
  "\u6642\u523B\u4E0D\u660E"}\uFF09\u3002\u7D42\u4E86\u3057\u307E\u3059...`);stopWatcher?.();drainWatcher?.();driftWatcher?.();void shutdown().catch(()=>void 0).then(()=>process.exit(130))});drainWatcher=watchMarker(lockDir(config),"drain",process.pid,req=>{drainWatcher?.();if(loop===null){pendingDrain.value={reason:`stop --drain\u30FB${req.at||"\u6642\u523B\u4E0D\u660E"}`,exitCode:0};log.log(`\u30C9\u30EC\u30A4\u30F3\u8981\u6C42\u3092\u53D7\u3051\u53D6\u308A\u307E\u3057\u305F\uFF08${req.at||"\u6642\u523B\u4E0D\u660E"}\
328
328
  \uFF09\u3002\u8D77\u52D5\u51E6\u7406\u306E\u5B8C\u4E86\u5F8C\u306B\u53CD\u6620\u3057\u307E\u3059\u3002`);return}loop.requestDrain(`stop --drain\u30FB${req.at||"\u6642\u523B\u4E0D\u660E"}`)});if(installed!==null){const watch=watchVersionDrift({runningVersion:opts.version,stateDir:config.stateDir,projectKey:projectFileKey(config.projectId),supervised:autoRestart.supervised,disabled:autoRestart.disabled},{onWarn:reason=>log.log(`\u26A0\uFE0F ${reason}`),onRestart:({from,to})=>{driftWatcher?.();log.
329
329
  log(`\u7248\u30C9\u30EA\u30D5\u30C8\u3092\u691C\u51FA\u3057\u307E\u3057\u305F\uFF08${from} \u2192 ${to}\uFF09\u3002`);log.log(` \u5B9F\u884C\u4E2D\u306E\u30A2\u30A4\u30C6\u30E0\u3092\u5B8C\u8D70\u3055\u305B\u3066\u304B\u3089\u7D42\u4E86\u3057\u307E\u3059\uFF08\u7D42\u4E86\u30B3\u30FC\u30C9 ${EXIT_VERSION_DRIFT}\uFF09\u3002\u518D\u8D77\u52D5\u306F systemd\uFF08Restart=always\uFF09\u304C\u884C\u3044\u307E\u3059`);const reason=`\u7248\u30C9\u30EA\u30D5\u30C8 ${from} \u2192 ${to} \u306B\u3088\u308B\u81EA\u52D5\u518D\u8D77\u52D5`;
330
- if(loop===null)pendingDrain.value={reason,exitCode:EXIT_VERSION_DRIFT};else loop.requestDrain(reason,EXIT_VERSION_DRIFT)}});driftWatcher=watch.stop}try{const{LoopSettingsApplier:LoopSettingsApplier2}=await import("./server-settings-CRH7UU45.js");const settings=new LoopSettingsApplier2({api,config,log:m=>log.log(m)});await settings.apply();const{ServerSkillCatalog:ServerSkillCatalog2}=await import("./server-skills-FVYYZ54O.js");const skills=new ServerSkillCatalog2({api,config,log:m=>log.log(m)});await skills.
330
+ if(loop===null)pendingDrain.value={reason,exitCode:EXIT_VERSION_DRIFT};else loop.requestDrain(reason,EXIT_VERSION_DRIFT)}});driftWatcher=watch.stop}try{const{LoopSettingsApplier:LoopSettingsApplier2}=await import("./server-settings-OB7JF757.js");const settings=new LoopSettingsApplier2({api,config,log:m=>log.log(m)});await settings.apply();const{ServerSkillCatalog:ServerSkillCatalog2}=await import("./server-skills-FVYYZ54O.js");const skills=new ServerSkillCatalog2({api,config,log:m=>log.log(m)});await skills.
331
331
  refresh();await runner.checkHeartbeatInterval();await runner.registerOrThrow();runner.startHeartbeatWorker();log.log(` heartbeat: ${config.heartbeatIntervalSec}\u79D2\u3054\u3068\u306B\u9001\u4FE1${runner.heartbeatTimeoutServer?`\uFF08\u30B5\u30FC\u30D0\u306E\u6B7B\u6D3B\u3057\u304D\u3044\u5024 ${runner.heartbeatTimeoutServer}\u79D2\uFF09`:""}`);loop=new TaskLoop({api,projectApi,config,log,runner,engine:await buildEngine(config,m=>log.log(m)),settings,skills});if(pendingDrain.value!==null){loop.
332
- requestDrain(pendingDrain.value.reason,pendingDrain.value.exitCode)}exitCode=await loop.run()}catch(err){if(err instanceof RunnerRegistrationError){exitCode=1}else{log.log(`\u26D4 \u4E88\u671F\u3057\u306A\u3044\u30A8\u30E9\u30FC\u3067\u7D42\u4E86\u3057\u307E\u3059: ${err.message}`);exitCode=1}}finally{await shutdown()}return exitCode}async function showStatus(api,config,opts){const{runStatusCommand}=await import("./status-command-3GA23BGD.js");const lock=lockDir(config);return runStatusCommand(api,
333
- {projectRef:config.projectRef,projectId:config.projectId,apiUrl:config.apiUrl,lockPath:lock,lockHeld:fs9.existsSync(lock)},{output:opts.output,query:opts.query},{out:s=>process.stdout.write(s),err:s=>process.stderr.write(s)})}var STOP_WAIT_MS=18e4;var STOP_POLL_MS=250;function defaultIsAlive(pid){try{process.kill(pid,0);return true}catch(err){return err.code==="EPERM"}}async function stopLoop(opts,deps={}){const platform=deps.platform??process.platform;const isLoopProcess=deps.isLoopProcess??defaultIsLoopProcess;
334
- const isAlive=deps.isAlive??defaultIsAlive;const waitMs=deps.waitMs??STOP_WAIT_MS;const pollMs=deps.pollMs??STOP_POLL_MS;const now=deps.now??Date.now;const nap=deps.sleep??(ms=>new Promise(r=>setTimeout(r,ms)));const request=deps.requestMarkerFn??requestMarker;const out=m=>void process.stdout.write(m);const err=m=>void process.stderr.write(m);if(opts.force&&opts.drain){err("\u26A0\uFE0F --force \u3068 --drain \u306F\u540C\u6642\u306B\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\uFF08\u8981\u6C42\u304C\u6B63\u53CD\u5BFE\u3067\u3059\uFF09\u3002\u3069\u3061\u3089\u3082\u5B9F\u884C\u3057\u307E\u305B\u3093\n");
332
+ requestDrain(pendingDrain.value.reason,pendingDrain.value.exitCode)}exitCode=await loop.run()}catch(err){if(err instanceof RunnerRegistrationError){exitCode=1}else{log.log(`\u26D4 \u4E88\u671F\u3057\u306A\u3044\u30A8\u30E9\u30FC\u3067\u7D42\u4E86\u3057\u307E\u3059: ${err.message}`);exitCode=1}}finally{await shutdown()}return exitCode}async function showStatus(api,config,opts){const{runStatusCommand}=await import("./status-command-C42CVQ3Q.js");const lock=lockDir(config);return runStatusCommand(api,
333
+ {projectRef:config.projectRef,projectId:config.projectId,apiUrl:config.apiUrl,lockPath:lock,lockHeld:fs9.existsSync(lock),profile:opts.profile},{output:opts.output,query:opts.query},{out:s=>process.stdout.write(s),err:s=>process.stderr.write(s)})}var STOP_WAIT_MS=18e4;var STOP_POLL_MS=250;function defaultIsAlive(pid){try{process.kill(pid,0);return true}catch(err){return err.code==="EPERM"}}async function stopLoop(opts,deps={}){const platform=deps.platform??process.platform;const isLoopProcess=deps.
334
+ isLoopProcess??defaultIsLoopProcess;const isAlive=deps.isAlive??defaultIsAlive;const waitMs=deps.waitMs??STOP_WAIT_MS;const pollMs=deps.pollMs??STOP_POLL_MS;const now=deps.now??Date.now;const nap=deps.sleep??(ms=>new Promise(r=>setTimeout(r,ms)));const request=deps.requestMarkerFn??requestMarker;const out=m=>void process.stdout.write(m);const err=m=>void process.stderr.write(m);if(opts.force&&opts.drain){err("\u26A0\uFE0F --force \u3068 --drain \u306F\u540C\u6642\u306B\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\uFF08\u8981\u6C42\u304C\u6B63\u53CD\u5BFE\u3067\u3059\uFF09\u3002\u3069\u3061\u3089\u3082\u5B9F\u884C\u3057\u307E\u305B\u3093\n");
335
335
  return 2}const stateDir=deps.stateDir??loopStateDir();let dirs;try{dirs=fs9.readdirSync(stateDir).filter(d=>/^task-loop-.*\.lock\.d$/.test(d))}catch{dirs=[]}if(opts.project){if(/^[0-9a-f-]{36}$/i.test(opts.project)||ULID_RE.test(opts.project)){dirs=dirs.filter(d=>d===`task-loop-${opts.project}.lock.d`)}else if(isPrivateProjectRef(opts.project)){dirs=dirs.filter(d=>d.startsWith("task-loop-private-"))}else{err(`\u26A0\uFE0F --project \u306F ID\uFF08UUID / ULID\uFF09\u6307\u5B9A\u306E\u3068\u304D\u3060\u3051\u7D5E\u308A\u8FBC\u3081\u307E\u3059\uFF08${safe(
336
336
  opts.project)} \u306F\u30AD\u30FC\u5F62\u5F0F\u306B\u898B\u3048\u307E\u3059\uFF09\u3002\u3053\u306E\u30DE\u30B7\u30F3\u306E task-loop ${dirs.length}\u4EF6\u3059\u3079\u3066\u3092\u5BFE\u8C61\u306B\u3057\u307E\u3059
337
337
  `)}}if(dirs.length===0){out("\u3053\u306E\u30DE\u30B7\u30F3\u3067\u7A3C\u50CD\u4E2D\u306E task-loop \u306F\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3067\u3057\u305F\u3002\n");return 0}const startedAt=now();const targets=[];for(const dir of dirs){const lockDirPath=path7.join(stateDir,dir);let pid;try{pid=Number.parseInt(fs9.readFileSync(path7.join(lockDirPath,"pid"),"utf8").trim(),10)}catch{continue}if(!Number.isInteger(pid)||pid<=0)continue;if(!isLoopProcess(pid)){out(`\u6B8B\u9AB8\u306E\u30ED\u30C3\u30AF\u3092\u691C\u51FA\u3057\u307E\u3057\u305F\uFF08pid=${pid}\
@@ -1,7 +1,7 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
3
  import{PromptAbortedError,promptHidden,promptText}from"./chunk-L37NS5L2.js";import{system32}from"./chunk-N2UVRM3Z.js";import{ApiError,TwpApiClient,errorListMessages}from"./chunk-JA5A6UJ2.js";import{EXIT_USAGE,UsageError}from"./chunk-VFPY2A23.js";import{isWindowsDriveAbsolute}from"./chunk-PMOUHEJQ.js";import{AuthSession,NotLoggedInError,SessionExpiredError,deleteCredentials,loadCredentials,maskToken,saveCredentials}from"./chunk-XNLIEUAW.js";import{httpFetch}from"./chunk-J7QYPKVK.js";
4
- import{effectiveApiUrl,resolveProfile}from"./chunk-4VZKNEVN.js";import"./chunk-RZVI6PMW.js";import{stripTerminalControls}from"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";import os from"os";import{createHash,randomBytes}from"crypto";function generatePkcePair(){const verifier=randomBytes(32).toString("base64url");return{verifier,challenge:computeChallenge(verifier),method:"S256"}}function computeChallenge(verifier){return createHash("sha256").update(verifier,"ascii").digest("base64url")}function generateState(){return randomBytes(16).toString("base64url")}import http from"http";import crypto from"crypto";function safeEqual(a,b){const x=Buffer.from(a,"utf8");const y=Buffer.from(b,"utf8");const len=Math.max(x.length,y.length,1);const px=Buffer.alloc(len);const py=Buffer.alloc(len);x.copy(px);y.copy(py);return crypto.timingSafeEqual(px,py)&&x.length===y.length}var LoginTimeoutError=class extends Error{constructor(timeoutMs){super(`\u30D6\u30E9\u30A6\u30B6\u3067\u306E\u627F\u8A8D\u3092 ${Math.round(timeoutMs/1e3)} \u79D2\u5F85\u3061\u307E\u3057\u305F\u304C\u5B8C\u4E86\u3057\u307E\u305B\u3093\u3067\u3057\u305F\u3002twp login \u3092\u3084\u308A\u76F4\u3057\u3066\u304F\u3060\u3055\
4
+ import{effectiveApiUrl,resolveProfile}from"./chunk-EDF4U5BT.js";import"./chunk-RZVI6PMW.js";import{stripTerminalControls}from"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";import os from"os";import{createHash,randomBytes}from"crypto";function generatePkcePair(){const verifier=randomBytes(32).toString("base64url");return{verifier,challenge:computeChallenge(verifier),method:"S256"}}function computeChallenge(verifier){return createHash("sha256").update(verifier,"ascii").digest("base64url")}function generateState(){return randomBytes(16).toString("base64url")}import http from"http";import crypto from"crypto";function safeEqual(a,b){const x=Buffer.from(a,"utf8");const y=Buffer.from(b,"utf8");const len=Math.max(x.length,y.length,1);const px=Buffer.alloc(len);const py=Buffer.alloc(len);x.copy(px);y.copy(py);return crypto.timingSafeEqual(px,py)&&x.length===y.length}var LoginTimeoutError=class extends Error{constructor(timeoutMs){super(`\u30D6\u30E9\u30A6\u30B6\u3067\u306E\u627F\u8A8D\u3092 ${Math.round(timeoutMs/1e3)} \u79D2\u5F85\u3061\u307E\u3057\u305F\u304C\u5B8C\u4E86\u3057\u307E\u305B\u3093\u3067\u3057\u305F\u3002twp login \u3092\u3084\u308A\u76F4\u3057\u3066\u304F\u3060\u3055\
5
5
  \u3044\u3002`)}};var SUCCESS_HTML=`<!doctype html><html lang="ja"><head><meta charset="utf-8"><title>TWP CLI \u30ED\u30B0\u30A4\u30F3\u5B8C\u4E86</title></head>
6
6
  <body style="font-family: sans-serif; text-align: center; padding-top: 4rem; background:#f7f9fc; color:#1b2559">
7
7
  <h1 style="font-size:1.4rem">\u2705 \u30ED\u30B0\u30A4\u30F3\u304C\u5B8C\u4E86\u3057\u307E\u3057\u305F</h1>
@@ -50,7 +50,7 @@ ${err.hint?`${err.hint}
50
50
  `);return 1}writeErr(`\u30A8\u30E9\u30FC: ${err.message}
51
51
  `);return 1}}async function runLogin(options){return run(async()=>{const profile=resolveProfile(options.profile);const io=makeIo(options.cliVersion);if(options.method==="password"){await passwordLogin(profile,{tenantCode:options.tenant??void 0},process.env,io)}else if(options.method==="token"){await tokenLogin(profile,process.env,io)}else{await browserLogin(profile,process.env,io,{noBrowser:options.noBrowser})}})}async function runLogout(options){return run(async()=>{const profile=resolveProfile(
52
52
  options.profile);const creds=loadCredentials(profile.name);if(!creds){writeOut(`\u30D7\u30ED\u30D5\u30A1\u30A4\u30EB\u300C${profile.name}\u300D\u306F\u30ED\u30B0\u30A4\u30F3\u3057\u3066\u3044\u307E\u305B\u3093\u3002
53
- `);return}const{describeLogoutImpact,findLoopsUsingProfile}=await import("./logout-guard-T3IAROLQ.js");const found=findLoopsUsingProfile(profile.name,options.logoutGuard);if(found.users.length>0||found.undetermined.length>0){writeErr(describeLogoutImpact(profile.name,found,options.force===true));if(options.force!==true)throw new LogoutRefusedError}const apiUrl=effectiveApiUrl(profile,creds.api_url);const revoked=await httpFetch(`${apiUrl}/api/v2/auth/logout`,{method:"POST",headers:{Accept:"applic\
53
+ `);return}const{describeLogoutImpact,findLoopsUsingProfile}=await import("./logout-guard-57LHDX6L.js");const found=findLoopsUsingProfile(profile.name,options.logoutGuard);if(found.users.length>0||found.undetermined.length>0){writeErr(describeLogoutImpact(profile.name,found,options.force===true));if(options.force!==true)throw new LogoutRefusedError}const apiUrl=effectiveApiUrl(profile,creds.api_url);const revoked=await httpFetch(`${apiUrl}/api/v2/auth/logout`,{method:"POST",headers:{Accept:"applic\
54
54
  ation/json",Authorization:`Bearer ${creds.token}`}}).then(res=>res.ok,()=>false);await deleteCredentials(profile.name);writeOut(`\u2705 \u30ED\u30B0\u30A2\u30A6\u30C8\u3057\u307E\u3057\u305F\uFF08\u30D7\u30ED\u30D5\u30A1\u30A4\u30EB: ${profile.name} / \u30C8\u30FC\u30AF\u30F3: ${maskToken(creds.token)}\uFF09
55
55
  `);if(!revoked){writeOut("\u26A0 \u30B5\u30FC\u30D0\u5074\u306E\u30C8\u30FC\u30AF\u30F3\u5931\u52B9\u306B\u5931\u6557\u3057\u307E\u3057\u305F\uFF08\u30AA\u30D5\u30E9\u30A4\u30F3\u7B49\uFF09\u3002TWP \u306E\u300C\u8A2D\u5B9A > CLI\u7AEF\u672B\u300D\u304B\u3089\u3082\u5931\u52B9\u3067\u304D\u307E\u3059\u3002\n")}})}async function runWhoami(options){return run(async()=>{const profile=resolveProfile(options.profile);const structured=options.output!==void 0||options.query!==void 0;let format=null;if(structured){
56
56
  const{resolveOutputFormat,OUTPUT_FORMATS}=await import("./format-F6PPBPY5.js");format=resolveOutputFormat({...options.output!==void 0?{flag:options.output}:{},isTty:process.stdout.isTTY===true});if(format===null){throw new UsageError(`--output \u306B\u300C${options.output??""}\u300D\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093`,`\u6307\u5B9A\u3067\u304D\u308B\u306E\u306F ${OUTPUT_FORMATS.join(" / ")} \u3067\u3059`)}}const stored=loadCredentials(profile.name);const apiUrl=effectiveApiUrl(
@@ -1,8 +1,8 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{customerDocumentSubresources}from"./chunk-GYXKBPEN.js";import{COMPANY_FIELDS,COMPANY_LICENSE,CUSTOMER_LICENSE,customerSubresources,customerWriteOperations,dataOf,levelForbidden}from"./chunk-MTUOPTBS.js";import"./chunk-WTYIFLVB.js";import"./chunk-V64CGX7V.js";import"./chunk-QLENN5DD.js";import"./chunk-RMFLTSOV.js";import{featureLicenseGuidance,licenseForbidden}from"./chunk-DLDDMXZT.js";import{createFlags,fieldBody,hasAnyField,updateFlags}from"./chunk-AITUAHWK.js";
4
- import"./chunk-JJSBBWJ5.js";import{LIST_FLAGS,LIST_PAGING_HELP,PAGE_NUMBER_LIST_FLAGS,PAGE_NUMBER_PAGING_HELP,STABLE_PAGE_ORDER,envelopePaging,nonEmpty,pageNumberPaging,pageNumberQuery,pageRangeNotes,positiveInteger}from"./chunk-MI6HVYR2.js";import{repeatedValues}from"./chunk-RX5HWI4L.js";import{CUSTOMERS_PATH,SALES_COMPANIES_PATH,isExactNumericId}from"./chunk-GHE6X45G.js";import{isSafePathSegment}from"./chunk-HVZUXLQ4.js";import{ApiError}from"./chunk-JA5A6UJ2.js";
5
- import"./chunk-H4CDX4TX.js";import"./chunk-II5RVJQN.js";import{requireResolved,singleRef,withResolved}from"./chunk-PS5QFKHB.js";import{acknowledgement,isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";import"./chunk-XNLIEUAW.js";import"./chunk-J7QYPKVK.js";import"./chunk-4VZKNEVN.js";import"./chunk-RZVI6PMW.js";import"./chunk-QQRJLH6B.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var CUSTOMER_FLAG_FIELD={kind:"boolean",flag:"--customer",key:"customer_flg",summary:"\u9867\u5BA2\u3068\u3057\u3066\u6271\u3046\u304B\uFF08true / false\uFF09"};var FIELDS=[...COMPANY_FIELDS,CUSTOMER_FLAG_FIELD];var COLUMNS=["id","company_name","company_name_kana","company_short_name","customer_flg","supplier_flg","tel","address1"];var WRITE_FORBIDDEN=levelForbidden(COMPANY_LICENSE,"\u53D6\u5F15\u5148\u306E\u4F5C\u6210\u30FB\u66F4\u65B0\u306B\u306F\u3001\u8CA9\u58F2\u7BA1\u7406\u306E\u6A29\u9650\u304C\u300C\u30E1\u30F3\u30D0\u30FC\u300D\u4EE5\u4E0A\u304B\u3001\u9867\u5BA2\u7BA1\u7406\u306E\u6A29\u9650\u304C\u300C\u7DE8\u96C6\u8005\u300D\u4EE5\u4E0A\u306E\u3069\u3061\u3089\u304B\u304C\u8981\u308A\u307E\u3059\u3002\u30C6\u30CA\u30F3\u30C8\u7BA1\u7406\u8005\u306B\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002");
3
+ import{customerDocumentSubresources}from"./chunk-NTT2QG3J.js";import{COMPANY_FIELDS,COMPANY_LICENSE,CUSTOMER_LICENSE,customerSubresources,customerWriteOperations,dataOf,levelForbidden}from"./chunk-CZVQS3WP.js";import"./chunk-WTYIFLVB.js";import"./chunk-V64CGX7V.js";import"./chunk-QLENN5DD.js";import"./chunk-RMFLTSOV.js";import{featureLicenseGuidance,licenseForbidden}from"./chunk-4RNL462J.js";import{createFlags,fieldBody,hasAnyField,updateFlags}from"./chunk-CADCERVL.js";
4
+ import{repeatedValues}from"./chunk-RX5HWI4L.js";import"./chunk-JJSBBWJ5.js";import{CUSTOMERS_PATH,SALES_COMPANIES_PATH,isExactNumericId}from"./chunk-RSSPNFSK.js";import{isSafePathSegment}from"./chunk-HVZUXLQ4.js";import{ApiError}from"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";import{LIST_FLAGS,LIST_PAGING_HELP,PAGE_NUMBER_LIST_FLAGS,PAGE_NUMBER_PAGING_HELP,STABLE_PAGE_ORDER,envelopePaging,nonEmpty,pageNumberPaging,pageNumberQuery,pageRangeNotes,positiveInteger}from"./chunk-MI6HVYR2.js";
5
+ import"./chunk-II5RVJQN.js";import{requireResolved,singleRef,withResolved}from"./chunk-PS5QFKHB.js";import{acknowledgement,isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";import"./chunk-XNLIEUAW.js";import"./chunk-J7QYPKVK.js";import"./chunk-EDF4U5BT.js";import"./chunk-RZVI6PMW.js";import"./chunk-QQRJLH6B.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var CUSTOMER_FLAG_FIELD={kind:"boolean",flag:"--customer",key:"customer_flg",summary:"\u9867\u5BA2\u3068\u3057\u3066\u6271\u3046\u304B\uFF08true / false\uFF09"};var FIELDS=[...COMPANY_FIELDS,CUSTOMER_FLAG_FIELD];var COLUMNS=["id","company_name","company_name_kana","company_short_name","customer_flg","supplier_flg","tel","address1"];var WRITE_FORBIDDEN=levelForbidden(COMPANY_LICENSE,"\u53D6\u5F15\u5148\u306E\u4F5C\u6210\u30FB\u66F4\u65B0\u306B\u306F\u3001\u8CA9\u58F2\u7BA1\u7406\u306E\u6A29\u9650\u304C\u300C\u30E1\u30F3\u30D0\u30FC\u300D\u4EE5\u4E0A\u304B\u3001\u9867\u5BA2\u7BA1\u7406\u306E\u6A29\u9650\u304C\u300C\u7DE8\u96C6\u8005\u300D\u4EE5\u4E0A\u306E\u3069\u3061\u3089\u304B\u304C\u8981\u308A\u307E\u3059\u3002\u30C6\u30CA\u30F3\u30C8\u7BA1\u7406\u8005\u306B\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002");
6
6
  var DELETE_FORBIDDEN=levelForbidden(COMPANY_LICENSE,"\u53D6\u5F15\u5148\u306E\u524A\u9664\u306B\u306F\u3001\u8CA9\u58F2\u7BA1\u7406\u306E\u6A29\u9650\u304C\u300C\u30E1\u30F3\u30D0\u30FC\u300D\u4EE5\u4E0A\u304B\u3001\u9867\u5BA2\u7BA1\u7406\u306E\u6A29\u9650\u304C\u300C\u7BA1\u7406\u8005\u300D\u306E\u3069\u3061\u3089\u304B\u304C\u8981\u308A\u307E\u3059\u3002\u30C6\u30CA\u30F3\u30C8\u7BA1\u7406\u8005\u306B\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002");var REF_HELP="<\u53D6\u5F15\u5148> \u306F\u4F01\u696D\u540D\u30FB\u7565\u79F0\u30FB\u30AB\u30CA\u306E\u5B8C\u5168\u4E00\u81F4\u304B\
7
7
  ID\uFF08twp company list \u306E id \u5217\u306E\u6570\u5B57\uFF09\u3067\u6307\u5B9A\u3057\u307E\u3059\u3002\u9867\u5BA2\u30FB\u4ED5\u5165\u5148\u306E\u3069\u3061\u3089\u3082\u6307\u5B9A\u3067\u304D\u307E\u3059\u3002";function companyPath(input){const id=requireResolved(input,"companyId");if(!isExactNumericId(id))throw new UsageError(`\u53D6\u5F15\u5148 ID \u3092\u30D1\u30B9\u306B\u4F7F\u3048\u307E\u305B\u3093: ${id}`);return`${SALES_COMPANIES_PATH}/${id}`}async function resolveCompany(input,ctx,usage){
8
8
  const raw=singleRef(input,{flag:"<\u53D6\u5F15\u5148>",label:"\u53D6\u5F15\u5148",usage});return withResolved(input,{companyId:(await ctx.resolver.company(raw,{flag:"<\u53D6\u5F15\u5148>",source:"sales",mustExist:true})).id})}var createOperation={name:"create",summary:"\u53D6\u5F15\u5148\u4F01\u696D\u3092\u767B\u9332\u3059\u308B\uFF08\u9867\u5BA2\u30FB\u4ED5\u5165\u5148\u306E\u3069\u3061\u3089\u304B\u4E00\u65B9\u4EE5\u4E0A\uFF09",usage:"twp company create --name <\u4F01\u696D\u540D> (--customer true | --suppli\
@@ -1,13 +1,14 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{BUILTIN_COMMANDS,GLOBAL_FLAGS,TASK_LOOP_ACTIONS,VALUE_FLAGS}from"./chunk-6C75QARV.js";import"./chunk-2LOT54OO.js";import{API_TOKEN,DOMAIN_NAMES,HELP_TOKEN,isDomainName}from"./chunk-W4E4F2ZA.js";import"./chunk-QQRJLH6B.js";import{OUTPUT_FORMATS}from"./chunk-74BPZOKU.js";import"./chunk-UREA4ZIG.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var EXTRA_TOP_LEVEL=[API_TOKEN,HELP_TOKEN,"completion","configure"];var COMPLETION_SHELLS=["bash","zsh","fish","powershell"];var TOP_LEVEL_FLAGS=["--help","--version","-p","--print","--profile","--mode","--permission-mode","--model","--allowed-tools","--disallowed-tools","--no-tui","--doctor"];var DOMAIN_GLOBAL_FLAGS=[...GLOBAL_FLAGS].filter(flag=>flag.startsWith("--"));function staticValues(flag,ctx){if(flag==="--output")return OUTPUT_FORMATS;if(flag==="--profile")return ctx.profileNames();return void 0}
3
+ import{GLOBAL_FLAGS}from"./chunk-IVFSEXD3.js";import"./chunk-2LOT54OO.js";import{API_TOKEN,DOMAIN_NAMES,HELP_TOKEN,isDomainName}from"./chunk-MLRBDF44.js";import{BUILTIN_COMMANDS,QUEUE_DOMAIN,TASK_LOOP_ACTIONS,TASK_LOOP_QUEUE_ACTIONS,VALUE_FLAGS,rewriteQueueCommand}from"./chunk-VERYHAWV.js";import"./chunk-QQRJLH6B.js";import{OUTPUT_FORMATS}from"./chunk-74BPZOKU.js";import"./chunk-UREA4ZIG.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var EXTRA_TOP_LEVEL=[API_TOKEN,HELP_TOKEN,"completion","configure"];var COMPLETION_SHELLS=["bash","zsh","fish","powershell"];var TOP_LEVEL_FLAGS=["--help","--version","-p","--print","--profile","--mode","--permission-mode","--model","--allowed-tools","--disallowed-tools","--no-tui","--doctor"];var DOMAIN_GLOBAL_FLAGS=[...GLOBAL_FLAGS].filter(flag=>flag.startsWith("--"));function staticValues(flag,ctx){if(flag==="--output")return OUTPUT_FORMATS;if(flag==="--profile")return ctx.profileNames();return void 0}
4
4
  function positionals(words,takesValue){const out=[];for(let i=0;i<words.length;i++){const word=words[i]??"";if(word==="--"){out.push(...words.slice(i+1));break}if(word.startsWith("-")){if(!word.includes("=")&&takesValue(word))i++;continue}out.push(word)}return out}function byPrefix(candidates,current){const seen=new Set;for(const candidate of candidates){if(candidate.startsWith(current))seen.add(candidate)}return[...seen]}function remainingFlags(flags,words){const used=new Set(words.filter(w=>w.
5
- startsWith("--")).map(w=>w.split("=")[0]));return[...flags.filter(f=>f.repeatable===true||!used.has(f.name)).map(f=>f.name),...DOMAIN_GLOBAL_FLAGS.filter(f=>!used.has(f))]}async function complete(words,current,ctx){const previous=words[words.length-1];if(previous!==void 0&&previous.startsWith("--")&&!previous.includes("=")){const values=staticValues(previous,ctx);if(values!==void 0)return byPrefix(values,current)}const eq=current.indexOf("=");if(current.startsWith("--")&&eq>0){const flag=current.
6
- slice(0,eq);const values=staticValues(flag,ctx);return values===void 0?[]:byPrefix(values.map(v=>`${flag}=${v}`),current)}const pos=positionals(words,flag=>VALUE_FLAGS.has(flag));const[first,second]=pos;if(first===void 0){if(current.startsWith("-"))return byPrefix([...TOP_LEVEL_FLAGS,...DOMAIN_GLOBAL_FLAGS],current);return byPrefix([...BUILTIN_COMMANDS,...DOMAIN_NAMES,...EXTRA_TOP_LEVEL],current)}if(first==="completion")return pos.length===1?byPrefix(COMPLETION_SHELLS,current):[];if(first==="con\
7
- figure")return current.startsWith("-")?byPrefix(["--profile"],current):[];if(first===HELP_TOKEN)return pos.length===1?byPrefix([...DOMAIN_NAMES,API_TOKEN],current):[];if(first==="task-loop"){if(pos.length===1&&!current.startsWith("-"))return byPrefix(TASK_LOOP_ACTIONS,current);if(pos.length===2&&(second==="charter"||second==="skill")&&!current.startsWith("-")){const ops=["push","pull","history","diff","revert"];return byPrefix(second==="skill"?[...ops,"list","show","delete","check"]:ops,current)}
8
- if(pos.length===2&&second==="settings"&&!current.startsWith("-"))return byPrefix(["push","pull"],current);if(pos.length===2&&second==="plan"&&!current.startsWith("-"))return byPrefix(["submit"],current);if(pos.length===2&&second==="capacity"&&!current.startsWith("-"))return byPrefix(["report"],current);return[]}if(!isDomainName(first))return[];const domain=await ctx.loadDomain(first);const subresources=domain.subresources??[];if(second===void 0){if(current.startsWith("-"))return byPrefix(DOMAIN_GLOBAL_FLAGS,
9
- current);return byPrefix([...domain.operations.map(op=>op.name),...subresources.map(sub2=>sub2.name),HELP_TOKEN],current)}const sub=subresources.find(resource=>resource.name===second);let operation;if(sub!==void 0){const third=pos[2];if(third===void 0){if(current.startsWith("-"))return byPrefix(DOMAIN_GLOBAL_FLAGS,current);return byPrefix([...sub.operations.map(op=>op.name),HELP_TOKEN],current)}operation=sub.operations.find(op=>op.name===third)}else{operation=domain.operations.find(op=>op.name===
10
- second)}if(operation===void 0)return[];if(!current.startsWith("-"))return[];return byPrefix(remainingFlags(operation.flags,words),current)}function completionScript(shell){switch(shell){case"bash":return`# twp \u306E bash \u88DC\u5B8C\uFF08twp completion bash \u304C\u51FA\u529B\uFF09
5
+ startsWith("--")).map(w=>w.split("=")[0]));return[...flags.filter(f=>f.repeatable===true||!used.has(f.name)).map(f=>f.name),...DOMAIN_GLOBAL_FLAGS.filter(f=>!used.has(f))]}async function complete(rawWords,current,ctx){const queue=rewriteQueueCommand(rawWords);if(queue.moved!==void 0)return[];const words=queue.argv;const previous=words[words.length-1];if(previous!==void 0&&previous.startsWith("--")&&!previous.includes("=")){const values=staticValues(previous,ctx);if(values!==void 0)return byPrefix(
6
+ values,current)}const eq=current.indexOf("=");if(current.startsWith("--")&&eq>0){const flag=current.slice(0,eq);const values=staticValues(flag,ctx);return values===void 0?[]:byPrefix(values.map(v=>`${flag}=${v}`),current)}const pos=positionals(words,flag=>VALUE_FLAGS.has(flag));const[first,second]=pos;if(first===void 0){if(current.startsWith("-"))return byPrefix([...TOP_LEVEL_FLAGS,...DOMAIN_GLOBAL_FLAGS],current);return byPrefix([...BUILTIN_COMMANDS,...DOMAIN_NAMES.filter(name=>name!==QUEUE_DOMAIN),
7
+ ...EXTRA_TOP_LEVEL],current)}if(first==="completion")return pos.length===1?byPrefix(COMPLETION_SHELLS,current):[];if(first==="configure")return current.startsWith("-")?byPrefix(["--profile"],current):[];if(first===HELP_TOKEN)return pos.length===1?byPrefix([...DOMAIN_NAMES.filter(name=>name!==QUEUE_DOMAIN),API_TOKEN],current):[];if(first==="task-loop"){if(pos.length===1&&!current.startsWith("-"))return byPrefix([...TASK_LOOP_ACTIONS,...TASK_LOOP_QUEUE_ACTIONS],current);if(pos.length===2&&(second===
8
+ "charter"||second==="skill")&&!current.startsWith("-")){const ops=["push","pull","history","diff","revert"];return byPrefix(second==="skill"?[...ops,"list","show","delete","check"]:ops,current)}if(pos.length===2&&second==="settings"&&!current.startsWith("-"))return byPrefix(["push","pull"],current);if(pos.length===2&&second==="plan"&&!current.startsWith("-"))return byPrefix(["submit"],current);if(pos.length===2&&second==="capacity"&&!current.startsWith("-"))return byPrefix(["report"],current);if(pos.
9
+ length===2&&second==="runner"&&!current.startsWith("-"))return byPrefix(["list","remove"],current);return[]}if(!isDomainName(first))return[];const domain=await ctx.loadDomain(first);const subresources=domain.subresources??[];if(second===void 0){if(current.startsWith("-"))return byPrefix(DOMAIN_GLOBAL_FLAGS,current);return byPrefix([...domain.operations.map(op=>op.name),...subresources.map(sub2=>sub2.name),HELP_TOKEN],current)}const sub=subresources.find(resource=>resource.name===second);let operation;
10
+ if(sub!==void 0){const third=pos[2];if(third===void 0){if(current.startsWith("-"))return byPrefix(DOMAIN_GLOBAL_FLAGS,current);return byPrefix([...sub.operations.map(op=>op.name),HELP_TOKEN],current)}operation=sub.operations.find(op=>op.name===third)}else{operation=domain.operations.find(op=>op.name===second)}if(operation===void 0)return[];if(!current.startsWith("-"))return[];return byPrefix(remainingFlags(operation.flags,words),current)}function completionScript(shell){switch(shell){case"bash":
11
+ return`# twp \u306E bash \u88DC\u5B8C\uFF08twp completion bash \u304C\u51FA\u529B\uFF09
11
12
  # \u8AAD\u307F\u8FBC\u307F: eval "$(twp completion bash)" \uFF0F \u5E38\u7528: ~/.bashrc \u306B\u540C\u30581\u884C\u3092\u66F8\u304F
12
13
  # \uFF08source <(...) \u306F macOS \u6A19\u6E96\u306E bash 3.2 \u3067\u8AAD\u307F\u8FBC\u307E\u308C\u306A\u3044\u306E\u3067\u4F7F\u308F\u306A\u3044\uFF09
13
14
  # \u78BA\u5B9A\u6E08\u307F\u306E\u8A9E\u306F\u914D\u5217\u30B9\u30E9\u30A4\u30B9\u3067\u306F\u306A\u304F\u30EB\u30FC\u30D7\u3067\u96C6\u3081\u308B\uFF08macOS \u6A19\u6E96\u306E bash 3.2 \u3067\u3082\u540C\u3058\u306B\u52D5\u304B\u3059\u305F\u3081\uFF09
@@ -0,0 +1,3 @@
1
+ import { createRequire as __twpCreateRequire } from 'node:module';
2
+ const require = __twpCreateRequire(import.meta.url);
3
+ import{DEFAULT_API_URL,DEFAULT_FRONTEND_URL,DEFAULT_RELAY_URL,effectiveApiUrl,effectiveRelayUrl,loadProjectConfig,loadUserConfig,resolveConfiguredBacklogSpace,resolveConfiguredModel,resolveConfiguredOutput,resolveProfile,resolveProfileName,userConfigPath}from"./chunk-EDF4U5BT.js";import"./chunk-RZVI6PMW.js";import"./chunk-VSJBJXZO.js";export{DEFAULT_API_URL,DEFAULT_FRONTEND_URL,DEFAULT_RELAY_URL,effectiveApiUrl,effectiveRelayUrl,loadProjectConfig,loadUserConfig,resolveConfiguredBacklogSpace,resolveConfiguredModel,resolveConfiguredOutput,resolveProfile,resolveProfileName,userConfigPath};
@@ -1,12 +1,14 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{PromptAbortedError,promptText}from"./chunk-L37NS5L2.js";import{writePrivateFileAtomic}from"./chunk-D233KKXW.js";import{loadUserConfig,resolveProfileName,userConfigPath}from"./chunk-4VZKNEVN.js";import{ensureTwpHome}from"./chunk-RZVI6PMW.js";import{splitFlagToken}from"./chunk-QQRJLH6B.js";import{OUTPUT_FORMATS,isOutputFormat}from"./chunk-74BPZOKU.js";import"./chunk-UREA4ZIG.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var CLEAR="-";var HELP=`\u4F7F\u3044\u65B9: twp configure [--profile <\u540D\u524D>]
3
+ import{PromptAbortedError,promptText}from"./chunk-L37NS5L2.js";import{writePrivateFileAtomic}from"./chunk-D233KKXW.js";import{loadUserConfig,resolveProfileName,userConfigPath}from"./chunk-EDF4U5BT.js";import{ensureTwpHome}from"./chunk-RZVI6PMW.js";import{splitFlagToken}from"./chunk-QQRJLH6B.js";import{OUTPUT_FORMATS,isOutputFormat}from"./chunk-74BPZOKU.js";import"./chunk-UREA4ZIG.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var CLEAR="-";var HELP=`\u4F7F\u3044\u65B9: twp configure [--profile <\u540D\u524D>]
4
4
 
5
5
  \u30D7\u30ED\u30D5\u30A1\u30A4\u30EB\u306E\u65E2\u5B9A\u3092\u5BFE\u8A71\u3067\u8A2D\u5B9A\u3057\u3001~/.twp/config.json \u306B\u4FDD\u5B58\u3057\u307E\u3059
6
6
  \uFF08\u8A8D\u8A3C\u60C5\u5831\u306B\u306F\u89E6\u308A\u307E\u305B\u3093\u3002\u30ED\u30B0\u30A4\u30F3\u306F twp login\uFF09\u3002
7
7
 
8
8
  \u65E2\u5B9A\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8 --project \u3092\u7701\u7565\u3057\u305F\u3068\u304D\u306B\u4F7F\u3046\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\uFF08\u30B3\u30FC\u30C9\u304B ID\uFF09
9
9
  \u65E2\u5B9A\u306E\u51FA\u529B\u5F62\u5F0F ${OUTPUT_FORMATS.join(" | ")}\uFF08--output \u3092\u7701\u7565\u3057\u305F\u3068\u304D\u306B\u4F7F\u3046\uFF09
10
+ \u65E2\u5B9A\u306E Backlog \u30B9\u30DA\u30FC\u30B9 twp backlog \u3067 --space \u3092\u7701\u7565\u3057\u305F\u3068\u304D\u306B\u4F7F\u3046\u30B9\u30DA\u30FC\u30B9
11
+ \uFF08ID / \u30B9\u30DA\u30FC\u30B9URL / \u30B5\u30D6\u30C9\u30E1\u30A4\u30F3\u3002twp backlog space list \u3067\u78BA\u8A8D\u3067\u304D\u307E\u3059\uFF09
10
12
  \u65E2\u5B9A\u306E\u30D7\u30ED\u30D5\u30A1\u30A4\u30EB --profile \u3092\u7701\u7565\u3057\u305F\u3068\u304D\u306B\u4F7F\u3046\u30D7\u30ED\u30D5\u30A1\u30A4\u30EB
11
13
 
12
14
  Enter \u3067\u73FE\u5728\u306E\u5024\u306E\u307E\u307E\u3001\u300C${CLEAR}\u300D\u3067\u8A2D\u5B9A\u3092\u6D88\u3057\u307E\u3059\u3002
@@ -22,10 +24,12 @@ ${HELP}`);return 2}let config;try{config=loadUserConfig(full.env)}catch(err){ful
22
24
  `);return 1}const profileName=args.profile??resolveProfileName(void 0,full.env,full.cwd);const profile={...config.profiles?.[profileName]??{}};full.out.write(`\u30D7\u30ED\u30D5\u30A1\u30A4\u30EB\u300C${profileName}\u300D\u3092\u8A2D\u5B9A\u3057\u307E\u3059\uFF08Enter \u3067\u636E\u3048\u7F6E\u304D\u30FB\u300C${CLEAR}\u300D\u3067\u6D88\u53BB\uFF09
23
25
  `);try{const project=answerToValue(await full.ask(`\u65E2\u5B9A\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8 [${shown(profile.project)}]: `),profile.project);const outputAnswer=await full.ask(`\u65E2\u5B9A\u306E\u51FA\u529B\u5F62\u5F0F\uFF08${OUTPUT_FORMATS.join(" / ")}\uFF09 [${shown(profile.output)}]: `);const output=answerToValue(outputAnswer,profile.output);if(output!==void 0&&output!==profile.output&&!isOutputFormat(output)){full.err.write(`\u51FA\u529B\u5F62\u5F0F\u306F ${OUTPUT_FORMATS.join(
24
26
  " / ")} \u306E\u3044\u305A\u308C\u304B\u3067\u3059\uFF08\u6307\u5B9A: ${output}\uFF09\u3002\u4F55\u3082\u4FDD\u5B58\u3057\u3066\u3044\u307E\u305B\u3093\u3002
25
- `);return 2}const currentDefault=config.default_profile??"default";let makeDefault=false;if(currentDefault!==profileName){const answer=await full.ask(`\u300C${profileName}\u300D\u3092\u65E2\u5B9A\u306E\u30D7\u30ED\u30D5\u30A1\u30A4\u30EB\u306B\u3057\u307E\u3059\u304B\uFF08\u73FE\u5728: ${currentDefault}\uFF09 [y/N]: `);makeDefault=/^y(es)?$/i.test(answer)}if(project===void 0)delete profile.project;else profile.project=project;if(output===void 0)delete profile.output;else profile.output=output;const next={
26
- ...config,profiles:{...config.profiles??{},[profileName]:profile},...makeDefault?{default_profile:profileName}:{}};const file=full.write(next);full.out.write(`\u4FDD\u5B58\u3057\u307E\u3057\u305F: ${file}
27
+ `);return 2}const currentDefault=config.default_profile??"default";let makeDefault=false;if(currentDefault!==profileName){const answer=await full.ask(`\u300C${profileName}\u300D\u3092\u65E2\u5B9A\u306E\u30D7\u30ED\u30D5\u30A1\u30A4\u30EB\u306B\u3057\u307E\u3059\u304B\uFF08\u73FE\u5728: ${currentDefault}\uFF09 [y/N]: `);makeDefault=/^y(es)?$/i.test(answer)}let backlogSpaceAnswer="";try{backlogSpaceAnswer=await full.ask(`\u65E2\u5B9A\u306E Backlog \u30B9\u30DA\u30FC\u30B9 [${shown(profile.backlog_space)}\
28
+ ]: `)}catch(err){if(!(err instanceof PromptAbortedError))throw err}const backlogSpace=answerToValue(backlogSpaceAnswer,profile.backlog_space);if(project===void 0)delete profile.project;else profile.project=project;if(output===void 0)delete profile.output;else profile.output=output;if(backlogSpace===void 0)delete profile.backlog_space;else profile.backlog_space=backlogSpace;const next={...config,profiles:{...config.profiles??{},[profileName]:profile},...makeDefault?{default_profile:profileName}:{}};
29
+ const file=full.write(next);full.out.write(`\u4FDD\u5B58\u3057\u307E\u3057\u305F: ${file}
27
30
  \u30D7\u30ED\u30D5\u30A1\u30A4\u30EB ${profileName}${makeDefault||currentDefault===profileName?"\uFF08\u65E2\u5B9A\uFF09":""}
28
31
  \u65E2\u5B9A\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8 ${shown(profile.project)}
29
32
  \u65E2\u5B9A\u306E\u51FA\u529B\u5F62\u5F0F ${shown(profile.output)}
33
+ \u65E2\u5B9A\u306E Backlog \u30B9\u30DA\u30FC\u30B9 ${shown(profile.backlog_space)}
30
34
  `);if(full.env.TWP_PROJECT!==void 0&&full.env.TWP_PROJECT.trim()!==""&&profile.project!==void 0){full.err.write(`\u6CE8\u8A18: TWP_PROJECT\uFF08${full.env.TWP_PROJECT}\uFF09\u304C\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u308B\u305F\u3081\u3001\u3053\u306E\u7AEF\u672B\u3067\u306F\u65E2\u5B9A\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3088\u308A\u305D\u3061\u3089\u304C\u512A\u5148\u3055\u308C\u307E\u3059\u3002
31
35
  `)}return 0}catch(err){if(err instanceof PromptAbortedError){full.err.write("\u5165\u529B\u304C\u4E2D\u65AD\u3055\u308C\u307E\u3057\u305F\u3002\u4F55\u3082\u4FDD\u5B58\u3057\u3066\u3044\u307E\u305B\u3093\u3002\n");return 1}throw err}}export{runConfigure};
@@ -1,7 +1,7 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{contractAiReviewResources}from"./chunk-H7MIIYRN.js";import"./chunk-GQEXST5N.js";import{featureLicenseGuidance,licenseForbidden}from"./chunk-DLDDMXZT.js";import{isoDate}from"./chunk-JJSBBWJ5.js";import{LIST_PAGING_HELP,PAGE_NUMBER_LIST_FLAGS,PAGE_NUMBER_PAGING_HELP,STABLE_PAGE_ORDER,nonEmpty,pageNumberPaging,pageNumberQuery,pageRangeNotes}from"./chunk-MI6HVYR2.js";import{repeatedValues}from"./chunk-RX5HWI4L.js";import{readBody}from"./chunk-6LSQCOCJ.js";
4
- import{SALES_CONTRACTS_PATH,isExactNumericId,resolveNamed}from"./chunk-GHE6X45G.js";import"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";import"./chunk-II5RVJQN.js";import{requireResolved,withResolved}from"./chunk-PS5QFKHB.js";import{acknowledgement,isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";import"./chunk-XNLIEUAW.js";import"./chunk-J7QYPKVK.js";import"./chunk-4VZKNEVN.js";
3
+ import{contractAiReviewResources}from"./chunk-DELIIGWE.js";import"./chunk-V3RZ4RFP.js";import{featureLicenseGuidance,licenseForbidden}from"./chunk-4RNL462J.js";import{repeatedValues}from"./chunk-RX5HWI4L.js";import{isoDate}from"./chunk-JJSBBWJ5.js";import{readBody}from"./chunk-6LSQCOCJ.js";import{SALES_CONTRACTS_PATH,isExactNumericId,resolveNamed}from"./chunk-RSSPNFSK.js";import"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";
4
+ import{LIST_PAGING_HELP,PAGE_NUMBER_LIST_FLAGS,PAGE_NUMBER_PAGING_HELP,STABLE_PAGE_ORDER,nonEmpty,pageNumberPaging,pageNumberQuery,pageRangeNotes}from"./chunk-MI6HVYR2.js";import"./chunk-II5RVJQN.js";import{requireResolved,withResolved}from"./chunk-PS5QFKHB.js";import{acknowledgement,isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";import"./chunk-XNLIEUAW.js";import"./chunk-J7QYPKVK.js";import"./chunk-EDF4U5BT.js";
5
5
  import"./chunk-RZVI6PMW.js";import"./chunk-QQRJLH6B.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var PATH=SALES_CONTRACTS_PATH;var SALES_FORBIDDEN=licenseForbidden(featureLicenseGuidance("\u8CA9\u58F2\u7BA1\u7406"));var DISAMBIGUATION="\u53D6\u5F15\u5951\u7D04\u306F\u898B\u7A4D\u304B\u3089\u4F5C\u308B\u8CA9\u58F2\u7BA1\u7406\u306E\u66F8\u985E\u3067\u3059\uFF08\u660E\u7D30\u30FB\u91D1\u984D\u3092\u6301\u3061\u3001\u627F\u8A8D\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u306B\u4E57\u308A\u307E\u3059\uFF09\u3002\n\u9867\u5BA2\u306B\u7D10\u3065\u3051\u3066\u4FDD\u7BA1\u3059\u308B\u5951\u7D04\u66F8\u306E PDF \u306F\u5225\u7269\u3067\u3001twp customer contract \u3067\u6271\u3044\u307E\u3059\u3002\n\n";
6
6
  var CONTRACT_STATUSES={new:"\u4F5C\u6210\u4E2D",create_completed:"\u4F5C\u6210\u5B8C\u4E86",in_progress:"\u7533\u8ACB\u4E2D",approved:"\u627F\u8A8D\u6E08",rejected:"\u5DEE\u3057\u623B\u3057",submitted:"\u63D0\u793A\u6E08",contracted:"\u5951\u7D04\u7DE0\u7D50\u6E08",deleted:"\u524A\u9664\u6E08"};var RENEWAL_TYPES={auto_renewal:"\u81EA\u52D5\u66F4\u65B0",application_renewal:"\u7533\u8FBC\u306B\u3088\u308B\u66F4\u65B0"};function statusName(code){return CONTRACT_STATUSES[code]??code}function tableHelp(table){
7
7
  return Object.entries(table).map(([code,name])=>`${code}\uFF08${name}\uFF09`).join(" / ")}var STORE_KEYS=["estimate_id","contract_no","title","status","contract_date","start_date","end_date","renewal_type","cancellation_notice_days","next_renewal_date","memo","manage_form_data","contract_document_file_ids","details","recipients"];var CREATE_ONLY_KEYS=["estimate_id"];var UPDATE_KEYS=STORE_KEYS.filter(key=>!CREATE_ONLY_KEYS.includes(key));var DETAIL_KEYS=["item_name","description","quantity","unit",
@@ -1,7 +1,7 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{cacheNote,createFlags,fieldBody,hasAnyField,idSegment,masterFields,masterItem,masterListOperation,masterRows,referencedDeleteGuidance,resolveRefFields,targetId,updateFlags}from"./chunk-AITUAHWK.js";import"./chunk-JJSBBWJ5.js";import"./chunk-MI6HVYR2.js";import{DEPARTMENTS_PATH}from"./chunk-GHE6X45G.js";import"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";import"./chunk-II5RVJQN.js";import{withResolved}from"./chunk-PS5QFKHB.js";
4
- import{acknowledgement,isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";import"./chunk-J7QYPKVK.js";import"./chunk-4VZKNEVN.js";import"./chunk-RZVI6PMW.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var LABEL="\u90E8\u7F72";var LIST_COLUMNS=["id","code","name","parent_id","level","effective_status","valid_from","valid_to","member_count"];var GET_COLUMNS=["id","code","name","name_short","parent_id","level","sort","effective_status","valid_from","valid_to","description"];var TREE_COLUMNS=["depth","name","code","id","effective_status","valid_to"];var MEMBER_COLUMNS=["id","user_id","position_id","job_title_id","start_date","end_date","is_primary","is_current","effective_status"];var REF_FLAG={name:"\
3
+ import{cacheNote,createFlags,fieldBody,hasAnyField,idSegment,masterFields,masterItem,masterListOperation,masterRows,referencedDeleteGuidance,resolveRefFields,targetId,updateFlags}from"./chunk-CADCERVL.js";import"./chunk-JJSBBWJ5.js";import{DEPARTMENTS_PATH}from"./chunk-RSSPNFSK.js";import"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";import"./chunk-MI6HVYR2.js";import"./chunk-II5RVJQN.js";import{withResolved}from"./chunk-PS5QFKHB.js";
4
+ import{acknowledgement,isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";import"./chunk-J7QYPKVK.js";import"./chunk-EDF4U5BT.js";import"./chunk-RZVI6PMW.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var LABEL="\u90E8\u7F72";var LIST_COLUMNS=["id","code","name","parent_id","level","effective_status","valid_from","valid_to","member_count"];var GET_COLUMNS=["id","code","name","name_short","parent_id","level","sort","effective_status","valid_from","valid_to","description"];var TREE_COLUMNS=["depth","name","code","id","effective_status","valid_to"];var MEMBER_COLUMNS=["id","user_id","position_id","job_title_id","start_date","end_date","is_primary","is_current","effective_status"];var REF_FLAG={name:"\
5
5
  --department",summary:"\u5BFE\u8C61\u306E\u90E8\u7F72\uFF08\u4F4D\u7F6E\u5F15\u6570\u306E\u4EE3\u308F\u308A\u306B\u4F7F\u3048\u308B\uFF09",takesValue:true,placeholder:"<\u90E8\u7F72>"};var REF_HELP="<\u90E8\u7F72> \u306F\u540D\u524D\u30FB\u30B3\u30FC\u30C9\u30FBID \u306E\u3069\u308C\u3067\u3082\u6307\u5B9A\u3067\u304D\u307E\u3059\uFF08\u540D\u524D\u304C\u8907\u6570\u306B\u4E00\u81F4\u3059\u308C\u3070\u5019\u88DC\u3092\u51FA\u3057\u3066\u6B62\u307E\u308A\u307E\u3059\uFF09\u3002\nID \u4EE5\u5916\u306F\u90E8\u7F72\u4E00\u89A7\uFF08\u65E2\u5B9A10\u5206\u30AD\u30E3\u30C3\u30B7\u30E5\u30FB--refresh \u3067\u53D6\u308A\u76F4\u3057\uFF09\u3068\u7167\u5408\u3057\u307E\u3059\u3002";
6
6
  var FIELDS=masterFields(LABEL,[{kind:"text",flag:"--name-short",key:"name_short",label:"\u7565\u79F0",maxChars:50,summary:"\u7565\u79F0"},{kind:"ref",flag:"--parent",key:"parent_id",summary:"\u89AA\u90E8\u7F72\uFF08\u540D\u524D\u30FB\u30B3\u30FC\u30C9\u30FBID\uFF09",placeholder:"<\u90E8\u7F72>",clearFlag:"--no-parent",clearSummary:"\u89AA\u90E8\u7F72\u3092\u5916\u3057\u3066\u6700\u4E0A\u4F4D\u306B\u3059\u308B",resolve:(ctx,ref,flag)=>ctx.resolver.department(ref,flag)},{kind:"integer",flag:"--sor\
7
7
  t",key:"sort",label:"\u8868\u793A\u9806",min:0,summary:"\u8868\u793A\u9806\uFF080\u4EE5\u4E0A\u306E\u6574\u6570\uFF09"},{kind:"date",flag:"--valid-from",key:"valid_from",summary:"\u6709\u52B9\u958B\u59CB\u65E5\uFF08YYYY-MM-DD\u30FBnone \u3067\u6D88\u3059\uFF09"},{kind:"date",flag:"--valid-to",key:"valid_to",summary:"\u6709\u52B9\u7D42\u4E86\u65E5\uFF08YYYY-MM-DD\u30FBnone \u3067\u6D88\u3059\uFF09\u3002\u3053\u306E\u65E5\u306E\u7FCC\u65E5\u304B\u3089\u7121\u52B9\u306B\u306A\u308B"},{kind:"boolean",
@@ -1,4 +1,4 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{depositDomain,depositIdArg,describeDeposit,excerpt,parseAllocationRows,parsePlanBody,planSkeleton,salesAdminForbidden,sendAtomic}from"./chunk-AM7Y4QRF.js";import"./chunk-QLENN5DD.js";import"./chunk-DLDDMXZT.js";import"./chunk-JJSBBWJ5.js";import"./chunk-MI6HVYR2.js";import"./chunk-RX5HWI4L.js";import"./chunk-6LSQCOCJ.js";import"./chunk-GHE6X45G.js";import"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";
4
- import"./chunk-II5RVJQN.js";import"./chunk-PS5QFKHB.js";import"./chunk-3ZRMMBP5.js";import"./chunk-VFPY2A23.js";import"./chunk-J7QYPKVK.js";import"./chunk-4VZKNEVN.js";import"./chunk-RZVI6PMW.js";import"./chunk-QQRJLH6B.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";export{depositDomain,depositIdArg,describeDeposit,excerpt,parseAllocationRows,parsePlanBody,planSkeleton,salesAdminForbidden,sendAtomic};
3
+ import{depositDomain,depositIdArg,describeDeposit,excerpt,parseAllocationRows,parsePlanBody,planSkeleton,salesAdminForbidden,sendAtomic}from"./chunk-U5EYLW6X.js";import"./chunk-QLENN5DD.js";import"./chunk-4RNL462J.js";import"./chunk-RX5HWI4L.js";import"./chunk-JJSBBWJ5.js";import"./chunk-6LSQCOCJ.js";import"./chunk-RSSPNFSK.js";import"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";import"./chunk-MI6HVYR2.js";
4
+ import"./chunk-II5RVJQN.js";import"./chunk-PS5QFKHB.js";import"./chunk-3ZRMMBP5.js";import"./chunk-VFPY2A23.js";import"./chunk-J7QYPKVK.js";import"./chunk-EDF4U5BT.js";import"./chunk-RZVI6PMW.js";import"./chunk-QQRJLH6B.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";export{depositDomain,depositIdArg,describeDeposit,excerpt,parseAllocationRows,parsePlanBody,planSkeleton,salesAdminForbidden,sendAtomic};