@tocca-systems/twp-cli 0.64.0 → 0.66.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 (113) hide show
  1. package/CHANGELOG.public.md +24 -0
  2. package/README.md +116 -8
  3. package/command-model/wiki.json +2 -2
  4. package/dist/agent-SFX3ZVOB.js +160 -0
  5. package/dist/{agent-loop-GPPUR2WD.js → agent-loop-6JO4PJRG.js} +23 -20
  6. package/dist/{ai-dispatch-FZDFJ4TN.js → ai-dispatch-YICIA4NI.js} +3 -3
  7. package/dist/analysis-HMOECNWG.js +5 -0
  8. package/dist/{announcement-ASKS53LL.js → announcement-Q642UMYK.js} +1 -1
  9. package/dist/{api-command-N2OJNJBC.js → api-command-4CUGQQI3.js} +4 -4
  10. package/dist/{app-QA2HKG6E.js → app-BBPK653N.js} +4 -4
  11. package/dist/{attendance-correct-KBNPGFGR.js → attendance-correct-DWVFYL2Y.js} +2 -2
  12. package/dist/{attendance-lists-C7TO3GQ2.js → attendance-lists-772Y3ZWA.js} +2 -2
  13. package/dist/{backlog-AWOTTGPB.js → backlog-FG3Y5JTE.js} +38 -28
  14. package/dist/{budget-Z6ILL7AU.js → budget-5WUQAAAZ.js} +2 -2
  15. package/dist/capacity-report-command-PBE73I43.js +15 -0
  16. package/dist/chunk-2OG4LAGD.js +41 -0
  17. package/dist/{chunk-T4QZO6RQ.js → chunk-5SONMN6K.js} +1 -1
  18. package/dist/chunk-6CS5L24D.js +4 -0
  19. package/dist/chunk-6OLZMQBK.js +11 -0
  20. package/dist/chunk-6PAZUW73.js +16 -0
  21. package/dist/{chunk-YKI7NYBD.js → chunk-7EJOKJLV.js} +57 -18
  22. package/dist/{chunk-3WFZOOXZ.js → chunk-AGI5KT4C.js} +1 -1
  23. package/dist/{chunk-LAAKI3GS.js → chunk-APPYZQNC.js} +1 -1
  24. package/dist/{chunk-4CR64SNH.js → chunk-CCBNU5Y3.js} +2 -2
  25. package/dist/{chunk-RWR7OHVP.js → chunk-DAOC7VRM.js} +1 -1
  26. package/dist/{chunk-JYCJ4N6T.js → chunk-F4PGPJOI.js} +1 -1
  27. package/dist/{chunk-AEJHDFXB.js → chunk-FABDZBDZ.js} +5 -5
  28. package/dist/{chunk-PIB6MGG5.js → chunk-FAHDBWW2.js} +1 -1
  29. package/dist/{chunk-234WHKGS.js → chunk-FDVWV3AY.js} +2 -2
  30. package/dist/chunk-G4TZFGNN.js +41 -0
  31. package/dist/{chunk-NQWTPHUO.js → chunk-GLKZ4ZZY.js} +1 -1
  32. package/dist/{worker-agent-XCJGZHMT.js → chunk-HBEOI456.js} +3 -3
  33. package/dist/{chunk-ITRTFBV3.js → chunk-HNG6MF26.js} +52 -49
  34. package/dist/{chunk-QSXS5SB2.js → chunk-HPPIVCK3.js} +3 -2
  35. package/dist/chunk-KDH3KWPO.js +4 -0
  36. package/dist/chunk-LJVAOWZI.js +65 -0
  37. package/dist/{chunk-UIHNYBME.js → chunk-NVMJXFBT.js} +1 -1
  38. package/dist/{chunk-FITASHOM.js → chunk-OMWCSE4P.js} +2 -2
  39. package/dist/{chunk-XPPT3MUY.js → chunk-P2DSHLHD.js} +2 -2
  40. package/dist/chunk-P6M2MCZJ.js +97 -0
  41. package/dist/{chunk-RROCQRRY.js → chunk-QJAZLPA3.js} +1 -1
  42. package/dist/chunk-SPZ3GBYC.js +16 -0
  43. package/dist/chunk-VIWQMDGG.js +91 -0
  44. package/dist/{chunk-S5DEP2HA.js → chunk-W2AIT5FJ.js} +5 -5
  45. package/dist/{chunk-FDRXS6ZU.js → chunk-WBUYPDJH.js} +1 -1
  46. package/dist/{chunk-5LPELULJ.js → chunk-WMEGP2BT.js} +1 -1
  47. package/dist/{chunk-NXWXTUU6.js → chunk-X6L5LUC4.js} +1 -1
  48. package/dist/{chunk-6PQO3AYP.js → chunk-XCPZ4R65.js} +1 -1
  49. package/dist/{chunk-VV4GTQ2L.js → chunk-XGYOJHZC.js} +16 -13
  50. package/dist/cli.js +100 -11
  51. package/dist/{commands-WIQVCMQE.js → commands-4C6TJ4WG.js} +1 -1
  52. package/dist/{commands-HK7DUMUJ.js → commands-62NWF7GA.js} +105 -155
  53. package/dist/{company-YPDJZ3SE.js → company-4DHVAW25.js} +2 -2
  54. package/dist/{completion-7RHQKR5U.js → completion-WR2GXZE7.js} +5 -4
  55. package/dist/{contract-2Y5VN3TR.js → contract-PT7VW4IE.js} +2 -2
  56. package/dist/{department-K4EFC6NW.js → department-C6WIZPBS.js} +1 -1
  57. package/dist/{deposit-NTLHIMJL.js → deposit-OEYFPEZG.js} +1 -1
  58. package/dist/{estimate-C5LUNIWR.js → estimate-4BUJQ3TP.js} +3 -3
  59. package/dist/{evaluation-ZWUHSENB.js → evaluation-GLXQ54F6.js} +1 -1
  60. package/dist/{expense-BXJ7QYMP.js → expense-QE3WIJTN.js} +1 -1
  61. package/dist/fiscal-year-YJWFQN4P.js +17 -0
  62. package/dist/{inquiry-KHPPTYN6.js → inquiry-ORB3ROAJ.js} +1 -1
  63. package/dist/{invoice-VV2NT4A3.js → invoice-XLX5KS2T.js} +3 -3
  64. package/dist/{job-title-RCSL5Y2Z.js → job-title-UDF6I3BP.js} +1 -1
  65. package/dist/{knowledge-BLU6RHS5.js → knowledge-4QPIGJEE.js} +32 -27
  66. package/dist/{leave-RJBCHZCQ.js → leave-3BJMXI7Q.js} +3 -3
  67. package/dist/license-OMIZUUTW.js +56 -0
  68. package/dist/{logout-guard-GQBF3GQH.js → logout-guard-2Y7HPIKN.js} +2 -1
  69. package/dist/{media-OIAOW546.js → media-77LTBOQX.js} +3 -3
  70. package/dist/{notification-KPMGELOR.js → notification-2IESSY5E.js} +1 -1
  71. package/dist/{oneshot-OWEBFX5O.js → oneshot-4XO5HIJR.js} +1 -1
  72. package/dist/{outlook-AAS5DXYQ.js → outlook-KYTXHDAV.js} +1 -1
  73. package/dist/plan-submit-T5KHXNGH.js +4 -0
  74. package/dist/{position-NY5LRELH.js → position-CR6P4WC5.js} +1 -1
  75. package/dist/{project-4MEGZ326.js → project-JJEMEO2W.js} +1 -1
  76. package/dist/{prospect-7D2WK56K.js → prospect-QG6X7ALK.js} +2 -2
  77. package/dist/{purchase-S7W67LJP.js → purchase-Z6ENEOZM.js} +3 -3
  78. package/dist/{receivable-GFJTEELC.js → receivable-ZBDXXMHX.js} +1 -1
  79. package/dist/{redmine-P3EMFFHY.js → redmine-EIFHMLNE.js} +1 -1
  80. package/dist/{registry-GRRRT3I6.js → registry-BIJNO3HE.js} +1 -1
  81. package/dist/{report-FUIVLC7B.js → report-TTXGXSR3.js} +1 -1
  82. package/dist/revision-command-PM7FQUVF.js +31 -0
  83. package/dist/{run-LSWFO4IY.js → run-TYKHDD6N.js} +2 -2
  84. package/dist/{sales-ai-review-P36TTQRO.js → sales-ai-review-6TDJFHDL.js} +1 -1
  85. package/dist/{sales-master-3CGHEFKF.js → sales-master-H5HMVBJV.js} +3 -3
  86. package/dist/{sales-numbering-3M2C2MAI.js → sales-numbering-Q5KRM63Y.js} +1 -1
  87. package/dist/{schedule-command-R5KTFAVZ.js → schedule-command-2HCOGYJW.js} +1 -1
  88. package/dist/{search-U3QNPR4D.js → search-GRAWP2LX.js} +1 -1
  89. package/dist/segment-YOUY4PZC.js +6 -0
  90. package/dist/server-settings-LJBDUOTV.js +4 -0
  91. package/dist/{server-skills-IFTDV3IQ.js → server-skills-KX236POI.js} +1 -1
  92. package/dist/{setup-MUPUY2AX.js → setup-HHPKB6N4.js} +3 -3
  93. package/dist/{skill-C4TGG7SH.js → skill-RH5MBRXZ.js} +1 -1
  94. package/dist/{supplier-payment-KG57PNWJ.js → supplier-payment-EJTFKAKY.js} +2 -2
  95. package/dist/{support-BRVAJ7IH.js → support-FR3KY63E.js} +1 -1
  96. package/dist/{task-RYBYPM4N.js → task-O7K6725Y.js} +3 -3
  97. package/dist/{teams-GPJ6HMIX.js → teams-QRVCFJS4.js} +1 -1
  98. package/dist/{user-3DE46776.js → user-PRGHG3HM.js} +15 -103
  99. package/dist/user-contract-type-K7CLKCEE.js +32 -0
  100. package/dist/worker-agent-WDYZTQ5C.js +4 -0
  101. package/dist/{workflow-MMEOWZJC.js → workflow-S25JXGWN.js} +1 -1
  102. package/package.json +1 -1
  103. package/dist/agent-UAOZYMQM.js +0 -100
  104. package/dist/analysis-RKWGO7UY.js +0 -4
  105. package/dist/chunk-2B7A3OY7.js +0 -102
  106. package/dist/chunk-4P7EYEL5.js +0 -4
  107. package/dist/chunk-AT432SCP.js +0 -15
  108. package/dist/chunk-QEWCTKPV.js +0 -15
  109. package/dist/chunk-QHX5YFMM.js +0 -23
  110. package/dist/chunk-RZ2NZE4U.js +0 -36
  111. package/dist/chunk-THOBFX2S.js +0 -10
  112. package/dist/plan-submit-AWMD7XOY.js +0 -3
  113. package/dist/server-settings-3YD7RR3A.js +0 -3
@@ -1,9 +1,48 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{dateFlag,monthFlag}from"./chunk-EXT4AIDF.js";import{readBody}from"./chunk-6LSQCOCJ.js";import{ATTENDANCE_REPORTS_PATH,ATTENDANCE_REPORT_MASTER_PATHS,resolveNamed}from"./chunk-ITRTFBV3.js";import{isSafePathSegment}from"./chunk-HVZUXLQ4.js";import{ApiError}from"./chunk-JA5A6UJ2.js";import{requireResolved,singleRef,withResolved}from"./chunk-PS5QFKHB.js";import{acknowledgement,isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiRejectedError,ApiResponseError,
4
- UsageError}from"./chunk-VFPY2A23.js";var USER_REF_HELP="<\u30E6\u30FC\u30B6\u30FC> \u306F ID\u30FB\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\u30FB\u793E\u54E1\u756A\u53F7\u30FB\u6C0F\u540D\u30FBme\uFF08\u81EA\u5206\uFF09\u306E\u3069\u308C\u3067\u3082\u6307\u5B9A\u3067\u304D\u307E\u3059\u3002\n\u6C0F\u540D\u306F\u5B8C\u5168\u4E00\u81F4\u30671\u4EBA\u306B\u7D5E\u308C\u305F\u3068\u304D\u3060\u3051\u53D7\u3051\u4ED8\u3051\u307E\u3059\uFF08\u540C\u59D3\u540C\u540D\u306A\u3089\u5019\u88DC\u3092\u51FA\u3057\u3066\u6B62\u307E\u308B\u306E\u3067\u3001\n\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\u304B\u793E\u54E1\u756A\u53F7\u3067\u6307\u5B9A\u3057\u76F4\u3057\u3066\u304F\u3060\u3055\u3044\uFF09\u3002ID \u4EE5\u5916\u306F\u3001\u30C6\u30CA\u30F3\u30C8\u306E\u30E6\u30FC\u30B6\u30FC\u4E00\u89A7\n\uFF08\u65E2\u5B9A10\u5206\u30AD\u30E3\u30C3\u30B7\u30E5\u30FB--refresh \u3067\u53D6\u308A\u76F4\u3057\uFF09\u3068\u7167\u5408\u3057\u307E\u3059\u3002\n\u8868\u793A\u30D5\u30E9\u30B0\u3092\u5916\u3057\u305F\u30E6\u30FC\u30B6\u30FC\u306F\u793E\u54E1\u756A\u53F7\u3067\u306F\u5F15\u3051\u307E\u305B\u3093\u3002\u7D44\u7E54\u7BA1\u7406\u8005\u3067\u306A\u3044\u5834\u5408\u306F ID \u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002";
3
+ import{dateFlag,monthFlag}from"./chunk-EXT4AIDF.js";import{STATUS_VALUES,createFlags,fieldBody,hasAnyField,idSegment,masterItem,masterRows,targetId,truncationNotes,updateFlags}from"./chunk-XGYOJHZC.js";import{nonEmpty,positiveInteger}from"./chunk-MI6HVYR2.js";import{repeatedValues}from"./chunk-RX5HWI4L.js";import{readBody}from"./chunk-6LSQCOCJ.js";import{ATTENDANCE_REPORTS_PATH,ATTENDANCE_REPORT_MASTER_LABELS,ATTENDANCE_REPORT_MASTER_PATHS,ORG_MASTER_LIMIT,resolveNamed}from"./chunk-HNG6MF26.js";
4
+ import{isSafePathSegment}from"./chunk-HVZUXLQ4.js";import{ApiError}from"./chunk-JA5A6UJ2.js";import{requireResolved,singleRef,withResolved}from"./chunk-PS5QFKHB.js";import{acknowledgement,isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiRejectedError,ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";var USER_REF_HELP="<\u30E6\u30FC\u30B6\u30FC> \u306F ID\u30FB\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\u30FB\u793E\u54E1\u756A\u53F7\u30FB\u6C0F\u540D\u30FBme\uFF08\u81EA\u5206\uFF09\u306E\u3069\u308C\u3067\u3082\u6307\u5B9A\u3067\u304D\u307E\u3059\u3002\n\u6C0F\u540D\u306F\u5B8C\u5168\u4E00\u81F4\u30671\u4EBA\u306B\u7D5E\u308C\u305F\u3068\u304D\u3060\u3051\u53D7\u3051\u4ED8\u3051\u307E\u3059\uFF08\u540C\u59D3\u540C\u540D\u306A\u3089\u5019\u88DC\u3092\u51FA\u3057\u3066\u6B62\u307E\u308B\u306E\u3067\u3001\n\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\u304B\u793E\u54E1\u756A\u53F7\u3067\u6307\u5B9A\u3057\u76F4\u3057\u3066\u304F\u3060\u3055\u3044\uFF09\u3002ID \u4EE5\u5916\u306F\u3001\u30C6\u30CA\u30F3\u30C8\u306E\u30E6\u30FC\u30B6\u30FC\u4E00\u89A7\n\uFF08\u65E2\u5B9A10\u5206\u30AD\u30E3\u30C3\u30B7\u30E5\u30FB--refresh \u3067\u53D6\u308A\u76F4\u3057\uFF09\u3068\u7167\u5408\u3057\u307E\u3059\u3002\n\u8868\u793A\u30D5\u30E9\u30B0\u3092\u5916\u3057\u305F\u30E6\u30FC\u30B6\u30FC\u306F\u793E\u54E1\u756A\u53F7\u3067\u306F\u5F15\u3051\u307E\u305B\u3093\u3002\u7D44\u7E54\u7BA1\u7406\u8005\u3067\u306A\u3044\u5834\u5408\u306F ID \u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002";
5
5
  function userPath(input,suffix=""){const userId=requireResolved(input,"userId");if(!isSafePathSegment(userId)){throw new ApiResponseError(`\u30B5\u30FC\u30D0\u304C\u8FD4\u3057\u305F\u30E6\u30FC\u30B6\u30FC ID \u3092\u30D1\u30B9\u306B\u4F7F\u3048\u307E\u305B\u3093: ${userId}\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}return`${encodeURIComponent(userId)}${suffix}`}var USER_REF_FLAG={name:"--user",summary:"\u5BFE\u8C61\u306E\u30E6\u30FC\u30B6\u30FC\uFF08\u4F4D\u7F6E\u5F15\u6570\u306E\u4EE3\u308F\u308A\u306B\u4F7F\u3048\u308B\uFF09",
6
- takesValue:true,placeholder:"<\u30E6\u30FC\u30B6\u30FC>"};async function prepareUser(input,ctx,usage){const ref=singleRef(input,{flag:"--user",label:"\u30E6\u30FC\u30B6\u30FC",usage});const user=await ctx.resolver.user(ref);return withResolved(input,{userId:user.id})}var REPORT_LIST_USAGE="twp attendance report list [--month <YYYY-MM> | --from <YYYY-MM-DD> --to <YYYY-MM-DD>] [--user <\u30E6\u30FC\u30B6\u30FC>]";var REPORT_GET_USAGE="twp attendance report get <ID>";var REPORT_REASONS_USAGE="twp attendance report reasons";var REPORT_CREATE_USAGE="twp attendance report create (--date <YYYY-MM-DD> | --from <YYYY-MM-DD> --to <YYYY-MM-DD>) --category <\u533A\u5206> --reason <\u7406\u7531> [--detail <\u7406\u7531\u8A73\u7D30>] [--start-time <HH:MM>] [--end-time <HH:MM>] [--note <\u9023\u7D61\u5185\u5BB9> | --note-file <\u30D1\u30B9>]\
6
+ takesValue:true,placeholder:"<\u30E6\u30FC\u30B6\u30FC>"};async function prepareUser(input,ctx,usage){const ref=singleRef(input,{flag:"--user",label:"\u30E6\u30FC\u30B6\u30FC",usage});const user=await ctx.resolver.user(ref);return withResolved(input,{userId:user.id})}var COMMAND="twp attendance";function label(kind){return ATTENDANCE_REPORT_MASTER_LABELS[kind]}function commonFields(name){return[{kind:"text",flag:"--code",key:"code",label:`${name}\u30B3\u30FC\u30C9`,maxChars:50,summary:`${name}\u30B3\u30FC\u30C9\uFF08\u30C6\u30CA\u30F3\u30C8\u5185\u3067\u4E00\u610F\uFF09`},{kind:"text",flag:"--name",key:"name",label:`${name}\u540D`,maxChars:255,summary:`${name}\u540D`}]}function tailFields(){return[{kind:"integer",flag:"--sort",key:"sort",label:"\u8868\u793A\u9806",
7
+ min:0,max:9999,summary:"\u8868\u793A\u9806\uFF080\u301C9999\u3002\u5C0F\u3055\u3044\u307B\u3069\u4E0A\uFF09"},{kind:"enum",flag:"--status",key:"status",values:STATUS_VALUES,summary:"\u72B6\u614B\uFF08active: \u6709\u52B9 / inactive: \u7121\u52B9\uFF1D\u52E4\u6020\u9023\u7D61\u306E\u9078\u629E\u80A2\u306B\u51FA\u306A\u3044\uFF09"},{kind:"boolean",flag:"--admin-only",key:"is_admin_only",summary:"\u7BA1\u7406\u8005\u3060\u3051\u304C\u9078\u3079\u308B\u304B\uFF08true / false\uFF09"},{kind:"text",flag:"\
8
+ --description",key:"description",label:"\u8AAC\u660E",maxChars:1e3,summary:"\u8AAC\u660E"}]}function parentFlag(parent,mode){const parentLabel=label(parent.kind);const summary=mode==="create"?`\u7D10\u3065\u3051\u308B${parentLabel}\uFF08\u540D\u524D\u30FB\u30B3\u30FC\u30C9\u30FBID\u3002\u8907\u6570\u306A\u3089\u7E70\u308A\u8FD4\u3059\u3002\u7701\u304F\u3068\u6709\u52B9\u306A${parentLabel}\u3059\u3079\u3066\u306B\u7D10\u3065\u304F\uFF09`:`\u7D10\u3065\u3051\u308B${parentLabel}\uFF08\u540D\u524D\u30FB\u30B3\u30FC\u30C9\u30FBID\u3002\u8907\u6570\u306A\u3089\u7E70\u308A\u8FD4\u3059\u3002\
9
+ \u6307\u5B9A\u3057\u305F\u3082\u306E\u3067\u7F6E\u304D\u63DB\u3048\u308B\uFF09`;return{name:parent.flag,summary,takesValue:true,placeholder:`<${parentLabel}>`,repeatable:true}}async function resolveParents(input,ctx,parent){const refs=repeatedValues(input,parent.flag);if(refs.length===0)return void 0;const ids=[];for(const ref of refs){if(ref.trim()==="")throw new UsageError(`${parent.flag} \u306B\u7A7A\u306E\u5024\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093`);const id=(await ctx.resolver.attendanceReportMaster(
10
+ parent.kind,ref,parent.flag)).id;if(!ids.includes(id))ids.push(id)}return ids}function parentIds(input){const raw=input.resolved?.["parentIds"];return raw===void 0?void 0:JSON.parse(raw)}function writeBody(input,spec,fields){const body=fieldBody(input,fields);const ids=parentIds(input);if(spec.parent!==void 0&&ids!==void 0)body[spec.parent.bodyKey]=ids;return body}function noArgs(input,operation,usage){if(input.args.length>0)throw new UsageError(`${operation} \u306F\u4F4D\u7F6E\u5F15\u6570\u3092\u53D6\u308A\u307E\u305B\u3093: ${input.
11
+ args.join(" ")}`,usage)}function masterResource(spec){const name=label(spec.kind);const base=`${COMMAND} ${spec.name}`;const fields=[...commonFields(name),...spec.fields];const forbidden=`\u7BA1\u7406\u8005\u306E\u6A29\u9650\u304C\u5FC5\u8981\u3067\u3059\u3002${name}\u306E\u4F5C\u6210\u30FB\u5909\u66F4\u30FB\u524A\u9664\u306F\u30C6\u30CA\u30F3\u30C8\u7BA1\u7406\u8005\u3060\u3051\u304C\u884C\u3048\u307E\u3059\uFF08\u95B2\u89A7\u306F\u8AB0\u3067\u3082\u3067\u304D\u307E\u3059\uFF09`;const refHelp=`\
12
+ <${name}> \u306F\u540D\u524D\u30FB\u30B3\u30FC\u30C9\u30FBID \u306E\u3069\u308C\u3067\u3082\u6307\u5B9A\u3067\u304D\u307E\u3059\uFF08\u7121\u52B9\u306B\u3057\u305F\u3082\u306E\u3082\u542B\u3081\u3066\u5B8C\u5168\u4E00\u81F4\u3002\u8907\u6570\u306B\u4E00\u81F4\u3059\u308C\u3070\u5019\u88DC\u3092\u51FA\u3057\u3066\u7D42\u4E86\u30B3\u30FC\u30C9 2\uFF09\u3002`;const refFlag={name:`--${spec.name}`,summary:`\u5BFE\u8C61\u306E${name}\uFF08\u4F4D\u7F6E\u5F15\u6570\u306E\u4EE3\u308F\u308A\u306B\u4F7F\u3048\u308B\uFF09`,
13
+ takesValue:true,placeholder:`<${name}>`};const prepareTarget=async(input,ctx,usage)=>withResolved(input,{id:await targetId(input,{flag:refFlag.name,label:name,usage,resolve:ref=>ctx.resolver.attendanceReportMaster(spec.kind,ref,`<${name}>`)})});const itemPath=input=>`${ATTENDANCE_REPORT_MASTER_PATHS[spec.kind]}/${idSegment(input,name)}`;const item=body=>masterItem(body,spec.itemKey,name);const parent=spec.parent;const parentLabel=parent===void 0?void 0:label(parent.kind);const withParents=async(input,ctx)=>{
14
+ if(parent===void 0)return input;const ids=await resolveParents(input,ctx,parent);return ids===void 0?input:withResolved(input,{parentIds:JSON.stringify(ids)})};const listUsage=`${base} list [--status active|inactive] [--keyword <\u8A9E>]${parent!==void 0?` [${parent.flag} <${parentLabel}>]`:""} [--limit <\u4EF6\u6570>]`;const listOperation2={name:"list",summary:`${name}\u3092\u4E00\u89A7\u3059\u308B\uFF08\u7121\u52B9\u306A\u3082\u306E\u3082\u542B\u3080\uFF09`,usage:listUsage,description:`GET ${ATTENDANCE_REPORT_MASTER_PATHS[spec.
15
+ kind].replace("/api","")} \u3092\u8868\u793A\u3057\u307E\u3059\uFF08\u753B\u9762\u300C\u5404\u7A2E\u30DE\u30B9\u30BF\u8A2D\u5B9A > ${name}\u300D\u3068\u540C\u3058\uFF09\u3002
16
+ --keyword \u306F\u30B3\u30FC\u30C9\u3068\u540D\u524D\u306E\u90E8\u5206\u4E00\u81F4\u3067\u3059\u3002
17
+ `+(parent!==void 0?`${parent.flag} \u3092\u4ED8\u3051\u308B\u3068\u3001\u305D\u306E${parentLabel}\u306B\u7D10\u3065\u304F${name}\u3060\u3051\u3092\u51FA\u3057\u307E\u3059\u3002
18
+ `:"")+`\u3053\u306E API \u306F\u30DA\u30FC\u30B8\u30F3\u30B0\u3092\u6301\u305F\u305A\u3001--limit \u4EF6\uFF08\u65E2\u5B9A ${ORG_MASTER_LIMIT}\uFF09\u3067\u6253\u3061\u5207\u308A\u307E\u3059\u3002\u6253\u3061\u5207\u3063\u305F\u3068\u304D\u306F stderr \u3067\u77E5\u3089\u305B\u307E\u3059\u3002
19
+
20
+ --output json \u306F API \u304C\u8FD4\u3059\u5168\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u51FA\u3057\u307E\u3059\u3002
21
+ --output table / text / tsv \u306F\u8981\u7D04\u5217\uFF08${spec.listColumns.join(" / ")}\uFF09\u3067\u3059\u3002`,flags:[{name:"--status",summary:"\u72B6\u614B\u3067\u7D5E\u308A\u8FBC\u3080\uFF08active / inactive\uFF09",takesValue:true,placeholder:"<active|inactive>"},{name:"--keyword",summary:"\u30B3\u30FC\u30C9\u30FB\u540D\u524D\u306E\u90E8\u5206\u4E00\u81F4\u3067\u7D5E\u308A\u8FBC\u3080",takesValue:true,placeholder:"<\u8A9E>"},...parent!==void 0?[{name:parent.flag,summary:`\u7D10\u3065\u304F${parentLabel}\
22
+ \u3067\u7D5E\u308A\u8FBC\u3080\uFF08\u540D\u524D\u30FB\u30B3\u30FC\u30C9\u30FBID\uFF09`,takesValue:true,placeholder:`<${parentLabel}>`}]:[],{name:"--limit",summary:`\u53D6\u5F97\u3059\u308B\u4EF6\u6570\u306E\u4E0A\u9650\uFF08\u65E2\u5B9A ${ORG_MASTER_LIMIT}\uFF09`,takesValue:true,placeholder:"<\u4EF6\u6570>"}],async prepare(input,ctx){noArgs(input,"list",listUsage);if(parent===void 0)return input;const ref=nonEmpty(input.flags,parent.flag);if(ref===void 0)return input;return withResolved(input,{
23
+ parentId:(await ctx.resolver.attendanceReportMaster(parent.kind,ref,parent.flag)).id})},plan(input){const raw=nonEmpty(input.flags,"--status");const status=raw?.trim().toLowerCase();if(status!==void 0&&!STATUS_VALUES.includes(status)){throw new UsageError(`--status \u306B\u300C${raw}\u300D\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093`,`\u6307\u5B9A\u3067\u304D\u308B\u306E\u306F ${STATUS_VALUES.join(" / ")} \u3067\u3059\u3002`)}const query={status,keyword:nonEmpty(input.flags,"--keyword"),limit:positiveInteger(
24
+ input.flags,"--limit")??ORG_MASTER_LIMIT};if(parent!==void 0&&input.flags.has(parent.flag))query[parent.queryKey]=requireResolved(input,"parentId");return{method:"GET",path:ATTENDANCE_REPORT_MASTER_PATHS[spec.kind],query}},summarize:body=>masterRows(body,name).map(row=>pick(row,spec.listColumns)),raw:body=>masterRows(body,name),notes:body=>truncationNotes(body,name)};const createUsage=`${base} create --code <\u30B3\u30FC\u30C9> --name <\u540D\u524D>${parent!==void 0?` [${parent.flag} <${parentLabel}\
25
+ >]\u2026`:""} [\u9805\u76EE\u2026]`;const updateUsage=`${base} update <${name}> [\u9805\u76EE\u2026]`;return{name:spec.name,summary:`\u52E4\u6020\u9023\u7D61\u306E${name}\u30DE\u30B9\u30BF\uFF08\u4E00\u89A7\u30FB\u53D6\u5F97\u30FB\u4F5C\u6210\u30FB\u5909\u66F4\u30FB\u524A\u9664\uFF09`,operations:[listOperation2,{name:"get",summary:`${name}1\u4EF6\u306E\u8A73\u7D30\u3092\u8868\u793A\u3059\u308B`,usage:`${base} get <${name}>`,description:`${refHelp}
26
+
27
+ --output json \u306F API \u304C\u8FD4\u3059\u5168\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u51FA\u3057\u307E\u3059\u3002`,flags:[refFlag],prepare:(input,ctx)=>prepareTarget(input,ctx,`${base} get help`),plan:input=>({method:"GET",path:itemPath(input)}),summarize:body=>pick(item(body),spec.getColumns),raw:body=>item(body)},{name:"create",summary:`${name}\u3092\u4F5C\u6210\u3059\u308B\uFF08\u30C6\u30CA\u30F3\u30C8\u7BA1\u7406\u8005\u306E\u307F\uFF09`,usage:createUsage,description:`--code \u3068 --name \u304C\u5FC5\u9808\u3067\u3059\
28
+ \u3002\u305D\u306E\u307B\u304B\u306E\u9805\u76EE\u306F\u7701\u304F\u3068\u30B5\u30FC\u30D0\u306E\u65E2\u5B9A\uFF08\u6709\u52B9\u30FB\u8868\u793A\u9806 0\uFF09\u3067\u4F5C\u6210\u3057\u307E\u3059\u3002
29
+ `+(parent!==void 0?`${parent.flag} \u3092\u7701\u304F\u3068\u3001\u30B5\u30FC\u30D0\u304C\u305D\u306E\u6642\u70B9\u3067\u6709\u52B9\u306A${parentLabel}\u3059\u3079\u3066\u306B\u7D10\u3065\u3051\u307E\u3059\uFF08\u5168${parentLabel}\u306E\u9078\u629E\u80A2\u306B\u51FA\u307E\u3059\uFF09\u3002
30
+ \u4F5C\u3063\u305F\u76F4\u5F8C\u306E${parentLabel}\u3082\u540D\u524D\u3067\u6307\u5B9A\u3067\u304D\u307E\u3059\uFF08\u540D\u524D\u306E\u7167\u5408\u306F\u30AD\u30E3\u30C3\u30B7\u30E5\u3057\u307E\u305B\u3093\uFF09\u3002
31
+ `:"")+`
32
+ \u4F5C\u6210\u3057\u305F${name}\u306E ID \u304C\u8FD4\u308A\u307E\u3059\u3002`,forbidden,flags:[...createFlags(fields),...parent!==void 0?[parentFlag(parent,"create")]:[]],async prepare(input,ctx){noArgs(input,"create",createUsage);const body=fieldBody(input,fields);for(const key of["code","name"]){if(body[key]===void 0)throw new UsageError(`--${key} \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044`,createUsage)}return withParents(input,ctx)},plan:input=>({method:"POST",path:ATTENDANCE_REPORT_MASTER_PATHS[spec.
33
+ kind],body:writeBody(input,spec,fields)}),summarize:body=>pick(item(body),spec.getColumns),raw:body=>item(body)},{name:"update",summary:`${name}\u3092\u5909\u66F4\u3059\u308B\uFF08\u30C6\u30CA\u30F3\u30C8\u7BA1\u7406\u8005\u306E\u307F\uFF09`,usage:updateUsage,description:`\u6307\u5B9A\u3057\u305F\u9805\u76EE\u3060\u3051\u3092\u5909\u66F4\u3057\u307E\u3059\uFF08\u6307\u5B9A\u3057\u306A\u304B\u3063\u305F\u9805\u76EE\u306F\u5909\u308F\u308A\u307E\u305B\u3093\uFF09\u3002\u5909\u66F4\u3059\u308B\u9805\u76EE\u30921\u3064\u3082\u6307\u5B9A\u3057\u306A\u3044\u3068\u30A8\u30E9\u30FC\u306B\u306A\u308A\u307E\u3059\u3002
34
+ `+(parent!==void 0?`${parent.flag} \u306F\u7D10\u3065\u3051\u3092**\u6307\u5B9A\u3057\u305F\u3082\u306E\u3067\u7F6E\u304D\u63DB\u3048\u307E\u3059**\uFF08\u8DB3\u3059\u306E\u3067\u306F\u3042\u308A\u307E\u305B\u3093\uFF09\u3002
35
+ `:"")+`\u4ECA\u5F8C\u4F7F\u308F\u306A\u3044${name}\u306F\u3001\u524A\u9664\u305B\u305A\u306B --status inactive \u3067\u7121\u52B9\u306B\u3067\u304D\u307E\u3059\uFF08\u904E\u53BB\u306E\u52E4\u6020\u9023\u7D61\u306E\u8868\u793A\u306F\u305D\u306E\u307E\u307E\u6B8B\u308A\u307E\u3059\uFF09\u3002
36
+
37
+ ${refHelp}`,forbidden,flags:[...updateFlags(fields),...parent!==void 0?[parentFlag(parent,"update")]:[],refFlag],async prepare(input,ctx){const parentGiven=parent!==void 0&&repeatedValues(input,parent.flag).length>0;if(!hasAnyField(input,fields)&&!parentGiven){throw new UsageError("\u5909\u66F4\u3059\u308B\u9805\u76EE\u30921\u3064\u4EE5\u4E0A\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",`${base} update help`)}fieldBody(input,fields);const target=await prepareTarget(input,ctx,`${base} update \
38
+ help`);return withParents(target,ctx)},plan:input=>({method:"PUT",path:itemPath(input),body:writeBody(input,spec,fields)}),summarize:body=>pick(item(body),spec.getColumns),raw:body=>item(body)},{name:"delete",summary:`${name}\u3092\u524A\u9664\u3059\u308B\uFF08\u30C6\u30CA\u30F3\u30C8\u7BA1\u7406\u8005\u306E\u307F\u30FB--yes \u304C\u8981\u308B\uFF09`,usage:`${base} delete <${name}> --yes`,description:`${spec.deleteGuidance}
39
+
40
+ ${refHelp}`,destructive:true,forbidden,rejected:server=>server.includes("\u524A\u9664\u3067\u304D\u307E\u305B\u3093")?spec.deleteGuidance:void 0,flags:[refFlag],prepare:(input,ctx)=>prepareTarget(input,ctx,`${base} delete help`),plan:input=>({method:"DELETE",path:itemPath(input)}),summarize:body=>acknowledgement(body,`${name}\u524A\u9664`),raw:body=>acknowledgement(body,`${name}\u524A\u9664`)}]}}var reportCategoryResource=masterResource({kind:"categories",name:"report-category",itemKey:"category",
41
+ fields:[{kind:"text",flag:"--name-short",key:"name_short",label:"\u7565\u79F0",maxChars:50,summary:"\u7565\u79F0"},...tailFields()],listColumns:["id","code","name","name_short","sort","status","is_admin_only"],getColumns:["id","code","name","name_short","sort","status","is_admin_only","description"],deleteGuidance:"\u9023\u7D61\u7406\u7531\u304C\u7D10\u3065\u3044\u3066\u3044\u308B\u9023\u7D61\u533A\u5206\u306F\u3001\u30B5\u30FC\u30D0\u304C\u524A\u9664\u3092\u65AD\u308A\u307E\u3059\uFF08\u524A\u9664\u306F\u5B50 \u2192 \u89AA\u306E\u9806\uFF09\u3002\n\u7D10\u3065\u304F\u7406\u7531\u306F twp attendance report-reason list --category <\u533A\u5206> \u3067\u78BA\u304B\u3081\u3001\u7406\u7531\u3092\u6D88\u3059\u304B\u7D10\u3065\u3051\u3092\u5916\u3057\u3066\u304F\u3060\u3055\u3044\uFF08report-reason update <\u7406\u7531> --category <\u5225\u306E\u533A\u5206>\uFF09\u3002\n\u4ECA\u5F8C\u4F7F\u308F\u306A\u3044\u3060\u3051\u306A\u3089\u3001\u524A\u9664\u305B\u305A\
42
+ \u306B\u7121\u52B9\u306B\u3067\u304D\u307E\u3059: twp attendance report-category update <\u533A\u5206> --status inactive"});var reportReasonResource=masterResource({kind:"reasons",name:"report-reason",itemKey:"reason",fields:tailFields(),parent:{kind:"categories",flag:"--category",bodyKey:"category_ids",queryKey:"category_id"},listColumns:["id","code","name","category_ids","sort","status","is_admin_only"],getColumns:["id","code","name","category_ids","sort","status","is_admin_only","description"],
43
+ deleteGuidance:"\u9023\u7D61\u7406\u7531\u8A73\u7D30\u304C\u7D10\u3065\u3044\u3066\u3044\u308B\u9023\u7D61\u7406\u7531\u306F\u3001\u30B5\u30FC\u30D0\u304C\u524A\u9664\u3092\u65AD\u308A\u307E\u3059\uFF08\u524A\u9664\u306F\u5B50 \u2192 \u89AA\u306E\u9806\uFF09\u3002\n\u7D10\u3065\u304F\u7406\u7531\u8A73\u7D30\u306F twp attendance report-reason-detail list --reason <\u7406\u7531> \u3067\u78BA\u304B\u3081\u3001\u7406\u7531\u8A73\u7D30\u3092\u6D88\u3059\u304B\u7D10\u3065\u3051\u3092\u5916\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n\u4ECA\u5F8C\u4F7F\u308F\u306A\u3044\u3060\u3051\u306A\u3089\u3001\u524A\u9664\u305B\u305A\u306B\u7121\u52B9\u306B\u3067\u304D\u307E\u3059: twp attendance report-reason update <\u7406\u7531> --status inactive"});
44
+ var reportReasonDetailResource=masterResource({kind:"details",name:"report-reason-detail",itemKey:"reason_detail",fields:[...tailFields(),{kind:"boolean",flag:"--yearly-count",key:"show_yearly_count",summary:"\u5E74\u5EA6\u5185\u53D6\u5F97\u56DE\u6570\u8868\u793A\uFF08\u52E4\u6020\u9023\u7D61\u3067\u3053\u306E\u7406\u7531\u8A73\u7D30\u3092\u9078\u3093\u3060\u3068\u304D\u3001\u5E74\u5EA6\u5185\u306E\u53D6\u5F97\u56DE\u6570\u3092\u51FA\u3059\u304B\u3002true / false\uFF09"}],parent:{kind:"reasons",
45
+ flag:"--reason",bodyKey:"reason_ids",queryKey:"reason_id"},listColumns:["id","code","name","reason_ids","sort","status","is_admin_only","show_yearly_count"],getColumns:["id","code","name","reason_ids","sort","status","is_admin_only","show_yearly_count","description"],deleteGuidance:"\u9023\u7D61\u7406\u7531\u8A73\u7D30\u306F\u7D10\u3065\u304F\u5B50\u3092\u6301\u305F\u306A\u3044\u306E\u3067\u3001\u305D\u306E\u307E\u307E\u524A\u9664\u3067\u304D\u307E\u3059\u3002\n\u4ECA\u5F8C\u4F7F\u308F\u306A\u3044\u3060\u3051\u306A\u3089\u3001\u524A\u9664\u305B\u305A\u306B\u7121\u52B9\u306B\u3067\u304D\u307E\u3059: twp attendance report-reason-detail update <\u7406\u7531\u8A73\u7D30> --status inactive"});var REPORT_LIST_USAGE="twp attendance report list [--month <YYYY-MM> | --from <YYYY-MM-DD> --to <YYYY-MM-DD>] [--user <\u30E6\u30FC\u30B6\u30FC>]";var REPORT_GET_USAGE="twp attendance report get <ID>";var REPORT_REASONS_USAGE="twp attendance report reasons";var REPORT_CREATE_USAGE="twp attendance report create (--date <YYYY-MM-DD> | --from <YYYY-MM-DD> --to <YYYY-MM-DD>) --category <\u533A\u5206> --reason <\u7406\u7531> [--detail <\u7406\u7531\u8A73\u7D30>] [--start-time <HH:MM>] [--end-time <HH:MM>] [--note <\u9023\u7D61\u5185\u5BB9> | --note-file <\u30D1\u30B9>]\
7
46
  [--private-note <\u975E\u516C\u958B\u30E1\u30E2> | --private-note-file <\u30D1\u30B9>] [--user <\u30E6\u30FC\u30B6\u30FC>]";var REPORT_UPDATE_USAGE="twp attendance report update <ID> [--category <\u533A\u5206> --reason <\u7406\u7531>] [--reason <\u7406\u7531>] [--detail <\u7406\u7531\u8A73\u7D30> | --clear-detail] [--start-time <HH:MM>] [--end-time <HH:MM>] [--note <\u9023\u7D61\u5185\u5BB9> | --note-file <\u30D1\u30B9>] [--private-note <\u975E\u516C\u958B\u30E1\u30E2> | --private-note-file <\u30D1\u30B9>]";
8
47
  var REPORT_DELETE_USAGE="twp attendance report delete <ID> --yes";var TEAM_USAGE="twp attendance team [--mode all|related|project] [--project <\u30B3\u30FC\u30C9|ID>]";var FLEX_USAGE="twp attendance flex-settlement [--month <YYYY-MM>] [--user <\u30E6\u30FC\u30B6\u30FC>]";var RANGE_MONTHS_MAX=12;var NOTE_MAX=2e3;var TIME_PATTERN=/^([01]\d|2[0-3]):[0-5]\d$/;var FOREIGN_ID_PREFIXES={"paid-leave-":"\u6709\u7D66\u4F11\u6687\uFF08twp leave\uFF09","work-change-":"\u52E4\u52D9\u5909\u66F4\uFF08twp workchange\uFF09"};
9
48
  var REPORT_COLUMNS=["report_date","user_name","kind","reason","detail","time","content","id"];var TEAM_COLUMNS=["user_name","user_code","status_label","last_type","last_recorded_at","project","work_location","notices","user_id"];var FLEX_COLUMNS=["settlement_period","settlement_start_month","settlement_end_month","current_year_month","is_settlement_month","total_scheduled_work_hours","total_actual_work_hours","carry_over_from_previous_hours","excess_or_deficiency_hours","legal_excess_hours","def\
@@ -13,8 +52,8 @@ takesValue:true,placeholder:"<\u533A\u5206>"},{name:"--reason",summary:"\u9023\u
13
52
  --start-time",summary:"\u5BFE\u8C61\u306E\u958B\u59CB\u6642\u523B\uFF08HH:MM\u3002\u9045\u523B\u306E\u51FA\u52E4\u4E88\u5B9A\u306A\u3069\uFF09",takesValue:true,placeholder:"<HH:MM>"},{name:"--end-time",summary:"\u5BFE\u8C61\u306E\u7D42\u4E86\u6642\u523B\uFF08HH:MM\u3002\u65E9\u9000\u306E\u9000\u52E4\u4E88\u5B9A\u306A\u3069\uFF09",takesValue:true,placeholder:"<HH:MM>"},{name:"--note",summary:`\u9023\u7D61\u5185\u5BB9\uFF08${NOTE_MAX} \u6587\u5B57\u4EE5\u5185\uFF09`,takesValue:true,placeholder:"<\u9023\
14
53
  \u7D61\u5185\u5BB9>"},{name:"--note-file",summary:"\u9023\u7D61\u5185\u5BB9\u3092\u30D5\u30A1\u30A4\u30EB\u304B\u3089\u8AAD\u3080\uFF08- \u306F\u6A19\u6E96\u5165\u529B\uFF09",takesValue:true,placeholder:"<\u30D1\u30B9>"},{name:"--private-note",summary:`\u975E\u516C\u958B\u30E1\u30E2\uFF08\u672C\u4EBA\u30FB\u4F5C\u6210\u8005\u30FB\u7BA1\u7406\u8005\u3060\u3051\u304C\u898B\u3089\u308C\u308B\u30FB${NOTE_MAX} \u6587\u5B57\u4EE5\u5185\uFF09`,takesValue:true,placeholder:"<\u30E1\u30E2>"},{name:"--priv\
15
54
  ate-note-file",summary:"\u975E\u516C\u958B\u30E1\u30E2\u3092\u30D5\u30A1\u30A4\u30EB\u304B\u3089\u8AAD\u3080\uFF08- \u306F\u6A19\u6E96\u5165\u529B\uFF09",takesValue:true,placeholder:"<\u30D1\u30B9>"}];function monthsBetween(start,end){const months=[];let year=Number(start.slice(0,4));let month=Number(start.slice(5,7));const last=end.slice(0,7);for(;;){const current=`${String(year)}-${String(month).padStart(2,"0")}`;months.push(current);if(current>=last)return months;month+=1;if(month>12){month=1;
16
- year+=1}}}function noArgs(input,operation,usage){if(input.args.length>0){throw new UsageError(`${operation} \u306F\u4F4D\u7F6E\u5F15\u6570\u3092\u53D7\u3051\u53D6\u308A\u307E\u305B\u3093: ${input.args.join(" ")}`,usage)}}function reportId(input,usage){const[id,...rest]=input.args;if(id===void 0||id.trim()==="")throw new UsageError("\u52E4\u6020\u9023\u7D61\u306E ID \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08twp attendance report list \u306E id \u5217\uFF09",usage);if(rest.length>
17
- 0)throw new UsageError(`ID \u306F1\u3064\u3060\u3051\u6307\u5B9A\u3067\u304D\u307E\u3059: ${rest.join(" ")}`,usage);if(!isSafePathSegment(id.trim()))throw new UsageError(`\u52E4\u6020\u9023\u7D61\u306E ID \u3068\u3057\u3066\u4F7F\u3048\u306A\u3044\u6587\u5B57\u3092\u542B\u307F\u307E\u3059: ${id}`,usage);return id.trim()}function assertOwnReportId(id,usage){for(const[prefix,label]of Object.entries(FOREIGN_ID_PREFIXES)){if(id.startsWith(prefix)){throw new UsageError(`${id} \u306F\u52E4\u6020\u9023\u7D61\u3067\u306F\u306A\u304F${label}\
55
+ year+=1}}}function noArgs2(input,operation,usage){if(input.args.length>0){throw new UsageError(`${operation} \u306F\u4F4D\u7F6E\u5F15\u6570\u3092\u53D7\u3051\u53D6\u308A\u307E\u305B\u3093: ${input.args.join(" ")}`,usage)}}function reportId(input,usage){const[id,...rest]=input.args;if(id===void 0||id.trim()==="")throw new UsageError("\u52E4\u6020\u9023\u7D61\u306E ID \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08twp attendance report list \u306E id \u5217\uFF09",usage);if(rest.length>
56
+ 0)throw new UsageError(`ID \u306F1\u3064\u3060\u3051\u6307\u5B9A\u3067\u304D\u307E\u3059: ${rest.join(" ")}`,usage);if(!isSafePathSegment(id.trim()))throw new UsageError(`\u52E4\u6020\u9023\u7D61\u306E ID \u3068\u3057\u3066\u4F7F\u3048\u306A\u3044\u6587\u5B57\u3092\u542B\u307F\u307E\u3059: ${id}`,usage);return id.trim()}function assertOwnReportId(id,usage){for(const[prefix,label2]of Object.entries(FOREIGN_ID_PREFIXES)){if(id.startsWith(prefix)){throw new UsageError(`${id} \u306F\u52E4\u6020\u9023\u7D61\u3067\u306F\u306A\u304F${label2}\
18
57
  \u3067\u3059\u3002\u52E4\u6020\u9023\u7D61\u306E\u30B3\u30DE\u30F3\u30C9\u3067\u306F\u5909\u66F4\u30FB\u524A\u9664\u3067\u304D\u307E\u305B\u3093`,usage)}}}async function resolveUserFlag(input,ctx){const ref=input.flags.get("--user");if(ref===void 0)return{};return{userId:(await ctx.resolver.user(ref,"--user")).id}}function timeFlag(input,name,usage){const raw=input.flags.get(name);if(raw===void 0)return void 0;if(!TIME_PATTERN.test(raw.trim()))throw new UsageError(`${name} \u306F HH:MM \u5F62\u5F0F\uFF0800:00\u301C23:59\
19
58
  \uFF09\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u53D7\u3051\u53D6\u3063\u305F\u5024: ${raw}\uFF09`,usage);return raw.trim()}function str(value){return typeof value==="string"&&value!==""?value:null}function rowsToRefs(rows){return rows.flatMap(row=>{const id=str(row["id"]);const name=str(row["name"]);return id===null||name===null?[]:[{id,name,code:str(row["code"])}]})}function linkedTo(row,key,parentId){const ids=row[key];return Array.isArray(ids)&&ids.includes(parentId)}async function resolveMasters(ctx,names){
20
59
  const masters=await ctx.resolver.attendanceReportMasters();const out={};let categoryId=names.categoryId;if(names.category!==void 0){categoryId=(await resolveNamed(names.category,rowsToRefs(masters.categories),{flag:"--category",label:"\u6709\u52B9\u306A\u9023\u7D61\u533A\u5206",scope:"\u3053\u306E\u30C6\u30CA\u30F3\u30C8"})).id;out["categoryId"]=categoryId}let reasonId=names.reasonId;if(names.reason!==void 0){const candidates=categoryId===void 0?masters.reasons:masters.reasons.filter(row=>linkedTo(
@@ -40,7 +79,7 @@ user_name"],kind:kindOf(row),reason:row["reason_name"]??(isRecord(row["reason"])
40
79
  ${USER_REF_HELP}
41
80
  \u627F\u8A8D\u6E08\u307F\u306E\u6709\u7D66\u4F11\u6687\uFF08id \u304C paid-leave-\u2026\uFF09\u3068\u52E4\u52D9\u5909\u66F4\uFF08work-change-\u2026\uFF09\u3082\u540C\u3058\u4E00\u89A7\u306B\u4E26\u3073\u307E\u3059\u3002
42
81
  \u884C\u306B\u306F\u533A\u5206\u30FB\u7406\u7531\u306E ID \u3057\u304B\u7121\u3044\u306E\u3067\u3001\u533A\u5206\u30FB\u7406\u7531\u30FB\u7406\u7531\u8A73\u7D30\u306E\u4E00\u89A7\u3082\u5F15\u3044\u3066\u540D\u524D\uFF08category_name / reason_name / reason_detail_name\uFF09\u3092\u8DB3\u3057\u307E\u3059\u3002
43
- --output json \u306F API \u306E\u5168\u30D5\u30A3\u30FC\u30EB\u30C9\u306B\u3001\u3053\u306E3\u3064\u306E\u540D\u524D\u3092\u8DB3\u3057\u305F\u3082\u306E\u3092\u51FA\u3057\u307E\u3059\u3002`,flags:[MONTH_FLAG,FROM_FLAG,TO_FLAG,USER_FLAG],async prepare(input,ctx){noArgs(input,"report list",REPORT_LIST_USAGE);listRange(input);return withResolved(input,await resolveUserFlag(input,ctx))},plan:input=>listPlanFor(input,listRange(input).months[0]),plannedNotes:input=>{const{months}=listRange(input);const rest=months.
82
+ --output json \u306F API \u306E\u5168\u30D5\u30A3\u30FC\u30EB\u30C9\u306B\u3001\u3053\u306E3\u3064\u306E\u540D\u524D\u3092\u8DB3\u3057\u305F\u3082\u306E\u3092\u51FA\u3057\u307E\u3059\u3002`,flags:[MONTH_FLAG,FROM_FLAG,TO_FLAG,USER_FLAG],async prepare(input,ctx){noArgs2(input,"report list",REPORT_LIST_USAGE);listRange(input);return withResolved(input,await resolveUserFlag(input,ctx))},plan:input=>listPlanFor(input,listRange(input).months[0]),plannedNotes:input=>{const{months}=listRange(input);const rest=months.
44
83
  slice(1);return[...rest.length>0?[`\u5B9F\u884C\u6642\u306F\u7D9A\u3051\u3066 ${rest.join(" / ")} \u306E\u4E00\u89A7\u3082\u9001\u308A\u307E\u3059\u3002`]:[],"\u5B9F\u884C\u6642\u306F\u7D9A\u3051\u3066\u533A\u5206\u30FB\u7406\u7531\u30FB\u7406\u7531\u8A73\u7D30\u306E\u4E00\u89A7\uFF08GET /api/v2/attendance/report-{categories,reasons,reason-details}\uFF09\u3082\u9001\u308A\u3001\u540D\u524D\u3092\u8DB3\u3057\u307E\u3059\u3002"]},execute:listReports,summarize:body=>reportList(body).map(summarizeReport),
45
84
  raw:body=>reportList(body),notes:body=>{const rows=reportList(body);const foreign=rows.filter(row=>isRecord(row)&&(row["is_paid_leave"]===true||row["is_work_change"]===true)).length;return[`${String(rows.length)} \u4EF6${foreign>0?`\uFF08\u3046\u3061\u6709\u7D66\u30FB\u52E4\u52D9\u5909\u66F4 ${String(foreign)} \u4EF6\u3002\u5909\u66F4\u306F twp leave / twp workchange \u3067\u884C\u3044\u307E\u3059\uFF09`:""}`]}};var getOperation={name:"get",summary:"\u52E4\u6020\u9023\u7D611\u4EF6\u306E\u8A73\u7D30\u3092\u8868\u793A\u3059\u308B",
46
85
  usage:REPORT_GET_USAGE,description:"GET /api/v2/attendance/reports/{id} \u3092\u8868\u793A\u3057\u307E\u3059\u3002\u533A\u5206\u30FB\u7406\u7531\u30FB\u7406\u7531\u8A73\u7D30\u306F\u30DE\u30B9\u30BF\u306E\u5185\u5BB9\uFF08category / reason / reason_detail\uFF09\u4ED8\u304D\u3067\u8FD4\u308A\u307E\u3059\u3002\npaid-leave-\u2026 / work-change-\u2026 \u306E ID \u306F\u3001\u6709\u7D66\u4F11\u6687\u30FB\u52E4\u52D9\u5909\u66F4\u306E\u5185\u5BB9\u3092\u52E4\u6020\u9023\u7D61\u306E\u5F62\u3067\u8FD4\u3057\u307E\u3059\u3002\n\u672C\u4EBA\u30FB\u4F5C\u6210\u8005\u30FB\u52E4\u6020\u306E\u7BA1\u7406\u8005\u4EE5\u5916\u306B\u306F\u3001\u975E\u516C\u958B\u30E1\u30E2\uFF08content_private\uFF09\u3068\u7406\u7531\u8A73\u7D30\u304C\u4F0F\u305B\u3089\u308C\u307E\u3059\u3002",
@@ -48,7 +87,7 @@ flags:[],plan:input=>({method:"GET",path:`${ATTENDANCE_REPORTS_PATH}/${encodeURI
48
87
  body)||!Array.isArray(body["categories"])||!Array.isArray(body["reasons"])||!Array.isArray(body["details"])){throw new ApiResponseError("\u533A\u5206\u30FB\u7406\u7531\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 summarizeReasons(body){const{categories,reasons,details}=mastersBody(body);const rows=[];for(const category of categories){const categoryId=str(
49
88
  category["id"]);if(categoryId===null)continue;for(const reason of reasons.filter(row=>linkedTo(row,"category_ids",categoryId))){const reasonId=str(reason["id"]);const linked=reasonId===null?[]:details.filter(row=>linkedTo(row,"reason_ids",reasonId));rows.push({category:category["name"],reason:reason["name"],details:linked.map(row=>row["name"]).join(" / ")||null,admin_only:category["is_admin_only"]===true||reason["is_admin_only"]===true})}}return rows}var reasonsOperation={name:"reasons",summary:"\
50
89
  \u52E4\u6020\u9023\u7D61\u3067\u4F7F\u3048\u308B\u533A\u5206\u30FB\u7406\u7531\u30FB\u7406\u7531\u8A73\u7D30\u306E\u7D44\u307F\u5408\u308F\u305B\u3092\u4E00\u89A7\u3059\u308B",usage:REPORT_REASONS_USAGE,description:"GET /api/v2/attendance/report-categories/active\u30FBreport-reasons/active\u30FBreport-reason-details/active \u3092\u5F15\u304D\u3001\n\u533A\u5206 \xD7 \u7406\u7531\u306E\u7D44\u307F\u5408\u308F\u305B\u3054\u3068\u306B1\u884C\u3067\u51FA\u3057\u307E\u3059\uFF08details \u306F\u305D\u306E\u7406\u7531\u3067\u9078\u3079\u308B\u7406\u7531\u8A73\u7D30\uFF09\u3002\nreport create \u306E --category / --reason / --detail \u306B\u306F\u3001\u3053\u3053\u306B\u51FA\u308B\u540D\u524D\uFF08\u307E\u305F\u306F\u30B3\u30FC\u30C9\u30FBID\uFF09\u3092\u6307\u5B9A\u3057\u307E\u3059\u3002\nadmin_only=true \u306F\u52E4\u6020\u306E\u7BA1\u7406\u8005\u5411\u3051\u306E\u533A\u5206\u30FB\u7406\u7531\u3067\u3059\u3002\n--output json \u306F3\u3064\u306E\u4E00\
51
- \u89A7\uFF08categories / reasons / details\uFF09\u3092\u305D\u306E\u307E\u307E\u51FA\u3057\u307E\u3059\u3002\u533A\u5206\u30FB\u7406\u7531\u306E\u767B\u9332\u30FB\u5909\u66F4\u306F\u7BA1\u7406\u753B\u9762\u3067\u884C\u3044\u307E\u3059\u3002",flags:[],plan(input){noArgs(input,"report reasons",REPORT_REASONS_USAGE);return{method:"GET",path:`${ATTENDANCE_REPORT_MASTER_PATHS.categories}/active`}},plannedNotes:()=>["\u5B9F\u884C\u6642\u306F\u7D9A\u3051\u3066\u7406\u7531\u30FB\u7406\u7531\u8A73\u7D30\u306E\u4E00\u89A7\uFF08report-reasons/active\u30FBreport-reason-details/active\uFF09\u3082\u9001\u308A\u307E\u3059\u3002"],
90
+ \u89A7\uFF08categories / reasons / details\uFF09\u3092\u305D\u306E\u307E\u307E\u51FA\u3057\u307E\u3059\u3002\u533A\u5206\u30FB\u7406\u7531\u306E\u767B\u9332\u30FB\u5909\u66F4\u306F\u7BA1\u7406\u753B\u9762\u3067\u884C\u3044\u307E\u3059\u3002",flags:[],plan(input){noArgs2(input,"report reasons",REPORT_REASONS_USAGE);return{method:"GET",path:`${ATTENDANCE_REPORT_MASTER_PATHS.categories}/active`}},plannedNotes:()=>["\u5B9F\u884C\u6642\u306F\u7D9A\u3051\u3066\u7406\u7531\u30FB\u7406\u7531\u8A73\u7D30\u306E\u4E00\u89A7\uFF08report-reasons/active\u30FBreport-reason-details/active\uFF09\u3082\u9001\u308A\u307E\u3059\u3002"],
52
91
  execute:listReasons,summarize:summarizeReasons,raw:mastersBody};function createDates(input){const date=dateFlag(input.flags);const from=dateFlag(input.flags,"--from");const to=dateFlag(input.flags,"--to");if(date!==void 0&&(from!==void 0||to!==void 0)){throw new UsageError("--date \u3068 --from / --to \u306F\u540C\u6642\u306B\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093",REPORT_CREATE_USAGE)}if(date!==void 0)return{date,months:[date.slice(0,7)]};if(from===void 0||to===void 0){throw new UsageError("\
53
92
  \u65E5\u4ED8\u3092 --date \u304B --from / --to\uFF08\u4E21\u65B9\uFF09\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",REPORT_CREATE_USAGE)}if(from>to)throw new UsageError(`--from\uFF08${from}\uFF09\u304C --to\uFF08${to}\uFF09\u3088\u308A\u5F8C\u3067\u3059`,REPORT_CREATE_USAGE);return{from,to,months:monthsBetween(from,to)}}var RANGE_CONFIRM_DAYS=31;function calendarDays(from,to){return Math.round((Date.parse(`${to}T00:00:00Z`)-Date.parse(`${from}T00:00:00Z`))/864e5)+1}async function createPreview(input){
54
93
  const dates=createDates(input);if(dates.from===void 0||dates.to===void 0)return{notes:[],warnings:[]};const days=calendarDays(dates.from,dates.to);return{notes:[`${dates.from}\u301C${dates.to} \u306E ${String(days)} \u65E5\u5206\uFF08\u571F\u65E5\u795D\u3092\u542B\u3080\u6BCE\u65E5\uFF09\u306B\u3001\u52E4\u6020\u9023\u7D61\u30921\u4EF6\u305A\u3064\u767B\u9332\u3057\u307E\u3059`],warnings:days>RANGE_CONFIRM_DAYS?[`\u671F\u9593\u304C ${String(days)} \u65E5\u3042\u308A\u307E\u3059\uFF08${String(RANGE_CONFIRM_DAYS)}\
@@ -64,7 +103,7 @@ usage:REPORT_CREATE_USAGE,description:`--date \u306A\u3089 POST /api/v2/attendan
64
103
  --user \u3092\u7701\u304F\u3068\u81EA\u5206\u306E\u5206\u3067\u3059\u3002\u4ED6\u306E\u4EBA\u306E\u5206\u306F\u52E4\u6020\u306E\u7BA1\u7406\u8005\u3060\u3051\u304C\u767B\u9332\u3067\u304D\u307E\u3059\uFF08\u7121\u3051\u308C\u3070\u7D42\u4E86\u30B3\u30FC\u30C9 3\uFF09\u3002
65
104
  ${USER_REF_HELP}
66
105
  \u767B\u9332\u3059\u308B\u3068\u4E0A\u9577\u3078\u901A\u77E5\u304C\u5C4A\u304D\u307E\u3059\u3002\u5BFE\u8C61\u306E\u6708\uFF08\u671F\u9593\u306A\u3089\u304B\u304B\u308B\u6708\u3059\u3079\u3066\uFF09\u304C\u7DE0\u3081\u6E08\u307F\u306A\u3089\u9001\u3089\u305A\u306B\u6B62\u3081\u307E\u3059\uFF08\u7D42\u4E86\u30B3\u30FC\u30C9 3\uFF09\u3002`,flags:[{name:"--date",summary:"\u5BFE\u8C61\u306E\u65E5\u4ED8\uFF08YYYY-MM-DD\uFF09",takesValue:true,placeholder:"<YYYY-MM-DD>"},FROM_FLAG,TO_FLAG,...WRITE_FLAGS,
67
- USER_FLAG],async prepare(input,ctx){noArgs(input,"report create",REPORT_CREATE_USAGE);createDates(input);timeFlag(input,"--start-time",REPORT_CREATE_USAGE);timeFlag(input,"--end-time",REPORT_CREATE_USAGE);const category=requireFlag(input,"--category",REPORT_CREATE_USAGE);const reason=requireFlag(input,"--reason",REPORT_CREATE_USAGE);const notes=await readNotes(input,REPORT_CREATE_USAGE);const user=await resolveUserFlag(input,ctx);const detail=input.flags.get("--detail");const masters=await resolveMasters(
106
+ USER_FLAG],async prepare(input,ctx){noArgs2(input,"report create",REPORT_CREATE_USAGE);createDates(input);timeFlag(input,"--start-time",REPORT_CREATE_USAGE);timeFlag(input,"--end-time",REPORT_CREATE_USAGE);const category=requireFlag(input,"--category",REPORT_CREATE_USAGE);const reason=requireFlag(input,"--reason",REPORT_CREATE_USAGE);const notes=await readNotes(input,REPORT_CREATE_USAGE);const user=await resolveUserFlag(input,ctx);const detail=input.flags.get("--detail");const masters=await resolveMasters(
68
107
  ctx,{category,reason,...detail===void 0?{}:{detail}});return withResolved(input,{...user,...masters,...notes})},plan:createPlan,preview:createPreview,plannedNotes:()=>[closingNote("\u767B\u9332")],async execute(input,ctx){const plan=createPlan(input);await assertReportMonthsOpen(ctx,createDates(input).months,input.resolved?.["userId"],"\u767B\u9332");return withNames(await ctx.send(plan),input)},summarize:body=>createdReports(body).map(summarizeReport),raw:body=>(createdReports(body),body),notes:body=>{
69
108
  const skipped=isRecord(body)&&Array.isArray(body["skipped_dates"])?body["skipped_dates"]:[];const notes=[`${String(createdReports(body).length)} \u4EF6\u767B\u9332\u3057\u307E\u3057\u305F`];if(skipped.length>0)notes.push(`\u30B5\u30FC\u30D0\u304C\u767B\u9332\u3057\u306A\u304B\u3063\u305F\u65E5: ${skipped.map(String).join(" / ")}`);return notes}};async function prepareExisting(input,ctx,usage){const id=reportId(input,usage);assertOwnReportId(id,usage);const report=await ctx.resolver.attendanceReport(
70
109
  id);const date=str(report["report_date"]);const userId=str(report["user_id"]);if(date===null||userId===null){throw new ApiResponseError("\u52E4\u6020\u9023\u7D61\u306E\u5FDC\u7B54\u306B report_date / user_id \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002")}return{reportMonth:date.slice(0,7),reportUserId:userId,...str(report["category_id"])===null?{}:{currentCategoryId:str(report["category_id"])},...str(report["reason_id"])===
@@ -85,7 +124,7 @@ operations:[listOperation,getOperation,createOperation,updateOperation,deleteOpe
85
124
  "\u30C1\u30FC\u30E0\u306E\u52E4\u6020\u72B6\u6CC1\u306E\u5FDC\u7B54\u306B team_status \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002")}return body}function summarizeMember(member){const row=isRecord(member)?member:{};const last=isRecord(row["last_record"])?row["last_record"]:void 0;const notices=Array.isArray(row["notices"])?row["notices"]:[];return pick({user_name:row["user_name"],user_code:row["user_code"],status_label:row["\
86
125
  status_label"],last_type:last?.["type_label"]??null,last_recorded_at:last?.["recorded_at"]??null,project:row["current_project_name"],work_location:row["work_location"],notices:notices.map(notice=>isRecord(notice)?notice["label"]:notice).join(" / ")||null,user_id:row["user_id"]},TEAM_COLUMNS)}var teamOperation={name:"team",summary:"\u30C1\u30FC\u30E0\u306E\u3044\u307E\u306E\u6253\u523B\u72B6\u614B\u3068\u3001\u4ECA\u65E5\u306E\u52E4\u6020\u9023\u7D61\u30FB\u4F11\u6687\u3092\u8868\u793A\u3059\u308B",
87
126
  usage:TEAM_USAGE,description:"GET /api/v1/attendance/team-dashboard \u3092\u8868\u793A\u3057\u307E\u3059\uFF08\u753B\u9762\u306E\u300C\u30C1\u30FC\u30E0\u306E\u52E4\u6020\u300D\u3068\u540C\u3058\u96C6\u8A08\uFF09\u3002\n--mode all\uFF08\u65E2\u5B9A\uFF09\u306F\u30C6\u30CA\u30F3\u30C8\u306E\u8868\u793A\u5BFE\u8C61\u306E\u5168\u54E1\u3001related \u306F\u81EA\u5206\u3068\u95A2\u4FC2\u306E\u3042\u308B\u4EBA\uFF08\u90E8\u4E0B\u30FB\u540C\u3058\u90E8\u7F72\u306A\u3069\uFF09\u3001\nproject \u306F --project \u306E\u30E1\u30F3\u30D0\u30FC\u3067\u3059\uFF08--project \u3092\u4ED8\u3051\u308C\u3070 --mode \u306F\u7701\u3051\u307E\u3059\uFF09\u3002\nnotices \u306F\u4ECA\u65E5\u306E\u52E4\u6020\u9023\u7D61\u30FB\u6709\u7D66\u30FB\u52E4\u52D9\u5909\u66F4\u30FB\u30B7\u30D5\u30C8\u3067\u3059\u3002\u4ECA\u65E5\u306E\u65E5\u4ED8\u3068\u3001\u4ECA\u65E5\u306E\u52E4\u6020\u9023\u7D61\u30FB\u4F11\u8077\u4E2D\u306E\u4EBA\u6570\u306F stderr \u306B\u51FA\u3057\u307E\u3059\u3002\n--output json \u306F API \u304C\u8FD4\u3059\u5168\u30D5\u30A3\u30FC\u30EB\u30C9\uFF08attendance_reports\u30FBleaves_of_absence \u3092\u542B\u3080\uFF09\u3092\u51FA\u3057\u307E\u3059\u3002",
88
- flags:[{name:"--mode",summary:"\u5BFE\u8C61\u306E\u7BC4\u56F2\uFF08all / related / project\uFF09",takesValue:true,placeholder:"<all|related|project>"},{name:"--project",summary:"\u5BFE\u8C61\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\uFF08\u30B3\u30FC\u30C9\u304B ID\u30FB--mode project\uFF09",takesValue:true,placeholder:"<\u30B3\u30FC\u30C9|ID>"}],async prepare(input,ctx){noArgs(input,"team",TEAM_USAGE);teamMode(input);const explicit=input.flags.get("--project");if(explicit===void 0)return input;
127
+ flags:[{name:"--mode",summary:"\u5BFE\u8C61\u306E\u7BC4\u56F2\uFF08all / related / project\uFF09",takesValue:true,placeholder:"<all|related|project>"},{name:"--project",summary:"\u5BFE\u8C61\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\uFF08\u30B3\u30FC\u30C9\u304B ID\u30FB--mode project\uFF09",takesValue:true,placeholder:"<\u30B3\u30FC\u30C9|ID>"}],async prepare(input,ctx){noArgs2(input,"team",TEAM_USAGE);teamMode(input);const explicit=input.flags.get("--project");if(explicit===void 0)return input;
89
128
  return withResolved(input,{projectId:await ctx.projectId(explicit)})},plan(input){const mode=teamMode(input);return{method:"GET",path:"/api/v1/attendance/team-dashboard",query:{mode,project_id:mode==="project"?requireResolved(input,"projectId"):void 0}}},summarize:body=>teamBody(body)["team_status"].map(summarizeMember),raw:teamBody,notes:body=>{const sheet=teamBody(body);const reports=Array.isArray(sheet["attendance_reports"])?sheet["attendance_reports"].length:0;const leaves=Array.isArray(sheet["\
90
129
  leaves_of_absence"])?sheet["leaves_of_absence"].length:0;return[`${String(sheet["date"])} \u6642\u70B9: ${String(sheet["team_status"].length)} \u4EBA / \u4ECA\u65E5\u306E\u52E4\u6020\u9023\u7D61 ${String(reports)} \u4EF6 / \u4F11\u8077\u4E2D ${String(leaves)} \u4EBA`]}};function flexBody(body){if(!isRecord(body)||typeof body["is_flex"]!=="boolean"||body["is_flex"]&&!isRecord(body["flex_settlement"])){throw new ApiResponseError("\u30D5\u30EC\u30C3\u30AF\u30B9\u7CBE\u7B97\u306E\u5FDC\u7B54\u306B is_flex / flex_settlement \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002")}
91
130
  return body}var flexSettlementOperation={name:"flex-settlement",summary:"\u30D5\u30EC\u30C3\u30AF\u30B9\u7CBE\u7B97\uFF08\u6E05\u7B97\u671F\u9593\u306E\u6240\u5B9A\u30FB\u5B9F\u52B4\u50CD\u30FB\u904E\u4E0D\u8DB3\uFF09\u3092\u8868\u793A\u3059\u308B",usage:FLEX_USAGE,description:`GET /api/v2/attendance/flex-settlement \u3092\u8868\u793A\u3057\u307E\u3059\uFF08\u6700\u65B0\u306E\u6253\u523B\u304B\u3089\u8A08\u7B97\u3057\u76F4\u3057\u305F\u5024\uFF09\u3002
@@ -93,9 +132,9 @@ return body}var flexSettlementOperation={name:"flex-settlement",summary:"\u30D5\
93
132
  \u4ED6\u306E\u4EBA\u306E\u5206\u306F\u3001\u52E4\u6020\u306E\u7BA1\u7406\u8005\u304B\u305D\u306E\u4EBA\u306E\u4E0A\u9577\u3060\u3051\u304C\u898B\u3089\u308C\u307E\u3059\uFF08\u7121\u3051\u308C\u3070\u7D42\u4E86\u30B3\u30FC\u30C9 3\uFF09\u3002
94
133
  ${USER_REF_HELP}
95
134
  \u30D5\u30EC\u30C3\u30AF\u30B9\u52E4\u52D9\u5236\u3067\u306A\u3044\u4EBA\u306F is_flex=false \u3092\u8FD4\u3057\u307E\u3059\uFF08\u30A8\u30E9\u30FC\u306B\u306F\u3057\u307E\u305B\u3093\uFF09\u3002
96
- --output json \u306F API \u304C\u8FD4\u3059\u5168\u30D5\u30A3\u30FC\u30EB\u30C9\uFF08\u6708\u5225\u306E\u5185\u8A33 monthly_data\u30FBmonthly_adjusted_data \u3092\u542B\u3080\uFF09\u3092\u51FA\u3057\u307E\u3059\u3002`,flags:[MONTH_FLAG,USER_FLAG],async prepare(input,ctx){noArgs(input,"flex-settlement",FLEX_USAGE);monthFlag(input.flags);return withResolved(input,await resolveUserFlag(input,ctx))},plan:input=>({method:"GET",path:"/api/v2/attendance/flex-settlement",query:{year_month:monthFlag(input.
135
+ --output json \u306F API \u304C\u8FD4\u3059\u5168\u30D5\u30A3\u30FC\u30EB\u30C9\uFF08\u6708\u5225\u306E\u5185\u8A33 monthly_data\u30FBmonthly_adjusted_data \u3092\u542B\u3080\uFF09\u3092\u51FA\u3057\u307E\u3059\u3002`,flags:[MONTH_FLAG,USER_FLAG],async prepare(input,ctx){noArgs2(input,"flex-settlement",FLEX_USAGE);monthFlag(input.flags);return withResolved(input,await resolveUserFlag(input,ctx))},plan:input=>({method:"GET",path:"/api/v2/attendance/flex-settlement",query:{year_month:monthFlag(input.
97
136
  flags),user_id:input.resolved?.["userId"]}}),summarize:body=>{const sheet=flexBody(body);if(!sheet["is_flex"])return{is_flex:false,message:sheet["message"]??null};return{is_flex:true,...pick(sheet["flex_settlement"],FLEX_COLUMNS)}},raw:flexBody,notes:body=>flexBody(body)["is_flex"]?[]:[`${String(flexBody(body)["message"]??"\u30D5\u30EC\u30C3\u30AF\u30B9\u52E4\u52D9\u5236\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002")}`]};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"};
98
- 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 noArgs2(input,operation){if(input.args.length>0){throw new UsageError(
137
+ 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 noArgs3(input,operation){if(input.args.length>0){throw new UsageError(
99
138
  `${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"])){
100
139
  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["\
101
140
  status_label"],last_type:last?.["type_label"]??null,last_recorded_at:last?.["recorded_at"]??null,today_records:current["today_records"].length,available_actions:actions.join(" / ")}}function records(body){if(!isRecord(body)||!Array.isArray(body["records"])){throw new ApiResponseError("\u6253\u523B\u5C65\u6B74\u306E\u5FDC\u7B54\u306B records \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002")}return body["records"]}function timesheetBody(body){
@@ -111,7 +150,7 @@ async function assertMonthsOpen(ctx,months,action){for(const month of[...new Set
111
150
  const record=isRecord(body)?body["record"]:void 0;if(!isRecord(record)||typeof record["type"]!=="string"){throw new ApiResponseError("\u6253\u523B\u306E\u5FDC\u7B54\u306B\u6253\u523B\u8A18\u9332\uFF08type\uFF09\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002")}return record}var OVERTIME_USAGE="twp attendance overtime [--month <YYYY-MM>] [--agreement36]";var CLOSINGS_LIST_USAGE="twp attendance closings list [--month <YYYY-MM>\
112
151
  ] [--include-hidden]";var FORBIDDEN_ADMIN="\u52E4\u6020\u306E\u7BA1\u7406\u8005\u6A29\u9650\uFF08\u52E4\u6020: \u7BA1\u7406\u8005\uFF09\u304C\u5FC5\u8981\u3067\u3059\u3002\u30C6\u30CA\u30F3\u30C8\u306E\u7BA1\u7406\u8005\u306B\u6A29\u9650\u306E\u4ED8\u4E0E\u3092\u4F9D\u983C\u3057\u3066\u304F\u3060\u3055\u3044";var OVERTIME_SCOPE_NOTE="\u5BFE\u8C61\u306F\u3001\u3053\u306E\u6708\u306E\u7DE0\u3081\u30EC\u30B3\u30FC\u30C9\u304C\u3042\u308A\u3001\u8868\u793A\u5BFE\u8C61\u3067\u3001\u6709\u52B9\u306A\u5951\u7D04\u304C\u3042\u308B\u4EBA\u3060\u3051\u3067\u3059\uFF08\u8F09\u3063\u3066\u3044\u306A\u3044\u4EBA\u306F\u6B8B\u696D0\u3068\u3044\u3046\u610F\u5473\u3067\u306F\u3042\u308A\u307E\u305B\u3093\uFF09\u3002";
113
152
  var MONTH_FLAG2={name:"--month",summary:"\u5BFE\u8C61\u306E\u5E74\u6708\uFF08YYYY-MM\uFF09",takesValue:true,placeholder:"<YYYY-MM>"};var OVERTIME_COLUMNS=["user_name","contract_type_name","overtime","legal_overtime","night_work","holiday_work","total_work","total_work_days","is_overtime_exempt","user_id"];var AGREEMENT36_COLUMNS=["user_name","alert_level","monthly_legal_overtime","monthly_percent","annual_legal_overtime","annual_percent","contract_type_name","user_id"];var CLOSING_COLUMNS=["user\
114
- _name","closed_at","closed_by","logic_version","user_id","id"];function isAgreement36(input){return input.flags.has("--agreement36")}function overtimeBody(body,label){if(!isRecord(body)||!Array.isArray(body["users"])){throw new ApiResponseError(`${label}\u306E\u5FDC\u7B54\u306B users \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}return body}function isAgreement36Body(body){return isRecord(body)&&isRecord(body["limits"])}
153
+ _name","closed_at","closed_by","logic_version","user_id","id"];function isAgreement36(input){return input.flags.has("--agreement36")}function overtimeBody(body,label2){if(!isRecord(body)||!Array.isArray(body["users"])){throw new ApiResponseError(`${label2}\u306E\u5FDC\u7B54\u306B users \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}return body}function isAgreement36Body(body){return isRecord(body)&&isRecord(body["limits"])}
115
154
  function summarizeOvertimeUser(user){const row=isRecord(user)?user:{};return pick({user_name:row["user_name"],contract_type_name:row["contract_type_name"],overtime:hoursMinutes(row["overtime_minutes"]),legal_overtime:hoursMinutes(row["legal_overtime_minutes"]),night_work:hoursMinutes(row["night_work_minutes"]),holiday_work:hoursMinutes(row["holiday_work_minutes"]),total_work:hoursMinutes(row["total_work_minutes"]),total_work_days:row["total_work_days"],is_overtime_exempt:row["is_overtime_exempt"],
116
155
  user_id:row["user_id"]},OVERTIME_COLUMNS)}function summarizeAgreement36User(user){const row=isRecord(user)?user:{};return pick({user_name:row["user_name"],alert_level:row["alert_level"],monthly_legal_overtime:hoursMinutes(row["monthly_legal_overtime_minutes"]),monthly_percent:row["monthly_percent"],annual_legal_overtime:hoursMinutes(row["annual_legal_overtime_minutes"]),annual_percent:row["annual_percent"],contract_type_name:row["contract_type_name"],user_id:row["user_id"]},AGREEMENT36_COLUMNS)}
117
156
  function summarizeOvertime(body){if(isAgreement36Body(body)){return overtimeBody(body,"36\u5354\u5B9A\u30C0\u30C3\u30B7\u30E5\u30DC\u30FC\u30C9")["users"].map(summarizeAgreement36User)}return overtimeBody(body,"\u6B8B\u696D\u30B5\u30DE\u30EA")["users"].map(summarizeOvertimeUser)}function overtimeNotes(body){if(isAgreement36Body(body)){const sheet2=overtimeBody(body,"36\u5354\u5B9A\u30C0\u30C3\u30B7\u30E5\u30DC\u30FC\u30C9");const limits=sheet2["limits"];const summary=isRecord(sheet2["summary"])?
@@ -121,21 +160,21 @@ total["user_count"])} \u4EBA\uFF09: \u6B8B\u696D ${String(hoursMinutes(total["ov
121
160
  "\u7DE0\u3081\u72B6\u6CC1\u306E\u5FDC\u7B54\u306B closings \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002")}return body}function closingsNotes(body){const sheet=closingsBody(body);const count=sheet["closings"].length;return[`${String(sheet["year_month"])} \u306B\u7DE0\u3081\u6E08\u307F\u306E\u4EBA: ${String(count)} \u4EBA\uFF08\u7DE0\u3081\u3066\u3044\u306A\u3044\u4EBA\u306F\u4E00\u89A7\u306B\u51FA\u307E\u305B\u3093\uFF09`]}
122
161
  var overtimeOperation={name:"overtime",summary:"\u6708\u306E\u6B8B\u696D\u30B5\u30DE\u30EA\uFF08\u793E\u54E1\u5225\uFF09\u3092\u8868\u793A\u3059\u308B\u3002--agreement36 \u306736\u5354\u5B9A\u306E\u4E0A\u9650\u306B\u5BFE\u3059\u308B\u72B6\u6CC1\uFF08\u7BA1\u7406\u8005\uFF09",usage:OVERTIME_USAGE,description:"GET /api/v1/attendance/overtime \u3092\u8868\u793A\u3057\u307E\u3059\u3002--agreement36 \u3092\u4ED8\u3051\u308B\u3068 GET /api/v1/attendance/overtime/agreement36\n\uFF0836\u5354\u5B9A\u306E\u6708\u30FB\u5E74\u306E\u6CD5\u5B9A\u5916\u6B8B\u696D\u3068\u4E0A\u9650\u306B\u5BFE\u3059\u308B\u5272\u5408\u30FB\u8B66\u544A\u30EC\u30D9\u30EB\uFF09\u3092\u8868\u793A\u3057\u307E\u3059\u3002\n\u52E4\u6020\u306E\u7BA1\u7406\u8005\u6A29\u9650\u304C\u5FC5\u8981\u3067\u3059\uFF08\u7121\u3051\u308C\u3070\u7D42\u4E86\u30B3\u30FC\u30C9 3\uFF09\u3002\n--month \u304C\u7121\u3051\u308C\u3070\u4ECA\u6708\u3067\u3059\uFF08\u30C6\u30CA\
123
162
  \u30F3\u30C8\u306E\u696D\u52D9\u65E5\u306E\u533A\u5207\u308A\u3067\u30B5\u30FC\u30D0\u304C\u6C7A\u3081\u307E\u3059\uFF09\u3002\u4ECA\u6708\u306F\u30EA\u30A2\u30EB\u30BF\u30A4\u30E0\u306E\u96C6\u8A08\u3001\u904E\u53BB\u306E\u6708\u306F\u7DE0\u3081\u305F\u6642\u70B9\u306E\u96C6\u8A08\u3067\u3059\u3002\n\u4E26\u3076\u306E\u306F\u3001\u305D\u306E\u6708\u306E\u7DE0\u3081\u30EC\u30B3\u30FC\u30C9\u304C\u3042\u308A\u3001\u8868\u793A\u5BFE\u8C61\u3067\u3001\u305D\u306E\u6708\u306B\u6709\u52B9\u306A\u5951\u7D04\u304C\u3042\u308B\u4EBA\u3060\u3051\u3067\u3059\uFF08\u8F09\u3063\u3066\u3044\u306A\u3044\u4EBA\u306F\u300C\u6B8B\u696D0\u300D\u3067\u306F\u3042\u308A\u307E\u305B\u3093\uFF09\u3002\n--output table / text / tsv \u306F\u793E\u54E1\u5225\u306E\u8981\u7D04\u5217\uFF08\u6642\u9593\u306F H:MM\uFF09\u3067\u3001\u5408\u8A08\u30FB\u4E0A\u9650\u306F stderr \u306B\u51FA\u3057\u307E\u3059\u3002\n--output json \u306F API \u304C\u8FD4\u3059\u5168\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u51FA\u3057\u307E\u3059\u3002",
124
- flags:[MONTH_FLAG2,{name:"--agreement36",summary:"36\u5354\u5B9A\u306E\u4E0A\u9650\u306B\u5BFE\u3059\u308B\u72B6\u6CC1\u3092\u8868\u793A\u3059\u308B",takesValue:false}],plan(input){noArgs2(input,"overtime");const path=isAgreement36(input)?"/api/v1/attendance/overtime/agreement36":"/api/v1/attendance/overtime";return{method:"GET",path,query:{year_month:monthFlag(input.flags)}}},summarize:summarizeOvertime,raw:body=>overtimeBody(body,isAgreement36Body(body)?"36\u5354\u5B9A\u30C0\u30C3\u30B7\u30E5\u30DC\u30FC\u30C9":
163
+ flags:[MONTH_FLAG2,{name:"--agreement36",summary:"36\u5354\u5B9A\u306E\u4E0A\u9650\u306B\u5BFE\u3059\u308B\u72B6\u6CC1\u3092\u8868\u793A\u3059\u308B",takesValue:false}],plan(input){noArgs3(input,"overtime");const path=isAgreement36(input)?"/api/v1/attendance/overtime/agreement36":"/api/v1/attendance/overtime";return{method:"GET",path,query:{year_month:monthFlag(input.flags)}}},summarize:summarizeOvertime,raw:body=>overtimeBody(body,isAgreement36Body(body)?"36\u5354\u5B9A\u30C0\u30C3\u30B7\u30E5\u30DC\u30FC\u30C9":
125
164
  "\u6B8B\u696D\u30B5\u30DE\u30EA"),notes:overtimeNotes,forbidden:FORBIDDEN_ADMIN};var closingsListOperation={name:"list",summary:"\u6708\u306E\u7DE0\u3081\u72B6\u6CC1\uFF08\u7DE0\u3081\u6E08\u307F\u306E\u4EBA\u306E\u4E00\u89A7\uFF09\u3092\u8868\u793A\u3059\u308B\uFF08\u7BA1\u7406\u8005\uFF09",usage:CLOSINGS_LIST_USAGE,description:"GET /api/v1/attendance/closings \u3092\u8868\u793A\u3057\u307E\u3059\u3002\u52E4\u6020\u306E\u7BA1\u7406\u8005\u6A29\u9650\u304C\u5FC5\u8981\u3067\u3059\uFF08\u7121\u3051\u308C\u3070\u7D42\u4E86\u30B3\u30FC\u30C9 3\uFF09\u3002\n\u4E26\u3076\u306E\u306F\u7DE0\u3081\u6E08\u307F\u306E\u4EBA\u3060\u3051\u3067\u3059\uFF08\u7DE0\u3081\u3066\u3044\u306A\u3044\u4EBA\u306F\u51FA\u307E\u305B\u3093\uFF09\u3002\u4EBA\u6570\u306F stderr \u306B\u51FA\u3057\u307E\u3059\u3002\n--month \u304C\u7121\u3051\u308C\u3070\u4ECA\u6708\u3067\u3059\uFF08\u30C6\u30CA\u30F3\u30C8\u306E\u696D\u52D9\u65E5\u306E\u533A\u5207\u308A\u3067\u30B5\u30FC\u30D0\u304C\u6C7A\u3081\u307E\u3059\uFF09\u3002\n--include-hi\
126
165
  dden \u3092\u4ED8\u3051\u308B\u3068\u3001\u7121\u52B9\u5316\u6E08\u307F\u306E\u30E6\u30FC\u30B6\u30FC\u306E\u7DE0\u3081\u3082\u542B\u3081\u307E\u3059\u3002\n\u7DE0\u3081\u306E\u5B9F\u884C\u30FB\u89E3\u9664\u306F\u3067\u304D\u307E\u305B\u3093\uFF08\u7D66\u4E0E\u306E\u78BA\u5B9A\u306B\u52B9\u304F\u305F\u3081\u3001\u753B\u9762\u304B\u3089\u884C\u3063\u3066\u304F\u3060\u3055\u3044\uFF09\u3002\n--output json \u306F API \u304C\u8FD4\u3059\u5168\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u51FA\u3057\u307E\u3059\u3002",
127
- flags:[MONTH_FLAG2,{name:"--include-hidden",summary:"\u7121\u52B9\u5316\u6E08\u307F\u306E\u30E6\u30FC\u30B6\u30FC\u306E\u7DE0\u3081\u3082\u542B\u3081\u308B",takesValue:false}],plan(input){noArgs2(input,"closings list");return{method:"GET",path:"/api/v1/attendance/closings",query:{year_month:monthFlag(input.flags),include_hidden:input.flags.has("--include-hidden")?"true":void 0}}},summarize:body=>closingsBody(body)["closings"].map(row=>pick(row,CLOSING_COLUMNS)),raw:body=>closingsBody(body),notes:closingsNotes,
166
+ flags:[MONTH_FLAG2,{name:"--include-hidden",summary:"\u7121\u52B9\u5316\u6E08\u307F\u306E\u30E6\u30FC\u30B6\u30FC\u306E\u7DE0\u3081\u3082\u542B\u3081\u308B",takesValue:false}],plan(input){noArgs3(input,"closings list");return{method:"GET",path:"/api/v1/attendance/closings",query:{year_month:monthFlag(input.flags),include_hidden:input.flags.has("--include-hidden")?"true":void 0}}},summarize:body=>closingsBody(body)["closings"].map(row=>pick(row,CLOSING_COLUMNS)),raw:body=>closingsBody(body),notes:closingsNotes,
128
167
  forbidden:FORBIDDEN_ADMIN};var closingsResource={name:"closings",summary:"\u52E4\u6020\u306E\u7DE0\u3081\u72B6\u6CC1\uFF08\u4E00\u89A7\u306E\u307F\u30FB\u7BA1\u7406\u8005\uFF09",operations:[closingsListOperation]};var attendanceDomain={name:"attendance",summary:"\u52E4\u6020\uFF08\u81EA\u5206\u306E\u6253\u523B\u72B6\u614B\u30FB\u6253\u523B\u5C65\u6B74\u30FB\u52E4\u6020\u8868\u30FB\u6253\u523B\u30FB\u52E4\u6020\u9023\u7D61\u30FB\u30C1\u30FC\u30E0\u306E\u52E4\u6020\u30FB\u30D5\u30EC\u30C3\u30AF\u30B9\u7CBE\u7B97\uFF0F\u7BA1\u7406\u8005\u5411\u3051\u306E\u6B8B\u696D\u30B5\u30DE\u30EA\u30FB\u7DE0\u3081\u72B6\u6CC1\uFF09",
129
168
  operations:[{name:"status",summary:"\u3044\u307E\u306E\u6253\u523B\u72B6\u614B\u3068\u3001\u6B21\u306B\u6253\u3066\u308B\u6253\u523B\u3092\u8868\u793A\u3059\u308B",usage:STATUS_USAGE,description:"GET /api/v1/attendance/current \u3092\u8868\u793A\u3057\u307E\u3059\uFF08\u30ED\u30B0\u30A4\u30F3\u3057\u3066\u3044\u308B\u672C\u4EBA\u306E\u5206\uFF09\u3002\navailable_actions \u306F\u3001\u3044\u307E\u306E\u72B6\u614B\u304B\u3089\u6253\u3066\u308B\u6253\u523B\u306E\u7A2E\u985E\u3067\u3059\uFF08clock_in / clock_out / break_start / break_end / switch\uFF09\u3002\n--output json \u306F API \u304C\u8FD4\u3059\u5168\u30D5\u30A3\u30FC\u30EB\u30C9\uFF08\u4ECA\u65E5\u306E\u6253\u523B\u306E\u4E00\u89A7 today_records \u3092\u542B\u3080\uFF09\u3092\u51FA\u3057\u307E\u3059\u3002",
130
- flags:[],plan(input){noArgs2(input,"status");return{method:"GET",path:"/api/v1/attendance/current"}},summarize:summarizeCurrent,raw:body=>currentBody(body)},{name:"list",summary:"\u6253\u523B\u306E\u5C65\u6B74\u3092\u4E00\u89A7\u3059\u308B\uFF08\u65B0\u3057\u3044\u9806\uFF09",usage:LIST_USAGE,description:`GET /api/v1/attendance/records \u3092\u8868\u793A\u3057\u307E\u3059\uFF08\u30ED\u30B0\u30A4\u30F3\u3057\u3066\u3044\u308B\u672C\u4EBA\u306E\u5206\u30FB\u65B0\u3057\u3044\u9806\uFF09\u3002
169
+ flags:[],plan(input){noArgs3(input,"status");return{method:"GET",path:"/api/v1/attendance/current"}},summarize:summarizeCurrent,raw:body=>currentBody(body)},{name:"list",summary:"\u6253\u523B\u306E\u5C65\u6B74\u3092\u4E00\u89A7\u3059\u308B\uFF08\u65B0\u3057\u3044\u9806\uFF09",usage:LIST_USAGE,description:`GET /api/v1/attendance/records \u3092\u8868\u793A\u3057\u307E\u3059\uFF08\u30ED\u30B0\u30A4\u30F3\u3057\u3066\u3044\u308B\u672C\u4EBA\u306E\u5206\u30FB\u65B0\u3057\u3044\u9806\uFF09\u3002
131
170
  --month \u3068 --date \u306F\u3069\u3061\u3089\u304B\u4E00\u65B9\u3060\u3051\u6307\u5B9A\u3067\u304D\u307E\u3059\u3002\u3069\u3061\u3089\u3082\u7121\u3051\u308C\u3070\u4ECA\u6708\u3067\u3059
132
171
  \uFF08\u300C\u4ECA\u6708\u300D\u306F\u30C6\u30CA\u30F3\u30C8\u306E\u696D\u52D9\u65E5\u306E\u533A\u5207\u308A\u3067\u30B5\u30FC\u30D0\u304C\u6C7A\u3081\u307E\u3059\uFF09\u3002
133
172
  --output json \u306F API \u304C\u8FD4\u3059\u5168\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u51FA\u3057\u307E\u3059\u3002
134
- --output table / text / tsv \u306F\u8981\u7D04\u5217\uFF08${RECORD_COLUMNS.join(" / ")}\uFF09\u3067\u3059\u3002`,flags:[{name:"--month",summary:"\u5BFE\u8C61\u306E\u5E74\u6708\uFF08YYYY-MM\uFF09",takesValue:true,placeholder:"<YYYY-MM>"},{name:"--date",summary:"\u5BFE\u8C61\u306E\u65E5\u4ED8\uFF08YYYY-MM-DD\uFF09",takesValue:true,placeholder:"<YYYY-MM-DD>"}],plan(input){noArgs2(input,"list");const month=monthFlag(input.flags);const date=dateFlag(input.flags);if(month!==void 0&&date!==void 0){throw new UsageError(
173
+ --output table / text / tsv \u306F\u8981\u7D04\u5217\uFF08${RECORD_COLUMNS.join(" / ")}\uFF09\u3067\u3059\u3002`,flags:[{name:"--month",summary:"\u5BFE\u8C61\u306E\u5E74\u6708\uFF08YYYY-MM\uFF09",takesValue:true,placeholder:"<YYYY-MM>"},{name:"--date",summary:"\u5BFE\u8C61\u306E\u65E5\u4ED8\uFF08YYYY-MM-DD\uFF09",takesValue:true,placeholder:"<YYYY-MM-DD>"}],plan(input){noArgs3(input,"list");const month=monthFlag(input.flags);const date=dateFlag(input.flags);if(month!==void 0&&date!==void 0){throw new UsageError(
135
174
  "--month \u3068 --date \u306F\u540C\u6642\u306B\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093",LIST_USAGE)}return{method:"GET",path:"/api/v1/attendance/records",query:{year_month:month,date}}},summarize:body=>records(body).map(row=>pick(row,RECORD_COLUMNS)),raw:body=>records(body)},{name:"timesheet",summary:"\u6708\u306E\u52E4\u6020\u8868\uFF08\u65E5\u5225\u306E\u51FA\u9000\u52E4\u30FB\u52B4\u50CD\u30FB\u6B8B\u696D\u3068\u6708\u306E\u5408\u8A08\uFF09\u3092\u8868\u793A\u3059\u308B",usage:TIMESHEET_USAGE,
136
175
  description:"GET /api/v1/attendance/timesheet \u3092\u8868\u793A\u3057\u307E\u3059\uFF08\u30ED\u30B0\u30A4\u30F3\u3057\u3066\u3044\u308B\u672C\u4EBA\u306E\u5206\uFF09\u3002\n--month \u304C\u7121\u3051\u308C\u3070\u4ECA\u6708\u3067\u3059\uFF08\u30C6\u30CA\u30F3\u30C8\u306E\u696D\u52D9\u65E5\u306E\u533A\u5207\u308A\u3067\u30B5\u30FC\u30D0\u304C\u6C7A\u3081\u307E\u3059\uFF09\u3002\n--output table / text / tsv \u306F\u65E5\u5225\u306E\u8981\u7D04\u5217\uFF08\u6642\u9593\u306F H:MM\uFF09\u3067\u3001\u6708\u306E\u5408\u8A08\u306F stderr \u306B\u51FA\u3057\u307E\u3059\u3002\n\u7DE0\u3081\u6E08\u307F\u306E\u6708\u306F\u3001\u7DE0\u3081\u305F\u6642\u70B9\u306E\u96C6\u8A08\u3067\u3042\u308B\u3053\u3068\u3092 stderr \u3067\u77E5\u3089\u305B\u307E\u3059\u3002\n--output json \u306F API \u304C\u8FD4\u3059\u5168\u30D5\u30A3\u30FC\u30EB\u30C9\uFF08summary\u30FBis_closed \u3092\u542B\u3080\uFF09\u3092\u51FA\u3057\u307E\u3059\u3002",
137
- flags:[{name:"--month",summary:"\u5BFE\u8C61\u306E\u5E74\u6708\uFF08YYYY-MM\uFF09",takesValue:true,placeholder:"<YYYY-MM>"}],plan(input){noArgs2(input,"timesheet");return{method:"GET",path:"/api/v1/attendance/timesheet",query:{year_month:monthFlag(input.flags)}}},summarize:body=>timesheetBody(body)["days"].map(summarizeDay),raw:body=>timesheetBody(body),notes:timesheetNotes},{name:"punch",summary:"\u6253\u523B\u3059\u308B\uFF08\u51FA\u52E4\u30FB\u9000\u52E4\u30FB\u4F11\u61A9\u958B\u59CB\u30FB\u4F11\u61A9\u7D42\u4E86\u30FB\u4F5C\u696D\u306E\u5207\u308A\u66FF\u3048\uFF09",
176
+ flags:[{name:"--month",summary:"\u5BFE\u8C61\u306E\u5E74\u6708\uFF08YYYY-MM\uFF09",takesValue:true,placeholder:"<YYYY-MM>"}],plan(input){noArgs3(input,"timesheet");return{method:"GET",path:"/api/v1/attendance/timesheet",query:{year_month:monthFlag(input.flags)}}},summarize:body=>timesheetBody(body)["days"].map(summarizeDay),raw:body=>timesheetBody(body),notes:timesheetNotes},{name:"punch",summary:"\u6253\u523B\u3059\u308B\uFF08\u51FA\u52E4\u30FB\u9000\u52E4\u30FB\u4F11\u61A9\u958B\u59CB\u30FB\u4F11\u61A9\u7D42\u4E86\u30FB\u4F5C\u696D\u306E\u5207\u308A\u66FF\u3048\uFF09",
138
177
  usage:PUNCH_USAGE,description:"POST /api/v1/attendance/punch \u3092\u9001\u308A\u307E\u3059\uFF08\u30ED\u30B0\u30A4\u30F3\u3057\u3066\u3044\u308B\u672C\u4EBA\u306E\u5206\uFF09\u3002\u6253\u523B\u6642\u523B\u306F\u30B5\u30FC\u30D0\u306E\u6642\u523B\u3067\u3059\u3002\n\u7A2E\u985E: clock-in\uFF08\u51FA\u52E4\uFF09/ clock-out\uFF08\u9000\u52E4\uFF09/ break-start\uFF08\u4F11\u61A9\u958B\u59CB\uFF09/ break-end\uFF08\u4F11\u61A9\u7D42\u4E86\uFF09/ switch\uFF08\u4F5C\u696D\u306E\u5207\u308A\u66FF\u3048\uFF09\u3002\n\u3044\u307E\u6253\u3066\u308B\u7A2E\u985E\u306F twp attendance status \u306E available_actions \u3067\u5206\u304B\u308A\u307E\u3059\u3002\n--project \u306F\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u30B3\u30FC\u30C9\u304B ID\u3001--task \u306F\u30BF\u30B9\u30AF\u306E ID\uFF08UUID\uFF09\u3067\u3059\u3002\n\u9001\u308B\u524D\u306B\u4ECA\u6708\u306E\u52E4\u6020\u8868\uFF08GET /api/v1/attendance/timesheet\uFF09\u3092\u898B\u3066\u3001\u7DE0\u3081\u6E08\u307F\u306A\u3089\u6253\u523B\u3092\u9001\u3089\u305A\u306B\u6B62\u3081\u307E\u3059\uFF08\u7D42\u4E86\u30B3\u30FC\u30C9 3\uFF09\u3002\n--dry-run \u306F\u6253\u523B\u306E\u30EA\u30AF\u30A8\u30B9\u30C8\u3060\u3051\u3092\u8868\u793A\u3057\u307E\u3059\uFF08\u7DE0\u3081\u306E\u78BA\u8A8D\u306F\u9001\u308A\u307E\u305B\u3093\uFF09\u3002\n\u904E\u53BB\u306E\u6642\u523B\u3067\u306E\u6253\u523B\u306F twp attendance record create\u3001\u30E1\u30E2\u306E\u5909\u66F4\u30FB\u53D6\u308A\u6D88\u3057\u30FB\u4ED8\u3051\u66FF\u3048\u306F twp attendance record update / de\
139
178
  lete / move \u3067\u3059\u3002",flags:[{name:"--project",summary:"\u4F5C\u696D\u3059\u308B\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\uFF08\u30B3\u30FC\u30C9\u307E\u305F\u306F ID\uFF09",takesValue:true,placeholder:"<\u30B3\u30FC\u30C9|ID>"},{name:"--task",summary:"\u4F5C\u696D\u3059\u308B\u30BF\u30B9\u30AF\u306E ID\uFF08UUID\uFF09",takesValue:true,placeholder:"<\u30BF\u30B9\u30AFID>"},{name:"--memo",summary:`\u30E1\u30E2\uFF08${MEMO_MAX} \u6587\u5B57\u4EE5\u5185\uFF09`,takesValue:true,placeholder:"<\u30E1\u30E2>"}],
140
179
  async prepare(input,ctx){punchType(input);const explicit=input.flags.get("--project");if(explicit===void 0)return input;return withResolved(input,{projectId:await ctx.projectId(explicit)})},plan:punchPlan,plannedNotes:()=>["\u5B9F\u884C\u6642\u306F\u3001\u3053\u306E\u524D\u306B\u4ECA\u6708\u306E\u7DE0\u3081\u306E\u78BA\u8A8D\uFF08GET /api/v1/attendance/timesheet\uFF09\u3092\u9001\u308A\u3001\u7DE0\u3081\u6E08\u307F\u306A\u3089\u6253\u523B\u3092\u9001\u308A\u307E\u305B\u3093\u3002"],execute:punch,
141
- summarize:body=>{const status=isRecord(body)&&isRecord(body["status"])?body["status"]:{};return{...pick(punchRecord(body),PUNCH_COLUMNS),status:status["status"]??null,status_label:status["status_label"]??null}},raw:body=>(punchRecord(body),body)},teamOperation,flexSettlementOperation,overtimeOperation],subresources:[reportResource,closingsResource]};export{USER_REF_HELP,userPath,USER_REF_FLAG,prepareUser,PUNCH_TYPES,hoursMinutes,assertMonthOpen,assertMonthsOpen,attendanceDomain};
180
+ summarize:body=>{const status=isRecord(body)&&isRecord(body["status"])?body["status"]:{};return{...pick(punchRecord(body),PUNCH_COLUMNS),status:status["status"]??null,status_label:status["status_label"]??null}},raw:body=>(punchRecord(body),body)},teamOperation,flexSettlementOperation,overtimeOperation],subresources:[reportResource,reportCategoryResource,reportReasonResource,reportReasonDetailResource,closingsResource]};export{USER_REF_HELP,userPath,USER_REF_FLAG,prepareUser,PUNCH_TYPES,hoursMinutes,assertMonthOpen,assertMonthsOpen,attendanceDomain};
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{JsonBodyWithView}from"./chunk-Q3B65OFC.js";import{emailText,ms365Forbidden,recipientsText,str}from"./chunk-DLD736A2.js";import{repeatedValues}from"./chunk-RX5HWI4L.js";import{readBody}from"./chunk-6LSQCOCJ.js";import{assertMs365PathSegment,ms365Path,ms365Segment}from"./chunk-H4CDX4TX.js";import{requireResolved,singleRef,withResolved}from"./chunk-PS5QFKHB.js";import{isRecord}from"./chunk-3ZRMMBP5.js";import{ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";import fs from"fs";import path from"path";var BODY_MAX_CHARS=1e5;var ATTACH_TOTAL_MAX_BYTES=3*1024*1024;var ADDRESS=/^[^\s@,;<>"]+@[^\s@,;<>"]+$/;var INVISIBLE=/[\p{Cc}\p{Cf}]/u;function oneLine(value){return value.replace(/[\r\n\t]+/g," ").replace(/[\p{Cc}\p{Cf}]/gu,"")}var TO_FLAG={name:"--to",summary:"\u5B9B\u5148\u306E\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\uFF08\u5FC5\u9808\u3002\u8907\u6570\u306A\u3089\u7E70\u308A\u8FD4\u3059\uFF09",takesValue:true,placeholder:"<\u30A2\u30C9\u30EC\u30B9>",repeatable:true};var CC_FLAG={name:"--c\
3
+ import{emailText,ms365Forbidden,recipientsText,str}from"./chunk-DLD736A2.js";import{JsonBodyWithView}from"./chunk-Q3B65OFC.js";import{repeatedValues}from"./chunk-RX5HWI4L.js";import{readBody}from"./chunk-6LSQCOCJ.js";import{assertMs365PathSegment,ms365Path,ms365Segment}from"./chunk-H4CDX4TX.js";import{requireResolved,singleRef,withResolved}from"./chunk-PS5QFKHB.js";import{isRecord}from"./chunk-3ZRMMBP5.js";import{ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";import fs from"fs";import path from"path";var BODY_MAX_CHARS=1e5;var ATTACH_TOTAL_MAX_BYTES=3*1024*1024;var ADDRESS=/^[^\s@,;<>"]+@[^\s@,;<>"]+$/;var INVISIBLE=/[\p{Cc}\p{Cf}]/u;function oneLine(value){return value.replace(/[\r\n\t]+/g," ").replace(/[\p{Cc}\p{Cf}]/gu,"")}var TO_FLAG={name:"--to",summary:"\u5B9B\u5148\u306E\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\uFF08\u5FC5\u9808\u3002\u8907\u6570\u306A\u3089\u7E70\u308A\u8FD4\u3059\uFF09",takesValue:true,placeholder:"<\u30A2\u30C9\u30EC\u30B9>",repeatable:true};var CC_FLAG={name:"--c\
4
4
  c",summary:"Cc \u306E\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\uFF08\u8907\u6570\u306A\u3089\u7E70\u308A\u8FD4\u3059\uFF09",takesValue:true,placeholder:"<\u30A2\u30C9\u30EC\u30B9>",repeatable:true};var BODY_FILE_FLAG={name:"--body-file",summary:"\u672C\u6587\u3092\u30D5\u30A1\u30A4\u30EB\u304B\u3089\u8AAD\u3080\uFF08- \u3067\u6A19\u6E96\u5165\u529B\uFF09",takesValue:true,placeholder:"<\u30D1\u30B9|->"};var BODY_FLAG={name:"--body",summary:"\u672C\u6587\u3092\u76F4\u63A5\u6307\u5B9A\u3059\u308B\uFF08\u4E00\u884C\u5411\u3051\u3002--body-file \u3068\u306E\u4F75\u7528\u306F\u30A8\u30E9\u30FC\uFF09",
5
5
  takesValue:true,placeholder:"<\u6587\u5B57\u5217>"};var HTML_FLAG={name:"--html",summary:"\u672C\u6587\u3092 HTML \u3068\u3057\u3066\u9001\u308B\uFF08\u65E2\u5B9A\u306F\u30C6\u30AD\u30B9\u30C8\uFF09",takesValue:false};var MESSAGE_FLAG={name:"--message",summary:"\u5143\u306E\u30E1\u30FC\u30EBID\uFF08\u4F4D\u7F6E\u5F15\u6570\u3068\u540C\u3058\u610F\u5473\uFF09",takesValue:true,placeholder:"<ID>"};var EXTERNAL_SEND_HELP="\u26A0 \u5916\u90E8\u3078\u51FA\u308B\u64CD\u4F5C\u3067\u3059\u3002\u5B9F\u884C\u3057\u305F\u77AC\u9593\u306B\u76F8\u624B\u306E\u53D7\u4FE1\u7BB1\u3078\u5C4A\u304D\u3001\u53D6\u308A\u6D88\u305B\u307E\u305B\u3093\u3002\n --yes \u304C\u7121\u3051\u308C\u3070\u5B9F\u884C\u3057\u307E\u305B\u3093\u3002--dry-run \u3067\u9001\u308B\u5185\u5BB9\uFF08\u5B9B\u5148\u30FB\u4EF6\
6
6
  \u540D\u30FB\u672C\u6587\u30FB\u6DFB\u4ED8\u306E\u540D\u524D\u3068\u5927\u304D\u3055\uFF09\u3092\u78BA\u304B\u3081\u3066\u304B\u3089\n --yes \u3092\u4ED8\u3051\u3066\u304F\u3060\u3055\u3044\uFF08--dry-run \u306F --yes \u3092\u8981\u308A\u307E\u305B\u3093\uFF09\u3002\n\u26A0 \u7D42\u4E86\u30B3\u30FC\u30C9 4\uFF08\u901A\u4FE1\u306E\u5931\u6557\u30FB\u30B5\u30FC\u30D0\u306E\u4E00\u6642\u30A8\u30E9\u30FC\uFF09\u3067\u3082\u3001Microsoft 365 \u5074\u3067\u306F\u9001\u4FE1\u6E08\u307F\u306E\u3053\u3068\u304C\u3042\u308A\u307E\u3059\u3002\n \u6253\u3061\u76F4\u3059\u524D\u306B twp outlook mail list --folder sentitems \u3067\u9001\u4FE1\u6E08\u307F\u30A2\u30A4\u30C6\u30E0\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002";
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{repeatedValues}from"./chunk-RX5HWI4L.js";import{hoursMinutes}from"./chunk-YKI7NYBD.js";import{dateFlag,monthFlag}from"./chunk-EXT4AIDF.js";import{requireResolved,withResolved}from"./chunk-PS5QFKHB.js";import{isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";var ANALYSIS_PATH="/api/v2/analysis";var ACCESSIBLE_PAGES_HINT="\u958B\u3051\u308B\u5206\u6790\u30DA\u30FC\u30B8\u306F twp api /api/v2/analysis/accessible-pages \u3067\u78BA\u8A8D\u3067\u304D\u307E\u3059\u3002";var LICENSE_GUIDANCE="\u5206\u6790\u3092\u4F7F\u3046\u6A29\u9650\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u30C6\u30CA\u30F3\u30C8\u304C\u5206\u6790\u3092\u5951\u7D04\u3057\u3066\u3044\u306A\u3044\u304B\u3001\u3042\u306A\u305F\u306E\u5206\u6790\u306E\u6A29\u9650\u304C\u300C\u306A\u3057\u300D\u306B\u306A\u3063\u3066\u3044\u307E\u3059\u3002\u30C6\u30CA\u30F3\u30C8\u7BA1\u7406\u8005\u306B\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002";
3
+ import{hoursMinutes}from"./chunk-7EJOKJLV.js";import{dateFlag,monthFlag}from"./chunk-EXT4AIDF.js";import{repeatedValues}from"./chunk-RX5HWI4L.js";import{requireResolved,withResolved}from"./chunk-PS5QFKHB.js";import{isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";var ANALYSIS_PATH="/api/v2/analysis";var ACCESSIBLE_PAGES_HINT="\u958B\u3051\u308B\u5206\u6790\u30DA\u30FC\u30B8\u306F twp api /api/v2/analysis/accessible-pages \u3067\u78BA\u8A8D\u3067\u304D\u307E\u3059\u3002";var LICENSE_GUIDANCE="\u5206\u6790\u3092\u4F7F\u3046\u6A29\u9650\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u30C6\u30CA\u30F3\u30C8\u304C\u5206\u6790\u3092\u5951\u7D04\u3057\u3066\u3044\u306A\u3044\u304B\u3001\u3042\u306A\u305F\u306E\u5206\u6790\u306E\u6A29\u9650\u304C\u300C\u306A\u3057\u300D\u306B\u306A\u3063\u3066\u3044\u307E\u3059\u3002\u30C6\u30CA\u30F3\u30C8\u7BA1\u7406\u8005\u306B\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002";
4
4
  var PAGE_GUIDANCE=`\u3053\u306E\u5206\u6790\u30DA\u30FC\u30B8\u306E\u95B2\u89A7\u5BFE\u8C61\u306B\u542B\u307E\u308C\u3066\u3044\u307E\u305B\u3093\u3002\u5206\u6790\u306E\u7BA1\u7406\u8005\u306B\u5BFE\u8C61\u3078\u306E\u8FFD\u52A0\u3092\u4F9D\u983C\u3057\u3066\u304F\u3060\u3055\u3044\u3002${ACCESSIBLE_PAGES_HINT}`;var PAGE_DENIED_MARK="\u5206\u6790\u30DA\u30FC\u30B8";function analysisForbidden(levelGuidance2){return body=>{if(body?.error==="permission_denied"){const text=body.error_description??"";
5
5
  if(text.includes(PAGE_DENIED_MARK))return PAGE_GUIDANCE;if(text.includes("\u3053\u306E\u6A5F\u80FD"))return LICENSE_GUIDANCE;return void 0}if(body?.error==="forbidden")return levelGuidance2;return void 0}}function levelGuidance(page,features){return`${page}\u3092\u958B\u304F\u6A29\u9650\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u5206\u6790\u62C5\u5F53\u8005\u30D5\u30E9\u30B0\u3001\u307E\u305F\u306F${features}\u306E\u6A29\u9650\uFF08\u300C\u306A\u3057\u300D\u4EE5\u5916\uFF09\u304C\u8981\u308A\u307E\u3059\u3002\u30C6\u30CA\u30F3\u30C8\u7BA1\u7406\u8005\u306B\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`}
6
6
  var FROM_FLAG={name:"--from",summary:"\u958B\u59CB\u306E\u5E74\u6708\uFF08YYYY-MM\uFF09",takesValue:true,placeholder:"<YYYY-MM>"};var TO_FLAG={name:"--to",summary:"\u7D42\u4E86\u306E\u5E74\u6708\uFF08YYYY-MM\uFF09",takesValue:true,placeholder:"<YYYY-MM>"};var MONTH_FLAG={name:"--month",summary:"1\u304B\u6708\u3060\u3051\uFF08YYYY-MM\uFF09\u3002--from / --to \u3068\u306F\u4F75\u7528\u4E0D\u53EF",takesValue:true,placeholder:"<YYYY-MM>"};var YEAR_FLAG={name:"--year",summary:"1\u5E74\u5206\uFF081\u301C12\u6708\u30FBYYYY\uFF09\u3002--from \
@@ -1,7 +1,7 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{createFlags,fieldBody,hasAnyField,resolveRefFields,updateFlags}from"./chunk-VV4GTQ2L.js";import{boundedText,isoDate}from"./chunk-JJSBBWJ5.js";import{FROM_FLAG,MANHOUR_DESCRIPTION,MANHOUR_FROM_FLAG,MANHOUR_TO_FLAG,MONTH_FLAG,TO_FLAG,dataOf,listIn,manhourNotes,manhourQuery,manhourRows,monthRange,rangeNotes,recordOf,workloadDistributionNotes,workloadDistributionRows}from"./chunk-LAAKI3GS.js";import{LIST_FLAGS,LIST_PAGING_HELP,envelopePaging,nonEmpty,positiveInteger}from"./chunk-MI6HVYR2.js";
4
- import{USER_REF_FLAG,USER_REF_HELP,userPath}from"./chunk-YKI7NYBD.js";import{readBody}from"./chunk-6LSQCOCJ.js";import{PROJECT_MEMBERS_LIMIT,resolveNamed}from"./chunk-ITRTFBV3.js";import{collapsesInUrlPath,safeProjectIdPolicy}from"./chunk-HVZUXLQ4.js";import{requireResolved,singleRef,withResolved}from"./chunk-PS5QFKHB.js";import{isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";var PROJECT_FLAG={name:"--project",summary:"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u30B3\u30FC\u30C9\u307E\u305F\u306F ID\uFF08\u7701\u7565\u6642\u306F TWP_PROJECT / .twp/config.json / ~/.twp/config.json\uFF09",takesValue:true,placeholder:"<\u30B3\u30FC\u30C9|ID>"};var ROLE_FLAG={name:"--role",summary:"\u5F79\u5272\uFF08member / manager \u306A\u3069\u30FB\u5024\u306F\u30B5\u30FC\u30D0\u304C\u691C\u67FB\u3059\u308B\uFF09",takesValue:true,placeholder:"<\u5F79\u5272>"};var START_DATE_FLAG={name:"\
3
+ import{FROM_FLAG,MANHOUR_DESCRIPTION,MANHOUR_FROM_FLAG,MANHOUR_TO_FLAG,MONTH_FLAG,TO_FLAG,dataOf,listIn,manhourNotes,manhourQuery,manhourRows,monthRange,rangeNotes,recordOf,workloadDistributionNotes,workloadDistributionRows}from"./chunk-APPYZQNC.js";import{USER_REF_FLAG,USER_REF_HELP,userPath}from"./chunk-7EJOKJLV.js";import{createFlags,fieldBody,hasAnyField,resolveRefFields,updateFlags}from"./chunk-XGYOJHZC.js";import{boundedText,isoDate}from"./chunk-JJSBBWJ5.js";import{
4
+ LIST_FLAGS,LIST_PAGING_HELP,envelopePaging,nonEmpty,positiveInteger}from"./chunk-MI6HVYR2.js";import{readBody}from"./chunk-6LSQCOCJ.js";import{PROJECT_MEMBERS_LIMIT,resolveNamed}from"./chunk-HNG6MF26.js";import{collapsesInUrlPath,safeProjectIdPolicy}from"./chunk-HVZUXLQ4.js";import{requireResolved,singleRef,withResolved}from"./chunk-PS5QFKHB.js";import{isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";var PROJECT_FLAG={name:"--project",summary:"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u30B3\u30FC\u30C9\u307E\u305F\u306F ID\uFF08\u7701\u7565\u6642\u306F TWP_PROJECT / .twp/config.json / ~/.twp/config.json\uFF09",takesValue:true,placeholder:"<\u30B3\u30FC\u30C9|ID>"};var ROLE_FLAG={name:"--role",summary:"\u5F79\u5272\uFF08member / manager \u306A\u3069\u30FB\u5024\u306F\u30B5\u30FC\u30D0\u304C\u691C\u67FB\u3059\u308B\uFF09",takesValue:true,placeholder:"<\u5F79\u5272>"};var START_DATE_FLAG={name:"\
5
5
  --start-date",summary:"\u53C2\u753B\u958B\u59CB\u65E5\uFF08YYYY-MM-DD\uFF09",takesValue:true,placeholder:"<YYYY-MM-DD>"};var END_DATE_FLAG={name:"--end-date",summary:"\u53C2\u753B\u7D42\u4E86\u65E5\uFF08YYYY-MM-DD\uFF09",takesValue:true,placeholder:"<YYYY-MM-DD>"};var PERIOD_FILE_FLAG={name:"--period-file",summary:"\u7A3C\u50CD\u671F\u9593\uFF08assignment_periods\uFF09\u306E JSON \u914D\u5217\u30D5\u30A1\u30A4\u30EB\uFF08- \u3067\u6A19\u6E96\u5165\u529B\uFF09",takesValue:true,placeholder:"<\u30D1\u30B9>"};
6
6
  var MEMO_FLAG={name:"--memo",summary:"\u30E1\u30E2\uFF0810,000 \u6587\u5B57\u307E\u3067\uFF09",takesValue:true,placeholder:"<\u6587\u5B57\u5217>"};var CLEAR_FLAG={name:"--clear",summary:"\u5225\u540D\u3092\u6D88\u3059",takesValue:false};var MEMO_MAX_CHARS=1e4;var PERIOD_FILE_MAX_CHARS=2e5;var ALIAS_MAX_CHARS=255;var PERIOD_KEYS=["id","start_date","end_date","daily_hours","total_hours","input_mode"];var PERIOD_REQUIRED=["start_date","end_date","daily_hours"];var ROLE_HELP="--role \u306E\u5024\u306F\u30B5\u30FC\u30D0\u304C\u691C\u67FB\u3057\u307E\u3059\uFF08CLI\
7
7
  \u306F\u691C\u67FB\u3057\u307E\u305B\u3093\uFF09\u30022026-10-01 \u6642\u70B9\u306E\u5024\u306F\n member\uFF08\u30E1\u30F3\u30D0\u30FC\uFF09/ manager\uFF08\u7BA1\u7406\u8005\uFF09/ approver\uFF08\u7BA1\u7406\u8005\uFF08\u627F\u8A8D\u8005\uFF09\uFF09/ manager_no_punch\uFF08\u7BA1\u7406\u8005\uFF08\u6253\u523B\u7121\uFF09\uFF09\u3067\u3059\u3002\n \u5024\u306F\u5897\u3048\u308B\u3053\u3068\u304C\u3042\u308A\u307E\u3059\u3002\u4ECA\u306E\u30E1\u30F3\u30D0\u30FC\u306E\u5024\u306F twp project members \u306E role \u5217\u3067\u78BA\u304B\u3081\u3089\u308C\u307E\u3059\u3002";
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{featureLicenseGuidance}from"./chunk-5LPELULJ.js";import{nonEmpty}from"./chunk-MI6HVYR2.js";import{isExactNumericId}from"./chunk-ITRTFBV3.js";import{UsageError}from"./chunk-VFPY2A23.js";var PDF_PATH="/api/v2/sales/pdf";var FEATURE_DENIED="\u3053\u306E\u6A5F\u80FD\u306B\u30A2\u30AF\u30BB\u30B9\u3059\u308B\u6A29\u9650\u304C\u3042\u308A\u307E\u305B\u3093\u3002";function salesFeatureDenied(body){return body?.error==="permission_denied"||body?.error==="forbidden"&&body.error_description===FEATURE_DENIED}function pdfForbidden(body){if(salesFeatureDenied(body))return featureLicenseGuidance("\u8CA9\u58F2\u7BA1\u7406");const reason=body?.error;if(typeof reason==="string"&&reason.endsWith(
3
+ import{featureLicenseGuidance}from"./chunk-WMEGP2BT.js";import{nonEmpty}from"./chunk-MI6HVYR2.js";import{isExactNumericId}from"./chunk-HNG6MF26.js";import{UsageError}from"./chunk-VFPY2A23.js";var PDF_PATH="/api/v2/sales/pdf";var FEATURE_DENIED="\u3053\u306E\u6A5F\u80FD\u306B\u30A2\u30AF\u30BB\u30B9\u3059\u308B\u6A29\u9650\u304C\u3042\u308A\u307E\u305B\u3093\u3002";function salesFeatureDenied(body){return body?.error==="permission_denied"||body?.error==="forbidden"&&body.error_description===FEATURE_DENIED}function pdfForbidden(body){if(salesFeatureDenied(body))return featureLicenseGuidance("\u8CA9\u58F2\u7BA1\u7406");const reason=body?.error;if(typeof reason==="string"&&reason.endsWith(
4
4
  "\u6A29\u9650\u304C\u3042\u308A\u307E\u305B\u3093")){return`${reason}\uFF08\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306B\u7D10\u3065\u304F\u66F8\u985E\u306F\u305D\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u30E1\u30F3\u30D0\u30FC\u3001\u7D10\u3065\u304B\u306A\u3044\u66F8\u985E\u306F\u4F5C\u6210\u8005\u30FB\u62C5\u5F53\u8005\u3068\u7BA1\u7406\u8005\u3060\u3051\u304C\u51FA\u529B\u3067\u304D\u307E\u3059\uFF09`}return void 0}var ESTIMATE={name:"estimate",label:"\u898B\u7A4D",noExample:"EST0000063",
5
5
  defaultKind:"estimate",kinds:{estimate:{segment:"estimate",label:"\u898B\u7A4D\u66F8"},order:{segment:"order",label:"\u6CE8\u6587\u66F8"},"order-acceptance":{segment:"order-acceptance",label:"\u6CE8\u6587\u8ACB\u66F8"}}};var INVOICE={name:"invoice",label:"\u8ACB\u6C42",noExample:"INV0000170",defaultKind:"invoice",kinds:{invoice:{segment:"invoice",label:"\u8ACB\u6C42\u66F8"},delivery:{segment:"delivery",label:"\u7D0D\u54C1\u66F8"},inspection:{segment:"inspection",label:"\u691C\u53CE\u66F8"}}};var PURCHASE={
6
6
  name:"purchase",label:"\u4ED5\u5165",defaultKind:"order",kinds:{order:{segment:"purchase-order",label:"\u6CE8\u6587\u66F8"},"order-acceptance":{segment:"purchase-order-acceptance",label:"\u6CE8\u6587\u8ACB\u66F8"}}};var OUT_FLAG={name:"--out",summary:"\u66F8\u304D\u51FA\u3057\u5148\u306E\u30D5\u30A1\u30A4\u30EB\u30D1\u30B9\uFF08\u5FC5\u9808\uFF09",takesValue:true,placeholder:"<\u30D1\u30B9.pdf>"};var FORCE_FLAG={name:"--force",summary:"\u65E2\u5B58\u306E\u30D5\u30A1\u30A4\u30EB\u3092\u4E0A\u66F8\u304D\u3059\u308B",
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{CUSTOMER_FLAG,CUSTOMER_LICENSE,childForbidden,levelForbidden,prepareCustomerFlag}from"./chunk-UIHNYBME.js";import{inspectLocalFile}from"./chunk-I4TR55UF.js";import{checkUploadQuota}from"./chunk-V64CGX7V.js";import{createFlags,fieldBody,hasAnyField,updateFlags}from"./chunk-VV4GTQ2L.js";import{booleanText}from"./chunk-JJSBBWJ5.js";import{nonEmpty}from"./chunk-MI6HVYR2.js";import{CUSTOMERS_PATH,isExactNumericId}from"./chunk-ITRTFBV3.js";import{isSafePathSegment}from"./chunk-HVZUXLQ4.js";
3
+ import{CUSTOMER_FLAG,CUSTOMER_LICENSE,childForbidden,levelForbidden,prepareCustomerFlag}from"./chunk-NVMJXFBT.js";import{inspectLocalFile}from"./chunk-I4TR55UF.js";import{checkUploadQuota}from"./chunk-V64CGX7V.js";import{createFlags,fieldBody,hasAnyField,updateFlags}from"./chunk-XGYOJHZC.js";import{booleanText}from"./chunk-JJSBBWJ5.js";import{nonEmpty}from"./chunk-MI6HVYR2.js";import{CUSTOMERS_PATH,isExactNumericId}from"./chunk-HNG6MF26.js";import{isSafePathSegment}from"./chunk-HVZUXLQ4.js";
4
4
  import{ApiError}from"./chunk-JA5A6UJ2.js";import{requireResolved,withResolved}from"./chunk-PS5QFKHB.js";import{acknowledgement,isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";import{NotLoggedInError,SessionExpiredError}from"./chunk-XNLIEUAW.js";import fs from"fs";import path from"path";var CONTRACT_TYPES=["basic_contract","nda","other"];var CONTRACT_TYPE_HELP="basic_contract\uFF1D\u57FA\u672C\u5951\u7D04\u66F8 / nda\uFF1D\u6A5F\u5BC6\u4FDD\u6301\u5951\u7D04\u66F8 / other\uFF1D\u305D\u306E\u4ED6\u5951\u7D04\u66F8\u985E";var FILE_NAME_MAX_CHARS=255;var PDF_MAGIC="%PDF-";var CONTRACT_FIELDS=[{kind:"text",flag:"--name",key:"document_name",label:"\u66F8\u985E\u540D",maxChars:255,summary:"\u66F8\u985E\u540D\uFF08create \u3067\u306F\u5FC5\u9808\uFF09"},{kind:"enum",flag:"--type",key:"\
5
5
  document_type",values:CONTRACT_TYPES,summary:`\u66F8\u985E\u7A2E\u5225\uFF08${CONTRACT_TYPE_HELP}\u30FBcreate \u3067\u306F\u5FC5\u9808\uFF09`}];var CONTRACT_COLUMNS=["document_id","company_id","document_type","document_name","current_version","updated_by_name","updated_at"];var VERSION_COLUMNS=["version_number","file_name","file_size","is_current","created_by_name","created_at"];var CASE_COLUMNS=["document_id","document_type_label","document_name","estimate_no","estimate_title","project_name","c\
6
6
  urrent_version","updated_at"];var FILE_FLAG={name:"--file",summary:"\u30A2\u30C3\u30D7\u30ED\u30FC\u30C9\u3059\u308B PDF \u30D5\u30A1\u30A4\u30EB\u306E\u30D1\u30B9\uFF08\u5FC5\u9808\uFF09",takesValue:true,placeholder:"<\u30D1\u30B9.pdf>"};var OUT_FLAG={name:"--out",summary:"\u66F8\u304D\u51FA\u3057\u5148\u306E\u30D5\u30A1\u30A4\u30EB\u30D1\u30B9\uFF08\u5FC5\u9808\u3002\u6A19\u6E96\u51FA\u529B\u3078\u306F\u51FA\u3057\u307E\u305B\u3093\uFF09",takesValue:true,placeholder:"<\u30D1\u30B9>"};var FORCE_FLAG={
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{findExecutable,isWindowsDriveAbsolute}from"./chunk-PMOUHEJQ.js";import{isBoolishTrue}from"./chunk-5WGOHFAS.js";import{spawnSync as spawnSync2}from"child_process";import{spawnSync}from"child_process";import fs from"fs";import path from"path";function resolveDeps(d){return{platform:d.platform??process.platform,env:d.env??process.env,findExecutable:d.findExecutable??((name,env,platform)=>findExecutable(name,{env,platform})),readFileSync:d.readFileSync??(p=>fs.readFileSync(p,"utf8")),existsSync:d.existsSync??fs.existsSync,sizeOf:d.sizeOf??(p=>fs.statSync(p).size),nodePath:d.nodePath??process.execPath}}var MAX_SHIM_BYTES=64*1024;var DENIED_NODE_FLAGS=["--require","-r","--import","--loader","--experimental-loader","--env-file","--eval","\
3
+ import{skillFromPrompt,stripSkillPrefix}from"./chunk-6CS5L24D.js";import{findExecutable,isWindowsDriveAbsolute}from"./chunk-PMOUHEJQ.js";import{isBoolishTrue}from"./chunk-5WGOHFAS.js";import{spawnSync as spawnSync2}from"child_process";import{spawnSync}from"child_process";import fs from"fs";import path from"path";function resolveDeps(d){return{platform:d.platform??process.platform,env:d.env??process.env,findExecutable:d.findExecutable??((name,env,platform)=>findExecutable(name,{env,platform})),readFileSync:d.readFileSync??(p=>fs.readFileSync(p,"utf8")),existsSync:d.existsSync??fs.existsSync,sizeOf:d.sizeOf??(p=>fs.statSync(p).size),nodePath:d.nodePath??process.execPath}}var MAX_SHIM_BYTES=64*1024;var DENIED_NODE_FLAGS=["--require","-r","--import","--loader","--experimental-loader","--env-file","--eval","\
4
4
  -e","--print","-p","--inspect"];function deniedNodeFlag(arg){const name=arg.split("=")[0]??arg;if(name.startsWith("--inspect"))return true;return DENIED_NODE_FLAGS.includes(name)}function escapeRegExp(v){return v.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function parseCmdShim(text){const paths=[];const re=/"%~?dp0%?[\\/]*([^"]+)"/gi;for(let m=re.exec(text);m!==null;m=re.exec(text))paths.push(m[1]??"");for(const script of paths.filter(v=>/\.[cm]?js$/i.test(v))){const esc=escapeRegExp(script);const adjacent=new RegExp(
5
5
  `"%_prog%"([^"]*)"%~?dp0%?[\\\\/]*${esc}"`,"i").exec(text)??new RegExp(`"%~?dp0%?[\\\\/]*node\\.exe"([^"]*)"%~?dp0%?[\\\\/]*${esc}"`,"i").exec(text);if(adjacent===null)continue;const middle=adjacent[1]??"";return{target:script,viaNode:true,nodeArgs:middle.trim().split(/\s+/).filter(a=>a!=="")}}const exe=paths.find(v=>/\.(exe|com)$/i.test(v)&&!/(^|[\\/])node\.exe$/i.test(v));if(exe!==void 0)return{target:exe,viaNode:false,nodeArgs:[]};return null}function resolveSpawnTarget(file,args,deps={}){const d=resolveDeps(
6
6
  deps);if(d.platform!=="win32")return{ok:true,file,args:[...args],note:null};const hasSeparator=/[\\/]/.test(file);const isAbsolute=isWindowsDriveAbsolute(file);if(hasSeparator&&!isAbsolute){return{ok:false,reason:`${file} \u306F\u76F8\u5BFE\u30D1\u30B9\u3067\u3059\u3002bare name \u304B\u7D76\u5BFE\u30D1\u30B9\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044`}}const resolved=isAbsolute?file:d.findExecutable(file,d.env,d.platform);if(resolved===null||resolved===""){return{ok:false,reason:`${file}\
@@ -11,9 +11,9 @@ const dir=path.win32.dirname(resolved);if(path.win32.isAbsolute(shim.target)||/^
11
11
  if(!shim.viaNode){return{ok:true,file:target,args:[...args],note:`${file} \u2192 ${resolved} \u2192 ${target}`}}const bad=shim.nodeArgs.filter(a=>!a.startsWith("-")||deniedNodeFlag(a));if(bad.length>0){return{ok:false,reason:`${resolved} \u304C node \u3078\u6E21\u305D\u3046\u3068\u3057\u3066\u3044\u308B\u5F15\u6570\u3092\u8A31\u53EF\u3067\u304D\u307E\u305B\u3093\uFF08${bad.join(" ")}\uFF09`}}const colocated=path.win32.join(dir,"node.exe");const prog=d.existsSync(colocated)?colocated:d.nodePath;return{
12
12
  ok:true,file:prog,args:[...shim.nodeArgs,target,...args],note:`${file} \u2192 ${resolved}\uFF08cmd \u30B7\u30E0\u3092\u89E3\u6C7A: ${prog} ${target}\uFF09`}}function spawnSyncResolved(file,args,options,deps={},run=spawnSync){const target=resolveSpawnTarget(file,args,deps);if(!target.ok){return{pid:0,output:[],stdout:"",stderr:"",status:null,signal:null,error:new Error(target.reason)}}return run(target.file,target.args,options)}var DEFAULT_CLAUDE_LAUNCHER={bin:"claude-auto-switch",probe:["--help"],probeMatch:"^\\s*exec\\s",execArgs:["exec","--"],activeArgs:["active","--path"]};function detectClaudeAutoSwitch(bin=DEFAULT_CLAUDE_LAUNCHER.bin,run=spawnSync2,lookup={}){const r=spawnSyncResolved(bin,[...DEFAULT_CLAUDE_LAUNCHER.probe],{encoding:"utf8",timeout:1e4},lookup,run);if(r.error!==void 0||r.status!==0)return null;const help=`${r.stdout??""}${r.stderr??""}`;return{bin,hasExec:new RegExp(DEFAULT_CLAUDE_LAUNCHER.probeMatch,
13
13
  "m").test(help)}}function wrapWithAutoSwitch(cas,file,args){if(cas===null||!cas.hasExec)return{file,args:[...args]};return{file:cas.bin,args:[...DEFAULT_CLAUDE_LAUNCHER.execArgs,file,...args]}}function activeSlotPath(cas,run=spawnSync2,lookup={}){if(cas===null)return null;const r=spawnSyncResolved(cas.bin,[...DEFAULT_CLAUDE_LAUNCHER.activeArgs],{encoding:"utf8",timeout:1e4},lookup,run);if(r.error!==void 0||r.status!==0)return null;const out=(r.stdout??"").trim();return out===""?null:out}function isClaudeAi(ai){
14
- return ai==="claude"||!["gemini","codex","copilot"].includes(ai)}import{createHash}from"crypto";import fs2 from"fs";var EXCLUSIVE_SKILL_FLOOR=["support-triage"];function normalizeSkillName(skill){return skill.trim().replace(/^twp-/,"")}var stripPrefix=normalizeSkillName;function skillOfItem(item){const explicit=(item.ai_skill??"").trim();if(explicit)return stripPrefix(explicit);const m=/\/twp-([a-z0-9-]+)/.exec(item.prompt??"");return m?.[1]??""}function ageMinutesOf(item,now){for(const raw of[item.started_at,item.updated_at,item.dequeued_at,item.created_at]){if(!raw)continue;const ts=Date.parse(raw);if(Number.
15
- isNaN(ts))continue;return Math.floor((now.getTime()-ts)/6e4)}return null}function exclusiveInflightEntries(groups,opts){const now=opts.now??new Date;const staleMinutes=opts.staleHours*60;const bySkill=new Map;for(const group of groups){for(const item of group.items){const skill=skillOfItem(item);if(!skill)continue;const status=group.status==="mixed"?item.status??"unknown":group.status;const ageMinutes=ageMinutesOf(item,now);if(status==="processing"&&ageMinutes!==null&&ageMinutes>staleMinutes)continue;
16
- const entry={skill,status,runner:item.runner_id??"-",ageMinutes};const prev=bySkill.get(skill);if(!prev||(entry.ageMinutes??-1)>(prev.ageMinutes??-1))bySkill.set(skill,entry)}}return[...bySkill.values()].sort((a,b)=>a.skill.localeCompare(b.skill))}function formatExclusiveEntry(entry){const age=entry.ageMinutes===null?"\u4E0D\u660E":`${entry.ageMinutes}\u5206`;return`${entry.skill} status=${entry.status} runner=${entry.runner} \u7D4C\u904E=${age}`}import path2 from"path";var BUILTIN={primary_rotation:{complex:["claude"],search:["claude"],simple:["claude"]},fallback_chains:{complex:["claude","codex"],search:["codex","gemini","copilot","claude"],simple:["codex","gemini","copilot","claude"]}};function usesBedrock(env){return isBoolishTrue(env.CLAUDE_CODE_USE_BEDROCK)}var DEFAULT_CATEGORY="complex";var EFFORTS=new Set(["low","medium","high","xhigh","max"]);var MAX_COOLDOWN_SEC=3600;var DEFAULT_COOLDOWN_SEC=300;var AI_UNUSABLE_COOLDOWN_SEC=1800;
14
+ return ai==="claude"||!["gemini","codex","copilot"].includes(ai)}import{createHash}from"crypto";import fs2 from"fs";var EXCLUSIVE_SKILL_FLOOR=["support-triage"];function normalizeSkillName(skill){return stripSkillPrefix(skill.trim())}var stripPrefix=normalizeSkillName;function skillOfItem(item){const explicit=(item.ai_skill??"").trim();if(explicit)return stripPrefix(explicit);return skillFromPrompt(item.prompt??"")??""}function ageMinutesOf(item,now){for(const raw of[item.started_at,item.updated_at,item.dequeued_at,item.created_at]){if(!raw)continue;const ts=Date.parse(raw);if(Number.isNaN(ts))continue;return Math.
15
+ floor((now.getTime()-ts)/6e4)}return null}function exclusiveInflightEntries(groups,opts){const now=opts.now??new Date;const staleMinutes=opts.staleHours*60;const bySkill=new Map;for(const group of groups){for(const item of group.items){const skill=skillOfItem(item);if(!skill)continue;const status=group.status==="mixed"?item.status??"unknown":group.status;const ageMinutes=ageMinutesOf(item,now);if(status==="processing"&&ageMinutes!==null&&ageMinutes>staleMinutes)continue;const entry={skill,status,
16
+ runner:item.runner_id??"-",ageMinutes};const prev=bySkill.get(skill);if(!prev||(entry.ageMinutes??-1)>(prev.ageMinutes??-1))bySkill.set(skill,entry)}}return[...bySkill.values()].sort((a,b)=>a.skill.localeCompare(b.skill))}function formatExclusiveEntry(entry){const age=entry.ageMinutes===null?"\u4E0D\u660E":`${entry.ageMinutes}\u5206`;return`${entry.skill} status=${entry.status} runner=${entry.runner} \u7D4C\u904E=${age}`}import path2 from"path";var BUILTIN={primary_rotation:{complex:["claude"],search:["claude"],simple:["claude"]},fallback_chains:{complex:["claude","codex"],search:["codex","gemini","copilot","claude"],simple:["codex","gemini","copilot","claude"]}};function usesBedrock(env){return isBoolishTrue(env.CLAUDE_CODE_USE_BEDROCK)}var DEFAULT_CATEGORY="complex";var EFFORTS=new Set(["low","medium","high","xhigh","max"]);var MAX_COOLDOWN_SEC=3600;var DEFAULT_COOLDOWN_SEC=300;var AI_UNUSABLE_COOLDOWN_SEC=1800;
17
17
  function loadAiConfig(inline,file,workspace){const read=readAiConfigFile(file,workspace);const warnings=read.problem===null?[]:[read.problem.startsWith("ai_config_file \u3092\u8AAD\u3081\u307E\u305B\u3093")?`${read.problem}
18
18
  \u3053\u306E\u72B6\u614B\u3067\u306F\u5168\u30B9\u30AD\u30EB\u304C\u65E2\u5B9A\u30AB\u30C6\u30B4\u30EA\u3067\u8D70\u308A\u307E\u3059\u3002\u78BA\u8A8D: python3 -m json.tool <file>`:read.problem];return{config:new AiConfig(mergeAiConfig(read.file,inline),read.file),warnings}}function readAiConfigFile(file,workspace){if(file===void 0||file.trim()==="")return{file:null,problem:null};const resolved=path2.isAbsolute(file)?file:path2.resolve(workspace,file);try{const parsed=JSON.parse(fs2.readFileSync(
19
19
  resolved,"utf8"));if(parsed===null||typeof parsed!=="object"||Array.isArray(parsed)){return{file:null,problem:`ai_config_file \u304C\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3067\u306F\u3042\u308A\u307E\u305B\u3093: ${resolved}`}}return{file:parsed,problem:null}}catch(err){return{file:null,problem:`ai_config_file \u3092\u8AAD\u3081\u307E\u305B\u3093: ${resolved}\uFF08${err.message}\uFF09`}}}function mergeAiConfig(fromFile,inline,server=null){if(server===null)return{...fromFile??{},...inline??{}};const inlineChains=Object.
@@ -36,4 +36,4 @@ warning:itemWarning};return{value:"",warning:`\u4E0D\u6B63\u306A effort \u5024 '
36
36
  env){const fromEnv=Number.parseInt(env[`AI_COOLDOWN_${ai.toUpperCase()}`]??"",10);if(Number.isInteger(fromEnv)&&fromEnv>0)return fromEnv;const cfg=this.raw.cooldown?.[ai];if(Number.isInteger(cfg)&&(cfg??0)>0)return cfg;const backoff=Number.parseInt(env.RATE_LIMIT_BACKOFF??"",10);return Number.isInteger(backoff)&&backoff>0?backoff:DEFAULT_COOLDOWN_SEC}limitKey(ai,slot){return slot===null||slot===void 0||slot===""?ai:`${ai}@${slot}`}hasCooldownFor(ai,now=Date.now()){for(const[key,until]of this.limitedUntil){
37
37
  if(until<=now)continue;if(key===ai||key.startsWith(`${ai}@`))return true}return false}isRateLimited(ai,now=Date.now(),slot=null){return(this.limitedUntil.get(this.limitKey(ai,slot))??0)>now}markRateLimited(ai,seconds,now=Date.now(),slot=null){const capped=Math.min(Math.max(Math.trunc(seconds),1),MAX_COOLDOWN_SEC);this.limitedUntil.set(this.limitKey(ai,slot),now+capped*1e3);return capped}markAiUnusable(ai,now=Date.now()){this.unusableUntil.set(ai,now+AI_UNUSABLE_COOLDOWN_SEC*1e3);return AI_UNUSABLE_COOLDOWN_SEC}isAiUnusable(ai,now=Date.
38
38
  now()){return(this.unusableUntil.get(ai)??0)>now}minCooldownRemainingSec(now=Date.now()){let min=null;for(const until of this.limitedUntil.values()){if(until<=now)continue;const remaining=Math.ceil((until-now)/1e3);if(min===null||remaining<min)min=remaining}return min}};var HIGH_RISK_LABEL=/本番|リリース|認証|認可|権限|セキュリティ|課金|給与|勤怠計算/;var TIER_ALIASES=new Set(["opus","sonnet","haiku","default"]);function modelFitsRoute(model,env=process.env){if(TIER_ALIASES.
39
- has(model.trim().toLowerCase()))return true;if(model.startsWith("arn:aws:bedrock:"))return usesBedrock(env);const bedrockShaped=/(^|[./])anthropic\./.test(model);return usesBedrock(env)?bedrockShaped:!bedrockShaped}function isUsableModelId(value){return value!==""&&!value.startsWith("-")&&/^[A-Za-z0-9._:\-/[\]]+$/.test(value)}function stripPrefix2(skill){return skill.startsWith("twp-")?skill.slice(4):skill}export{resolveSpawnTarget,spawnSyncResolved,DEFAULT_CLAUDE_LAUNCHER,detectClaudeAutoSwitch,wrapWithAutoSwitch,activeSlotPath,isClaudeAi,normalizeSkillName,skillOfItem,exclusiveInflightEntries,formatExclusiveEntry,usesBedrock,loadAiConfig,reloadAiConfig,CHAIN_KEYS,AiConfig,modelFitsRoute,isUsableModelId};
39
+ has(model.trim().toLowerCase()))return true;if(model.startsWith("arn:aws:bedrock:"))return usesBedrock(env);const bedrockShaped=/(^|[./])anthropic\./.test(model);return usesBedrock(env)?bedrockShaped:!bedrockShaped}function isUsableModelId(value){return value!==""&&!value.startsWith("-")&&/^[A-Za-z0-9._:\-/[\]]+$/.test(value)}function stripPrefix2(skill){return stripSkillPrefix(skill)}export{resolveSpawnTarget,spawnSyncResolved,DEFAULT_CLAUDE_LAUNCHER,detectClaudeAutoSwitch,wrapWithAutoSwitch,activeSlotPath,isClaudeAi,normalizeSkillName,skillOfItem,exclusiveInflightEntries,formatExclusiveEntry,usesBedrock,loadAiConfig,reloadAiConfig,CHAIN_KEYS,AiConfig,modelFitsRoute,isUsableModelId};
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{isValidSkillName,skillDigest}from"./chunk-YJZT3UD3.js";import{describeError}from"./chunk-AT432SCP.js";import{isPrivateProjectId}from"./chunk-GY7KI5E5.js";import{stripTerminalControls}from"./chunk-NHYMHCAT.js";import fs from"fs";import path from"path";var SKILL_REF=/^([ \t]*)\/([a-z][a-z0-9-]*)(?=[ \t\n]|$)([ \t]+[^\n]*)?/gm;function stripFrontmatter(content){if(!content.startsWith("---"))return content;const m=/^---[ \t]*\r?\n[\s\S]*?\r?\n---[ \t]*(?:\r?\n)?/.exec(content);return m===null?content:content.slice(m[0].length)}function referencedSkills(prompt){const out=[];for(const m of prompt.matchAll(SKILL_REF)){const name=m[2]??"";if(!out.includes(name))out.push(name)}return out}function expandServerSkills(prompt,bodies){if(bodies.size===0)return prompt;
3
+ import{isValidSkillName,skillDigest}from"./chunk-YJZT3UD3.js";import{describeError}from"./chunk-SPZ3GBYC.js";import{isPrivateProjectId}from"./chunk-GY7KI5E5.js";import{stripTerminalControls}from"./chunk-NHYMHCAT.js";import fs from"fs";import path from"path";var SKILL_REF=/^([ \t]*)\/([a-z][a-z0-9-]*)(?=[ \t\n]|$)([ \t]+[^\n]*)?/gm;function stripFrontmatter(content){if(!content.startsWith("---"))return content;const m=/^---[ \t]*\r?\n[\s\S]*?\r?\n---[ \t]*(?:\r?\n)?/.exec(content);return m===null?content:content.slice(m[0].length)}function referencedSkills(prompt){const out=[];for(const m of prompt.matchAll(SKILL_REF)){const name=m[2]??"";if(!out.includes(name))out.push(name)}return out}function expandServerSkills(prompt,bodies){if(bodies.size===0)return prompt;
4
4
  return prompt.replace(SKILL_REF,(whole,_indent,name,args)=>{const body=bodies.get(name);if(body===void 0)return whole;return stripFrontmatter(body).replaceAll("$ARGUMENTS",()=>(args??"").trim())})}function prepareSkillOverlay(root,workspace,bodies,provider){const commands=path.join(root,".claude","commands");fs.rmSync(root,{recursive:true,force:true});fs.mkdirSync(commands,{recursive:true});const src=path.join(workspace,".claude","commands");let names=[];try{names=fs.readdirSync(src).filter(f=>f.
5
5
  endsWith(".md"))}catch{}for(const f of names){const from=path.join(src,f);try{if(fs.statSync(from).isFile())fs.copyFileSync(from,path.join(commands,f))}catch{}}for(const[name,body]of bodies){if(!isValidSkillName(name))continue;fs.writeFileSync(path.join(commands,`${name}.md`),body,"utf8")}if(/^[a-z0-9-]+$/.test(provider)){const rel=path.join("scripts","agent-adapters","providers",`${provider}.md`);const from=path.join(workspace,rel);if(fs.existsSync(from)){fs.mkdirSync(path.dirname(path.join(root,
6
6
  rel)),{recursive:true});fs.copyFileSync(from,path.join(root,rel))}}}function unwrap(json,key){if(json===null||typeof json!=="object"||Array.isArray(json))return null;const top=json;const data=top["data"];if(data!==null&&typeof data==="object"&&!Array.isArray(data)&&key in data){return data}return top}function isRevision(v){return typeof v==="number"&&Number.isInteger(v)&&v>=0}function parseSkillList(res){const b=unwrap(res.json,"skills");const raw=b?.["skills"];if(!Array.isArray(raw))return null;
@@ -1,8 +1,8 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{loadDomain}from"./chunk-THOBFX2S.js";import{evaluateQuery}from"./chunk-GFLGXGWE.js";import{renderDocument,renderOutput}from"./chunk-YXVN6OCH.js";import{redactSecretValues,redactSecrets,withDebug}from"./chunk-UFGJSWKU.js";import{JsonBodyWithView}from"./chunk-Q3B65OFC.js";import{parseOperationArgs}from"./chunk-RX5HWI4L.js";import{DEFAULT_MAX_ITEMS,DEFAULT_MAX_PAGES,nextPageNotes,positiveInteger,shellQuote}from"./chunk-MI6HVYR2.js";import{Resolver,requireDefaultProject}from"./chunk-ITRTFBV3.js";
3
+ import{loadDomain}from"./chunk-6OLZMQBK.js";import{JsonBodyWithView}from"./chunk-Q3B65OFC.js";import{evaluateQuery}from"./chunk-GFLGXGWE.js";import{renderDocument,renderOutput}from"./chunk-YXVN6OCH.js";import{redactSecretValues,redactSecrets,withDebug}from"./chunk-UFGJSWKU.js";import{DEFAULT_MAX_ITEMS,DEFAULT_MAX_PAGES,nextPageNotes,positiveInteger,shellQuote}from"./chunk-MI6HVYR2.js";import{parseOperationArgs}from"./chunk-RX5HWI4L.js";import{Resolver,requireDefaultProject}from"./chunk-HNG6MF26.js";
4
4
  import{ResolveError}from"./chunk-HVZUXLQ4.js";import{ApiError,MultipartBody,TwpApiClient,appendQuery}from"./chunk-JA5A6UJ2.js";import{isRecord}from"./chunk-3ZRMMBP5.js";import{ApiRejectedError,ApiResponseError,EXIT_API_CLIENT,EXIT_API_SERVER,EXIT_AUTH,EXIT_FAILURE,EXIT_OK,EXIT_USAGE,EXIT_WAIT_TIMEOUT,NetworkError,UsageError,WaitTimeoutError}from"./chunk-VFPY2A23.js";import{GLOBAL_OPTIONS_HELP}from"./chunk-PECIBNFD.js";import{AuthSession,NotLoggedInError,SessionExpiredError,
5
- loadCredentials}from"./chunk-XNLIEUAW.js";import{httpFetch}from"./chunk-J7QYPKVK.js";import{effectiveApiUrl,loadUserConfig,resolveConfiguredOutput,resolveProfile}from"./chunk-4VZKNEVN.js";import{HELP_TOKEN}from"./chunk-4P7EYEL5.js";import{OUTPUT_FORMATS,resolveOutputFormat}from"./chunk-74BPZOKU.js";import{stringWidth}from"./chunk-UREA4ZIG.js";import{stripTerminalControls}from"./chunk-NHYMHCAT.js";import fs from"fs";import path from"path";var NO_REDACT_FLAG={name:"--no-redact",summary:"\u5FDC\u7B54\u306E\u4F0F\u5B57\u5316\u3092\u89E3\u9664\u3057\u3066\u751F\u306E\u5024\u3092\u51FA\u3059\uFF08\u9375\u306E\u53D7\u3051\u53D6\u308A\u7B49\uFF09",takesValue:false};var NO_REDACT_NOTICE="\u6CE8\u8A18: --no-redact \u306E\u305F\u3081\u51FA\u529B\u3092\u4F0F\u5B57\u5316\u3057\u307E\u305B\u3093\uFF08\u7AEF\u672B\u3068\u30ED\u30B0\u306B\u5E73\u6587\u3067\u6B8B\u308A\u307E\u3059\uFF09\u3002";function withCommonFlags(flags){return flags.some(flag=>flag.
5
+ loadCredentials}from"./chunk-XNLIEUAW.js";import{httpFetch}from"./chunk-J7QYPKVK.js";import{effectiveApiUrl,loadUserConfig,resolveConfiguredOutput,resolveProfile}from"./chunk-4VZKNEVN.js";import{HELP_TOKEN}from"./chunk-KDH3KWPO.js";import{OUTPUT_FORMATS,resolveOutputFormat}from"./chunk-74BPZOKU.js";import{stringWidth}from"./chunk-UREA4ZIG.js";import{stripTerminalControls}from"./chunk-NHYMHCAT.js";import fs from"fs";import path from"path";var NO_REDACT_FLAG={name:"--no-redact",summary:"\u5FDC\u7B54\u306E\u4F0F\u5B57\u5316\u3092\u89E3\u9664\u3057\u3066\u751F\u306E\u5024\u3092\u51FA\u3059\uFF08\u9375\u306E\u53D7\u3051\u53D6\u308A\u7B49\uFF09",takesValue:false};var NO_REDACT_NOTICE="\u6CE8\u8A18: --no-redact \u306E\u305F\u3081\u51FA\u529B\u3092\u4F0F\u5B57\u5316\u3057\u307E\u305B\u3093\uFF08\u7AEF\u672B\u3068\u30ED\u30B0\u306B\u5E73\u6587\u3067\u6B8B\u308A\u307E\u3059\uFF09\u3002";function withCommonFlags(flags){return flags.some(flag=>flag.
6
6
  name===NO_REDACT_FLAG.name)?flags:[...flags,NO_REDACT_FLAG]}function alignedList(entries,indent=" "){const width=entries.reduce((max,[left])=>Math.max(max,stringWidth(left)),0);return entries.map(([left,right])=>`${indent}${left}${" ".repeat(Math.max(0,width-stringWidth(left)))} ${right}`).join("\n")}function subresourcesOf(resource){return resource.subresources??[]}function renderResourceHelp(resource,path2){const subresources=subresourcesOf(resource);const operationSection=resource.operations.length===0?"":`
7
7
  \u64CD\u4F5C:
8
8
  ${alignedList(resource.operations.map(op=>[op.name,op.summary]))}
@@ -0,0 +1,41 @@
1
+ import { createRequire as __twpCreateRequire } from 'node:module';
2
+ const require = __twpCreateRequire(import.meta.url);
3
+ import{killProcessTree}from"./chunk-N2UVRM3Z.js";import{findExecutable,isWindowsDriveAbsolute}from"./chunk-PMOUHEJQ.js";import{createHash}from"crypto";import{spawn}from"child_process";function resolveHookCommand(file,env){if(process.platform!=="win32")return file;if(isWindowsDriveAbsolute(file))return file;return findExecutable(file,{env,platform:"win32"})}var DEFAULT_TIMEOUT_SEC=120;var MAX_OUTPUT_BYTES=512*1024;var HOOK_ID_RE=/^[A-Za-z0-9._:-]{1,64}$/;function validateHooks(raw,configKey="prefetch"){const warnings=[];if(raw===void 0||raw===null)return{hooks:[],warnings};if(!Array.isArray(raw)){return{hooks:[],warnings:[`${configKey} \u306F\u914D\u5217\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002\u30D5\u30C3\u30AF\u306F1\u3064\u3082\u5B9F\u884C\u3057\u307E\u305B\u3093`]}}
4
+ const hooks=[];const seen=new Set;for(const[i,entry]of raw.entries()){if(entry===null||typeof entry!=="object"||Array.isArray(entry)){warnings.push(`${configKey}[${i}] \u304C\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002\u3053\u306E\u30D5\u30C3\u30AF\u306F\u5B9F\u884C\u3057\u307E\u305B\u3093`);continue}const e=entry;const id=typeof e["id"]==="string"?e["id"].trim():"";const command=e["command"];if(id===""){warnings.push(`${configKey}[${i}] \u306B id \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u3053\u306E\u30D5\u30C3\u30AF\u306F\
5
+ \u5B9F\u884C\u3057\u307E\u305B\u3093`);continue}if(!HOOK_ID_RE.test(id)){warnings.push(`${configKey}[${i}] \u306E id '${id}' \u306F64\u6587\u5B57\u4EE5\u4E0B\u306E\u82F1\u6570\u5B57\u3068 . _ : - \u3060\u3051\u3092\u4F7F\u3048\u307E\u3059\u3002\u3053\u306E\u30D5\u30C3\u30AF\u306F\u5B9F\u884C\u3057\u307E\u305B\u3093`);continue}if(seen.has(id)){warnings.push(`${configKey}[${i}] \u306E id '${id}' \u304C\u91CD\u8907\u3057\u3066\u3044\u307E\u3059\u3002\u3053\u306E\u30D5\u30C3\u30AF\u306F\u5B9F\u884C\u3057\u307E\u305B\u3093`);
6
+ continue}if(!Array.isArray(command)||command.length===0||!command.every(c=>typeof c==="string")){warnings.push(`${configKey}[${i}]\uFF08${id}\uFF09\u306E command \u304C\u6587\u5B57\u5217\u306E\u914D\u5217\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002\u3053\u306E\u30D5\u30C3\u30AF\u306F\u5B9F\u884C\u3057\u307E\u305B\u3093`);continue}const timeout=typeof e["timeout"]==="number"&&Number.isFinite(e["timeout"])&&e["timeout"]>0?Math.trunc(e["timeout"]):DEFAULT_TIMEOUT_SEC;seen.add(id);hooks.push({id,
7
+ command,timeout})}return{hooks,warnings}}async function runHook(hook,cwd,env=process.env,allowEmpty=false){const started=Date.now();const[file,...args]=hook.command;if(file===void 0){return{id:hook.id,ok:false,stdout:"",reason:"command \u304C\u7A7A\u3067\u3059",durationMs:0}}return new Promise(resolve=>{const resolved=resolveHookCommand(file,env);if(resolved===null){resolve({id:hook.id,ok:false,stdout:"",reason:`\u5B9F\u884C\u30D5\u30A1\u30A4\u30EB ${file} \u3092 PATH \u4E0A\u3067\u89E3\u6C7A\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08Windows \u3067\u306F bare nam\
8
+ e \u3067\u8D77\u52D5\u3057\u307E\u305B\u3093\uFF09`,failure:"spawn",durationMs:0});return}let child;try{child=spawn(resolved,args,{cwd,env,detached:process.platform!=="win32",stdio:["ignore","pipe","pipe"]})}catch(e){const code=e.code??"spawn \u5931\u6557";resolve({id:hook.id,ok:false,stdout:"",reason:`\u8D77\u52D5\u3067\u304D\u307E\u305B\u3093: ${file} (${code})`,failure:"spawn",durationMs:Date.now()-started});return}let stdout="";let stderr="";let truncated=false;let timedOut=false;const timer=setTimeout(
9
+ ()=>{timedOut=true;killProcessTree(child,"SIGKILL")},(hook.timeout??DEFAULT_TIMEOUT_SEC)*1e3);child.stdout.on("data",c=>{if(stdout.length>=MAX_OUTPUT_BYTES){truncated=true;return}stdout+=c.toString("utf8");if(stdout.length>MAX_OUTPUT_BYTES){stdout=stdout.slice(0,MAX_OUTPUT_BYTES);truncated=true}});child.stderr.on("data",c=>{if(stderr.length<8192)stderr+=c.toString("utf8")});const done=(ok,reason,failure)=>{clearTimeout(timer);resolve({id:hook.id,ok,stdout:truncated?`${stdout}
10
+ \u2026\uFF08\u51FA\u529B\u304C\u4E0A\u9650\u3092\u8D85\u3048\u305F\u305F\u3081\u5207\u308A\u8A70\u3081\u307E\u3057\u305F\uFF09`:stdout,reason,...failure===void 0?{}:{failure},durationMs:Date.now()-started})};child.on("error",e=>done(false,`\u8D77\u52D5\u3067\u304D\u307E\u305B\u3093: ${e.message}`,"spawn"));child.on("close",code=>{if(timedOut)return done(false,`\u30BF\u30A4\u30E0\u30A2\u30A6\u30C8\uFF08${hook.timeout??DEFAULT_TIMEOUT_SEC}\u79D2\uFF09`,"timeout");if(code!==0)return done(false,`\u7D42\u4E86\u30B3\
11
+ \u30FC\u30C9 ${code}${stderr.trim()===""?"":`: ${firstLine(stderr)}`}`,"exit");if(!allowEmpty&&stdout.trim()==="")return done(false,"\u51FA\u529B\u304C\u7A7A\u3067\u3057\u305F","empty");done(true,null)})})}async function runPrefetch(hooks,cwd,log,env=process.env){if(hooks.length===0)return"";const sections=[];for(const hook of hooks){const r=await runHook(hook,cwd,env);if(r.ok){log(` prefetch: ${r.id} \u53D6\u5F97\u5B8C\u4E86\uFF08${Math.round(r.durationMs/1e3)}s\uFF09`);sections.push(`--- pref\
12
+ etch: ${r.id} ---
13
+ ${r.stdout.trim()}`)}else{log(` \u26A0\uFE0F prefetch: ${r.id} \u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08${r.reason}\uFF09`);sections.push(`--- prefetch: ${r.id} ---
14
+ \uFF08\u53D6\u5F97\u306B\u5931\u6557\u3057\u307E\u3057\u305F: ${r.reason}\u3002\u3053\u306E\u60C5\u5831\u306F\u6B20\u3051\u3066\u3044\u307E\u3059\uFF09`)}}return["\u3010\u4E8B\u524D\u53D6\u5F97\u6E08\u307F\u30C7\u30FC\u30BF\u3011","\u4EE5\u4E0B\u306F\u30EB\u30FC\u30D7\u304C\u4E8B\u524D\u306B\u53D6\u5F97\u3057\u305F\u8A08\u753B\u7528\u30C7\u30FC\u30BF\u3067\u3059\u3002\u540C\u3058\u60C5\u5831\u3092\u96C6\u3081\u76F4\u3059\u5FC5\u8981\u306F\u3042\u308A\u307E\u305B\u3093\u3002","\u300C\u53D6\u5F97\u306B\u5931\u6557\u3057\u307E\u3057\u305F\u300D\u3068\u66F8\u304B\u308C\u305F\u7BC0\u3060\u3051\
15
+ \u306F\u6B20\u3051\u3066\u3044\u308B\u306E\u3067\u3001\u5FC5\u8981\u306A\u3089\u305D\u306E\u5206\u3092\u81EA\u5206\u3067\u53D6\u5F97\u3057\u3066\u304F\u3060\u3055\u3044\u3002","",sections.join("\n\n")].join("\n")}async function runPreflight(hooks,cwd,log,env=process.env){if(hooks.length===0)return"";const sections=[];for(const hook of hooks){const r=await runHook(hook,cwd,env,true);if(r.ok){log(` preflight: ${r.id} \u78BA\u8A8D\u5B8C\u4E86\uFF08${Math.round(r.durationMs/1e3)}s\uFF09`);if(r.stdout.
16
+ trim()!=="")sections.push(`--- preflight: ${r.id} ---
17
+ ${r.stdout.trim()}`)}else{log(` \u26A0\uFE0F preflight: ${r.id} \u3092\u78BA\u8A8D\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08${r.reason}\uFF09`);sections.push(`--- preflight: ${r.id} ---
18
+ \uFF08\u78BA\u8A8D\u306B\u5931\u6557\u3057\u307E\u3057\u305F: ${r.reason}\u3002\u3053\u306E\u524D\u63D0\u6761\u4EF6\u306F\u4E0D\u660E\u3067\u3059\uFF09`)}}if(sections.length===0)return"";return["\u3010\u74B0\u5883\u306E\u524D\u63D0\u6761\u4EF6\uFF08preflight\uFF09\u3011","\u4EE5\u4E0B\u306F\u3053\u306E\u30B5\u30A4\u30AF\u30EB\u306E\u5192\u982D\u3067\u78BA\u8A8D\u3057\u305F\u74B0\u5883\u60C5\u5831\u3067\u3059\u3002\u8A08\u753B\u3068\u5404\u30A2\u30A4\u30C6\u30E0\u306E\u5B9F\u884C\u3067\u8003\u616E\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
19
+ "\u5931\u6557\u3057\u305F\u30D5\u30C3\u30AF\u304C\u3042\u3063\u3066\u3082\u30B5\u30A4\u30AF\u30EB\u306F\u7D99\u7D9A\u3057\u307E\u3059\u3002\u5FC5\u8981\u306A\u62C5\u4FDD\u304C\u53D6\u308C\u306A\u3044\u5834\u5408\u306F\u3001\u305D\u306E\u4E8B\u5B9F\u3092\u660E\u8A18\u3057\u3066\u304F\u3060\u3055\u3044\u3002","",sections.join("\n\n")].join("\n")}function firstLine(s){return(s.trim().split("\n")[0]??"").slice(0,200)}function formatHookWiring(prefetch,preflight){return`LOOP_HOOKS ${formatHookIds(prefetch,
20
+ preflight)}`}function formatHookIds(prefetch,preflight){const ids=hooks=>hooks.map(h=>h.id).join(",");return`prefetch=[${ids(prefetch)}] preflight=[${ids(preflight)}]`}var CAPACITY_SCHEMA="twp.capacity/v1";var CAPACITY_MAX_BYTES=8192;var CAPACITY_FORMATS=[CAPACITY_SCHEMA,"claude_auto_switch/v1"];var IDENTITY_MODES=["masked","none","full"];var DEFAULT_CAPACITY_PROBE={format:CAPACITY_SCHEMA,interval:300,timeout:15,identity:"masked"};var LOCAL_HEAD=1;var LOCAL_TAIL=2;var DOMAIN_HEAD=2;var DOMAIN_TAIL=2;var COLLAPSED="***";function maskPart(value,head,tail){if(value.length<head+tail+1)return null;return`${value.slice(0,head)}${"*".repeat(value.length-head-tail)}${value.
21
+ slice(value.length-tail)}`}function maskEmail(raw){const value=raw.trim();const at=value.lastIndexOf("@");if(at<0)return maskPart(value,LOCAL_HEAD,LOCAL_TAIL)??COLLAPSED;const local=value.slice(0,at);const domain=value.slice(at+1);const maskedLocal=maskPart(local,LOCAL_HEAD,LOCAL_TAIL);const maskedDomain=maskPart(domain,DOMAIN_HEAD,DOMAIN_TAIL);if(maskedLocal===null||maskedDomain===null)return`${COLLAPSED}@${COLLAPSED}`;return`${maskedLocal}@${maskedDomain}`}function identityHash(raw){return`sha\
22
+ 256:${createHash("sha256").update(raw.trim()).digest("hex").slice(0,12)}`}function applyIdentity(slot,raw,mode){if(mode==="none")return;if(typeof raw!=="string"||raw.trim()==="")return;slot.identity_masked=mode==="full"?raw.trim():maskEmail(raw);slot.identity_hash=identityHash(raw)}var CAS_METRIC_LABELS={five_hour:"5\u6642\u9593\u67A0",seven_day:"\u9031\u9593",weekly_fable:"\u9031\u9593(Fable)"};function isRecord(v){return typeof v==="object"&&v!==null&&!Array.isArray(v)}function num(v){return typeof v===
23
+ "number"&&Number.isFinite(v)?v:void 0}function str(v){return typeof v==="string"&&v.trim()!==""?v.trim():void 0}function epochToIso(v){const n=num(v);if(n===void 0||n<=0)return void 0;const d=new Date(n*1e3);return Number.isNaN(d.getTime())?void 0:d.toISOString()}function toSlotState(raw,eligible){const s=str(raw);if(s==="needs_login")return"needs_login";if(eligible===false)return"excluded";if(s==="over_ceiling")return"excluded";if(s===void 0)return"unknown";return"usable"}function newestMeasuredAt(accounts){
24
+ if(!Array.isArray(accounts))return null;let newest=null;for(const entry of accounts){if(!isRecord(entry))continue;const at=num(entry["metrics_fetched_at"]);if(at===void 0||at<=0||epochToIso(at)===void 0)continue;if(newest===null||at>newest)newest=at}return newest}function adaptClaudeAutoSwitch(raw,identity){if(!isRecord(raw)||!Array.isArray(raw["accounts"]))return null;const slots=[];for(const entry of raw["accounts"]){if(!isRecord(entry))continue;const name=str(entry["name"]);if(name===void 0)continue;
25
+ const metrics=[];if(isRecord(entry["metrics"])){for(const[key,m]of Object.entries(entry["metrics"])){if(!isRecord(m))continue;const metric={key};const label=CAS_METRIC_LABELS[key];if(label!==void 0)metric.label=label;const utilization=num(m["utilization"]);if(utilization!==void 0)metric.utilization=utilization;const threshold=num(m["threshold"]);if(threshold!==void 0)metric.threshold=threshold;const ceiling=num(m["ceiling"]);if(ceiling!==void 0)metric.ceiling=ceiling;const resets=epochToIso(m["r\
26
+ esets_at"]);if(resets!==void 0)metric.resets_at=resets;metrics.push(metric)}}const slot={name,state:toSlotState(entry["state"],entry["eligible"]),metrics};const stateLabel=str(entry["state_label"]);if(stateLabel!==void 0)slot.state_label=stateLabel;if(typeof entry["eligible"]==="boolean")slot.eligible=entry["eligible"];if(isRecord(entry["relogin"])){const deadline=str(entry["relogin"]["deadline_iso"])??epochToIso(entry["relogin"]["deadline"]);if(deadline!==void 0)slot.relogin_deadline=deadline}applyIdentity(
27
+ slot,entry["email"],identity);slots.push(slot)}const report={schema:CAPACITY_SCHEMA,provider:"claude",slots};const generatedAt=epochToIso(newestMeasuredAt(raw["accounts"]))??epochToIso(raw["generated_at"]);if(generatedAt!==void 0)report.generated_at=generatedAt;const active=str(raw["active"]);if(active!==void 0)report.active_slot=active;return report}function adaptCanonical(raw,identity){if(!isRecord(raw))return null;if(str(raw["schema"])!==CAPACITY_SCHEMA)return null;const report={...raw};if(identity===
28
+ "none"&&Array.isArray(report.slots)){report.slots=report.slots.map(slot=>{const stripped={...slot};delete stripped.identity_masked;delete stripped.identity_hash;return stripped})}return report}function summarize(slots){const s={total:slots.length,usable:0,excluded:0,needs_login:0,unknown:0};for(const slot of slots){const state=isRecord(slot)?slot.state:void 0;if(state==="usable"||state==="excluded"||state==="needs_login")s[state]+=1;else s.unknown+=1}return s}function capacityError(reason){return JSON.
29
+ stringify({schema:CAPACITY_SCHEMA,error:"probe_failed",reason})}function encodeCapacity(report){const withSummary={...report};if(Array.isArray(withSummary.slots)&&withSummary.summary===void 0){withSummary.summary=summarize(withSummary.slots)}const full=JSON.stringify(withSummary);if(Buffer.byteLength(full,"utf8")<=CAPACITY_MAX_BYTES)return full;const compact={...withSummary,slots_omitted:true};delete compact.slots;const trimmed=JSON.stringify(compact);if(Buffer.byteLength(trimmed,"utf8")<=CAPACITY_MAX_BYTES)
30
+ return trimmed;return capacityError("payload_too_large")}function parseCapacityProbe(value){const warnings=[];if(value===void 0||value===null)return{probe:null,warnings};if(!isRecord(value)){return{probe:null,warnings:["capacity_probe \u306F\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002\u67A0\u306E\u89B3\u6E2C\u306F\u884C\u3044\u307E\u305B\u3093"]}}const rawCommand=value["command"];if(!Array.isArray(rawCommand)||rawCommand.length===0){return{probe:null,
31
+ warnings:["capacity_probe.command \u306F1\u3064\u4EE5\u4E0A\u306E\u6587\u5B57\u5217\u306E\u914D\u5217\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002\u67A0\u306E\u89B3\u6E2C\u306F\u884C\u3044\u307E\u305B\u3093"]}}for(const v of rawCommand){if(typeof v!=="string"||v.trim()===""){return{probe:null,warnings:["capacity_probe.command \u306E\u8981\u7D20\u306F\u7A7A\u3067\u306A\u3044\u6587\u5B57\u5217\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002\u67A0\u306E\u89B3\u6E2C\u306F\u884C\u3044\u307E\u305B\u3093"]}}}
32
+ let format=DEFAULT_CAPACITY_PROBE.format;const rawFormat=value["format"];if(rawFormat!==void 0&&rawFormat!==null){if(typeof rawFormat==="string"&&CAPACITY_FORMATS.includes(rawFormat.trim())){format=rawFormat.trim()}else{warnings.push(`capacity_probe.format \u306F ${CAPACITY_FORMATS.join(" / ")} \u306E\u3044\u305A\u308C\u304B\u3067\u3059\uFF08\u65E2\u5B9A '${DEFAULT_CAPACITY_PROBE.format}' \u3092\u4F7F\u3044\u307E\u3059\uFF09`)}}let identity=DEFAULT_CAPACITY_PROBE.identity;const rawIdentity=value["\
33
+ identity"];if(rawIdentity!==void 0&&rawIdentity!==null){if(typeof rawIdentity==="string"&&IDENTITY_MODES.includes(rawIdentity.trim())){identity=rawIdentity.trim()}else{warnings.push(`capacity_probe.identity \u306F ${IDENTITY_MODES.join(" / ")} \u306E\u3044\u305A\u308C\u304B\u3067\u3059\uFF08\u65E2\u5B9A '${DEFAULT_CAPACITY_PROBE.identity}' \u3092\u4F7F\u3044\u307E\u3059\uFF09`)}}const interval=intField(value["interval"],"interval",DEFAULT_CAPACITY_PROBE.interval,warnings);const timeout=intField(
34
+ value["timeout"],"timeout",DEFAULT_CAPACITY_PROBE.timeout,warnings,TIMEOUT_MAX_SEC);return{probe:{command:rawCommand.map(v=>v.trim()),format,interval,timeout,identity},warnings}}var TIMEOUT_MAX_SEC=60;function intField(value,key,fallback,warnings,max){if(value===void 0||value===null||value==="")return fallback;const n=typeof value==="number"?value:Number.parseInt(String(value),10);if(Number.isInteger(n)&&n>=1){if(max!==void 0&&n>max){warnings.push(`capacity_probe.${key} \u306F ${max} \u4EE5\u4E0B\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\
35
+ \uFF08${max} \u306B\u4E38\u3081\u307E\u3059\u3002heartbeat \u306E\u9001\u4FE1\u3092\u5F85\u305F\u305B\u308B\u6642\u9593\u3067\u3059\uFF09`);return max}return n}warnings.push(`capacity_probe.${key} \u306F1\u4EE5\u4E0A\u306E\u6574\u6570\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u65E2\u5B9A ${fallback} \u3092\u4F7F\u3044\u307E\u3059\uFF09`);return fallback}function classify(outcome){switch(outcome.failure){case"timeout":return"timeout";case"spawn":return"spawn_failed";case"empty":
36
+ return"empty_output";default:return"exit_status"}}function failed(reason){return{payload:capacityError(reason),ok:false}}async function probeCapacityOutcome(probe,cwd,log,env){const outcome=await runHook({id:"capacity_probe",command:probe.command,timeout:probe.timeout},cwd,env);if(!outcome.ok){const reason=classify(outcome);log(` \u26A0\uFE0F capacity_probe \u306B\u5931\u6557\u3057\u307E\u3057\u305F\uFF08${reason}: ${(outcome.reason??"\u7406\u7531\u4E0D\u660E").slice(0,200)}\uFF09\u3002\u7D9A\u884C\u3057\u307E\u3059`);return failed(reason)}let parsed;
37
+ try{parsed=JSON.parse(outcome.stdout)}catch{log(" \u26A0\uFE0F capacity_probe \u306E\u51FA\u529B\u3092 JSON \u3068\u3057\u3066\u89E3\u91C8\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\u3002\u7D9A\u884C\u3057\u307E\u3059");return failed("invalid_json")}try{const report=probe.format==="claude_auto_switch/v1"?adaptClaudeAutoSwitch(parsed,probe.identity):adaptCanonical(parsed,probe.identity);if(report===null){log(` \u26A0\uFE0F capacity_probe \u306E\u51FA\u529B\u304C ${probe.format} \u306E\u60F3\u5B9A\u3068\u9055\u3044\u307E\u3059\u3002\
38
+ \u7D9A\u884C\u3057\u307E\u3059`);return failed("unexpected_shape")}const payload=encodeCapacity(report);const ok=report.error===void 0&&JSON.parse(payload).error===void 0;return{payload,ok}}catch{log(` \u26A0\uFE0F capacity_probe \u306E\u51FA\u529B\u3092 ${probe.format} \u3068\u3057\u3066\u5909\u63DB\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\u3002\u7D9A\u884C\u3057\u307E\u3059`);return failed("unexpected_shape")}}var REUSE_LAST_SUCCESS_MS=30*60*1e3;var CapacityReporter=class{constructor(probe,cwd,log,env=process.
39
+ env,now=()=>Date.now()){this.probe=probe;this.cwd=cwd;this.log=log;this.env=env;this.now=now}probe;cwd;log;env;now;cached=null;lastSuccess=null;lastSuccessAt=0;lastProbedAt=0;pending=false;running=false;async refreshIfDue(){const at=this.now();if(this.cached!==null&&at-this.lastProbedAt<this.probe.interval*1e3)return;await this.refresh()}async refresh(){if(this.running)return;this.running=true;try{const outcome=await probeCapacityOutcome(this.probe,this.cwd,this.log,this.env);const at=this.now();
40
+ if(outcome.ok){this.lastSuccess=outcome.payload;this.lastSuccessAt=at}const reuse=!outcome.ok&&this.lastSuccess!==null&&at-this.lastSuccessAt<REUSE_LAST_SUCCESS_MS;this.cached=reuse?this.lastSuccess:outcome.payload;if(reuse){this.log(" \u76F4\u524D\u306B\u53D6\u5F97\u3067\u304D\u305F\u67A0\u60C5\u5831\u3092\u9001\u308A\u307E\u3059\uFF08\u4E00\u6642\u7684\u306A\u5931\u6557\u3068\u3057\u3066\u6271\u3044\u307E\u3059\uFF09")}this.lastProbedAt=this.now();this.pending=true}finally{this.running=false}}take(){
41
+ if(!this.pending||this.cached===null)return null;this.pending=false;return this.cached}rearm(){if(this.cached!==null)this.pending=true}};export{validateHooks,runHook,runPrefetch,runPreflight,formatHookWiring,formatHookIds,capacityError,parseCapacityProbe,probeCapacityOutcome,REUSE_LAST_SUCCESS_MS,CapacityReporter};
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{salesFeatureDenied}from"./chunk-RWR7OHVP.js";import{featureLicenseGuidance}from"./chunk-5LPELULJ.js";import{repeatedValues}from"./chunk-RX5HWI4L.js";import{LIST_PAGING_HELP,PAGE_NUMBER_LIST_FLAGS,envelopePaging,nonEmpty,positiveInteger}from"./chunk-MI6HVYR2.js";import{charCount,readBody}from"./chunk-6LSQCOCJ.js";import{isExactNumericId}from"./chunk-ITRTFBV3.js";import{ApiError}from"./chunk-JA5A6UJ2.js";import{requireResolved,withResolved}from"./chunk-PS5QFKHB.js";
3
+ import{salesFeatureDenied}from"./chunk-DAOC7VRM.js";import{featureLicenseGuidance}from"./chunk-WMEGP2BT.js";import{LIST_PAGING_HELP,PAGE_NUMBER_LIST_FLAGS,envelopePaging,nonEmpty,positiveInteger}from"./chunk-MI6HVYR2.js";import{repeatedValues}from"./chunk-RX5HWI4L.js";import{charCount,readBody}from"./chunk-6LSQCOCJ.js";import{isExactNumericId}from"./chunk-HNG6MF26.js";import{ApiError}from"./chunk-JA5A6UJ2.js";import{requireResolved,withResolved}from"./chunk-PS5QFKHB.js";
4
4
  import{isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiRejectedError,ApiResponseError,NetworkError,UsageError}from"./chunk-VFPY2A23.js";import{NotLoggedInError,SessionExpiredError}from"./chunk-XNLIEUAW.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
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
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"};