@tocca-systems/twp-cli 0.41.0 → 0.43.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 (100) hide show
  1. package/CHANGELOG.public.md +10 -0
  2. package/README.md +65 -3
  3. package/dist/{agent-loop-RCMZ7IGV.js → agent-loop-MMWJHN3D.js} +2 -2
  4. package/dist/{ai-dispatch-2ZV4XL5D.js → ai-dispatch-MXTI2KZ2.js} +2 -2
  5. package/dist/{api-command-6FEY6MHV.js → api-command-DND4342Q.js} +47 -16
  6. package/dist/{app-G6Y2XVST.js → app-2DWKZ2VE.js} +5 -5
  7. package/dist/{attendance-5KE2JPK4.js → attendance-K2U7RYDU.js} +1 -1
  8. package/dist/{attendance-lists-MXQNWUIH.js → attendance-lists-NVRU2NLY.js} +1 -1
  9. package/dist/{backlog-JVHWVL6N.js → backlog-SDWC7OY5.js} +2 -2
  10. package/dist/{charter-command-OQQHBAPS.js → charter-command-2RIS2VTQ.js} +1 -1
  11. package/dist/{chunk-DDKZ5IPT.js → chunk-2YNZ4MRT.js} +1 -1
  12. package/dist/chunk-3HH5IYNO.js +7 -0
  13. package/dist/{chunk-FKS2Z34P.js → chunk-3ZOHVESS.js} +2 -2
  14. package/dist/{chunk-3RAGOW6X.js → chunk-4B3T4UE7.js} +1 -1
  15. package/dist/{chunk-43OMEGNH.js → chunk-67UNSXM7.js} +2 -2
  16. package/dist/chunk-AHLI7BUX.js +16 -0
  17. package/dist/{chunk-HBH5V2CP.js → chunk-AITUMFCH.js} +1 -1
  18. package/dist/{chunk-P4AEFKLM.js → chunk-AJO4O5ZF.js} +1 -1
  19. package/dist/{chunk-GDM2QUBL.js → chunk-ATYA6DG5.js} +1 -1
  20. package/dist/{chunk-X5IVIOGL.js → chunk-CZMJXLDZ.js} +1 -1
  21. package/dist/{chunk-IOGVQVGD.js → chunk-F7K37QG6.js} +1 -1
  22. package/dist/{chunk-VUHKLW66.js → chunk-H3WYVFTS.js} +1 -1
  23. package/dist/{chunk-H54MGGHB.js → chunk-HBSD3UC6.js} +2 -2
  24. package/dist/{chunk-ANK43U5E.js → chunk-HBYFCYWA.js} +6 -6
  25. package/dist/{chunk-PKWMJIBM.js → chunk-HNUBM24L.js} +1 -1
  26. package/dist/{chunk-5R4SEO3I.js → chunk-IOGMOXYF.js} +1 -1
  27. package/dist/{chunk-2M2JQ23W.js → chunk-IXFMXUNT.js} +1 -1
  28. package/dist/{chunk-B7YCG2T7.js → chunk-L35F47BO.js} +1 -1
  29. package/dist/{chunk-ZN5EFDH7.js → chunk-LXIAOCUW.js} +1 -1
  30. package/dist/{chunk-BZ7ULFR3.js → chunk-NKIBB72I.js} +2 -2
  31. package/dist/{chunk-UT4FACHN.js → chunk-O5AUX7AQ.js} +4 -4
  32. package/dist/{chunk-I6DWJXPC.js → chunk-OHXZO5WK.js} +1 -1
  33. package/dist/{chunk-HGTG5XQ7.js → chunk-ORUDW52G.js} +1 -1
  34. package/dist/{chunk-VK5T7ULK.js → chunk-OUP3JLVH.js} +1 -1
  35. package/dist/{chunk-XN5TUZOT.js → chunk-PGJ42IUR.js} +1 -1
  36. package/dist/{chunk-7ACENLLZ.js → chunk-PORE2NZO.js} +2 -2
  37. package/dist/chunk-QICH2OOI.js +17 -0
  38. package/dist/{chunk-PEM3HR7L.js → chunk-RKYNTQAI.js} +2 -2
  39. package/dist/chunk-TDU6U5PY.js +8 -0
  40. package/dist/chunk-UFND7FBC.js +4 -0
  41. package/dist/{chunk-ZWVYVS2A.js → chunk-VTQAI52S.js} +1 -1
  42. package/dist/{chunk-UDPJ2IGK.js → chunk-XDHLO54T.js} +1 -1
  43. package/dist/{chunk-7HVVKEOA.js → chunk-XPYNN63B.js} +1 -1
  44. package/dist/chunk-XSSKEJGO.js +102 -0
  45. package/dist/{chunk-BPCK5RAB.js → chunk-XYIM36Q4.js} +1 -1
  46. package/dist/{chunk-I4ARX6NM.js → chunk-YLM54X35.js} +1 -0
  47. package/dist/{chunk-GPIIXDEX.js → chunk-YLXW7TIU.js} +1 -1
  48. package/dist/chunk-YO2RNKCQ.js +4 -0
  49. package/dist/{chunk-BZAXQOLB.js → chunk-YQ4DGLD3.js} +29 -23
  50. package/dist/cli.js +67 -9
  51. package/dist/{commands-VT7AVSSL.js → commands-255HOMWQ.js} +2 -2
  52. package/dist/{commands-QIBFWWIT.js → commands-BDYQKXPD.js} +29 -28
  53. package/dist/{company-KHZVPKHH.js → company-7TFFYG4A.js} +3 -3
  54. package/dist/{completion-EFGQJDIU.js → completion-H65LUFVF.js} +1 -1
  55. package/dist/{contract-O3FIBHDY.js → contract-SIFZY6D4.js} +5 -4
  56. package/dist/{department-I25NAPWU.js → department-NSK6YY6X.js} +2 -2
  57. package/dist/deposit-FUM7OA6F.js +4 -0
  58. package/dist/{estimate-SW43VOLO.js → estimate-RL3N3JAE.js} +6 -6
  59. package/dist/{inquiry-5HSK4FPD.js → inquiry-K7RSYLFW.js} +2 -2
  60. package/dist/{invoice-RGOI2H4L.js → invoice-E7XIBLRA.js} +5 -5
  61. package/dist/{job-title-G7MIYWVA.js → job-title-OF3ABHUQ.js} +2 -2
  62. package/dist/{knowledge-ZPMPS6WK.js → knowledge-ZQYVNFNI.js} +2 -2
  63. package/dist/{leave-6QI2RNO2.js → leave-MAFA6EQO.js} +2 -2
  64. package/dist/{media-OV26FYD2.js → media-LL4AVP5H.js} +2 -2
  65. package/dist/{notification-FL5GTW5S.js → notification-KBL7QJE3.js} +2 -2
  66. package/dist/onedrive-XAFONTRT.js +16 -0
  67. package/dist/{oneshot-XW6YVNOY.js → oneshot-EUW726TV.js} +2 -2
  68. package/dist/outlook-KVMKMFUE.js +37 -0
  69. package/dist/{position-UY33ETLX.js → position-MZADW4R4.js} +2 -2
  70. package/dist/{project-ZGOB5W25.js → project-ZVRVNXWI.js} +1 -1
  71. package/dist/{prospect-VN42J236.js → prospect-L43GCNWK.js} +3 -3
  72. package/dist/{purchase-VQZOO3QL.js → purchase-643XP2UX.js} +4 -4
  73. package/dist/query-3ZQP4DCN.js +3 -0
  74. package/dist/receivable-O7H2LJ4K.js +4 -0
  75. package/dist/{registry-3236ULYR.js → registry-PGMXXWHA.js} +1 -1
  76. package/dist/{render-F4MRN2FQ.js → render-ASQBZ75M.js} +1 -1
  77. package/dist/{report-BTF5Q4F3.js → report-YTPDB4Y7.js} +2 -2
  78. package/dist/run-SRTDTEKL.js +4 -0
  79. package/dist/sales-ai-review-J5ICW6RB.js +4 -0
  80. package/dist/{sales-master-RYZKGURE.js → sales-master-MCS3UL4M.js} +3 -3
  81. package/dist/sales-numbering-2DVWFJFG.js +4 -0
  82. package/dist/{server-skills-NJG7JP77.js → server-skills-OF7USNRM.js} +1 -1
  83. package/dist/{skill-command-DFRORWO6.js → skill-command-74MCUHFJ.js} +1 -1
  84. package/dist/{storage-ANKKJJJO.js → storage-KLLBENBY.js} +1 -1
  85. package/dist/{supplier-payment-ZBN2QZRW.js → supplier-payment-QF2YMAVT.js} +3 -3
  86. package/dist/{task-CXHPLZHT.js → task-GSZZ7HT2.js} +3 -3
  87. package/dist/teams-RDBKQJMM.js +50 -0
  88. package/dist/{user-MCDORJTG.js → user-IF6PAMW7.js} +3 -3
  89. package/dist/workflow-BHOWO32V.js +4 -0
  90. package/package.json +1 -1
  91. package/dist/chunk-7WSNIXTQ.js +0 -4
  92. package/dist/chunk-EOSSFTNG.js +0 -4
  93. package/dist/chunk-O44ZKSD2.js +0 -8
  94. package/dist/chunk-V3GQEUYI.js +0 -16
  95. package/dist/deposit-U4AVQH5O.js +0 -4
  96. package/dist/query-EEALMOSO.js +0 -3
  97. package/dist/receivable-TNH4KCUO.js +0 -4
  98. package/dist/run-33WHOIOO.js +0 -4
  99. package/dist/sales-numbering-MBFKVR2C.js +0 -4
  100. package/dist/workflow-2YL2OF2Y.js +0 -4
@@ -0,0 +1,102 @@
1
+ import { createRequire as __twpCreateRequire } from 'node:module';
2
+ const require = __twpCreateRequire(import.meta.url);
3
+ import{salesFeatureDenied}from"./chunk-AHLI7BUX.js";import{charCount,readBody}from"./chunk-ORUDW52G.js";import{featureLicenseGuidance}from"./chunk-NKIBB72I.js";import{repeatedValues}from"./chunk-F7K37QG6.js";import{isExactNumericId}from"./chunk-YQ4DGLD3.js";import{ApiError}from"./chunk-IF2K4PM5.js";import{NotLoggedInError,SessionExpiredError}from"./chunk-XNLIEUAW.js";import{LIST_PAGING_HELP,PAGE_NUMBER_LIST_FLAGS,envelopePaging,nonEmpty,positiveInteger}from"./chunk-IOGMOXYF.js";
4
+ import{requireResolved,withResolved}from"./chunk-LXIAOCUW.js";import{isRecord,pick}from"./chunk-VTQAI52S.js";import{ApiRejectedError,ApiResponseError,NetworkError,UsageError}from"./chunk-UFND7FBC.js";var SALES_PATH="/api/v2/sales";var REASONS_PATH=`${SALES_PATH}/ai-review-reasons`;function documentForbidden(body){if(salesFeatureDenied(body))return featureLicenseGuidance("\u8CA9\u58F2\u7BA1\u7406");const reason=body?.error;if(typeof reason==="string"&&reason.endsWith("\u6A29\u9650\u304C\u3042\u308A\u307E\u305B\u3093")){return`${reason}\uFF08\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306B\u7D10\u3065\u304F\u66F8\u985E\u306F\u305D\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u30E1\u30F3\u30D0\u30FC\u3001\u7D10\u3065\u304B\u306A\u3044\u66F8\u985E\u306F\u4F5C\u6210\u8005\u30FB\u62C5\u5F53\u8005\u3068\u7BA1\u7406\u8005\u3060\u3051\u304C\u6271\u3048\u307E\u3059\uFF09`}
5
+ return void 0}function reasonsForbidden(body){if(body?.error==="permission_denied")return featureLicenseGuidance("\u8CA9\u58F2\u7BA1\u7406");return"\u7406\u7531\u306E\u6A2A\u65AD\u4E00\u89A7\u30FB\u6587\u6848\u751F\u6210\u30FBPR \u4F5C\u6210\u306F\u8CA9\u58F2\u7BA1\u7406\u306E\u7BA1\u7406\u8005\u3060\u3051\u304C\u4F7F\u3048\u307E\u3059\uFF08\u66F8\u985E\u3092\u8DE8\u3044\u3067\u7406\u7531\u3092\u8AAD\u3080\u305F\u3081\uFF09\u3002\u30C6\u30CA\u30F3\u30C8\u304C\u8CA9\u58F2\u7BA1\u7406\u3092\u5951\u7D04\u3057\u3066\u3044\u308B\u304B\u30FB\u3042\u306A\u305F\u306E\u8CA9\u58F2\u7BA1\u7406\u306E\u6A29\u9650\u304C\u300C\u7BA1\u7406\u8005\u300D\u304B\u3092\u30C6\u30CA\u30F3\u30C8\u7BA1\u7406\u8005\u306B\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002"}
6
+ var ESTIMATE={name:"estimate",label:"\u898B\u7A4D",segment:"estimates"};var INVOICE={name:"invoice",label:"\u8ACB\u6C42",segment:"invoices"};var CONTRACT={name:"contract",label:"\u53D6\u5F15\u5951\u7D04",segment:"contracts"};var JUDGMENTS={no_issue:"\u78BA\u8A8D\u3057\u305F\u304C\u554F\u984C\u306A\u3044\u3068\u5224\u65AD\u3057\u305F",corrected:"\u6307\u6458\u3092\u53D7\u3051\u3066\u66F8\u985E\u3092\u4FEE\u6B63\u3057\u305F",not_applicable:"\u3053\u306E\u6848\u4EF6\u306B\u306F\u5F53\u3066\u306F\u307E\u3089\u306A\u3044\u6307\u6458\u3060\u3068\u5224\u65AD\u3057\u305F"};
7
+ var REASON_MAX_CHARS=2e3;var LABEL_MAX_CHARS=255;var CRITERION_RE=/^[A-Za-z0-9_.:-]{1,128}$/;var MAX_REASONS=20;var DRAFT_MAX_CHARS=8e3;var TARGET_PREFIX="checklists/";var DEFAULT_TARGET="checklists/quality/estimation-billing-integrity-check.md";var WAIT_POLL_INTERVAL_MS=5e3;var WAIT_DEFAULT_SECONDS=300;var WAIT_MAX_SECONDS=540;var IN_FLIGHT=new Set(["pending","processing"]);var sleep=ms=>new Promise(resolve=>setTimeout(resolve,ms));function refusedBeforeSending(err){return err instanceof ApiError&&
8
+ err.status>=400&&err.status<500||err instanceof NotLoggedInError||err instanceof SessionExpiredError}async function trimmedBody(input,spec){const text=await readBody(input,{...spec,maxChars:spec.maxChars+1e3});if(text===void 0)return void 0;const length=charCount(text.trim());if(length>spec.maxChars)throw new UsageError(`${spec.label}\u306F ${spec.maxChars.toLocaleString()} \u6587\u5B57\u307E\u3067\u3067\u3059\uFF08${length.toLocaleString()} \u6587\u5B57\uFF09`,spec.usage);return text}function usageOf(doc,resource,op){
9
+ return`twp ${doc.name} ${resource} ${op} help`}function numericDocumentId(raw,doc,usage,what){const id=raw.trim();if(id==="")throw new UsageError(`${doc.label}\u306E ID \u3092${what}\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044`,usage);if(!isExactNumericId(id)){throw new UsageError(`${doc.label}\u306E ID \u306F\u6570\u5B57\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044: ${id}`,`twp ${doc.name} list \u306E id \u5217\u306E\u6570\u5B57\u3067\u3059\uFF08${doc.label}\u756A\u53F7\u3067\u306F\u3042\u308A\u307E\u305B\u3093\uFF09\u3002`)}
10
+ return id}function reviewPath(input,doc,op){const usage=usageOf(doc,"ai-review",op);if(input.args.length>1)throw new UsageError(`\u4F59\u5206\u306A\u5F15\u6570\u304C\u3042\u308A\u307E\u3059: ${input.args.slice(1).join(" ")}`,usage);const id=numericDocumentId(input.args[0]??"",doc,usage,"\u4F4D\u7F6E\u5F15\u6570");return`${SALES_PATH}/${doc.segment}/${encodeURIComponent(id)}/ai-review`}function reasonTarget(input,doc,op){const usage=usageOf(doc,"ai-review-reason",op);if(input.args.length>1)throw new UsageError(
11
+ `\u4F59\u5206\u306A\u5F15\u6570\u304C\u3042\u308A\u307E\u3059: ${input.args.slice(1).join(" ")}\uFF08${doc.label}\u306F --${doc.name} \u3067\u6E21\u3057\u307E\u3059\uFF09`,usage);const criterion=input.args[0]?.trim()??"";if(criterion==="")throw new UsageError("\u6307\u6458\u306E ID\uFF08criterion_id\uFF09\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",`twp ${doc.name} ai-review get <${doc.label}ID> \u306E criterion_id \u5217\u306E\u5024\u3067\u3059\u3002`);if(!CRITERION_RE.test(criterion)||
12
+ /^\.+$/.test(criterion)){throw new UsageError(`\u6307\u6458\u306E ID \u306F\u82F1\u6570\u5B57\u3068 _ . : - \u3060\u3051\u30FB128 \u6587\u5B57\u307E\u3067\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044: ${criterion}`,usage)}const id=numericDocumentId(input.flags.get(`--${doc.name}`)??"",doc,usage,` --${doc.name}`);const base=`${SALES_PATH}/${doc.segment}/${encodeURIComponent(id)}/ai-review`;return{reviewPath:base,reasonPath:`${base}/reasons/${encodeURIComponent(criterion)}`,criterion}}function envelope(body,what){
13
+ if(!isRecord(body)||body["result"]!==true){throw new ApiResponseError(`${what}\u306E\u5FDC\u7B54\u304C\u60F3\u5B9A\u306E\u5F62\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}return body}function withoutResult(body){return Object.fromEntries(Object.entries(body).filter(([key])=>key!=="result"))}function reviewOf(body,what){const review=body["review"];if(review===null)return null;if(!isRecord(review)||typeof review["s\
14
+ tatus"]!=="string"){throw new ApiResponseError(`${what}\u306E\u5FDC\u7B54\u306B review.status \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}return review}function checksOf(review){const checks=review?.["checks"];return Array.isArray(checks)?checks.filter(isRecord):[]}function checkCounts(review){const checks=checksOf(review);return`\u78BA\u8A8D\u3057\u305F\u89B3\u70B9 ${checks.length} \u4EF6\uFF08\u3046\u3061\u8B66\u544A ${checks.
15
+ filter(check=>check["severity"]==="warning").length} \u4EF6\uFF09`}function reasonsMap(body){return isRecord(body["reasons"])?body["reasons"]:{}}var CHECK_COLUMNS=["criterion_id","label","severity","acknowledged","reason_judgment","message"];function checkRows(body){const data=envelope(body,"\u7533\u8ACB\u524DAI\u30C1\u30A7\u30C3\u30AF");const reasons=reasonsMap(data);return checksOf(reviewOf(data,"\u7533\u8ACB\u524DAI\u30C1\u30A7\u30C3\u30AF")).map(check=>{const criterion=typeof check["criterio\
16
+ n_id"]==="string"?check["criterion_id"]:null;const reason=criterion!==null?reasons[criterion]:void 0;return{...pick(check,["criterion_id","label","severity"]),acknowledged:check["acknowledged"]===true,reason_judgment:isRecord(reason)?reason["judgment"]??null:null,message:check["message"]??null}})}function reviewRaw(body){const data=envelope(body,"\u7533\u8ACB\u524DAI\u30C1\u30A7\u30C3\u30AF");reviewOf(data,"\u7533\u8ACB\u524DAI\u30C1\u30A7\u30C3\u30AF");return withoutResult(data)}function statusNotes(doc,id,review){
17
+ if(review===null)return[`\u307E\u3060\u7533\u8ACB\u524DAI\u30C1\u30A7\u30C3\u30AF\u3092\u5B9F\u884C\u3057\u3066\u3044\u307E\u305B\u3093\uFF08twp ${doc.name} ai-review run ${id} --yes \u3067\u5B9F\u884C\u3067\u304D\u307E\u3059\uFF09`];const status=review["status"];if(IN_FLIGHT.has(String(status))){return[`\u751F\u6210\u4E2D\u3067\u3059\uFF08status=${String(status)}\uFF09\u3002twp ${doc.name} ai-review get ${id} \u3067\u7D50\u679C\u3092\u78BA\u304B\u3081\u3066\u304F\u3060\u3055\u3044\uFF08run \u306B --wait \u3092\u4ED8\u3051\u308B\u3068\u5B8C\u4E86\u307E\u3067\u5F85\u3061\u307E\u3059\uFF09`]}
18
+ if(status==="failed")return[`\u524D\u56DE\u306E\u751F\u6210\u306F\u5931\u6557\u3057\u307E\u3057\u305F\uFF08status=failed\uFF09\u3002twp ${doc.name} ai-review run ${id} --yes \u3067\u518D\u5B9F\u884C\u3067\u304D\u307E\u3059`];return[]}function getNotes(doc){return(body,input)=>{const data=envelope(body,"\u7533\u8ACB\u524DAI\u30C1\u30A7\u30C3\u30AF");const review=reviewOf(data,"\u7533\u8ACB\u524DAI\u30C1\u30A7\u30C3\u30AF");const id=input.args[0]?.trim()??"<ID>";const notes=statusNotes(doc,id,review);
19
+ if(review!==null&&review["status"]==="completed"){if(typeof review["summary"]==="string"&&review["summary"]!=="")notes.push(`\u8981\u7D04: ${review["summary"]}`);notes.push(`${checkCounts(review)}\u3002\u751F\u6210\u65E5\u6642 ${String(review["generated_at"]??"\u4E0D\u660E")}`)}if(data["stale"]===true)notes.push(`\u3053\u306E\u7D50\u679C\u306F${doc.label}\u306E\u4FDD\u5B58\u3088\u308A\u524D\u306E\u3082\u306E\u3067\u3059\uFF08\u5185\u5BB9\u304C\u5909\u308F\u3063\u3066\u3044\u307E\u3059\uFF09\u3002\u627F\u8A8D\u7533\u8ACB\u306E\u524D\u306B\u518D\u5B9F\u884C\u3057\u3066\u304F\u3060\u3055\u3044`);
20
+ if(data["reason_editable"]===false){notes.push(data["reason_lock_reason"]==="approved"?"\u627F\u8A8D\u6E08\u307F\u306E\u305F\u3081\u3001\u78BA\u8A8D\u6E08\u307F\u306E\u7406\u7531\u306F\u5909\u66F4\u3067\u304D\u307E\u305B\u3093":"\u627F\u8A8D\u5F85\u3061\u306E\u9593\u306F\u3001\u78BA\u8A8D\u6E08\u307F\u306E\u7406\u7531\u3092\u5909\u66F4\u3067\u304D\u307E\u305B\u3093\uFF08\u5DEE\u3057\u623B\u3055\u308C\u308B\u3068\u5909\u66F4\u3067\u304D\u307E\u3059\uFF09")}notes.push("\u6307\u6458\u306E\u672C\u6587\u30FB\u5185\u8A33\uFF08details\uFF09\u30FB\u7406\u7531\u306E\u5168\u6587\u306F --o\
21
+ utput json \u3067\u51FA\u307E\u3059");return notes}}var WAIT_FLAG={name:"--wait",summary:"\u751F\u6210\u304C\u7D42\u308F\u308B\uFF08completed / failed\uFF09\u307E\u3067\u5F85\u3064",takesValue:false};var TIMEOUT_FLAG={name:"--timeout",summary:`--wait \u3067\u5F85\u3064\u4E0A\u9650\u306E\u79D2\u6570\uFF08\u65E2\u5B9A ${WAIT_DEFAULT_SECONDS}\u30FB\u6700\u5927 ${WAIT_MAX_SECONDS}\uFF09`,takesValue:true,placeholder:"<\u79D2>"};function waitSeconds(input,doc){const timeout=positiveInteger(input.flags,
22
+ TIMEOUT_FLAG.name);if(!input.flags.has(WAIT_FLAG.name)){if(timeout!==void 0)throw new UsageError("--timeout \u306F --wait \u3068\u4E00\u7DD2\u306B\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",usageOf(doc,"ai-review","run"));return void 0}if(timeout!==void 0&&timeout>WAIT_MAX_SECONDS){throw new UsageError(`--timeout \u306F ${WAIT_MAX_SECONDS} \u79D2\u4EE5\u4E0B\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u305D\u308C\u3088\u308A\u9577\u304F\u5F85\u3064\u306A\u3089 --wait \u3092\u5916\u3057\u3001\u3042\u3068\u3067 twp ${doc.
23
+ name} ai-review get \u3067\u78BA\u304B\u3081\u3066\u304F\u3060\u3055\u3044\uFF09`,usageOf(doc,"ai-review","run"))}return timeout??WAIT_DEFAULT_SECONDS}function runPlan(doc){return input=>{waitSeconds(input,doc);return{method:"POST",path:reviewPath(input,doc,"run")}}}function runExecute(doc){return async(input,ctx)=>{const plan=runPlan(doc)(input);const id=input.args[0]?.trim()??"";const getHint=`twp ${doc.name} ai-review get ${id}`;let started;try{started=await ctx.send(plan)}catch(err){if(!refusedBeforeSending(
24
+ err))ctx.warn(`\u5B9F\u884C\u306E\u7D50\u679C\u3092\u53D7\u3051\u53D6\u308C\u307E\u305B\u3093\u3067\u3057\u305F\u3002\u30B5\u30FC\u30D0\u3067\u53D7\u3051\u4ED8\u3051\u6E08\u307F\u306E\u3053\u3068\u304C\u3042\u308A\u307E\u3059\u3002\u6253\u3061\u76F4\u3059\u524D\u306B ${getHint} \u3067\u78BA\u304B\u3081\u3066\u304F\u3060\u3055\u3044\u3002`);throw err}const data=envelope(started,"\u7533\u8ACB\u524DAI\u30C1\u30A7\u30C3\u30AF\u306E\u5B9F\u884C");const review=reviewOf(data,"\u7533\u8ACB\u524DAI\u30C1\u30A7\u30C3\u30AF\u306E\u5B9F\u884C");
25
+ const seconds=waitSeconds(input,doc);if(seconds===void 0||review===null||!IN_FLIGHT.has(String(review["status"]))){return data}const deadline=Date.now()+seconds*1e3;const getPlan={method:"GET",path:plan.path};ctx.warn(`\u751F\u6210\u306E\u5B8C\u4E86\u3092\u5F85\u3061\u307E\u3059\uFF08${WAIT_POLL_INTERVAL_MS/1e3} \u79D2\u304A\u304D\u30FB\u6700\u5927 ${seconds} \u79D2\uFF09\u3002`);for(;;){await sleep(WAIT_POLL_INTERVAL_MS);let latest;try{latest=reviewOf(envelope(await ctx.send(getPlan),"\u7533\u8ACB\u524DAI\u30C1\u30A7\u30C3\u30AF"),
26
+ "\u7533\u8ACB\u524DAI\u30C1\u30A7\u30C3\u30AF")}catch(err){ctx.warn(`\u5B9F\u884C\u306F\u53D7\u3051\u4ED8\u3051\u6E08\u307F\u3067\u3059\u304C\u3001\u5B8C\u4E86\u3092\u5F85\u3064\u9014\u4E2D\u3067\u7D50\u679C\u3092\u8AAD\u3081\u307E\u305B\u3093\u3067\u3057\u305F\u3002\u6253\u3061\u76F4\u3059\u524D\u306B ${getHint} \u3067\u78BA\u304B\u3081\u3066\u304F\u3060\u3055\u3044\u3002`);throw err}const status=latest===null?null:String(latest["status"]);if(latest!==null&&status==="completed")return{...data,review:latest};
27
+ if(latest!==null&&status==="failed"){throw new ApiRejectedError(`\u7533\u8ACB\u524DAI\u30C1\u30A7\u30C3\u30AF\u306E\u751F\u6210\u306B\u5931\u6557\u3057\u307E\u3057\u305F\uFF08status=failed\uFF09\u3002twp ${doc.name} ai-review run ${id} --yes \u3067\u518D\u5B9F\u884C\u3067\u304D\u307E\u3059`)}if(Date.now()>=deadline){throw new NetworkError(`${seconds} \u79D2\u5F85\u3061\u307E\u3057\u305F\u304C\u751F\u6210\u304C\u7D42\u308F\u308A\u307E\u305B\u3093\u3067\u3057\u305F\uFF08status=${status??"\u4E0D\u660E"}\
28
+ \uFF09\u3002\u3042\u3068\u3067 ${getHint} \u3067\u7D50\u679C\u3092\u78BA\u304B\u3081\u3066\u304F\u3060\u3055\u3044\uFF0815 \u5206\u305F\u3063\u3066\u3082 ${status??"pending"} \u306E\u307E\u307E\u306A\u3089\u3001\u751F\u6210\u304C\u6B62\u307E\u3063\u3066\u3044\u307E\u3059\u3002run --yes \u3067\u518D\u5B9F\u884C\u3067\u304D\u307E\u3059\uFF09`)}}}}function runNotes(doc){return(body,input)=>{const data=envelope(body,"\u7533\u8ACB\u524DAI\u30C1\u30A7\u30C3\u30AF\u306E\u5B9F\u884C");const review=reviewOf(
29
+ data,"\u7533\u8ACB\u524DAI\u30C1\u30A7\u30C3\u30AF\u306E\u5B9F\u884C");const id=input.args[0]?.trim()??"<ID>";const notes=[];if(data["regenerated"]===false){notes.push("\u5185\u5BB9\u304C\u524D\u56DE\u306E\u5B9F\u884C\u304B\u3089\u5909\u308F\u3063\u3066\u3044\u306A\u3044\u3001\u307E\u305F\u306F\u524D\u56DE\u306E\u5B9F\u884C\u304C\u9032\u884C\u4E2D\u306E\u305F\u3081\u3001AI \u3092\u547C\u3070\u305A\u306B\u4FDD\u5B58\u6E08\u307F\u306E\u7D50\u679C\u3092\u8FD4\u3057\u307E\u3057\u305F\uFF08\u30AF\u30EC\u30B8\u30C3\u30C8\u306F\u6D88\u8CBB\u3057\u3066\u3044\u307E\u305B\u3093\uFF09")}
30
+ notes.push(...statusNotes(doc,id,review));if(review!==null&&review["status"]==="completed"){notes.push(`${checkCounts(review)}\u3002\u4E00\u89A7\u3068\u78BA\u8A8D\u6E08\u307F\u306E\u7406\u7531\u306F twp ${doc.name} ai-review get ${id} \u3067\u51FA\u307E\u3059`)}return notes}}function aiReviewResource(doc){return{name:"ai-review",summary:`${doc.label}\u306E\u7533\u8ACB\u524DAI\u30C1\u30A7\u30C3\u30AF\uFF08\u5B9F\u884C\u30FB\u7D50\u679C\u306E\u8868\u793A\uFF09`,operations:[{name:"run",summary:`${doc.
31
+ label}\u306E\u7533\u8ACB\u524DAI\u30C1\u30A7\u30C3\u30AF\u3092\u5B9F\u884C\u3059\u308B\uFF08AI \u30AF\u30EC\u30B8\u30C3\u30C8\u3092\u6D88\u8CBB\u30FB--yes \u304C\u8981\u308B\u30FB--wait \u3067\u5B8C\u4E86\u307E\u3067\u5F85\u3064\uFF09`,usage:`twp ${doc.name} ai-review run <${doc.label}ID> [--wait [--timeout <\u79D2>]] --yes`,description:`\u753B\u9762\u306E${doc.label}\u7DE8\u96C6\u306E\u300CAI\u30C1\u30A7\u30C3\u30AF\u3092\u5B9F\u884C\u300D\u3068\u540C\u3058\u304F\u3001POST ${SALES_PATH}/${doc.segment}\
32
+ /{id}/ai-review \u3092\u9001\u308A\u307E\u3059\u3002
33
+ \u3053\u3053\u3067\u30C6\u30CA\u30F3\u30C8\u306E AI \u30AF\u30EC\u30B8\u30C3\u30C8\u3092\u6D88\u8CBB\u3057\u307E\u3059\u3002\u305F\u3060\u3057\u5185\u5BB9\u304C\u524D\u56DE\u306E\u5B9F\u884C\u304B\u3089\u5909\u308F\u3063\u3066\u3044\u306A\u3044\u3001\u307E\u305F\u306F\u524D\u56DE\u306E\u5B9F\u884C\u304C\u9032\u884C\u4E2D\u306A\u3089
34
+ \u30B5\u30FC\u30D0\u306F AI \u3092\u547C\u3070\u305A\u306B\u4FDD\u5B58\u6E08\u307F\u306E\u7D50\u679C\u3092\u8FD4\u3057\u307E\u3059\uFF08regenerated=false\u30FB\u6D88\u8CBB\u3057\u307E\u305B\u3093\uFF09\u3002
35
+ \u751F\u6210\u306F\u975E\u540C\u671F\u3067\u3001\u5FDC\u7B54\u306E status \u306F\u3075\u3064\u3046 pending \u3067\u3059\u3002--wait \u3092\u4ED8\u3051\u308B\u3068 5 \u79D2\u304A\u304D\u306B\u7D50\u679C\u3092\u5F15\u304D\u3001completed \u307E\u3067\u5F85\u3061\u307E\u3059
36
+ \uFF08failed \u306A\u3089\u7D42\u4E86\u30B3\u30FC\u30C9 3\u3001--timeout \u79D2\u3067\u7D42\u308F\u3089\u306A\u3051\u308C\u3070\u7D42\u4E86\u30B3\u30FC\u30C9 4\u3002\u65E2\u5B9A ${WAIT_DEFAULT_SECONDS} \u79D2\u30FB\u6700\u5927 ${WAIT_MAX_SECONDS} \u79D2\uFF09\u3002
37
+ \u627F\u8A8D\u8005\u304C\u898B\u308B\u7533\u8ACB\u6642\u306E\u30C1\u30A7\u30C3\u30AF\uFF08\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\uFF09\u306B\u306F\u89E6\u308C\u307E\u305B\u3093\u3002ID \u306F twp ${doc.name} list \u306E id \u5217\u306E\u6570\u5B57\u3067\u3059\u3002`,destructive:true,confirmation:"AI \u30AF\u30EC\u30B8\u30C3\u30C8\u3092\u6D88\u8CBB\u3059\u308B\u64CD\u4F5C",flags:[WAIT_FLAG,TIMEOUT_FLAG],forbidden:documentForbidden,plan:runPlan(doc),plannedNotes:input=>["\u30C6\u30CA\u30F3\u30C8\u306E AI \u30AF\u30EC\u30B8\u30C3\u30C8\u3092\u6D88\u8CBB\u3057\u307E\u3059\uFF08\u5185\u5BB9\u304C\u524D\u56DE\u304B\u3089\
38
+ \u5909\u308F\u3063\u3066\u3044\u306A\u3051\u308C\u3070\u6D88\u8CBB\u3057\u307E\u305B\u3093\uFF09",...input.flags.has(WAIT_FLAG.name)?[`\u7D9A\u3051\u3066 GET ${reviewPath(input,doc,"run")} \u3092 ${WAIT_POLL_INTERVAL_MS/1e3} \u79D2\u304A\u304D\u306B\u9001\u308A\u3001\u5B8C\u4E86\u3092\u5F85\u3061\u307E\u3059`]:[]],execute:runExecute(doc),summarize:body=>{const data=envelope(body,"\u7533\u8ACB\u524DAI\u30C1\u30A7\u30C3\u30AF\u306E\u5B9F\u884C");const review=reviewOf(data,"\u7533\u8ACB\u524DAI\u30C1\u30A7\u30C3\u30AF\u306E\u5B9F\u884C");
39
+ return{status:review?.["status"]??null,regenerated:data["regenerated"]??null,checks:checksOf(review).length,generated_at:review?.["generated_at"]??null}},raw:body=>withoutResult(envelope(body,"\u7533\u8ACB\u524DAI\u30C1\u30A7\u30C3\u30AF\u306E\u5B9F\u884C")),notes:runNotes(doc)},{name:"get",summary:`${doc.label}\u306E\u7533\u8ACB\u524DAI\u30C1\u30A7\u30C3\u30AF\u306E\u7D50\u679C\u3068\u3001\u6307\u6458\u306B\u6DFB\u3048\u305F\u78BA\u8A8D\u6E08\u307F\u306E\u7406\u7531\u3092\u8868\u793A\u3059\u308B`,
40
+ usage:`twp ${doc.name} ai-review get <${doc.label}ID>`,description:`GET ${SALES_PATH}/${doc.segment}/{id}/ai-review\u3002\u4FDD\u5B58\u6E08\u307F\u306E\u7D50\u679C\u3092\u8FD4\u3057\u307E\u3059\uFF08AI \u306F\u547C\u3073\u307E\u305B\u3093\uFF09\u3002
41
+ \u4E00\u5EA6\u3082\u5B9F\u884C\u3057\u3066\u3044\u306A\u3044\u66F8\u985E\u3067\u306F\u7D50\u679C\u304C\u7A7A\u3067\u3059\uFF08\u30A8\u30E9\u30FC\u306B\u306F\u306A\u308A\u307E\u305B\u3093\uFF09\u3002
42
+ --output table / text / tsv \u306F\u78BA\u8A8D\u3057\u305F\u89B3\u70B91\u4EF6\uFF1D1\u884C\uFF08${CHECK_COLUMNS.join(" / ")}\uFF09\u3067\u3001severity \u304C warning \u306E\u884C\u304C\u6307\u6458\u3067\u3059\u3002
43
+ reason_judgment \u306F\u305D\u306E\u89B3\u70B9\u306B\u6DFB\u3048\u305F\u78BA\u8A8D\u6E08\u307F\u306E\u7406\u7531\u306E\u5224\u65AD\u3067\u3059\u3002
44
+ \u7406\u7531\u3092\u6DFB\u3048\u308B\u306E\u306F twp ${doc.name} ai-review-reason update <criterion_id> --${doc.name} <${doc.label}ID> \u3067\u3059\u3002`,flags:[],forbidden:documentForbidden,plan:input=>({method:"GET",path:reviewPath(input,doc,"get")}),summarize:checkRows,raw:reviewRaw,notes:getNotes(doc)}]}}function documentFlag(doc){return{name:`--${doc.name}`,summary:`${doc.label}\u306E ID\uFF08twp ${doc.name} list \u306E id \u5217\u306E\u6570\u5B57\u30FB\u5FC5\u9808\uFF09`,takesValue:true,placeholder:`\
45
+ <${doc.label}ID>`}}var JUDGMENT_FLAG={name:"--judgment",summary:`\u5224\u65AD\uFF08${Object.keys(JUDGMENTS).join(" / ")}\u30FB\u5FC5\u9808\uFF09`,takesValue:true,placeholder:"<\u5224\u65AD>"};var REASON_FLAGS=[JUDGMENT_FLAG,{name:"--text",summary:`\u7406\u7531\u306E\u672C\u6587\uFF08${REASON_MAX_CHARS.toLocaleString()} \u6587\u5B57\u307E\u3067\uFF09`,takesValue:true,placeholder:"<\u7406\u7531>"},{name:"--text-file",summary:"\u7406\u7531\u306E\u672C\u6587\u3092\u8AAD\u3080\u30D5\u30A1\u30A4\u30EB\uFF08- \u3067\u6A19\u6E96\u5165\u529B\uFF09",
46
+ takesValue:true,placeholder:"<\u30D1\u30B9>"},{name:"--label",summary:"\u8A18\u9332\u306B\u6B8B\u3059\u6307\u6458\u306E\u30E9\u30D9\u30EB\uFF08\u7701\u7565\u6642\u306F\u4FDD\u5B58\u6E08\u307F\u306E\u30C1\u30A7\u30C3\u30AF\u7D50\u679C\u304B\u3089\u88DC\u3046\uFF09",takesValue:true,placeholder:"<\u30E9\u30D9\u30EB>"}];function judgmentOf(input,doc){const raw=nonEmpty(input.flags,JUDGMENT_FLAG.name)?.trim();const list=Object.entries(JUDGMENTS).map(([key,label])=>`${key}\uFF08${label}\uFF09`).join("\
47
+ / ");if(raw===void 0)throw new UsageError(`--judgment \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044: ${list}`,usageOf(doc,"ai-review-reason","update"));if(!Object.hasOwn(JUDGMENTS,raw))throw new UsageError(`--judgment \u306F ${list} \u306E\u3069\u308C\u304B\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044: ${raw}`,usageOf(doc,"ai-review-reason","update"));return raw}function truncateChars(text,max){const chars=[...text];return chars.length<=max?text:chars.slice(0,max).join("")}function prepareReason(doc){
48
+ return async(input,ctx)=>{const usage=usageOf(doc,"ai-review-reason","update");const target=reasonTarget(input,doc,"update");const judgment=judgmentOf(input,doc);const text=await trimmedBody(input,{flag:"--text",fileFlag:"--text-file",label:"\u7406\u7531",maxChars:REASON_MAX_CHARS,usage});if(text===void 0||text.trim()==="")throw new UsageError("\u7406\u7531\u3092 --text <\u672C\u6587> \u304B --text-file <\u30D1\u30B9> \u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",usage);const explicit=nonEmpty(
49
+ input.flags,"--label");if(explicit!==void 0&&charCount(explicit.trim())>LABEL_MAX_CHARS){throw new UsageError(`--label \u306F ${LABEL_MAX_CHARS} \u6587\u5B57\u307E\u3067\u3067\u3059\uFF08${charCount(explicit.trim())} \u6587\u5B57\uFF09`,usage)}const current=await ctx.resolver.salesJson(target.reviewPath,"\u7533\u8ACB\u524DAI\u30C1\u30A7\u30C3\u30AF\u306E\u7D50\u679C");const check=checksOf(reviewOf(current,"\u7533\u8ACB\u524DAI\u30C1\u30A7\u30C3\u30AF")).find(row=>row["criterion_id"]===target.criterion);
50
+ const label=explicit??(typeof check?.["label"]==="string"?truncateChars(check["label"],LABEL_MAX_CHARS):void 0);return withResolved(input,{judgment,text,missing:check===void 0?"1":"0",...label===void 0||label===""?{}:{label}})}}function reasonPlan(doc){return input=>({method:"PUT",path:reasonTarget(input,doc,"update").reasonPath,body:{judgment:requireResolved(input,"judgment"),reason:requireResolved(input,"text"),criterion_label:input.resolved?.["label"]??null}})}function reasonPlannedNotes(doc){
51
+ return input=>input.resolved?.["missing"]==="1"?[`\u4FDD\u5B58\u6E08\u307F\u306E\u30C1\u30A7\u30C3\u30AF\u7D50\u679C\u306B\u6307\u6458 ${input.args[0]?.trim()??""} \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u7406\u7531\u306F\u4FDD\u5B58\u3055\u308C\u307E\u3059\u304C\u3001\u305D\u306E\u6307\u6458\u304C\u51FA\u308B\u307E\u3067\u753B\u9762\u306B\u306F\u8868\u793A\u3055\u308C\u307E\u305B\u3093\uFF08\u6307\u6458 ID \u306F twp ${doc.name} ai-review get \u306E criterion_id \u5217\u3067\u3059\uFF09`]:[]}
52
+ function reasonOf(body){const data=envelope(body,"\u78BA\u8A8D\u6E08\u307F\u306E\u7406\u7531\u306E\u4FDD\u5B58");if(!isRecord(data["reason"]))throw new ApiResponseError("\u78BA\u8A8D\u6E08\u307F\u306E\u7406\u7531\u306E\u4FDD\u5B58\u306E\u5FDC\u7B54\u306B reason \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002");return data["reason"]}function deleteAck(body){const data=envelope(body,"\u78BA\u8A8D\u6E08\u307F\u306E\u7406\u7531\u306E\u53D6\u6D88");
53
+ return{result:data["result"]}}function aiReviewReasonResource(doc){const flag=documentFlag(doc);return{name:"ai-review-reason",summary:`${doc.label}\u306E\u7533\u8ACB\u524DAI\u30C1\u30A7\u30C3\u30AF\u306E\u6307\u6458\u306B\u6DFB\u3048\u308B\u300C\u78BA\u8A8D\u6E08\u307F\u306E\u7406\u7531\u300D\uFF08\u767B\u9332\u30FB\u66F4\u65B0\u30FB\u53D6\u6D88\uFF09`,operations:[{name:"update",summary:"\u6307\u64581\u4EF6\u306B\u78BA\u8A8D\u6E08\u307F\u306E\u7406\u7531\u3092\u6DFB\u3048\u308B\uFF08\u3042\u308C\u3070\u66F8\u304D\u63DB\u3048\u308B\uFF09",
54
+ usage:`twp ${doc.name} ai-review-reason update <\u6307\u6458ID> --${doc.name} <${doc.label}ID> --judgment <\u5224\u65AD> (--text <\u7406\u7531> | --text-file <\u30D1\u30B9>) [--label <\u30E9\u30D9\u30EB>]`,description:`PUT ${SALES_PATH}/${doc.segment}/{id}/ai-review/reasons/{criterion_id}\u3002\u753B\u9762\u306E\u6307\u6458\u306E\u300C\u7406\u7531\u3092\u8A18\u9332\u300D\u3068\u540C\u3058\u3067\u3059\u3002
55
+ <\u6307\u6458ID> \u306F twp ${doc.name} ai-review get \u306E criterion_id \u5217\u306E\u5024\u3067\u3059\uFF08\u7406\u7531\u306F\u6307\u6458\u306E\u89B3\u70B9\u306B\u4ED8\u304F\u306E\u3067\u3001\u30C1\u30A7\u30C3\u30AF\u3092\u518D\u5B9F\u884C\u3057\u3066\u3082\u6B8B\u308A\u307E\u3059\uFF09\u3002
56
+ --judgment: ${Object.entries(JUDGMENTS).map(([key,label])=>`${key}\uFF08${label}\uFF09`).join(" / ")}
57
+ \u9001\u308B\u524D\u306B\u4FDD\u5B58\u6E08\u307F\u306E\u30C1\u30A7\u30C3\u30AF\u7D50\u679C\u3092\u8AAD\u307F\uFF08--dry-run \u3067\u3082\u8AAD\u307F\u307E\u3059\uFF09\u3001--label \u3092\u7701\u3051\u3070\u305D\u306E\u6307\u6458\u306E\u30E9\u30D9\u30EB\u3092\u88DC\u3044\u307E\u3059\u3002
58
+ \u7D50\u679C\u306B\u7121\u3044\u6307\u6458 ID \u3067\u3082\u4FDD\u5B58\u306F\u3057\u307E\u3059\u304C\u3001\u305D\u306E\u65E8\u3092 stderr \u306B\u51FA\u3057\u307E\u3059\u3002
59
+ \u627F\u8A8D\u5F85\u3061\u30FB\u627F\u8A8D\u6E08\u307F\u306E\u9593\u306F\u30B5\u30FC\u30D0\u304C\u65AD\u308A\u307E\u3059\uFF08\u5DEE\u3057\u623B\u3055\u308C\u308B\u3068\u5909\u66F4\u3067\u304D\u307E\u3059\uFF09\u3002`,flags:[flag,...REASON_FLAGS],forbidden:documentForbidden,prepare:prepareReason(doc),plan:reasonPlan(doc),plannedNotes:reasonPlannedNotes(doc),summarize:body=>pick(reasonOf(body),["criterion_id","criterion_label","judgment","reason","updated_at"]),raw:reasonOf},{name:"delete",summary:"\
60
+ \u6307\u6458\u306B\u6DFB\u3048\u305F\u78BA\u8A8D\u6E08\u307F\u306E\u7406\u7531\u3092\u53D6\u308A\u6D88\u3059\uFF08--yes \u304C\u8981\u308B\uFF09",usage:`twp ${doc.name} ai-review-reason delete <\u6307\u6458ID> --${doc.name} <${doc.label}ID> --yes`,description:`DELETE ${SALES_PATH}/${doc.segment}/{id}/ai-review/reasons/{criterion_id}\u3002\u7406\u7531\u304C\u7121\u3044\u6307\u6458\u3078\u306E\u53D6\u6D88\u3082\u30B5\u30FC\u30D0\u306F\u6210\u529F\u3092\u8FD4\u3057\u307E\u3059\u3002
61
+ \u627F\u8A8D\u5F85\u3061\u30FB\u627F\u8A8D\u6E08\u307F\u306E\u9593\u306F\u30B5\u30FC\u30D0\u304C\u65AD\u308A\u307E\u3059\u3002`,destructive:true,flags:[flag],forbidden:documentForbidden,plan:input=>({method:"DELETE",path:reasonTarget(input,doc,"delete").reasonPath}),summarize:deleteAck,raw:deleteAck}]}}var estimateAiReviewResources=[aiReviewResource(ESTIMATE),aiReviewReasonResource(ESTIMATE)];var invoiceAiReviewResources=[aiReviewResource(INVOICE),aiReviewReasonResource(INVOICE)];var contractAiReviewResources=[
62
+ aiReviewResource(CONTRACT),aiReviewReasonResource(CONTRACT)];function readPageCursor(body){const pagination=isRecord(body)&&isRecord(body["pagination"])?body["pagination"]:void 0;if(pagination===void 0)return{hasMore:"pagination \u304C\u7121\u3044\u5FDC\u7B54",cursor:void 0};const hasMore=pagination["has_more"];const page=pagination["page"];if(hasMore!==true)return{hasMore,cursor:null};return{hasMore,cursor:Number.isInteger(page)?String(page+1):void 0}}var LIST_COLUMNS=["id","document_type","doc\
63
+ ument_no","company_name","criterion_id","judgment","knowledge_pr_number","created_at"];var REASON_LIST_FLAGS=[{name:"--customer",summary:"\u53D6\u5F15\u5148\u3067\u7D5E\u308B\uFF08\u540D\u524D\u304B ID\uFF09",takesValue:true,placeholder:"<\u53D6\u5F15\u5148>"},{name:"--criterion",summary:"\u6307\u6458\u306E ID\uFF08criterion_id\uFF09\u3067\u7D5E\u308B",takesValue:true,placeholder:"<\u6307\u6458ID>"},...PAGE_NUMBER_LIST_FLAGS];async function prepareList(input,ctx){const customer=nonEmpty(input.flags,
64
+ "--customer");if(customer===void 0)return input;return withResolved(input,{customer:(await ctx.resolver.company(customer,{flag:"--customer",source:"sales",mustExist:true})).id})}function listPlan(input){if(input.args.length>0)throw new UsageError(`\u4F59\u5206\u306A\u5F15\u6570\u304C\u3042\u308A\u307E\u3059: ${input.args.join(" ")}`,"twp ai-review-reason list help");const criterion=nonEmpty(input.flags,"--criterion")?.trim();if(criterion!==void 0&&charCount(criterion)>128)throw new UsageError("-\
65
+ -criterion \u306F 128 \u6587\u5B57\u307E\u3067\u3067\u3059","twp ai-review-reason list help");const limit=positiveInteger(input.flags,"--limit");const page=positiveInteger(input.flags,"--cursor");return{method:"GET",path:REASONS_PATH,query:{company_id:input.resolved?.["customer"],criterion_id:criterion,page:page===void 0?void 0:String(page),per_page:limit===void 0?void 0:String(Math.min(limit,100))}}}function listItems(body){const data=envelope(body,"\u78BA\u8A8D\u6E08\u307F\u306E\u7406\u7531\u306E\u4E00\u89A7");
66
+ if(!Array.isArray(data["items"]))throw new ApiResponseError("\u78BA\u8A8D\u6E08\u307F\u306E\u7406\u7531\u306E\u4E00\u89A7\u306E\u5FDC\u7B54\u306B items \u914D\u5217\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002");return data["items"].filter(isRecord)}function listNotes(body){const data=envelope(body,"\u78BA\u8A8D\u6E08\u307F\u306E\u7406\u7531\u306E\u4E00\u89A7");const pagination=isRecord(data["pagination"])?data["paginatio\
67
+ n"]:{};const{page,per_page:perPage,total}=pagination;if(Array.isArray(data["items"])&&data["items"].length===0&&Number.isInteger(page)&&page>1&&Number.isInteger(total)&&Number.isInteger(perPage)){return[`\u30DA\u30FC\u30B8 ${String(page)} \u306F\u7BC4\u56F2\u5916\u3067\u3059\uFF08\u5168 ${Math.max(1,Math.ceil(total/perPage))} \u30DA\u30FC\u30B8\u30FB${String(total)} \u4EF6\uFF09`]}return[]}function targetPathOf(input){const raw=nonEmpty(input.flags,"--target-path")?.trim();if(raw===void 0)return void 0;
68
+ if(!raw.startsWith(TARGET_PREFIX)||!raw.endsWith(".md")||raw.includes("..")||!/^[A-Za-z0-9][A-Za-z0-9._/-]*$/.test(raw)||charCount(raw)>255){throw new UsageError(`--target-path \u306F ${TARGET_PREFIX} \u914D\u4E0B\u306E Markdown \u30D5\u30A1\u30A4\u30EB\u3060\u3051\u3092\u6307\u5B9A\u3067\u304D\u307E\u3059: ${raw}`,"twp ai-review-reason publish help")}return raw}var REASON_ID_FLAG={name:"--reason",summary:`\u7406\u7531\u306E ID\uFF08twp ai-review-reason list \u306E id \u5217\u3002\u7E70\u308A\u8FD4\u3057\u3066 ${MAX_REASONS}\
69
+ \u4EF6\u307E\u3067\uFF09`,takesValue:true,placeholder:"<\u7406\u7531ID>",repeatable:true};function reasonIds(input,op){const usage=`twp ai-review-reason ${op} help`;if(input.args.length>0)throw new UsageError(`\u4F59\u5206\u306A\u5F15\u6570\u304C\u3042\u308A\u307E\u3059: ${input.args.join(" ")}\uFF08\u7406\u7531\u306F --reason \u3067\u6E21\u3057\u307E\u3059\uFF09`,usage);const raw=repeatedValues(input,REASON_ID_FLAG.name).map(value=>value.trim());if(raw.length===0)throw new UsageError("--reason\
70
+ <\u7406\u7531ID> \u30921\u3064\u4EE5\u4E0A\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08twp ai-review-reason list \u306E id \u5217\uFF09",usage);const bad=raw.filter(value=>!isExactNumericId(value));if(bad.length>0)throw new UsageError(`\u7406\u7531\u306E ID \u306F\u6570\u5B57\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044: ${bad.join(" ")}`,usage);const ids=[...new Set(raw)].map(Number);if(ids.length>MAX_REASONS)throw new UsageError(`--reason \u306F ${MAX_REASONS} \u4EF6\u307E\u3067\u3067\u3059\uFF08${ids.
71
+ length} \u4EF6\uFF09`,usage);return ids}function draftOf(body){const data=envelope(body,"\u8FFD\u8A18\u6587\u6848\u306E\u751F\u6210");if(typeof data["draft"]!=="string")throw new ApiResponseError("\u8FFD\u8A18\u6587\u6848\u306E\u751F\u6210\u306E\u5FDC\u7B54\u306B draft \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002");return data}function prOf(body){const data=envelope(body,"\u8FFD\u8A18PR\u306E\u4F5C\u6210");if(typeof data["\
72
+ pull_request_url"]!=="string")throw new ApiResponseError("\u8FFD\u8A18PR\u306E\u4F5C\u6210\u306E\u5FDC\u7B54\u306B pull_request_url \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002");return data}async function preparePublish(input){const usage="twp ai-review-reason publish help";reasonIds(input,"publish");targetPathOf(input);const draft=await trimmedBody(input,{flag:"--draft",fileFlag:"--draft-file",label:"\u8FFD\u8A18\u6587\u6848",
73
+ maxChars:DRAFT_MAX_CHARS,usage});if(draft===void 0||draft.trim()===""){throw new UsageError("\u8FFD\u8A18\u3059\u308B\u6587\u6848\u3092 --draft-file <\u30D1\u30B9> \u304B --draft <\u6587\u6848> \u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08twp ai-review-reason preview \u2026 --output text \u3067\u4F5C\u308C\u307E\u3059\uFF09",usage)}return withResolved(input,{draft})}function draftPlan(input){return{method:"POST",path:`${REASONS_PATH}/knowledge-draft`,body:{reason_ids:reasonIds(input,
74
+ "preview")}}}function publishPlan(input){return{method:"POST",path:`${REASONS_PATH}/knowledge-pr`,body:{reason_ids:reasonIds(input,"publish"),draft:requireResolved(input,"draft"),target_path:targetPathOf(input)??null}}}var aiReviewReasonDomain={name:"ai-review-reason",summary:"\u7533\u8ACB\u524DAI\u30C1\u30A7\u30C3\u30AF\u306E\u78BA\u8A8D\u6E08\u307F\u306E\u7406\u7531\uFF08\u66F8\u985E\u3092\u8DE8\u3050\u4E00\u89A7\u30FB\u793E\u5185\u30CA\u30EC\u30C3\u30B8\u3078\u306E\u8FFD\u8A18\u6587\u6848\u306E\u751F\u6210\u30FB\u8FFD\u8A18PR\u306E\u4F5C\u6210\u3002\u8CA9\u58F2\u7BA1\u7406\u306E\u7BA1\u7406\u8005\uFF09",
75
+ operations:[{name:"list",summary:"\u898B\u7A4D\u30FB\u8ACB\u6C42\u30FB\u53D6\u5F15\u5951\u7D04\u306E\u6307\u6458\u306B\u6DFB\u3048\u3089\u308C\u305F\u78BA\u8A8D\u6E08\u307F\u306E\u7406\u7531\u3092\u4E00\u89A7\u3059\u308B\uFF08\u65B0\u3057\u3044\u9806\uFF09",usage:"twp ai-review-reason list [--customer <\u53D6\u5F15\u5148>] [--criterion <\u6307\u6458ID>] [--limit <\u4EF6\u6570>] [--all]",description:`GET ${REASONS_PATH}\u3002\u753B\u9762\u306E\u300CAI\u30C1\u30A7\u30C3\u30AF\u7406\u7531\u4E00\u89A7\u300D\u3068\u540C\u3058\u3067\u3001\u8CA9\u58F2\u7BA1\u7406\u306E\u7BA1\u7406\u8005\u3060\u3051\u304C\u4F7F\u3048\u307E\u3059\u3002
76
+ --output table / text / tsv \u306F\u8981\u7D04\u5217\uFF08${LIST_COLUMNS.join(" / ")}\uFF09\u3067\u3059\u3002knowledge_pr_number \u304C\u3042\u308B\u3082\u306E\u306F\u8FFD\u8A18PR\u3092\u4F5C\u6210\u6E08\u307F\u3067\u3059\u3002
77
+ \u7D5E\u308A\u8FBC\u307F\u306E\u5019\u88DC\uFF08\u6307\u6458\u306E\u7A2E\u5225\u3068\u4EF6\u6570\uFF09\u3068\u7406\u7531\u306E\u5168\u6587\u306F --output json \u3067\u51FA\u307E\u3059\u3002
78
+
79
+ ${LIST_PAGING_HELP}
80
+ \u26A0 \u3053\u306E\u4E00\u89A7\u306F\u30DA\u30FC\u30B8\u756A\u53F7\u3067\u4F4D\u7F6E\u3092\u6307\u5B9A\u3057\u307E\u3059\uFF08--cursor \u306F\u30DA\u30FC\u30B8\u756A\u53F7\u3067\u3059\uFF09\u3002\u4E26\u3073\u306F\u767B\u9332\u306E\u65B0\u3057\u3044\u9806\u3067\u3059\u3002
81
+ \u8FBF\u3063\u3066\u3044\u308B\u6700\u4E2D\u306B\u7406\u7531\u304C\u5897\u6E1B\u3059\u308B\u3068\u3001\u53D6\u308A\u3053\u307C\u3057\u30FB\u91CD\u8907\u304C\u8D77\u3053\u308A\u5F97\u307E\u3059\u3002`,flags:REASON_LIST_FLAGS,forbidden:reasonsForbidden,paging:envelopePaging({label:"\u78BA\u8A8D\u6E08\u307F\u306E\u7406\u7531\u306E\u4E00\u89A7",cursorParam:"page",readCursor:readPageCursor}),prepare:prepareList,plan:listPlan,summarize:body=>listItems(body).map(row=>pick(row,LIST_COLUMNS)),raw:listItems,
82
+ notes:listNotes},{name:"preview",summary:"\u9078\u3093\u3060\u7406\u7531\u304B\u3089\u793E\u5185\u30CA\u30EC\u30C3\u30B8\u3078\u306E\u8FFD\u8A18\u6587\u6848\u3092\u751F\u6210\u3059\u308B\uFF08AI \u30AF\u30EC\u30B8\u30C3\u30C8\u3092\u6D88\u8CBB\u30FB--yes \u304C\u8981\u308B\uFF09",usage:"twp ai-review-reason preview --reason <\u7406\u7531ID> [--reason <\u7406\u7531ID>]... --yes",description:`POST ${REASONS_PATH}/knowledge-draft\u3002\u753B\u9762\u306E\u300C\u6587\u6848\u3092\u751F\u6210\u300D\u3068\u540C\u3058\u3067\u3001\u30C6\u30CA\u30F3\u30C8\u306E AI \u30AF\u30EC\u30B8\u30C3\u30C8\u3092\u6D88\u8CBB\u3057\u307E\u3059\u3002
83
+ \u6587\u6848\u306B\u53D6\u5F15\u5148\u540D\u30FB\u6848\u4EF6\u540D\u304C\u6DF7\u3056\u308B\u3068\u30B5\u30FC\u30D0\u304C\u4F5C\u308A\u76F4\u3057\u3001\u305D\u308C\u3067\u3082\u6DF7\u3056\u308C\u3070\u4E2D\u6B62\u3057\u3066\u8A72\u5F53\u8A9E\u3092\u8FD4\u3057\u307E\u3059\uFF08\u3053\u306E\u3068\u304D\u3082\u30AF\u30EC\u30B8\u30C3\u30C8\u306F\u6D88\u8CBB\u3057\u3066\u3044\u307E\u3059\uFF09\u3002
84
+ \u4E2D\u6B62\u3055\u308C\u305F\u3089\u3001\u7406\u7531\u306E\u672C\u6587\u304B\u3089\u53D6\u5F15\u5148\u540D\u30FB\u6848\u4EF6\u540D\u3092\u5916\u3057\u3066\u304B\u3089\u518D\u5B9F\u884C\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u6587\u6848\u3060\u3051\u3092\u76F4\u3057\u3066\u3082\u3001\u7406\u7531\u306E\u539F\u6587\u306F PR \u672C\u6587\u306B\u8F09\u308A\u307E\u3059\uFF09\u3002
85
+ \u751F\u6210\u3059\u308B\u3060\u3051\u3067\u3001\u3069\u3053\u306B\u3082\u53CD\u6620\u3057\u307E\u305B\u3093\u3002--output text \u3067\u6587\u6848\u306E\u672C\u6587\u3060\u3051\u304C\u51FA\u308B\u306E\u3067\u3001\u30D5\u30A1\u30A4\u30EB\u306B\u4FDD\u5B58\u3057\u3066\u78BA\u304B\u3081\u30FB\u76F4\u3057\u3066\u304B\u3089
86
+ twp ai-review-reason publish --reason \u2026 --draft-file <\u30D1\u30B9> --yes
87
+ \u3067\u8FFD\u8A18PR\u3092\u4F5C\u308A\u307E\u3059\u3002`,destructive:true,confirmation:"AI \u30AF\u30EC\u30B8\u30C3\u30C8\u3092\u6D88\u8CBB\u3059\u308B\u64CD\u4F5C",flags:[REASON_ID_FLAG],forbidden:reasonsForbidden,plan:draftPlan,plannedNotes:()=>["\u30C6\u30CA\u30F3\u30C8\u306E AI \u30AF\u30EC\u30B8\u30C3\u30C8\u3092\u6D88\u8CBB\u3057\u307E\u3059\uFF08\u751F\u6210\u3057\u305F\u6587\u6848\u306F\u3069\u3053\u306B\u3082\u53CD\u6620\u3057\u307E\u305B\u3093\uFF09"],execute:async(input,ctx)=>{try{return await ctx.
88
+ send(draftPlan(input))}catch(err){if(err instanceof ApiError&&err.status===422&&err.body?.error==="draft_generation_failed"){ctx.warn("\u6587\u6848\u306E\u751F\u6210\u306F\u5B9F\u884C\u3055\u308C\u307E\u3057\u305F\u304C\u3001\u30B5\u30FC\u30D0\u304C\u4E2D\u6B62\u3057\u307E\u3057\u305F\uFF08AI \u30AF\u30EC\u30B8\u30C3\u30C8\u306F\u6D88\u8CBB\u3057\u3066\u3044\u307E\u3059\uFF09\u3002")}else if(!refusedBeforeSending(err)){ctx.warn("\u6587\u6848\u306E\u751F\u6210\u306F\u9001\u4FE1\u3057\u307E\u3057\u305F\u304C\u3001\u7D50\u679C\u3092\u53D7\u3051\u53D6\u308C\u307E\u305B\u3093\u3067\u3057\u305F\u3002AI \u30AF\u30EC\u30B8\u30C3\u30C8\u3092\u6D88\u8CBB\u3057\u305F\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\u3002\u6253\u3061\u76F4\u3059\u3068\u3082\u3046\u4E00\u5EA6\u6D88\u8CBB\u3057\u307E\u3059\u3002")}
89
+ throw err}},summarize:body=>{const data=draftOf(body);return{reasons:Array.isArray(data["reasons"])?data["reasons"].length:null,regenerated:data["regenerated"]??null,draft:data["draft"]}},raw:body=>withoutResult(draftOf(body)),document:body=>String(draftOf(body)["draft"]),notes:body=>[...draftOf(body)["regenerated"]===true?["1\u56DE\u76EE\u306E\u6587\u6848\u306B\u53D6\u5F15\u5148\u540D\u30FB\u6848\u4EF6\u540D\u304C\u6DF7\u3056\u3063\u305F\u305F\u3081\u3001\u4F5C\u308A\u76F4\u3057\u305F\u6587\u6848\u3067\u3059"]:
90
+ [],"\u6587\u6848\u306F\u4E0B\u66F8\u304D\u3067\u3059\uFF08\u307E\u3060\u3069\u3053\u306B\u3082\u53CD\u6620\u3057\u3066\u3044\u307E\u305B\u3093\uFF09\u3002\u78BA\u304B\u3081\u3066\u304B\u3089 twp ai-review-reason publish --draft-file <\u30D1\u30B9> \u3067\u8FFD\u8A18PR\u3092\u4F5C\u308C\u307E\u3059"]},{name:"publish",summary:"\u78BA\u304B\u3081\u305F\u6587\u6848\u3067\u793E\u5185\u30CA\u30EC\u30C3\u30B8\u3078\u306E\u8FFD\u8A18PR\u3092\u4F5C\u308B\uFF08GitHub \u306B\u66F8\u304D\u8FBC\u3080\u30FB--yes \u304C\u8981\u308B\uFF09",
91
+ usage:"twp ai-review-reason publish --reason <\u7406\u7531ID> [--reason <\u7406\u7531ID>]... (--draft-file <\u30D1\u30B9> | --draft <\u6587\u6848>) [--target-path <checklists/\u2026.md>] --yes",description:`POST ${REASONS_PATH}/knowledge-pr\u3002\u753B\u9762\u306E\u300CPR\u3092\u4F5C\u6210\u300D\u3068\u540C\u3058\u3067\u3059\uFF08AI \u306F\u547C\u3073\u307E\u305B\u3093\uFF09\u3002
92
+ \u30B5\u30FC\u30D0\u306B\u8A2D\u5B9A\u3055\u308C\u305F\u793E\u5185\u30CA\u30EC\u30C3\u30B8\u306E\u30EA\u30DD\u30B8\u30C8\u30EA\u306B\u3001\u65E2\u5B9A\u306E\u30D6\u30E9\u30F3\u30C1\u304B\u3089\u65B0\u3057\u3044\u30D6\u30E9\u30F3\u30C1\u3092\u5207\u3063\u3066 --target-path \u306E\u30D5\u30A1\u30A4\u30EB\u3078\u6587\u6848\u3092\u8FFD\u8A18\u3057\u3001PR \u3092\u958B\u304D\u307E\u3059\u3002
93
+ PR \u306E\u672C\u6587\u306B\u306F\u3001\u9078\u3093\u3060\u7406\u7531\u306E\u6307\u6458\u30FB\u5224\u65AD\u30FB\u7406\u7531\u306E\u539F\u6587\u304C\u305D\u306E\u307E\u307E\u8F09\u308A\u307E\u3059\u3002\u81EA\u52D5\u3067\u306F\u30DE\u30FC\u30B8\u3055\u308C\u307E\u305B\u3093\u3002
94
+ --target-path \u306F ${TARGET_PREFIX} \u914D\u4E0B\u306E .md \u3060\u3051\u3067\u3001\u7701\u7565\u6642\u306F ${DEFAULT_TARGET} \u3067\u3059\u3002
95
+ \u53D6\u5F15\u5148\u540D\u30FB\u6848\u4EF6\u540D\u306E\u6DF7\u5165\u3092\u30B5\u30FC\u30D0\u304C\u76F4\u524D\u306B\u691C\u67FB\u3059\u308B\u306E\u306F**\u6587\u6848\u3060\u3051**\u3067\u3059\u3002\u7406\u7531\u306E\u539F\u6587\u306F\u691C\u67FB\u3055\u308C\u305A\u306B PR \u672C\u6587\u3078\u8F09\u308B\u306E\u3067\u3001
96
+ \u9078\u3076\u7406\u7531\u306E\u672C\u6587\u306B\u53D6\u5F15\u5148\u540D\u30FB\u6848\u4EF6\u540D\u304C\u7121\u3044\u3053\u3068\u3092\u78BA\u304B\u3081\u3066\u304F\u3060\u3055\u3044\uFF08twp ai-review-reason list --output json \u306E reason\uFF09\u3002
97
+ \u4F5C\u3063\u305F PR \u306F\u9589\u3058\u3066\u3082\u672C\u6587\u304C\u5C65\u6B74\u306B\u6B8B\u308A\u3001\u4F7F\u3063\u305F\u7406\u7531\u306B\u306F PR \u756A\u53F7\u304C\u8A18\u9332\u3055\u308C\u3066\u540C\u3058\u7406\u7531\u3067\u306F2\u5EA6\u3068\u4F5C\u308C\u307E\u305B\u3093\uFF08list \u306E knowledge_pr_number \u5217\uFF09\u3002`,destructive:true,confirmation:"GitHub \u306B PR \u3092\u4F5C\u308B\uFF08\u5916\u90E8\u3078\u66F8\u304D\u8FBC\u3080\uFF09\u64CD\u4F5C",flags:[REASON_ID_FLAG,{name:"\
98
+ --draft-file",summary:`\u8FFD\u8A18\u3059\u308B\u6587\u6848\u306E\u30D5\u30A1\u30A4\u30EB\uFF08- \u3067\u6A19\u6E96\u5165\u529B\u30FB${DRAFT_MAX_CHARS.toLocaleString()} \u6587\u5B57\u307E\u3067\uFF09`,takesValue:true,placeholder:"<\u30D1\u30B9>"},{name:"--draft",summary:"\u8FFD\u8A18\u3059\u308B\u6587\u6848\u3092\u76F4\u63A5\u6E21\u3059",takesValue:true,placeholder:"<\u6587\u6848>"},{name:"--target-path",summary:`\u8FFD\u8A18\u5148\u306E\u30D5\u30A1\u30A4\u30EB\uFF08${TARGET_PREFIX} \u914D\u4E0B\u306E .md\u30FB\u65E2\u5B9A ${DEFAULT_TARGET}\
99
+ \uFF09`,takesValue:true,placeholder:"<\u30D1\u30B9>"}],forbidden:reasonsForbidden,prepare:preparePublish,plan:publishPlan,plannedNotes:input=>["GitHub \u306B PR \u3092\u4F5C\u308A\u307E\u3059\u3002\u9589\u3058\u3066\u3082 PR \u306E\u672C\u6587\u306F\u5C65\u6B74\u306B\u6B8B\u308A\u3001\u4F7F\u3063\u305F\u7406\u7531\u306B\u306F PR \u756A\u53F7\u304C\u8A18\u9332\u3055\u308C\u307E\u3059\uFF08\u540C\u3058\u7406\u7531\u3067\u306F2\u5EA6\u3068\u4F5C\u308C\u307E\u305B\u3093\uFF09"," \u5B9B\u5148: \u30B5\u30FC\u30D0\u306B\u8A2D\u5B9A\u3055\u308C\u305F\u793E\u5185\u30CA\u30EC\u30C3\u30B8\
100
+ \u306E\u30EA\u30DD\u30B8\u30C8\u30EA\uFF08\u65E2\u5B9A\u306E\u30D6\u30E9\u30F3\u30C1\u304B\u3089\u65B0\u3057\u3044\u30D6\u30E9\u30F3\u30C1\u3092\u5207\u308A\u307E\u3059\u3002\u30EA\u30DD\u30B8\u30C8\u30EA\u540D\u3068\u30D6\u30E9\u30F3\u30C1\u540D\u306F\u5FDC\u7B54\u306B\u51FA\u307E\u3059\uFF09",` \u8FFD\u8A18\u5148: ${targetPathOf(input)??DEFAULT_TARGET}`,` PR \u672C\u6587: \u9078\u3093\u3060\u7406\u7531 ${reasonIds(input,"publish").length} \u4EF6\u306E\u6307\u6458\u30FB\u5224\u65AD\u30FB\u7406\u7531\u306E\u539F\u6587\uFF08\u539F\u6587\u306F\u53D6\u5F15\u5148\u540D\u30FB\u6848\u4EF6\u540D\u306E\u691C\u67FB\u3092\u53D7\u3051\u307E\u305B\u3093\uFF09`],
101
+ execute:async(input,ctx)=>{try{return await ctx.send(publishPlan(input))}catch(err){if(!refusedBeforeSending(err)){ctx.warn("PR \u306E\u4F5C\u6210\u306F\u9001\u4FE1\u3057\u307E\u3057\u305F\u304C\u3001\u7D50\u679C\u3092\u53D7\u3051\u53D6\u308C\u307E\u305B\u3093\u3067\u3057\u305F\u3002\u4F5C\u6210\u6E08\u307F\u306E\u3053\u3068\u304C\u3042\u308A\u307E\u3059\u3002\u6253\u3061\u76F4\u3059\u524D\u306B twp ai-review-reason list \u306E knowledge_pr_number \u5217\u3067\u78BA\u304B\u3081\u3066\u304F\u3060\u3055\u3044\u3002")}
102
+ throw err}},summarize:body=>pick(prOf(body),["pull_request_number","pull_request_url","repository","branch","target_path"]),raw:body=>withoutResult(prOf(body)),notes:body=>[`PR \u3092\u4F5C\u308A\u307E\u3057\u305F: ${String(prOf(body)["pull_request_url"])}\uFF08\u81EA\u52D5\u3067\u306F\u30DE\u30FC\u30B8\u3055\u308C\u307E\u305B\u3093\u3002\u5185\u5BB9\u3092\u78BA\u304B\u3081\u3066\u30DE\u30FC\u30B8\u3057\u3066\u304F\u3060\u3055\u3044\uFF09`]}]};export{WAIT_POLL_INTERVAL_MS,estimateAiReviewResources,invoiceAiReviewResources,contractAiReviewResources,aiReviewReasonDomain};
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{booleanText,boundedText,isoDate}from"./chunk-UDPJ2IGK.js";import{ORG_MASTER_LIMIT}from"./chunk-BZAXQOLB.js";import{ULID_RE,UUID_RE,isSafePathSegment}from"./chunk-GMBJTG6A.js";import{nonEmpty,positiveInteger}from"./chunk-5R4SEO3I.js";import{requireResolved,singleRef,withResolved}from"./chunk-ZN5EFDH7.js";import{acknowledgement,isRecord,pick}from"./chunk-ZWVYVS2A.js";import{ApiResponseError,UsageError}from"./chunk-7WSNIXTQ.js";var CLEAR_DATE="none";function placeholderOf(field){switch(field.kind){case"text":return`<${field.label}>`;case"integer":return"<\u6574\u6570>";case"boolean":return"<true|false>";case"enum":return`<${field.values.join("|")}>`;case"date":return`<YYYY-MM-DD|${CLEAR_DATE}>`;case"ref":return field.placeholder}}function createFlags(fields){return fields.map(field=>({name:field.flag,summary:field.summary,takesValue:true,placeholder:placeholderOf(field)}))}function updateFlags(fields){const flags=[];for(const field of fields){
3
+ import{booleanText,boundedText,isoDate}from"./chunk-XDHLO54T.js";import{ORG_MASTER_LIMIT}from"./chunk-YQ4DGLD3.js";import{ULID_RE,UUID_RE,isSafePathSegment}from"./chunk-GMBJTG6A.js";import{nonEmpty,positiveInteger}from"./chunk-IOGMOXYF.js";import{requireResolved,singleRef,withResolved}from"./chunk-LXIAOCUW.js";import{acknowledgement,isRecord,pick}from"./chunk-VTQAI52S.js";import{ApiResponseError,UsageError}from"./chunk-UFND7FBC.js";var CLEAR_DATE="none";function placeholderOf(field){switch(field.kind){case"text":return`<${field.label}>`;case"integer":return"<\u6574\u6570>";case"boolean":return"<true|false>";case"enum":return`<${field.values.join("|")}>`;case"date":return`<YYYY-MM-DD|${CLEAR_DATE}>`;case"ref":return field.placeholder}}function createFlags(fields){return fields.map(field=>({name:field.flag,summary:field.summary,takesValue:true,placeholder:placeholderOf(field)}))}function updateFlags(fields){const flags=[];for(const field of fields){
4
4
  flags.push({name:field.flag,summary:field.summary,takesValue:true,placeholder:placeholderOf(field)});if(field.kind==="ref")flags.push({name:field.clearFlag,summary:field.clearSummary,takesValue:false})}return flags}function integerValue(field,raw){const trimmed=raw.trim();const value=/^\d+$/.test(trimmed)?Number(trimmed):Number.NaN;const tooLarge=field.max!==void 0&&value>field.max;if(!Number.isSafeInteger(value)||value<field.min||tooLarge){const range=field.max!==void 0?`${field.min} \u4EE5\u4E0A ${field.
5
5
  max} \u4EE5\u4E0B`:`${field.min} \u4EE5\u4E0A`;throw new UsageError(`${field.flag} \u306F ${range}\u306E\u6574\u6570\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044: ${raw}`,`${field.label}\u3092\u6574\u6570\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}return value}function fieldBody(input,fields){const body={};for(const field of fields){switch(field.kind){case"text":{const value=boundedText(input,field.flag,{maxChars:field.maxChars,label:field.label});if(value!==void 0)body[field.
6
6
  key]=value;break}case"integer":{const raw=input.flags.get(field.flag);if(raw!==void 0)body[field.key]=integerValue(field,raw);break}case"boolean":{const raw=input.flags.get(field.flag);if(raw!==void 0)body[field.key]=booleanText(field.flag,raw);break}case"enum":{const raw=input.flags.get(field.flag);if(raw===void 0)break;const value=raw.trim().toLowerCase();if(!field.values.includes(value)){throw new UsageError(`${field.flag} \u306B\u300C${raw}\u300D\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093`,
@@ -29,6 +29,7 @@ var GLOBAL_OPTIONS_HELP=`\u30B0\u30ED\u30FC\u30D0\u30EB\u30AA\u30D7\u30B7\u30E7\
29
29
 
30
30
  \u7D42\u4E86\u30B3\u30FC\u30C9:
31
31
  0 \u6210\u529F / 2 \u5F15\u6570\u30A8\u30E9\u30FC / 3 API 4xx / 4 API 5xx\u30FB\u901A\u4FE1\u5931\u6557 / 5 \u8A8D\u8A3C\u5931\u6557
32
+ 6 \u5F85\u6A5F\u306E\u4E0A\u9650\u306B\u9054\u3057\u305F\uFF1D\u672A\u5B8C\u4E86\uFF08twp api --wait \u306E\u307F\uFF09
32
33
 
33
34
  \u51FA\u529B\u5148\u306E\u898F\u7D04:
34
35
  \u6A5F\u68B0\u53EF\u8AAD\u306A\u7D50\u679C\u306F stdout\u3001\u9032\u6357\u30FB\u8B66\u544A\u30FB\u30A8\u30E9\u30FC\u306F stderr\u3002
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{dateFlag,monthFlag}from"./chunk-3RAGOW6X.js";import{requireResolved,withResolved}from"./chunk-ZN5EFDH7.js";import{isRecord,pick}from"./chunk-ZWVYVS2A.js";import{ApiRejectedError,ApiResponseError,UsageError}from"./chunk-7WSNIXTQ.js";var STATUS_USAGE="twp attendance status";var LIST_USAGE="twp attendance list [--month <YYYY-MM> | --date <YYYY-MM-DD>]";var TIMESHEET_USAGE="twp attendance timesheet [--month <YYYY-MM>]";var PUNCH_USAGE="twp attendance punch <clock-in|clock-out|break-start|break-end|switch> [--project <\u30B3\u30FC\u30C9|ID>] [--task <\u30BF\u30B9\u30AFID>] [--memo <\u30E1\u30E2>]";var PUNCH_TYPES={"clock-in":"clock_in","clock-out":"clock_out","break-start":"break_start","break-end":"break_end",switch:"switch"};
3
+ import{dateFlag,monthFlag}from"./chunk-4B3T4UE7.js";import{requireResolved,withResolved}from"./chunk-LXIAOCUW.js";import{isRecord,pick}from"./chunk-VTQAI52S.js";import{ApiRejectedError,ApiResponseError,UsageError}from"./chunk-UFND7FBC.js";var STATUS_USAGE="twp attendance status";var LIST_USAGE="twp attendance list [--month <YYYY-MM> | --date <YYYY-MM-DD>]";var TIMESHEET_USAGE="twp attendance timesheet [--month <YYYY-MM>]";var PUNCH_USAGE="twp attendance punch <clock-in|clock-out|break-start|break-end|switch> [--project <\u30B3\u30FC\u30C9|ID>] [--task <\u30BF\u30B9\u30AFID>] [--memo <\u30E1\u30E2>]";var PUNCH_TYPES={"clock-in":"clock_in","clock-out":"clock_out","break-start":"break_start","break-end":"break_end",switch:"switch"};
4
4
  var UUID_PATTERN=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;var MEMO_MAX=500;var PUNCH_COLUMNS=["id","type","type_label","recorded_at","year_month","project_id","task_id","memo"];var RECORD_COLUMNS=["recorded_at","type","type_label","work_location","is_manual","project_id","task_id","memo","id"];var DAY_COLUMNS=["date","clock_in","clock_out","work","break","overtime","late","early_leave","holiday","memo"];function noArgs(input,operation){if(input.args.length>0){throw new UsageError(
5
5
  `${operation} \u306F\u4F4D\u7F6E\u5F15\u6570\u3092\u53D7\u3051\u53D6\u308A\u307E\u305B\u3093: ${input.args.join(" ")}`,`twp attendance ${operation} help`)}}function hoursMinutes(value){if(typeof value!=="number"||!Number.isFinite(value))return value;const sign=value<0?"-":"";const abs=Math.round(Math.abs(value));return`${sign}${Math.floor(abs/60)}:${String(abs%60).padStart(2,"0")}`}function currentBody(body){if(!isRecord(body)||typeof body["status"]!=="string"||!Array.isArray(body["today_records"])){
6
6
  throw new ApiResponseError("\u6253\u523B\u72B6\u614B\u306E\u5FDC\u7B54\u306B status / today_records \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002")}return body}function summarizeCurrent(body){const current=currentBody(body);const last=isRecord(current["last_record"])?current["last_record"]:void 0;const actions=Array.isArray(current["available_actions"])?current["available_actions"]:[];return{status:current["status"],status_label:current["\
@@ -0,0 +1,4 @@
1
+ import { createRequire as __twpCreateRequire } from 'node:module';
2
+ const require = __twpCreateRequire(import.meta.url);
3
+ var DOMAIN_NAMES=["agent-loop","ai-review-reason","attendance","backlog","business-place","company","contract","customer","department","deposit","estimate","inquiry","invoice","job-title","leave","media","meeting","note","notification","onedrive","outlook","payee","position","project","prospect","purchase","receivable","report","rounding-setting","seal-impression","shift","storage","supplier-payment","task","teams","user","wiki","workchange","workflow"];function isDomainName(value){return value!==
4
+ void 0&&DOMAIN_NAMES.includes(value)}var HELP_TOKEN="help";var API_TOKEN="api";export{DOMAIN_NAMES,isDomainName,HELP_TOKEN,API_TOKEN};
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{ApiError}from"./chunk-IF2K4PM5.js";import{ResolveError,UUID_RE,isSafePathSegment,resolveProjectRef,safeProjectIdPolicy}from"./chunk-GMBJTG6A.js";import{loadProjectConfig,loadUserConfig}from"./chunk-4VZKNEVN.js";import{isTaskKey}from"./chunk-II5RVJQN.js";import{UsageError}from"./chunk-7WSNIXTQ.js";import{twpHomeDir}from"./chunk-RZVI6PMW.js";var BACKLOG_BASE_PATH="/api/v2/integrations/backlog";function assertBacklogPathSegment(value,label){if(!isSafePathSegment(value)){throw new ResolveError(`${label}\u3068\u3057\u3066 URL \u306B\u5165\u308C\u3089\u308C\u306A\u3044\u5024\u304C\u30B5\u30FC\u30D0\u304B\u3089\u8FD4\u308A\u307E\u3057\u305F: ${JSON.stringify(value)}\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}return value}function backlogSpacePath(spaceId,suffix=""){assertBacklogPathSegment(spaceId,
3
+ import{ApiError}from"./chunk-IF2K4PM5.js";import{graphNextCursor,ms365NamedRow,ms365NotConnectedGuidance,ms365Path,ms365Segment}from"./chunk-3HH5IYNO.js";import{ResolveError,UUID_RE,isSafePathSegment,resolveProjectRef,safeProjectIdPolicy}from"./chunk-GMBJTG6A.js";import{loadProjectConfig,loadUserConfig}from"./chunk-4VZKNEVN.js";import{isTaskKey}from"./chunk-II5RVJQN.js";import{UsageError}from"./chunk-UFND7FBC.js";import{twpHomeDir}from"./chunk-RZVI6PMW.js";var BACKLOG_BASE_PATH="/api/v2/integrations/backlog";function assertBacklogPathSegment(value,label){if(!isSafePathSegment(value)){throw new ResolveError(`${label}\u3068\u3057\u3066 URL \u306B\u5165\u308C\u3089\u308C\u306A\u3044\u5024\u304C\u30B5\u30FC\u30D0\u304B\u3089\u8FD4\u308A\u307E\u3057\u305F: ${JSON.stringify(value)}\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}return value}function backlogSpacePath(spaceId,suffix=""){assertBacklogPathSegment(spaceId,
4
4
  "Backlog \u30B9\u30DA\u30FC\u30B9 ID");return`${BACKLOG_BASE_PATH}/${encodeURIComponent(spaceId)}${suffix}`}function idString(value){if(typeof value==="number"&&Number.isFinite(value))return String(value);if(typeof value==="string"&&value.trim()!=="")return value.trim();return null}function text(value){return typeof value==="string"&&value.trim()!==""?value.trim():null}function backlogSpaceAliases(spaceUrl){const aliases=[];const trimmed=spaceUrl.trim().replace(/\/+$/,"");if(trimmed==="")return aliases;
5
5
  let host;try{host=new URL(trimmed).host}catch{host=trimmed.replace(/^\/+/,"").split("/")[0]??""}if(host==="")return aliases;aliases.push(host);const label=host.split(".")[0];if(label!==void 0&&label!==""&&label!==host)aliases.push(label);return aliases}function backlogSpaceRow(row){const url=text(row["space_url"]);return{id:idString(row["id"]),name:url,code:null,aliases:url!==null?backlogSpaceAliases(url):[]}}function backlogProjectRow(row){return{id:idString(row["id"]),name:text(row["name"]),code:text(
6
6
  row["projectKey"])}}function backlogStatusRow(row){return{id:idString(row["id"]),name:text(row["name"]),code:null}}function backlogUserRow(row){return{id:idString(row["id"]),name:text(row["name"]),code:null,aliases:[text(row["userId"]),text(row["mailAddress"])].filter(v=>v!==null)}}var DEFAULT_LOOKUP_SCOPE="\u3053\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8";function fold(value){return value.trim().toLowerCase()}function keysOf(ref){return[ref.id,ref.code,ref.name,...ref.aliases??[]].filter(v=>typeof v==="string"&&v.trim()!=="").map(fold)}function describe(ref){return ref.code!==void 0&&ref.code!==null&&ref.code!==""&&ref.code!==ref.name?`${ref.name}\uFF08${ref.code}\uFF09`:ref.name}async function suggest(input,candidates){try{const{default:fuzzysort}=await import("./fuzzysort-DFVKV4B4.js");
@@ -14,21 +14,21 @@ env);const fromProfile=usable(user.profiles?.[profileName]?.project);if(fromProf
14
14
  "dir"))return false}return true}function readCache(key,options={}){if(options.refresh===true)return null;const env=options.env??process.env;const file=cacheFilePath(key,env);if(!isCacheLocationTrusted(env)||!isOursAndPrivate(file,"file"))return null;let parsed;try{parsed=JSON.parse(fs.readFileSync(file,"utf8"))}catch{return null}if(parsed?.version!==CACHE_VERSION||!parsed.key||!sameKey(parsed.key,key))return null;const fetchedAt=Date.parse(parsed.fetched_at);if(!Number.isFinite(fetchedAt))return null;
15
15
  const ttl=options.ttlMs??DEFAULT_TTL_MS;const now=(options.now??Date.now)();if(Math.abs(now-fetchedAt)>ttl)return null;return parsed.value}function writeCache(key,value,options={}){const env=options.env??process.env;const dir=cacheDir(env);const file=cacheFilePath(key,env);const body={version:CACHE_VERSION,key:{profile:key.profile,scope:key.scope,...key.project!==void 0?{project:key.project}:{}},fetched_at:new Date((options.now??Date.now)()).toISOString(),value};if(!isCacheLocationTrusted(env))return;
16
16
  const tmp=`${file}.${process.pid}.tmp`;try{fs.mkdirSync(dir,{recursive:true,mode:448});fs.writeFileSync(tmp,`${JSON.stringify(body)}
17
- `,{mode:384});fs.renameSync(tmp,file)}catch{try{fs.rmSync(tmp,{force:true})}catch{}}}function removeCache(key,options={}){const env=options.env??process.env;if(!isCacheLocationTrusted(env))return;try{fs.rmSync(cacheFilePath(key,env),{force:true})}catch{}}var SELF_REF="me";var PRIVATE_TASKS_PATH="/api/v2/tasks/private";var PRIVATE_MASTERS_CACHE_KEY="__private__";var BACKLOG_SPACES_CACHE_KEY="__backlog__";var BACKLOG_SCOPE_LABEL="\u3053\u306E\u63A5\u7D9A\u5148";var BACKLOG_PROJECT_SCOPE_LABEL="\u3053\u306E Backlog \u30D7\u30ED\u30B8\u30A7\u30AF\u30C8";var PRIVATE_SCOPE_LABEL="\u500B\u4EBA\u30BF\u30B9\u30AF";var TENANT_CACHE_KEY="__tenant__";var TENANT_SCOPE_LABEL="\u3053\u306E\u30C6\u30CA\u30F3\u30C8";var ADMIN_USERS_LIST_PATH="/api/v2/admin/users\
18
- /list";var DEPARTMENTS_PATH="/api/v2/organization/departments";var POSITIONS_PATH="/api/v2/organization/positions";var JOB_TITLES_PATH="/api/v2/organization/job-titles";var INQUIRY_CATEGORIES_PATH="/api/v2/inquiries/categories";var NOTIFICATIONS_PATH="/api/v2/notifications";var NOTIFICATION_COUNT_MAX_PAGES=20;var NOTIFICATION_COUNT_PAGE_LIMIT=100;var WORKFLOWS_PATH="/api/v2/workflows";var REPORTS_PATH="/api/v2/reports";var SALES_ESTIMATES_PATH="/api/v2/sales/estimates";var SALES_INVOICES_PATH="/\
19
- api/v2/sales/invoices";var SALES_CONTRACTS_PATH="/api/v2/sales/contracts";var SALES_INVOICE_AUTO_TEMPLATES_PATH="/api/v2/sales/invoice-auto-templates";var SALES_DEPOSITS_PATH="/api/v2/sales/deposits";var SALES_PURCHASES_PATH="/api/v2/sales/purchases";var SALES_SUPPLIER_PAYMENTS_PATH="/api/v2/sales/supplier-payments";var SALES_SUPPLIER_PAYMENT_SCHEDULES_PATH="/api/v2/sales/supplier-payment-schedules";var SALES_BUSINESS_PLACES_PATH="/api/v2/sales/business-places";var SALES_PAYEES_PATH="/api/v2/sal\
20
- es/payees";var SALES_SEAL_IMPRESSIONS_PATH="/api/v2/sales/seal-impressions";var SALES_PURCHASE_AI_MAPPINGS_PATH="/api/v2/sales/purchase-ai-field-mappings";var SALES_ESTIMATE_NO_RULES_PATH="/api/v2/sales/estimate-no-rules";var SALES_INVOICE_NO_RULES_PATH="/api/v2/sales/invoice-no-rules";var SALES_PURCHASE_NO_RULES_PATH="/api/v2/sales/purchase-no-rules";var SALES_ESTIMATE_FORMATS_PATH="/api/v2/sales/estimate-formats";var SALES_ROUNDING_SETTING_PATH="/api/v2/sales/rounding-setting";var SALES_RECORD_KINDS={
21
- estimate:{path:SALES_ESTIMATES_PATH,label:"\u898B\u7A4D"},invoice:{path:SALES_INVOICES_PATH,label:"\u8ACB\u6C42"},contract:{path:SALES_CONTRACTS_PATH,label:"\u53D6\u5F15\u5951\u7D04"},"invoice-auto-template":{path:SALES_INVOICE_AUTO_TEMPLATES_PATH,label:"\u81EA\u52D5\u8ACB\u6C42\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8"},deposit:{path:SALES_DEPOSITS_PATH,label:"\u5165\u91D1"},purchase:{path:SALES_PURCHASES_PATH,label:"\u4ED5\u5165"},"supplier-payment":{path:SALES_SUPPLIER_PAYMENTS_PATH,label:"\u652F\u6255"},
22
- "supplier-payment-schedule":{path:SALES_SUPPLIER_PAYMENT_SCHEDULES_PATH,label:"\u652F\u6255\u5148\u30DE\u30B9\u30BF"},"business-place":{path:SALES_BUSINESS_PLACES_PATH,label:"\u4E8B\u696D\u6240"},payee:{path:SALES_PAYEES_PATH,label:"\u632F\u8FBC\u5148"},"seal-impression":{path:SALES_SEAL_IMPRESSIONS_PATH,label:"\u5370\u5F71"},"purchase-ai-mapping":{path:SALES_PURCHASE_AI_MAPPINGS_PATH,label:"\u4ED5\u5165AI\u30DE\u30C3\u30D4\u30F3\u30B0"},"estimate-no-rule":{path:SALES_ESTIMATE_NO_RULES_PATH,label:"\
23
- \u898B\u7A4D\u756A\u53F7\u30EB\u30FC\u30EB"},"invoice-no-rule":{path:SALES_INVOICE_NO_RULES_PATH,label:"\u8ACB\u6C42\u756A\u53F7\u30EB\u30FC\u30EB"},"purchase-no-rule":{path:SALES_PURCHASE_NO_RULES_PATH,label:"\u4ED5\u5165\u756A\u53F7\u30EB\u30FC\u30EB"},"estimate-format":{path:SALES_ESTIMATE_FORMATS_PATH,label:"\u898B\u7A4D\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8"}};var SALES_COMPANIES_PATH="/api/v2/sales/companies";var CUSTOMERS_PATH="/api/v2/customers";var COMPANY_SEARCH_PAGE_LIMIT=100;var COMPANY_SEARCH_MAX_PAGES=10;
24
- var CUSTOMER_CHILDREN_PAGE_LIMIT=100;var PROSPECTS_PATH="/api/v2/prospects";var PROSPECT_SEARCH_PAGE_LIMIT=100;var PROSPECT_SEARCH_MAX_PAGES=10;function isExactNumericId(value){return/^[0-9]+$/.test(value)&&String(Number(value))===value}function exactCompanyId(ref,label){if(!isExactNumericId(ref.id)){throw new ResolveError(`${label}\u4E00\u89A7\u306E id \u304C\u6574\u6570\u3067\u306F\u3042\u308A\u307E\u305B\u3093\uFF08${ref.id}\uFF09\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}
25
- return ref}var ORG_MASTER_LIMIT=1e3;var USER_LIST_MAX_PAGES=100;function isRecord(value){return typeof value==="object"&&value!==null&&!Array.isArray(value)}function str(value){return typeof value==="string"&&value.trim()!==""?value:null}function truthyFlag(value){return value===true||value===1}function rawGetVia(client){return async path2=>{try{return{ok:true,status:200,json:await client.request("GET",path2),error:null}}catch(err){if(err instanceof ApiError){return{ok:false,status:err.status,json:err.
26
- body,error:err.message}}throw err}}}var TASK_MASTERS={status:{path:"task-statuses",envelope:"data",scope:"task-statuses",label:"\u30B9\u30C6\u30FC\u30BF\u30B9"},type:{path:"task-types",envelope:"data",scope:"task-types",label:"\u7A2E\u5225"},category:{path:"task-categories",envelope:"data",scope:"task-categories",label:"\u30AB\u30C6\u30B4\u30EA"},milestone:{path:"task-milestones",envelope:"data",scope:"task-milestones",label:"\u30DE\u30A4\u30EB\u30B9\u30C8\u30FC\u30F3"},label:{path:"task-labels",
27
- envelope:"items",scope:"task-labels",label:"\u30E9\u30D9\u30EB"}};var Resolver=class{constructor(client,options){this.client=client;this.options=options;this.get=rawGetVia(client)}client;options;get;privateMastersInFlight=null;async project(ref){const trimmed=ref.trim();if(trimmed==="")throw new UsageError("\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u30B3\u30FC\u30C9\u304B ID \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044");return resolveProjectRef(trimmed,this.get,safeProjectIdPolicy)}async taskByKey(key){
28
- const trimmed=key.trim();if(!isTaskKey(trimmed)){throw new UsageError(`\u30BF\u30B9\u30AF\u30AD\u30FC\u306E\u5F62\u5F0F\u3067\u306F\u3042\u308A\u307E\u305B\u3093: ${key}`,"\u30AD\u30FC\u306F\u300C\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u30B3\u30FC\u30C9-\u756A\u53F7\u300D\u306E\u5F62\u3067\u3059\uFF08\u4F8B: ABC-123\uFF09\u3002")}const res=await this.get(`/api/v2/tasks/resolve-by-key/${encodeURIComponent(trimmed)}`);if(res.status===404){throw new ResolveError(`\u30BF\u30B9\u30AF\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093: ${trimmed}\
29
- \uFF08\u5B58\u5728\u3057\u306A\u3044\u304B\u3001\u95B2\u89A7\u3067\u304D\u308B\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306B\u3042\u308A\u307E\u305B\u3093\uFF09`,404)}if(!res.ok){throw new ResolveError(`\u30BF\u30B9\u30AF\u30AD\u30FC\u3092\u89E3\u6C7A\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F: ${trimmed}\uFF08HTTP ${res.status}\uFF09\u3002\u63A5\u7D9A\u5148\u3068\u30ED\u30B0\u30A4\u30F3\u72B6\u614B\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`,res.status)}const body=isRecord(res.
30
- json)?res.json:{};const projectId=str(body["project_id"]);const task=body["task"];if(projectId===null||!isRecord(task)){throw new ResolveError("\u30BF\u30B9\u30AF\u30AD\u30FC\u89E3\u6C7A\u306E\u5FDC\u7B54\u306B project_id / task \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002",res.status)}safeProjectIdPolicy.assertId(projectId);return{projectId,task}}async currentUser(){const res=await this.get("/api/v2/user");if(!res.ok){throw new ResolveError(
31
- `\u30ED\u30B0\u30A4\u30F3\u4E2D\u306E\u30E6\u30FC\u30B6\u30FC\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08HTTP ${res.status}\uFF09\u3002twp login \u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`,res.status)}const user=isRecord(res.json)?res.json["user"]:void 0;if(!isRecord(user)||str(user["id"])===null){throw new ResolveError("\u30E6\u30FC\u30B6\u30FC\u53D6\u5F97\u306E\u5FDC\u7B54\u306B user.id \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
17
+ `,{mode:384});fs.renameSync(tmp,file)}catch{try{fs.rmSync(tmp,{force:true})}catch{}}}function removeCache(key,options={}){const env=options.env??process.env;if(!isCacheLocationTrusted(env))return;try{fs.rmSync(cacheFilePath(key,env),{force:true})}catch{}}var SELF_REF="me";var PRIVATE_TASKS_PATH="/api/v2/tasks/private";var PRIVATE_MASTERS_CACHE_KEY="__private__";var BACKLOG_SPACES_CACHE_KEY="__backlog__";var MS365_TEAMS_CACHE_KEY="__ms365__";var MS365_SCOPE_LABEL="\u53C2\u52A0\u3057\u3066\u3044\u308B Teams";var MS365_RESOLVE_MAX_PAGES=20;var BACKLOG_SCOPE_LABEL="\u3053\u306E\u63A5\u7D9A\u5148";var BACKLOG_PROJECT_SCOPE_LABEL="\u3053\u306E Backlog \u30D7\u30ED\u30B8\u30A7\u30AF\u30C8";var PRIVATE_SCOPE_LABEL="\u500B\u4EBA\u30BF\u30B9\u30AF";var TENANT_CACHE_KEY="\
18
+ __tenant__";var TENANT_SCOPE_LABEL="\u3053\u306E\u30C6\u30CA\u30F3\u30C8";var ADMIN_USERS_LIST_PATH="/api/v2/admin/users/list";var DEPARTMENTS_PATH="/api/v2/organization/departments";var POSITIONS_PATH="/api/v2/organization/positions";var JOB_TITLES_PATH="/api/v2/organization/job-titles";var INQUIRY_CATEGORIES_PATH="/api/v2/inquiries/categories";var NOTIFICATIONS_PATH="/api/v2/notifications";var NOTIFICATION_COUNT_MAX_PAGES=20;var NOTIFICATION_COUNT_PAGE_LIMIT=100;var WORKFLOWS_PATH="/api/v2/wor\
19
+ kflows";var REPORTS_PATH="/api/v2/reports";var SALES_ESTIMATES_PATH="/api/v2/sales/estimates";var SALES_INVOICES_PATH="/api/v2/sales/invoices";var SALES_CONTRACTS_PATH="/api/v2/sales/contracts";var SALES_INVOICE_AUTO_TEMPLATES_PATH="/api/v2/sales/invoice-auto-templates";var SALES_DEPOSITS_PATH="/api/v2/sales/deposits";var SALES_PURCHASES_PATH="/api/v2/sales/purchases";var SALES_SUPPLIER_PAYMENTS_PATH="/api/v2/sales/supplier-payments";var SALES_SUPPLIER_PAYMENT_SCHEDULES_PATH="/api/v2/sales/suppl\
20
+ ier-payment-schedules";var SALES_BUSINESS_PLACES_PATH="/api/v2/sales/business-places";var SALES_PAYEES_PATH="/api/v2/sales/payees";var SALES_SEAL_IMPRESSIONS_PATH="/api/v2/sales/seal-impressions";var SALES_PURCHASE_AI_MAPPINGS_PATH="/api/v2/sales/purchase-ai-field-mappings";var SALES_ESTIMATE_NO_RULES_PATH="/api/v2/sales/estimate-no-rules";var SALES_INVOICE_NO_RULES_PATH="/api/v2/sales/invoice-no-rules";var SALES_PURCHASE_NO_RULES_PATH="/api/v2/sales/purchase-no-rules";var SALES_ESTIMATE_FORMATS_PATH="\
21
+ /api/v2/sales/estimate-formats";var SALES_ROUNDING_SETTING_PATH="/api/v2/sales/rounding-setting";var SALES_RECORD_KINDS={estimate:{path:SALES_ESTIMATES_PATH,label:"\u898B\u7A4D"},invoice:{path:SALES_INVOICES_PATH,label:"\u8ACB\u6C42"},contract:{path:SALES_CONTRACTS_PATH,label:"\u53D6\u5F15\u5951\u7D04"},"invoice-auto-template":{path:SALES_INVOICE_AUTO_TEMPLATES_PATH,label:"\u81EA\u52D5\u8ACB\u6C42\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8"},deposit:{path:SALES_DEPOSITS_PATH,label:"\u5165\u91D1"},purchase:{
22
+ path:SALES_PURCHASES_PATH,label:"\u4ED5\u5165"},"supplier-payment":{path:SALES_SUPPLIER_PAYMENTS_PATH,label:"\u652F\u6255"},"supplier-payment-schedule":{path:SALES_SUPPLIER_PAYMENT_SCHEDULES_PATH,label:"\u652F\u6255\u5148\u30DE\u30B9\u30BF"},"business-place":{path:SALES_BUSINESS_PLACES_PATH,label:"\u4E8B\u696D\u6240"},payee:{path:SALES_PAYEES_PATH,label:"\u632F\u8FBC\u5148"},"seal-impression":{path:SALES_SEAL_IMPRESSIONS_PATH,label:"\u5370\u5F71"},"purchase-ai-mapping":{path:SALES_PURCHASE_AI_MAPPINGS_PATH,
23
+ label:"\u4ED5\u5165AI\u30DE\u30C3\u30D4\u30F3\u30B0"},"estimate-no-rule":{path:SALES_ESTIMATE_NO_RULES_PATH,label:"\u898B\u7A4D\u756A\u53F7\u30EB\u30FC\u30EB"},"invoice-no-rule":{path:SALES_INVOICE_NO_RULES_PATH,label:"\u8ACB\u6C42\u756A\u53F7\u30EB\u30FC\u30EB"},"purchase-no-rule":{path:SALES_PURCHASE_NO_RULES_PATH,label:"\u4ED5\u5165\u756A\u53F7\u30EB\u30FC\u30EB"},"estimate-format":{path:SALES_ESTIMATE_FORMATS_PATH,label:"\u898B\u7A4D\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8"}};var SALES_COMPANIES_PATH="\
24
+ /api/v2/sales/companies";var CUSTOMERS_PATH="/api/v2/customers";var COMPANY_SEARCH_PAGE_LIMIT=100;var COMPANY_SEARCH_MAX_PAGES=10;var CUSTOMER_CHILDREN_PAGE_LIMIT=100;var PROSPECTS_PATH="/api/v2/prospects";var PROSPECT_SEARCH_PAGE_LIMIT=100;var PROSPECT_SEARCH_MAX_PAGES=10;function isExactNumericId(value){return/^[0-9]+$/.test(value)&&String(Number(value))===value}function exactCompanyId(ref,label){if(!isExactNumericId(ref.id)){throw new ResolveError(`${label}\u4E00\u89A7\u306E id \u304C\u6574\u6570\u3067\u306F\u3042\u308A\u307E\u305B\u3093\uFF08${ref.
25
+ id}\uFF09\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}return ref}var ORG_MASTER_LIMIT=1e3;var USER_LIST_MAX_PAGES=100;function isRecord(value){return typeof value==="object"&&value!==null&&!Array.isArray(value)}function str(value){return typeof value==="string"&&value.trim()!==""?value:null}function truthyFlag(value){return value===true||value===1}function rawGetVia(client){return async path2=>{try{return{ok:true,status:200,json:await client.request("GET",
26
+ path2),error:null}}catch(err){if(err instanceof ApiError){return{ok:false,status:err.status,json:err.body,error:err.message}}throw err}}}var TASK_MASTERS={status:{path:"task-statuses",envelope:"data",scope:"task-statuses",label:"\u30B9\u30C6\u30FC\u30BF\u30B9"},type:{path:"task-types",envelope:"data",scope:"task-types",label:"\u7A2E\u5225"},category:{path:"task-categories",envelope:"data",scope:"task-categories",label:"\u30AB\u30C6\u30B4\u30EA"},milestone:{path:"task-milestones",envelope:"data",
27
+ scope:"task-milestones",label:"\u30DE\u30A4\u30EB\u30B9\u30C8\u30FC\u30F3"},label:{path:"task-labels",envelope:"items",scope:"task-labels",label:"\u30E9\u30D9\u30EB"}};var Resolver=class{constructor(client,options){this.client=client;this.options=options;this.get=rawGetVia(client)}client;options;get;privateMastersInFlight=null;async project(ref){const trimmed=ref.trim();if(trimmed==="")throw new UsageError("\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u30B3\u30FC\u30C9\u304B ID \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044");
28
+ return resolveProjectRef(trimmed,this.get,safeProjectIdPolicy)}async taskByKey(key){const trimmed=key.trim();if(!isTaskKey(trimmed)){throw new UsageError(`\u30BF\u30B9\u30AF\u30AD\u30FC\u306E\u5F62\u5F0F\u3067\u306F\u3042\u308A\u307E\u305B\u3093: ${key}`,"\u30AD\u30FC\u306F\u300C\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u30B3\u30FC\u30C9-\u756A\u53F7\u300D\u306E\u5F62\u3067\u3059\uFF08\u4F8B: ABC-123\uFF09\u3002")}const res=await this.get(`/api/v2/tasks/resolve-by-key/${encodeURIComponent(trimmed)}`);
29
+ if(res.status===404){throw new ResolveError(`\u30BF\u30B9\u30AF\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093: ${trimmed}\uFF08\u5B58\u5728\u3057\u306A\u3044\u304B\u3001\u95B2\u89A7\u3067\u304D\u308B\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306B\u3042\u308A\u307E\u305B\u3093\uFF09`,404)}if(!res.ok){throw new ResolveError(`\u30BF\u30B9\u30AF\u30AD\u30FC\u3092\u89E3\u6C7A\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F: ${trimmed}\uFF08HTTP ${res.status}\uFF09\u3002\u63A5\u7D9A\u5148\u3068\u30ED\u30B0\u30A4\u30F3\u72B6\u614B\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`,
30
+ res.status)}const body=isRecord(res.json)?res.json:{};const projectId=str(body["project_id"]);const task=body["task"];if(projectId===null||!isRecord(task)){throw new ResolveError("\u30BF\u30B9\u30AF\u30AD\u30FC\u89E3\u6C7A\u306E\u5FDC\u7B54\u306B project_id / task \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002",res.status)}safeProjectIdPolicy.assertId(projectId);return{projectId,task}}async currentUser(){const res=await this.
31
+ get("/api/v2/user");if(!res.ok){throw new ResolveError(`\u30ED\u30B0\u30A4\u30F3\u4E2D\u306E\u30E6\u30FC\u30B6\u30FC\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08HTTP ${res.status}\uFF09\u3002twp login \u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`,res.status)}const user=isRecord(res.json)?res.json["user"]:void 0;if(!isRecord(user)||str(user["id"])===null){throw new ResolveError("\u30E6\u30FC\u30B6\u30FC\u53D6\u5F97\u306E\u5FDC\u7B54\u306B user.id \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
32
32
  res.status)}return{id:user["id"],name:str(user["name"])??user["id"],email:str(user["email"])}}async status(projectId,input){return resolveNamed(this.applyAlias("status",input),await this.statuses(projectId),{flag:"--status",label:"\u30B9\u30C6\u30FC\u30BF\u30B9"})}async taskType(projectId,input){return resolveNamed(this.applyAlias("type",input),await this.taskTypes(projectId),{flag:"--type",label:"\u7A2E\u5225"})}async assignee(projectId,input,flag="--assignee"){if(input.trim().toLowerCase()===SELF_REF)
33
33
  return this.self();const value=this.applyAlias("assignee",input);if(value.trim().toLowerCase()===SELF_REF)return this.self();return resolveNamed(value,await this.members(projectId),{flag,label:"\u30E1\u30F3\u30D0\u30FC"})}async self(){const me=await this.currentUser();return{id:me.id,name:me.name,...me.email!==null?{aliases:[me.email]}:{}}}async defaultStatus(projectId){return requireDefault(await this.statuses(projectId),{flag:"--status",label:"\u30B9\u30C6\u30FC\u30BF\u30B9"})}async defaultTaskType(projectId){
34
34
  return requireDefault(await this.taskTypes(projectId),{flag:"--type",label:"\u7A2E\u5225"})}async statuses(projectId){return namedFromRows(await this.taskMasterRows("status",projectId),"\u30B9\u30C6\u30FC\u30BF\u30B9",codedMasterRow)}async taskTypes(projectId){return namedFromRows(await this.taskMasterRows("type",projectId),"\u7A2E\u5225",codedMasterRow)}async taskMaster(kind,projectId,input,flag){const spec=TASK_MASTERS[kind];return resolveNamed(input,await this.taskMasterRefs(kind,projectId),{
@@ -97,11 +97,17 @@ key,options);if(hit!==null&&Array.isArray(hit))return hit;const fresh=await load
97
97
  `${BACKLOG_BASE_PATH}/spaces`,"spaces","Backlog \u30B9\u30DA\u30FC\u30B9",backlogSpaceRow))}async backlogSpace(ref){return resolveNamed(ref,await this.backlogSpaces(),{flag:"--space",label:"Backlog \u30B9\u30DA\u30FC\u30B9",scope:BACKLOG_SCOPE_LABEL})}async backlogDefaultSpace(){const spaces=await this.backlogSpaces();if(spaces.length===1)return spaces[0];if(spaces.length===0){throw new UsageError("Backlog \u30B9\u30DA\u30FC\u30B9\u304C1\u4EF6\u3082\u767B\u9332\u3055\u308C\u3066\u3044\u307E\u305B\u3093",
98
98
  "TWP \u306E\u5916\u90E8\u9023\u643A\u8A2D\u5B9A\u3067 Backlog \u30B9\u30DA\u30FC\u30B9\u3092\u767B\u9332\u3057\u3066\u304F\u3060\u3055\u3044\uFF08twp backlog space list \u3067\u78BA\u8A8D\u3067\u304D\u307E\u3059\uFF09\u3002")}throw new UsageError(`Backlog \u30B9\u30DA\u30FC\u30B9\u304C ${spaces.length} \u4EF6\u767B\u9332\u3055\u308C\u3066\u3044\u308B\u305F\u3081\u3001--space \u30671\u3064\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044`,`twp backlog space list \u3067 ID \u3068\u30B9\u30DA\u30FC\u30B9URL\u3092\u78BA\u8A8D\u3067\u304D\u307E\u3059\u3002`)}async backlogProjects(spaceId){
99
99
  return this.cached("backlog-projects",spaceId,()=>this.namedList(backlogSpacePath(spaceId,"/projects"),"projects","Backlog \u30D7\u30ED\u30B8\u30A7\u30AF\u30C8",backlogProjectRow))}async backlogStatuses(spaceId,projectId){return this.cached("backlog-statuses",`${spaceId}/${projectId}`,()=>this.namedList(backlogSpacePath(spaceId,`/projects/${encodeURIComponent(assertBacklogPathSegment(projectId,"Backlog \u30D7\u30ED\u30B8\u30A7\u30AF\u30C8 ID"))}/statuses`),"statuses","Backlog \u30B9\u30C6\u30FC\u30BF\u30B9",
100
- backlogStatusRow))}async backlogUsers(spaceId,projectId){return this.cached("backlog-users",`${spaceId}/${projectId}`,()=>this.namedList(backlogSpacePath(spaceId,`/projects/${encodeURIComponent(assertBacklogPathSegment(projectId,"Backlog \u30D7\u30ED\u30B8\u30A7\u30AF\u30C8 ID"))}/users`),"users","Backlog \u30E6\u30FC\u30B6\u30FC",backlogUserRow))}get apiClient(){return this.client}};function rawListFrom(res,envelope,label){if(!res.ok){throw new ResolveError(`${label}\u306E\u4E00\u89A7\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08HTTP ${res.
101
- status}\uFF09\u3002\u63A5\u7D9A\u5148\u3068\u30ED\u30B0\u30A4\u30F3\u72B6\u614B\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`,res.status)}const list=isRecord(res.json)?res.json[envelope]:void 0;if(!Array.isArray(list)){throw new ResolveError(`${label}\u4E00\u89A7\u306E\u5FDC\u7B54\u306B ${envelope} \u914D\u5217\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`,res.status)}return list.map((row,index)=>{if(!isRecord(
102
- row)){throw new ResolveError(`${label}\u4E00\u89A7\u306E ${index+1} \u4EF6\u76EE\u304C\u60F3\u5B9A\u306E\u5F62\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`,res.status)}return row})}function userRow(row){const email=str(row["email"]);const employeeCode=str(row["employee_code"]);return{id:str(row["user_id"]),name:str(row["user_name"]),code:employeeCode??email,aliases:[email,employeeCode].filter(v=>v!==null)}}function notificationCategoryRow(row){
103
- return{id:str(row["key"]),name:str(row["name"]),code:str(row["key"])}}function inquiryCategoryRow(row){return{id:str(row["id"]),name:str(row["title"]),code:str(row["category_code"])}}function masterList(res,label){const rows=rawListFrom(res,"list",label);const count=isRecord(res.json)?res.json["count"]:void 0;if(typeof count==="number"&&count>rows.length){throw new ResolveError(`${label}\u4E00\u89A7\u304C ${count} \u4EF6\u4E2D ${rows.length} \u4EF6\u3067\u5207\u308A\u8A70\u3081\u3089\u308C\u305F\u305F\u3081\u3001\u540D\u524D\u3067\u89E3\u6C7A\u3067\u304D\u307E\u305B\u3093\u3002ID \u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002`,
104
- res.status)}return rows}function codedMasterRow(row){return{id:str(row["id"]),name:str(row["name"]),code:str(row["code"]),isDefault:truthyFlag(row["is_default"])}}function namedListFrom(res,envelope,label,map){return namedFromRows(rawListFrom(res,envelope,label),label,map,res.status??void 0)}function namedFromRows(rows,label,map,status=200){return rows.map((row,index)=>{const mapped=map(row);if(mapped.id===null||mapped.name===null){throw new ResolveError(`${label}\u4E00\u89A7\u306E ${index+1} \u4EF6\u76EE\
105
- \u306B id / \u540D\u524D\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`,status)}return{id:mapped.id,name:mapped.name,...mapped.code!==void 0?{code:mapped.code}:{},...mapped.aliases!==void 0&&mapped.aliases.length>0?{aliases:mapped.aliases}:{},...mapped.isDefault!==void 0?{isDefault:mapped.isDefault}:{}}})}function requireDefault(candidates,ctx){const hit=candidates.find(ref=>ref.isDefault===true);if(hit!==void 0)return hit;
106
- throw new UsageError(`${ctx.flag} \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08${ctx.scope??DEFAULT_LOOKUP_SCOPE}\u306B\u306F\u65E2\u5B9A\u306E${ctx.label}\u304C\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093\uFF09`,`\u6307\u5B9A\u3067\u304D\u308B${ctx.label}: ${candidates.map(ref=>ref.name).join(" / ")}\uFF08\u53E4\u3044\u30AD\u30E3\u30C3\u30B7\u30E5\u304C\u6B8B\u3063\u3066\u3044\u308B\u5834\u5408\u306F --refresh \u3067\u53D6\u308A\u76F4\u305B\u307E\u3059\uFF09`)}export{BACKLOG_BASE_PATH,backlogSpacePath,resolveNamed,requireDefaultProject,PRIVATE_TASKS_PATH,BACKLOG_SCOPE_LABEL,BACKLOG_PROJECT_SCOPE_LABEL,DEPARTMENTS_PATH,POSITIONS_PATH,JOB_TITLES_PATH,INQUIRY_CATEGORIES_PATH,NOTIFICATIONS_PATH,WORKFLOWS_PATH,REPORTS_PATH,SALES_ESTIMATES_PATH,SALES_INVOICES_PATH,SALES_CONTRACTS_PATH,SALES_INVOICE_AUTO_TEMPLATES_PATH,SALES_DEPOSITS_PATH,SALES_PURCHASES_PATH,SALES_SUPPLIER_PAYMENTS_PATH,SALES_SUPPLIER_PAYMENT_SCHEDULES_PATH,SALES_BUSINESS_PLACES_PATH,SALES_PAYEES_PATH,
100
+ backlogStatusRow))}async backlogUsers(spaceId,projectId){return this.cached("backlog-users",`${spaceId}/${projectId}`,()=>this.namedList(backlogSpacePath(spaceId,`/projects/${encodeURIComponent(assertBacklogPathSegment(projectId,"Backlog \u30D7\u30ED\u30B8\u30A7\u30AF\u30C8 ID"))}/users`),"users","Backlog \u30E6\u30FC\u30B6\u30FC",backlogUserRow))}async ms365Teams(){return this.cached("ms365-teams",MS365_TEAMS_CACHE_KEY,()=>this.ms365NamedList(ms365Path("/teams/teams"),"Teams \u306E\u30C1\u30FC\u30E0"))}async ms365Team(ref){
101
+ return resolveNamed(ref,await this.ms365Teams(),{flag:"--team",label:"\u30C1\u30FC\u30E0",scope:MS365_SCOPE_LABEL})}async ms365Channels(teamId){return this.cached("ms365-channels",teamId,()=>this.ms365NamedList(ms365Path(`/teams/teams/${ms365Segment(teamId,"\u30C1\u30FC\u30E0 ID")}/channels`),"Teams \u306E\u30C1\u30E3\u30CD\u30EB"))}async ms365Channel(teamId,ref){return resolveNamed(ref,await this.ms365Channels(teamId),{flag:"--channel",label:"\u30C1\u30E3\u30CD\u30EB",scope:"\u3053\u306E\u30C1\u30FC\u30E0"})}async ms365NamedList(path2,label){
102
+ const rows=[];let cursor=null;for(let page=1;page<=MS365_RESOLVE_MAX_PAGES;page+=1){const res=await this.get(cursor===null?path2:`${path2}?skiptoken=${encodeURIComponent(cursor)}`);if(!res.ok){throw new ResolveError(ms365NotConnectedGuidance(res.json)??`${label}\u306E\u4E00\u89A7\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08HTTP ${res.status}\uFF09\u3002\u63A5\u7D9A\u5148\u3068\u30ED\u30B0\u30A4\u30F3\u72B6\u614B\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`,
103
+ res.status)}const data=isRecord(res.json)?res.json["data"]:void 0;const value=isRecord(data)?data["value"]:void 0;if(!isRecord(data)||!Array.isArray(value)){throw new ResolveError(`${label}\u4E00\u89A7\u306E\u5FDC\u7B54\u306B data.value \u914D\u5217\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`,res.status)}value.forEach((row,index)=>{if(!isRecord(row)){throw new ResolveError(`${label}\u4E00\u89A7\u306E ${rows.length+index+
104
+ 1} \u4EF6\u76EE\u304C\u60F3\u5B9A\u306E\u5F62\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`,res.status)}rows.push(row)});const next=data["@odata.nextLink"];if(next===void 0||next===null)return namedFromRows(rows,label,ms365NamedRow,res.status??void 0);const parsed=typeof next==="string"?graphNextCursor(next):null;if(parsed===null||parsed.kind!=="skiptoken"){throw new ResolveError(`${label}\u4E00\u89A7\u306E\u7D9A\u304D\uFF08@odata.nextLink\uFF09\u3092\u8AAD\u3081\u307E\u305B\
105
+ \u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`,res.status)}cursor=parsed.value}throw new UsageError(`${label}\u304C\u591A\u3059\u304E\u308B\u305F\u3081\u540D\u524D\u3067\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\uFF08${MS365_RESOLVE_MAX_PAGES} \u30DA\u30FC\u30B8\u3092\u8D85\u3048\u307E\u3057\u305F\uFF09`,"\u4E00\u89A7\u30B3\u30DE\u30F3\u30C9\u306E\u51FA\u529B\u306B\u3042\u308B id \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002")}get apiClient(){
106
+ return this.client}};function rawListFrom(res,envelope,label){if(!res.ok){throw new ResolveError(`${label}\u306E\u4E00\u89A7\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08HTTP ${res.status}\uFF09\u3002\u63A5\u7D9A\u5148\u3068\u30ED\u30B0\u30A4\u30F3\u72B6\u614B\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`,res.status)}const list=isRecord(res.json)?res.json[envelope]:void 0;if(!Array.isArray(list)){throw new ResolveError(`${label}\u4E00\u89A7\u306E\u5FDC\u7B54\u306B ${envelope}\
107
+ \u914D\u5217\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`,res.status)}return list.map((row,index)=>{if(!isRecord(row)){throw new ResolveError(`${label}\u4E00\u89A7\u306E ${index+1} \u4EF6\u76EE\u304C\u60F3\u5B9A\u306E\u5F62\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`,res.status)}return row})}function userRow(row){const email=str(row["emai\
108
+ l"]);const employeeCode=str(row["employee_code"]);return{id:str(row["user_id"]),name:str(row["user_name"]),code:employeeCode??email,aliases:[email,employeeCode].filter(v=>v!==null)}}function notificationCategoryRow(row){return{id:str(row["key"]),name:str(row["name"]),code:str(row["key"])}}function inquiryCategoryRow(row){return{id:str(row["id"]),name:str(row["title"]),code:str(row["category_code"])}}function masterList(res,label){const rows=rawListFrom(res,"list",label);const count=isRecord(res.
109
+ json)?res.json["count"]:void 0;if(typeof count==="number"&&count>rows.length){throw new ResolveError(`${label}\u4E00\u89A7\u304C ${count} \u4EF6\u4E2D ${rows.length} \u4EF6\u3067\u5207\u308A\u8A70\u3081\u3089\u308C\u305F\u305F\u3081\u3001\u540D\u524D\u3067\u89E3\u6C7A\u3067\u304D\u307E\u305B\u3093\u3002ID \u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002`,res.status)}return rows}function codedMasterRow(row){return{id:str(row["id"]),name:str(row["name"]),code:str(row["code"]),isDefault:truthyFlag(
110
+ row["is_default"])}}function namedListFrom(res,envelope,label,map){return namedFromRows(rawListFrom(res,envelope,label),label,map,res.status??void 0)}function namedFromRows(rows,label,map,status=200){return rows.map((row,index)=>{const mapped=map(row);if(mapped.id===null||mapped.name===null){throw new ResolveError(`${label}\u4E00\u89A7\u306E ${index+1} \u4EF6\u76EE\u306B id / \u540D\u524D\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`,
111
+ status)}return{id:mapped.id,name:mapped.name,...mapped.code!==void 0?{code:mapped.code}:{},...mapped.aliases!==void 0&&mapped.aliases.length>0?{aliases:mapped.aliases}:{},...mapped.isDefault!==void 0?{isDefault:mapped.isDefault}:{}}})}function requireDefault(candidates,ctx){const hit=candidates.find(ref=>ref.isDefault===true);if(hit!==void 0)return hit;throw new UsageError(`${ctx.flag} \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08${ctx.scope??DEFAULT_LOOKUP_SCOPE}\u306B\u306F\u65E2\u5B9A\u306E${ctx.
112
+ label}\u304C\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093\uFF09`,`\u6307\u5B9A\u3067\u304D\u308B${ctx.label}: ${candidates.map(ref=>ref.name).join(" / ")}\uFF08\u53E4\u3044\u30AD\u30E3\u30C3\u30B7\u30E5\u304C\u6B8B\u3063\u3066\u3044\u308B\u5834\u5408\u306F --refresh \u3067\u53D6\u308A\u76F4\u305B\u307E\u3059\uFF09`)}export{BACKLOG_BASE_PATH,backlogSpacePath,resolveNamed,requireDefaultProject,PRIVATE_TASKS_PATH,BACKLOG_SCOPE_LABEL,BACKLOG_PROJECT_SCOPE_LABEL,DEPARTMENTS_PATH,POSITIONS_PATH,JOB_TITLES_PATH,INQUIRY_CATEGORIES_PATH,NOTIFICATIONS_PATH,WORKFLOWS_PATH,REPORTS_PATH,SALES_ESTIMATES_PATH,SALES_INVOICES_PATH,SALES_CONTRACTS_PATH,SALES_INVOICE_AUTO_TEMPLATES_PATH,SALES_DEPOSITS_PATH,SALES_PURCHASES_PATH,SALES_SUPPLIER_PAYMENTS_PATH,SALES_SUPPLIER_PAYMENT_SCHEDULES_PATH,SALES_BUSINESS_PLACES_PATH,SALES_PAYEES_PATH,
107
113
  SALES_SEAL_IMPRESSIONS_PATH,SALES_PURCHASE_AI_MAPPINGS_PATH,SALES_ESTIMATE_NO_RULES_PATH,SALES_INVOICE_NO_RULES_PATH,SALES_PURCHASE_NO_RULES_PATH,SALES_ESTIMATE_FORMATS_PATH,SALES_ROUNDING_SETTING_PATH,SALES_COMPANIES_PATH,CUSTOMERS_PATH,PROSPECTS_PATH,isExactNumericId,ORG_MASTER_LIMIT,TASK_MASTERS,Resolver};
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-I4ARX6NM.js";import{parseArgv}from"./chunk-B7YCG2T7.js";import"./chunk-NAUH75MM.js";import"./chunk-EOSSFTNG.js";import"./chunk-QQRJLH6B.js";import"./chunk-VSJBJXZO.js";var VERSION=true?"0.41.0":"0.0.0-dev";var HELP=`twp ${VERSION} \u2014 TWP CLI
4
+ import{GLOBAL_OPTIONS_HELP}from"./chunk-YLM54X35.js";import{parseArgv}from"./chunk-L35F47BO.js";import"./chunk-NAUH75MM.js";import"./chunk-YO2RNKCQ.js";import"./chunk-QQRJLH6B.js";import"./chunk-VSJBJXZO.js";var VERSION=true?"0.43.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
@@ -208,6 +208,34 @@ import{GLOBAL_OPTIONS_HELP}from"./chunk-I4ARX6NM.js";import{parseArgv}from"./chu
208
208
  Backlog \u8AB2\u984C\u306E\u6DFB\u4ED8\u30D5\u30A1\u30A4\u30EB\u3092 --out \u3078\u66F8\u304D\u51FA\u3059
209
209
  twp backlog status list Backlog \u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u30B9\u30C6\u30FC\u30BF\u30B9\u3092\u4E00\u89A7\u3059\u308B\uFF08--project \u304C\u8981\u308B\uFF09
210
210
  twp backlog user list Backlog \u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u30E1\u30F3\u30D0\u30FC\u3092\u4E00\u89A7\u3059\u308B\uFF08--project \u304C\u8981\u308B\uFF09
211
+ twp outlook mail list Outlook \u306E\u30E1\u30FC\u30EB\u3092\u4E00\u89A7\u3059\u308B\uFF08\u65E2\u5B9A\u306F\u53D7\u4FE1\u30C8\u30EC\u30A4\u30FB--unread / --search\uFF09
212
+ twp outlook mail get <\u30E1\u30FC\u30EBID>
213
+ \u30E1\u30FC\u30EB1\u4EF6\u306E\u8A73\u7D30\u3092\u8868\u793A\u3059\u308B\uFF08\u672C\u6587\u3064\u304D\uFF09
214
+ twp outlook attachment list <\u30E1\u30FC\u30EBID>
215
+ \u30E1\u30FC\u30EB\u306E\u6DFB\u4ED8\u30D5\u30A1\u30A4\u30EB\u3092\u4E00\u89A7\u3059\u308B
216
+ twp outlook attachment download <\u30E1\u30FC\u30EBID> <\u6DFB\u4ED8ID> --out <\u30D1\u30B9>
217
+ \u30E1\u30FC\u30EB\u306E\u6DFB\u4ED8\u30D5\u30A1\u30A4\u30EB\u3092 --out \u3078\u66F8\u304D\u51FA\u3059
218
+ twp outlook event list \u4E88\u5B9A\u8868\u306E\u4E88\u5B9A\u3092\u4E00\u89A7\u3059\u308B\uFF08--from / --to \u306F\u65E5\u672C\u6642\u9593\u306E\u65E5\u4ED8\uFF09
219
+ twp outlook event get <\u4E88\u5B9AID>
220
+ \u4E88\u5B9A1\u4EF6\u306E\u8A73\u7D30\u3092\u8868\u793A\u3059\u308B\uFF08\u51FA\u5E2D\u8005\u30FB\u672C\u6587\u3064\u304D\uFF09
221
+ twp teams team list \u53C2\u52A0\u3057\u3066\u3044\u308B Teams \u306E\u30C1\u30FC\u30E0\u3092\u4E00\u89A7\u3059\u308B
222
+ twp teams member list --team <\u540D\u524D|ID>
223
+ \u30C1\u30FC\u30E0\u306E\u30E1\u30F3\u30D0\u30FC\u3092\u4E00\u89A7\u3059\u308B
224
+ twp teams channel list --team <\u540D\u524D|ID>
225
+ \u30C1\u30FC\u30E0\u306E\u30C1\u30E3\u30CD\u30EB\u3092\u4E00\u89A7\u3059\u308B
226
+ twp teams channel folder --team <\u540D\u524D|ID> --channel <\u540D\u524D|ID>
227
+ \u30C1\u30E3\u30CD\u30EB\u306E\u30D5\u30A1\u30A4\u30EB\u306E\u7F6E\u304D\u5834\u6240\uFF08\u30C9\u30E9\u30A4\u30D6ID\uFF09\u3092\u8868\u793A\u3059\u308B
228
+ twp teams chat list \u81EA\u5206\u304C\u53C2\u52A0\u3057\u3066\u3044\u308B\u30C1\u30E3\u30C3\u30C8\u3092\u4E00\u89A7\u3059\u308B\uFF08\u53C2\u52A0\u8005\u306E\u540D\u524D\u3064\u304D\uFF09
229
+ twp teams message list \u30C1\u30E3\u30C3\u30C8\uFF08--chat\uFF09\u304B\u30C1\u30E3\u30CD\u30EB\uFF08--team \u3068 --channel\uFF09\u306E\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u4E00\u89A7\u3059\u308B
230
+ twp teams reply list <\u6295\u7A3FID> --team <\u540D\u524D|ID> --channel <\u540D\u524D|ID>
231
+ \u30C1\u30E3\u30CD\u30EB\u6295\u7A3F\u306E\u30B9\u30EC\u30C3\u30C9\u8FD4\u4FE1\u3092\u4E00\u89A7\u3059\u308B
232
+ twp teams mention list \u81EA\u5206\u5B9B\u3066\u306E\u30E1\u30F3\u30B7\u30E7\u30F3\u3092\u4E00\u89A7\u3059\u308B\uFF08\u65E2\u5B9A\u306F\u76F4\u8FD17\u65E5\u30FB--unread\uFF09
233
+ twp onedrive item list [<\u30D5\u30A9\u30EB\u30C0ID>]
234
+ OneDrive \u306E\u30D5\u30A9\u30EB\u30C0\u306E\u4E2D\u8EAB\u3092\u4E00\u89A7\u3059\u308B\uFF08\u65E2\u5B9A\u306F\u81EA\u5206\u306E OneDrive\uFF09
235
+ twp onedrive item get <\u9805\u76EEID>
236
+ \u30D5\u30A1\u30A4\u30EB\u30FB\u30D5\u30A9\u30EB\u30C01\u4EF6\u306E\u60C5\u5831\u3092\u8868\u793A\u3059\u308B
237
+ twp onedrive item download <\u9805\u76EEID> --out <\u30D1\u30B9>
238
+ OneDrive \u306E\u30D5\u30A1\u30A4\u30EB\u3092 --out \u3078\u66F8\u304D\u51FA\u3059
211
239
  twp user list \u30E6\u30FC\u30B6\u30FC\u3092\u4E00\u89A7\u3059\u308B\uFF08--department / --position \u306F\u540D\u524D\u3067\u6307\u5B9A\u3067\u304D\u308B\uFF09
212
240
  twp user get <\u30E6\u30FC\u30B6\u30FC> \u30E6\u30FC\u30B6\u30FC1\u4EBA\u306E\u8A73\u7D30\u3092\u8868\u793A\u3059\u308B\uFF08\u7D44\u7E54\u7BA1\u7406\u8005\u306E\u307F\uFF09
213
241
  twp user assignment list <\u30E6\u30FC\u30B6\u30FC>
@@ -353,6 +381,14 @@ import{GLOBAL_OPTIONS_HELP}from"./chunk-I4ARX6NM.js";import{parseArgv}from"./chu
353
381
  \u898B\u7A4D\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u3092\u66F8\u304D\u63DB\u3048\u308B\uFF08--content-file \u306B\u66F8\u3044\u305F\u9805\u76EE\u3060\u3051\uFF09
354
382
  twp estimate format delete <\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8ID>
355
383
  \u898B\u7A4D\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u3092\u524A\u9664\u3059\u308B\uFF08--yes \u304C\u8981\u308B\uFF09
384
+ twp estimate ai-review run <\u898B\u7A4DID>
385
+ \u898B\u7A4D\u306E\u7533\u8ACB\u524DAI\u30C1\u30A7\u30C3\u30AF\u3092\u5B9F\u884C\u3059\u308B\uFF08AI \u30AF\u30EC\u30B8\u30C3\u30C8\u3092\u6D88\u8CBB\u30FB--yes \u304C\u8981\u308B\u30FB--wait \u3067\u5B8C\u4E86\u307E\u3067\u5F85\u3064\uFF09
386
+ twp estimate ai-review get <\u898B\u7A4DID>
387
+ \u898B\u7A4D\u306E\u7533\u8ACB\u524DAI\u30C1\u30A7\u30C3\u30AF\u306E\u7D50\u679C\u3068\u78BA\u8A8D\u6E08\u307F\u306E\u7406\u7531\u3092\u8868\u793A\u3059\u308B
388
+ twp estimate ai-review-reason update <\u6307\u6458ID> --estimate <\u898B\u7A4DID>
389
+ \u6307\u6458\u306B\u78BA\u8A8D\u6E08\u307F\u306E\u7406\u7531\u3092\u6DFB\u3048\u308B\uFF08--judgment\u30FB--text\uFF09
390
+ twp estimate ai-review-reason delete <\u6307\u6458ID> --estimate <\u898B\u7A4DID>
391
+ \u6307\u6458\u306B\u6DFB\u3048\u305F\u7406\u7531\u3092\u53D6\u308A\u6D88\u3059\uFF08--yes \u304C\u8981\u308B\uFF09
356
392
  twp invoice list \u8ACB\u6C42\u3092\u4E00\u89A7\u3059\u308B\uFF08--status\u30FB--customer\u30FB--allocation unallocated \u3067\u672A\u56DE\u53CE\uFF09
357
393
  twp invoice get <\u8ACB\u6C42ID>
358
394
  \u8ACB\u6C421\u4EF6\u306E\u8A73\u7D30\u3092\u8868\u793A\u3059\u308B
@@ -397,6 +433,14 @@ import{GLOBAL_OPTIONS_HELP}from"./chunk-I4ARX6NM.js";import{parseArgv}from"./chu
397
433
  \u8ACB\u6C42\u756A\u53F7\u30EB\u30FC\u30EB\u3092\u66F8\u304D\u63DB\u3048\u308B\uFF08\u6B21\u306E\u756A\u53F7\u306E\u5909\u5316\u3092\u51FA\u3059\u30FB--yes \u304C\u8981\u308B\uFF09
398
434
  twp invoice no-rule delete <\u30EB\u30FC\u30EBID>
399
435
  \u8ACB\u6C42\u756A\u53F7\u30EB\u30FC\u30EB\u3092\u524A\u9664\u3059\u308B\uFF08--yes \u304C\u8981\u308B\uFF09
436
+ twp invoice ai-review run <\u8ACB\u6C42ID>
437
+ \u8ACB\u6C42\u306E\u7533\u8ACB\u524DAI\u30C1\u30A7\u30C3\u30AF\u3092\u5B9F\u884C\u3059\u308B\uFF08AI \u30AF\u30EC\u30B8\u30C3\u30C8\u3092\u6D88\u8CBB\u30FB--yes \u304C\u8981\u308B\u30FB--wait \u3067\u5B8C\u4E86\u307E\u3067\u5F85\u3064\uFF09
438
+ twp invoice ai-review get <\u8ACB\u6C42ID>
439
+ \u8ACB\u6C42\u306E\u7533\u8ACB\u524DAI\u30C1\u30A7\u30C3\u30AF\u306E\u7D50\u679C\u3068\u78BA\u8A8D\u6E08\u307F\u306E\u7406\u7531\u3092\u8868\u793A\u3059\u308B
440
+ twp invoice ai-review-reason update <\u6307\u6458ID> --invoice <\u8ACB\u6C42ID>
441
+ \u6307\u6458\u306B\u78BA\u8A8D\u6E08\u307F\u306E\u7406\u7531\u3092\u6DFB\u3048\u308B\uFF08--judgment\u30FB--text\uFF09
442
+ twp invoice ai-review-reason delete <\u6307\u6458ID> --invoice <\u8ACB\u6C42ID>
443
+ \u6307\u6458\u306B\u6DFB\u3048\u305F\u7406\u7531\u3092\u53D6\u308A\u6D88\u3059\uFF08--yes \u304C\u8981\u308B\uFF09
400
444
  twp contract list \u53D6\u5F15\u5951\u7D04\u3092\u4E00\u89A7\u3059\u308B\uFF08--status\u30FB--customer\u30FB--estimate\u3002\u5951\u7D04\u66F8 PDF \u306F customer contract\uFF09
401
445
  twp contract get <\u5951\u7D04ID>
402
446
  \u53D6\u5F15\u5951\u7D041\u4EF6\u306E\u8A73\u7D30\u3092\u8868\u793A\u3059\u308B
@@ -405,6 +449,20 @@ import{GLOBAL_OPTIONS_HELP}from"./chunk-I4ARX6NM.js";import{parseArgv}from"./chu
405
449
  \u53D6\u5F15\u5951\u7D04\u3092\u66F8\u304D\u63DB\u3048\u308B\uFF08--content-file \u306B\u66F8\u3044\u305F\u9805\u76EE\u3060\u3051\uFF09
406
450
  twp contract delete <\u5951\u7D04ID>
407
451
  \u53D6\u5F15\u5951\u7D04\u3092\u524A\u9664\u3059\u308B\uFF08--yes \u304C\u8981\u308B\u30FB\u8ACB\u6C42\u304C\u7D10\u3065\u3051\u3070\u65AD\u3089\u308C\u308B\uFF09
452
+ twp contract ai-review run <\u5951\u7D04ID>
453
+ \u5951\u7D04\u306E\u7533\u8ACB\u524DAI\u30C1\u30A7\u30C3\u30AF\u3092\u5B9F\u884C\u3059\u308B\uFF08AI \u30AF\u30EC\u30B8\u30C3\u30C8\u3092\u6D88\u8CBB\u30FB--yes \u304C\u8981\u308B\u30FB--wait \u3067\u5B8C\u4E86\u307E\u3067\u5F85\u3064\uFF09
454
+ twp contract ai-review get <\u5951\u7D04ID>
455
+ \u5951\u7D04\u306E\u7533\u8ACB\u524DAI\u30C1\u30A7\u30C3\u30AF\u306E\u7D50\u679C\u3068\u78BA\u8A8D\u6E08\u307F\u306E\u7406\u7531\u3092\u8868\u793A\u3059\u308B
456
+ twp contract ai-review-reason update <\u6307\u6458ID> --contract <\u5951\u7D04ID>
457
+ \u6307\u6458\u306B\u78BA\u8A8D\u6E08\u307F\u306E\u7406\u7531\u3092\u6DFB\u3048\u308B\uFF08--judgment\u30FB--text\uFF09
458
+ twp contract ai-review-reason delete <\u6307\u6458ID> --contract <\u5951\u7D04ID>
459
+ \u6307\u6458\u306B\u6DFB\u3048\u305F\u7406\u7531\u3092\u53D6\u308A\u6D88\u3059\uFF08--yes \u304C\u8981\u308B\uFF09
460
+ twp ai-review-reason list
461
+ \u898B\u7A4D\u30FB\u8ACB\u6C42\u30FB\u53D6\u5F15\u5951\u7D04\u306E\u6307\u6458\u306B\u6DFB\u3048\u305F\u78BA\u8A8D\u6E08\u307F\u306E\u7406\u7531\u3092\u4E00\u89A7\u3059\u308B\uFF08--customer\u30FB--criterion\u3002\u8CA9\u58F2\u7BA1\u7406\u306E\u7BA1\u7406\u8005\uFF09
462
+ twp ai-review-reason preview
463
+ \u9078\u3093\u3060\u7406\u7531\u304B\u3089\u793E\u5185\u30CA\u30EC\u30C3\u30B8\u3078\u306E\u8FFD\u8A18\u6587\u6848\u3092\u751F\u6210\u3059\u308B\uFF08AI \u30AF\u30EC\u30B8\u30C3\u30C8\u3092\u6D88\u8CBB\u30FB--yes \u304C\u8981\u308B\uFF09
464
+ twp ai-review-reason publish
465
+ \u6587\u6848\u3067\u793E\u5185\u30CA\u30EC\u30C3\u30B8\u3078\u306E\u8FFD\u8A18PR\u3092\u4F5C\u308B\uFF08GitHub \u306B\u66F8\u304D\u8FBC\u3080\u30FB--yes \u304C\u8981\u308B\uFF09
408
466
  twp deposit list \u5165\u91D1\u3092\u4E00\u89A7\u3059\u308B\uFF08--customer\u30FB--allocation\u30FB--from/--to\u3002\u8CA9\u58F2\u7BA1\u7406\u306E\u7BA1\u7406\u8005\uFF09
409
467
  twp deposit get <\u5165\u91D1ID>
410
468
  \u5165\u91D11\u4EF6\u306E\u8A73\u7D30\u3092\u8868\u793A\u3059\u308B\uFF08\u5F15\u5F53\u306E\u5185\u8A33\u3064\u304D\uFF09
@@ -676,15 +734,15 @@ TUI \u5185:
676
734
  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
677
735
  \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
678
736
  `;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
679
- `);process.exit(1)}ignoreEpipe(process.stdout);ignoreEpipe(process.stderr);if(process.env["TWP_AUTO_UPDATE_WORKER"]==="1"){const{runAutoUpdateWorker}=await import("./auto-update-worker-ZKODJ45K.js");await runAutoUpdateWorker().catch(()=>void 0);return}const[first,...rest]=process.argv.slice(2);if(first==="__complete"||first==="completion"){const completion=await import("./completion-EFGQJDIU.js");if(first==="completion"){process.exitCode=completion.runCompletion(rest,process.stdout,process.stderr);return}
680
- const[{loadDomain},{loadUserConfig}]=await Promise.all([import("./registry-3236ULYR.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-PS5HUWVH.js");autoUpdate2.registerRunning();autoUpdate2.onStartup(VERSION);const{runConfigure}=await import("./configure-XH33RB27.js");process.exitCode=
737
+ `);process.exit(1)}ignoreEpipe(process.stdout);ignoreEpipe(process.stderr);if(process.env["TWP_AUTO_UPDATE_WORKER"]==="1"){const{runAutoUpdateWorker}=await import("./auto-update-worker-ZKODJ45K.js");await runAutoUpdateWorker().catch(()=>void 0);return}const[first,...rest]=process.argv.slice(2);if(first==="__complete"||first==="completion"){const completion=await import("./completion-H65LUFVF.js");if(first==="completion"){process.exitCode=completion.runCompletion(rest,process.stdout,process.stderr);return}
738
+ const[{loadDomain},{loadUserConfig}]=await Promise.all([import("./registry-PGMXXWHA.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-PS5HUWVH.js");autoUpdate2.registerRunning();autoUpdate2.onStartup(VERSION);const{runConfigure}=await import("./configure-XH33RB27.js");process.exitCode=
681
739
  await runConfigure(rest);return}const args=parseArgv(process.argv.slice(2));if(args.command==="version"){process.stdout.write(`${VERSION}
682
740
  `);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(" ")}
683
741
 
684
- ${HELP}`);process.exitCode=2;return}const autoUpdate=await import("./auto-update-PS5HUWVH.js");autoUpdate.registerRunning();if(args.command==="task-loop"){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-33WHOIOO.js");process.exitCode=await runDomain({domain:args.domain,...args.operation!==void 0?{operation:args.operation}:{},argv:args.domainArgv,help:args.
685
- 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-6FEY6MHV.js");process.exitCode=await runApiCommand({argv:args.domainArgv,help:args.domainHelp,globals:{...args.profile!==void 0?{profile:args.profile}:{},...args.output!==
686
- 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-EYFT7STE.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-VT7AVSSL.js");
687
- 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-QIBFWWIT.js");process.exitCode=await runTaskLoop(
742
+ ${HELP}`);process.exitCode=2;return}const autoUpdate=await import("./auto-update-PS5HUWVH.js");autoUpdate.registerRunning();if(args.command==="task-loop"){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-SRTDTEKL.js");process.exitCode=await runDomain({domain:args.domain,...args.operation!==void 0?{operation:args.operation}:{},argv:args.domainArgv,help:args.
743
+ 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-DND4342Q.js");process.exitCode=await runApiCommand({argv:args.domainArgv,help:args.domainHelp,globals:{...args.profile!==void 0?{profile:args.profile}:{},...args.output!==
744
+ 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-EYFT7STE.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-255HOMWQ.js");
745
+ 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-BDYQKXPD.js");process.exitCode=await runTaskLoop(
688
746
  {action:args.taskLoopAction??"run",project:args.project,profile:args.profile,safe:args.safe,daemon:args.daemon,interval:args.interval,maxCycles:args.maxCycles,forceRunner:args.forceRunner,force:args.stopForce,drain:args.stopDrain,engine:args.engine,version:VERSION,verbose:args.verbose,scheduleNow:args.scheduleNow,scheduleCounts:args.scheduleCounts,scheduleGate:args.scheduleGate,charterOp:args.charterOp,charterInput:args.charterFile,charterOutput:args.charterOut,charterRevision:args.charterRevision,
689
- skillOp:args.skillOp,skillName:args.skillName,skillAll:args.skillAll,skillDir:args.skillDir,yes:args.yes,ais:args.ais,workspace:args.workspace,aiConfigFile:args.aiConfigFile,noAiConfigFile:args.noAiConfigFile});return}if(args.command==="print"){const{runOneShot}=await import("./oneshot-XW6YVNOY.js");process.exitCode=await runOneShot({prompt:args.prompt??"",fromStdin:args.promptFromStdin,mode:args.mode??"dev",...args.permissionMode!==void 0?{permissionMode:args.permissionMode}:{},allowedTools:args.
690
- 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-G6Y2XVST.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();
747
+ skillOp:args.skillOp,skillName:args.skillName,skillAll:args.skillAll,skillDir:args.skillDir,yes:args.yes,ais:args.ais,workspace:args.workspace,aiConfigFile:args.aiConfigFile,noAiConfigFile:args.noAiConfigFile});return}if(args.command==="print"){const{runOneShot}=await import("./oneshot-EUW726TV.js");process.exitCode=await runOneShot({prompt:args.prompt??"",fromStdin:args.promptFromStdin,mode:args.mode??"dev",...args.permissionMode!==void 0?{permissionMode:args.permissionMode}:{},allowedTools:args.
748
+ 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-2DWKZ2VE.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,6 +1,6 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{PromptAbortedError,promptHidden,promptText}from"./chunk-L37NS5L2.js";import{ApiError,TwpApiClient,errorListMessages}from"./chunk-IF2K4PM5.js";import{AuthSession,NotLoggedInError,SessionExpiredError,deleteCredentials,loadCredentials,maskToken,saveCredentials}from"./chunk-XNLIEUAW.js";import{effectiveApiUrl,resolveProfile}from"./chunk-4VZKNEVN.js";import{system32}from"./chunk-N2UVRM3Z.js";import{EXIT_USAGE,UsageError}from"./chunk-7WSNIXTQ.js";import{isWindowsDriveAbsolute}from"./chunk-PMOUHEJQ.js";
3
+ import{PromptAbortedError,promptHidden,promptText}from"./chunk-L37NS5L2.js";import{ApiError,TwpApiClient,errorListMessages}from"./chunk-IF2K4PM5.js";import{AuthSession,NotLoggedInError,SessionExpiredError,deleteCredentials,loadCredentials,maskToken,saveCredentials}from"./chunk-XNLIEUAW.js";import{effectiveApiUrl,resolveProfile}from"./chunk-4VZKNEVN.js";import{system32}from"./chunk-N2UVRM3Z.js";import{EXIT_USAGE,UsageError}from"./chunk-UFND7FBC.js";import{isWindowsDriveAbsolute}from"./chunk-PMOUHEJQ.js";
4
4
  import{httpFetch}from"./chunk-J7QYPKVK.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">
@@ -55,7 +55,7 @@ ation/json",Authorization:`Bearer ${creds.token}`}}).then(res=>res.ok,()=>false)
55
55
  `);if(!revoked){writeOut("\u26A0 \u30B5\u30FC\u30D0\u5074\u306E\u30C8\u30FC\u30AF\u30F3\u5931\u52B9\u306B\u5931\u6557\u3057\u307E\u3057\u305F\uFF08\u30AA\u30D5\u30E9\u30A4\u30F3\u7B49\uFF09\u3002TWP \u306E\u300C\u8A2D\u5B9A > CLI\u7AEF\u672B\u300D\u304B\u3089\u3082\u5931\u52B9\u3067\u304D\u307E\u3059\u3002\n")}})}async function runWhoami(options){return run(async()=>{const profile=resolveProfile(options.profile);const structured=options.output!==void 0||options.query!==void 0;let format=null;if(structured){
56
56
  const{resolveOutputFormat,OUTPUT_FORMATS}=await import("./format-NMW6Y2E5.js");format=resolveOutputFormat({...options.output!==void 0?{flag:options.output}:{},isTty:process.stdout.isTTY===true});if(format===null){throw new UsageError(`--output \u306B\u300C${options.output??""}\u300D\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093`,`\u6307\u5B9A\u3067\u304D\u308B\u306E\u306F ${OUTPUT_FORMATS.join(" / ")} \u3067\u3059`)}}const stored=loadCredentials(profile.name);const apiUrl=effectiveApiUrl(
57
57
  profile,stored?.api_url);const session=new AuthSession(profile.name,apiUrl);const client=new TwpApiClient(apiUrl,session,httpFetch,options.cliVersion);const me=await client.get("/api/v2/user");const user=me.user;const creds=loadCredentials(profile.name);if(format!==null){const value={id:user?.id??null,name:user?.name??null,email:user?.email??null,tenant_code:user?.tenant_code??null,role:user?.role??null,is_admin:user?.is_admin??null,profile:profile.name,api_url:apiUrl,expires_at:creds?.token_expires_at??
58
- null};const{evaluateQuery}=await import("./query-EEALMOSO.js");const{renderOutput}=await import("./render-F4MRN2FQ.js");const selected=options.query===void 0?value:await evaluateQuery(options.query,value);const text=renderOutput(selected,format);process.stdout.write(text.endsWith("\n")?text:`${text}
58
+ null};const{evaluateQuery}=await import("./query-3ZQP4DCN.js");const{renderOutput}=await import("./render-ASQBZ75M.js");const selected=options.query===void 0?value:await evaluateQuery(options.query,value);const text=renderOutput(selected,format);process.stdout.write(text.endsWith("\n")?text:`${text}
59
59
  `);return}writeOut(`\u30E6\u30FC\u30B6\u30FC: ${user?.name??"?"}\uFF08${user?.email??"?"}\uFF09
60
60
  `);writeOut(`ID: ${user?.id??"?"}
61
61
  `);writeOut(`\u30C6\u30CA\u30F3\u30C8: ${user?.tenant_code??"?"}