@tocca-systems/twp-cli 0.64.0 → 0.65.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 (98) hide show
  1. package/CHANGELOG.public.md +12 -0
  2. package/README.md +69 -4
  3. package/dist/{agent-UAOZYMQM.js → agent-HM4FHCJT.js} +1 -1
  4. package/dist/{agent-loop-GPPUR2WD.js → agent-loop-VC47FGPR.js} +2 -2
  5. package/dist/{ai-dispatch-FZDFJ4TN.js → ai-dispatch-GN5ZQPHC.js} +2 -2
  6. package/dist/analysis-NEZXCJGT.js +5 -0
  7. package/dist/{announcement-ASKS53LL.js → announcement-BEPIDOMO.js} +1 -1
  8. package/dist/{api-command-N2OJNJBC.js → api-command-HP3ABNDG.js} +4 -4
  9. package/dist/{app-QA2HKG6E.js → app-C4TUNEAO.js} +4 -4
  10. package/dist/{attendance-correct-KBNPGFGR.js → attendance-correct-ZEWRXHUU.js} +2 -2
  11. package/dist/{attendance-lists-C7TO3GQ2.js → attendance-lists-BXAHFZYY.js} +2 -2
  12. package/dist/{backlog-AWOTTGPB.js → backlog-UD226SVD.js} +38 -28
  13. package/dist/{budget-Z6ILL7AU.js → budget-6HOZNG3E.js} +2 -2
  14. package/dist/capacity-report-command-A6RYG2NV.js +15 -0
  15. package/dist/{chunk-234WHKGS.js → chunk-2G6ZZPME.js} +2 -2
  16. package/dist/{chunk-LAAKI3GS.js → chunk-5AQ2JPIS.js} +1 -1
  17. package/dist/{chunk-RWR7OHVP.js → chunk-AYE4DF6J.js} +1 -1
  18. package/dist/{chunk-4CR64SNH.js → chunk-BTN4M7Y5.js} +2 -2
  19. package/dist/{chunk-S5DEP2HA.js → chunk-BXTAAF5F.js} +1 -1
  20. package/dist/{chunk-2B7A3OY7.js → chunk-CGHGQAEM.js} +14 -52
  21. package/dist/{chunk-XPPT3MUY.js → chunk-ENVASCZU.js} +2 -2
  22. package/dist/{chunk-PIB6MGG5.js → chunk-FAHDBWW2.js} +1 -1
  23. package/dist/{chunk-NQWTPHUO.js → chunk-FBBKRVVS.js} +1 -1
  24. package/dist/{chunk-RROCQRRY.js → chunk-FTAKYID7.js} +1 -1
  25. package/dist/{chunk-JYCJ4N6T.js → chunk-G26GIBRL.js} +1 -1
  26. package/dist/chunk-G4TZFGNN.js +41 -0
  27. package/dist/{chunk-5LPELULJ.js → chunk-G6RLNOIZ.js} +1 -1
  28. package/dist/{chunk-NXWXTUU6.js → chunk-RSATLT5H.js} +1 -1
  29. package/dist/{chunk-VV4GTQ2L.js → chunk-SCU74Z4U.js} +16 -13
  30. package/dist/chunk-SPZ3GBYC.js +16 -0
  31. package/dist/{chunk-QEWCTKPV.js → chunk-UODNIEO2.js} +1 -1
  32. package/dist/chunk-UUP4X3WH.js +97 -0
  33. package/dist/{chunk-RZ2NZE4U.js → chunk-WG6NCT4L.js} +18 -17
  34. package/dist/{chunk-FITASHOM.js → chunk-WHCMWXLC.js} +2 -2
  35. package/dist/{chunk-UIHNYBME.js → chunk-XNOZJ6T2.js} +1 -1
  36. package/dist/{chunk-6PQO3AYP.js → chunk-Y2J4M2MG.js} +1 -1
  37. package/dist/chunk-YASL34FY.js +11 -0
  38. package/dist/chunk-YYURQG4E.js +4 -0
  39. package/dist/{chunk-FDRXS6ZU.js → chunk-Z2I5BGXV.js} +1 -1
  40. package/dist/{chunk-YKI7NYBD.js → chunk-ZJW3GBE5.js} +57 -18
  41. package/dist/{chunk-ITRTFBV3.js → chunk-ZSPWHEBL.js} +52 -49
  42. package/dist/cli.js +72 -10
  43. package/dist/{commands-HK7DUMUJ.js → commands-2FOGOL65.js} +97 -149
  44. package/dist/{commands-WIQVCMQE.js → commands-EK3EYLQH.js} +1 -1
  45. package/dist/{company-YPDJZ3SE.js → company-MUGKJNY3.js} +2 -2
  46. package/dist/{completion-7RHQKR5U.js → completion-DGPGHQNL.js} +4 -3
  47. package/dist/{contract-2Y5VN3TR.js → contract-DJJQBAWX.js} +2 -2
  48. package/dist/{department-K4EFC6NW.js → department-RMZ72N6B.js} +1 -1
  49. package/dist/{deposit-NTLHIMJL.js → deposit-45Y3POXT.js} +1 -1
  50. package/dist/{estimate-C5LUNIWR.js → estimate-HTAF6FZT.js} +3 -3
  51. package/dist/{evaluation-ZWUHSENB.js → evaluation-J634U7JQ.js} +1 -1
  52. package/dist/{expense-BXJ7QYMP.js → expense-EVNQ653C.js} +1 -1
  53. package/dist/fiscal-year-MVOGDAIP.js +17 -0
  54. package/dist/{inquiry-KHPPTYN6.js → inquiry-XO5R47OO.js} +1 -1
  55. package/dist/{invoice-VV2NT4A3.js → invoice-WE2SOMYN.js} +3 -3
  56. package/dist/{job-title-RCSL5Y2Z.js → job-title-3CGRQILF.js} +1 -1
  57. package/dist/{knowledge-BLU6RHS5.js → knowledge-X3FGXIBL.js} +1 -1
  58. package/dist/{leave-RJBCHZCQ.js → leave-IFYBLQBF.js} +3 -3
  59. package/dist/{logout-guard-GQBF3GQH.js → logout-guard-S2PVXK4V.js} +1 -1
  60. package/dist/{media-OIAOW546.js → media-X32Y2MOY.js} +3 -3
  61. package/dist/{notification-KPMGELOR.js → notification-MHYSQKYZ.js} +1 -1
  62. package/dist/{oneshot-OWEBFX5O.js → oneshot-VL45DNR7.js} +1 -1
  63. package/dist/{outlook-AAS5DXYQ.js → outlook-YG7GFF44.js} +1 -1
  64. package/dist/{plan-submit-AWMD7XOY.js → plan-submit-CUVVYDTN.js} +2 -1
  65. package/dist/{position-NY5LRELH.js → position-6UC7X2BJ.js} +1 -1
  66. package/dist/{project-4MEGZ326.js → project-LG47ZCEZ.js} +1 -1
  67. package/dist/{prospect-7D2WK56K.js → prospect-FEU3WQYN.js} +2 -2
  68. package/dist/{purchase-S7W67LJP.js → purchase-44B2NOOB.js} +3 -3
  69. package/dist/{receivable-GFJTEELC.js → receivable-NQNZ2B6B.js} +1 -1
  70. package/dist/{redmine-P3EMFFHY.js → redmine-T3JDIH37.js} +1 -1
  71. package/dist/{registry-GRRRT3I6.js → registry-LBL4AOZW.js} +1 -1
  72. package/dist/{report-FUIVLC7B.js → report-GJK2YXVO.js} +1 -1
  73. package/dist/{run-LSWFO4IY.js → run-RLV6W5JA.js} +2 -2
  74. package/dist/{sales-ai-review-P36TTQRO.js → sales-ai-review-PUJCOMP6.js} +1 -1
  75. package/dist/{sales-master-3CGHEFKF.js → sales-master-GRR4WKLO.js} +3 -3
  76. package/dist/{sales-numbering-3M2C2MAI.js → sales-numbering-IUYAABSM.js} +1 -1
  77. package/dist/{schedule-command-R5KTFAVZ.js → schedule-command-ZX5WNSAC.js} +1 -1
  78. package/dist/{search-U3QNPR4D.js → search-N5UE5CUL.js} +1 -1
  79. package/dist/segment-FQHY6DVH.js +6 -0
  80. package/dist/server-settings-77MPN3UN.js +3 -0
  81. package/dist/{server-skills-IFTDV3IQ.js → server-skills-KX236POI.js} +1 -1
  82. package/dist/{setup-MUPUY2AX.js → setup-PF2VH2TW.js} +1 -1
  83. package/dist/{skill-C4TGG7SH.js → skill-PWCJCIQO.js} +1 -1
  84. package/dist/{supplier-payment-KG57PNWJ.js → supplier-payment-HTENSEXJ.js} +2 -2
  85. package/dist/{support-BRVAJ7IH.js → support-DOWAY63P.js} +1 -1
  86. package/dist/{task-RYBYPM4N.js → task-OMYFPWQZ.js} +3 -3
  87. package/dist/{teams-GPJ6HMIX.js → teams-AUFHZRDH.js} +1 -1
  88. package/dist/{user-3DE46776.js → user-C7UKUPGT.js} +2 -2
  89. package/dist/user-contract-type-DO576EHJ.js +32 -0
  90. package/dist/{worker-agent-XCJGZHMT.js → worker-agent-OBYRYPLC.js} +1 -1
  91. package/dist/{workflow-MMEOWZJC.js → workflow-C2BEVHQ2.js} +1 -1
  92. package/package.json +1 -1
  93. package/dist/analysis-RKWGO7UY.js +0 -4
  94. package/dist/chunk-4P7EYEL5.js +0 -4
  95. package/dist/chunk-AT432SCP.js +0 -15
  96. package/dist/chunk-QHX5YFMM.js +0 -23
  97. package/dist/chunk-THOBFX2S.js +0 -10
  98. 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-SCU74Z4U.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-ZSPWHEBL.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};
@@ -16,52 +16,55 @@ env);const fromProfile=usable(user.profiles?.[profileName]?.project);if(fromProf
16
16
  const ttl=options.ttlMs??DEFAULT_TTL_MS;const now=(options.now??Date.now)();if(Math.abs(now-fetchedAt)>ttl)return null;return parsed.value}function writeCache(key,value,options={}){const env=options.env??process.env;const dir=cacheDir(env);const file=cacheFilePath(key,env);const body={version:CACHE_VERSION,key:{profile:key.profile,scope:key.scope,...key.project!==void 0?{project:key.project}:{}},fetched_at:new Date((options.now??Date.now)()).toISOString(),value};if(!isCacheLocationTrusted(env))return;
17
17
  const tmp=`${file}.${process.pid}.tmp`;try{fs.mkdirSync(dir,{recursive:true,mode:448});fs.writeFileSync(tmp,`${JSON.stringify(body)}
18
18
  `,{mode:384});fs.renameSync(tmp,file)}catch{try{fs.rmSync(tmp,{force:true})}catch{}}}function removeCache(key,options={}){const env=options.env??process.env;if(!isCacheLocationTrusted(env))return;try{fs.rmSync(cacheFilePath(key,env),{force:true})}catch{}}var SELF_REF="me";var PRIVATE_TASKS_PATH="/api/v2/tasks/private";var PRIVATE_MASTERS_CACHE_KEY="__private__";var BACKLOG_SPACES_CACHE_KEY="__backlog__";var REDMINE_SERVERS_CACHE_KEY="__redmine__";var REDMINE_SCOPE_LABEL="\u767B\u9332\u6E08\u307F\u306E Redmine \u63A5\u7D9A\u5148";var MS365_TEAMS_CACHE_KEY="__ms365__";var MS365_SCOPE_LABEL="\u53C2\u52A0\u3057\u3066\u3044\u308B Teams";var MS365_RESOLVE_MAX_PAGES=20;var BACKLOG_SCOPE_LABEL="\u3053\u306E\u63A5\u7D9A\u5148";var BACKLOG_PROJECT_SCOPE_LABEL="\
19
- \u3053\u306E Backlog \u30D7\u30ED\u30B8\u30A7\u30AF\u30C8";var PRIVATE_SCOPE_LABEL="\u500B\u4EBA\u30BF\u30B9\u30AF";var TENANT_CACHE_KEY="__tenant__";var TENANT_SCOPE_LABEL="\u3053\u306E\u30C6\u30CA\u30F3\u30C8";var ADMIN_USERS_LIST_PATH="/api/v2/admin/users/list";var PROJECT_MEMBERS_LIMIT=1e4;var DEPARTMENTS_PATH="/api/v2/organization/departments";var POSITIONS_PATH="/api/v2/organization/positions";var JOB_TITLES_PATH="/api/v2/organization/job-titles";var PROCESS_MASTERS_PATH="/api/v2/project/p\
20
- rocesses";var INQUIRY_CATEGORIES_PATH="/api/v2/inquiries/categories";var SUPPORTS_PATH="/api/v2/supports";var SUPPORT_CATEGORIES_PATH="/api/v2/supports/categories";var NOTIFICATIONS_PATH="/api/v2/notifications";var ANNOUNCEMENTS_PATH="/api/v2/announcements";var WORKER_AGENTS_PATH="/api/v2/worker-agents";var AGENT_SESSIONS_PATH="/api/v2/agent/sessions";var AGENT_REPOSITORIES_PATH="/api/v2/agent/repositories";var NOTIFICATION_COUNT_MAX_PAGES=20;var NOTIFICATION_COUNT_PAGE_LIMIT=100;var WORKFLOWS_PATH="\
21
- /api/v2/workflows";var REPORTS_PATH="/api/v2/reports";var ATTENDANCE_REPORTS_PATH="/api/v2/attendance/reports";var ATTENDANCE_REPORT_MASTER_PATHS={categories:"/api/v2/attendance/report-categories",reasons:"/api/v2/attendance/report-reasons",details:"/api/v2/attendance/report-reason-details"};var SALES_ESTIMATES_PATH="/api/v2/sales/estimates";var SALES_INVOICES_PATH="/api/v2/sales/invoices";var SALES_CONTRACTS_PATH="/api/v2/sales/contracts";var SALES_INVOICE_AUTO_TEMPLATES_PATH="/api/v2/sales/inv\
22
- oice-auto-templates";var SALES_DEPOSITS_PATH="/api/v2/sales/deposits";var SALES_PURCHASES_PATH="/api/v2/sales/purchases";var SALES_SUPPLIER_PAYMENTS_PATH="/api/v2/sales/supplier-payments";var SALES_SUPPLIER_PAYMENT_SCHEDULES_PATH="/api/v2/sales/supplier-payment-schedules";var SALES_BUSINESS_PLACES_PATH="/api/v2/sales/business-places";var SALES_PAYEES_PATH="/api/v2/sales/payees";var SALES_SEAL_IMPRESSIONS_PATH="/api/v2/sales/seal-impressions";var SALES_PURCHASE_AI_MAPPINGS_PATH="/api/v2/sales/pur\
23
- chase-ai-field-mappings";var SALES_ESTIMATE_NO_RULES_PATH="/api/v2/sales/estimate-no-rules";var SALES_INVOICE_NO_RULES_PATH="/api/v2/sales/invoice-no-rules";var SALES_PURCHASE_NO_RULES_PATH="/api/v2/sales/purchase-no-rules";var SALES_ESTIMATE_FORMATS_PATH="/api/v2/sales/estimate-formats";var SALES_ROUNDING_SETTING_PATH="/api/v2/sales/rounding-setting";var SALES_RECORD_KINDS={estimate:{path:SALES_ESTIMATES_PATH,label:"\u898B\u7A4D"},invoice:{path:SALES_INVOICES_PATH,label:"\u8ACB\u6C42"},contract:{
24
- path:SALES_CONTRACTS_PATH,label:"\u53D6\u5F15\u5951\u7D04"},"invoice-auto-template":{path:SALES_INVOICE_AUTO_TEMPLATES_PATH,label:"\u81EA\u52D5\u8ACB\u6C42\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8"},deposit:{path:SALES_DEPOSITS_PATH,label:"\u5165\u91D1"},purchase:{path:SALES_PURCHASES_PATH,label:"\u4ED5\u5165"},"supplier-payment":{path:SALES_SUPPLIER_PAYMENTS_PATH,label:"\u652F\u6255"},"supplier-payment-schedule":{path:SALES_SUPPLIER_PAYMENT_SCHEDULES_PATH,label:"\u652F\u6255\u5148\u30DE\u30B9\u30BF"},
25
- "business-place":{path:SALES_BUSINESS_PLACES_PATH,label:"\u4E8B\u696D\u6240"},payee:{path:SALES_PAYEES_PATH,label:"\u632F\u8FBC\u5148"},"seal-impression":{path:SALES_SEAL_IMPRESSIONS_PATH,label:"\u5370\u5F71"},"purchase-ai-mapping":{path:SALES_PURCHASE_AI_MAPPINGS_PATH,label:"\u4ED5\u5165AI\u30DE\u30C3\u30D4\u30F3\u30B0"},"estimate-no-rule":{path:SALES_ESTIMATE_NO_RULES_PATH,label:"\u898B\u7A4D\u756A\u53F7\u30EB\u30FC\u30EB"},"invoice-no-rule":{path:SALES_INVOICE_NO_RULES_PATH,label:"\u8ACB\u6C42\u756A\u53F7\u30EB\u30FC\u30EB"},
26
- "purchase-no-rule":{path:SALES_PURCHASE_NO_RULES_PATH,label:"\u4ED5\u5165\u756A\u53F7\u30EB\u30FC\u30EB"},"estimate-format":{path:SALES_ESTIMATE_FORMATS_PATH,label:"\u898B\u7A4D\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8"}};var SALES_COMPANIES_PATH="/api/v2/sales/companies";var CUSTOMERS_PATH="/api/v2/customers";var COMPANY_SEARCH_PAGE_LIMIT=100;var COMPANY_SEARCH_MAX_PAGES=10;var CUSTOMER_CHILDREN_PAGE_LIMIT=100;var PROSPECTS_PATH="/api/v2/prospects";var PROSPECT_SEARCH_PAGE_LIMIT=100;var PROSPECT_SEARCH_MAX_PAGES=10;
27
- function isExactNumericId(value){return/^[0-9]+$/.test(value)&&String(Number(value))===value}function exactCompanyId(ref,label){if(!isExactNumericId(ref.id)){throw new ResolveError(`${label}\u4E00\u89A7\u306E id \u304C\u6574\u6570\u3067\u306F\u3042\u308A\u307E\u305B\u3093\uFF08${ref.id}\uFF09\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}return ref}var ORG_MASTER_LIMIT=1e3;var USER_LIST_MAX_PAGES=100;function isRecord(value){return typeof value==="object"&&
28
- value!==null&&!Array.isArray(value)}function str(value){return typeof value==="string"&&value.trim()!==""?value:null}function truthyFlag(value){return value===true||value===1}function rawGetVia(client){return async path2=>{try{return{ok:true,status:200,json:await client.request("GET",path2),error:null}}catch(err){if(err instanceof ApiError){return{ok:false,status:err.status,json:err.body,error:err.message}}throw err}}}var TASK_MASTERS={status:{path:"task-statuses",envelope:"data",scope:"task-sta\
29
- tuses",label:"\u30B9\u30C6\u30FC\u30BF\u30B9"},type:{path:"task-types",envelope:"data",scope:"task-types",label:"\u7A2E\u5225"},category:{path:"task-categories",envelope:"data",scope:"task-categories",label:"\u30AB\u30C6\u30B4\u30EA"},milestone:{path:"task-milestones",envelope:"data",scope:"task-milestones",label:"\u30DE\u30A4\u30EB\u30B9\u30C8\u30FC\u30F3"},label:{path:"task-labels",envelope:"items",scope:"task-labels",label:"\u30E9\u30D9\u30EB"}};var Resolver=class{constructor(client,options){
30
- this.client=client;this.options=options;this.get=rawGetVia(client)}client;options;get;privateMastersInFlight=null;async project(ref){const trimmed=ref.trim();if(trimmed==="")throw new UsageError("\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u30B3\u30FC\u30C9\u304B ID \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044");return resolveProjectRef(trimmed,this.get,safeProjectIdPolicy)}async taskByKey(key){const trimmed=key.trim();if(!isTaskKey(trimmed)){throw new UsageError(`\u30BF\u30B9\u30AF\u30AD\u30FC\u306E\u5F62\u5F0F\u3067\u306F\u3042\u308A\u307E\u305B\u3093: ${key}`,
31
- "\u30AD\u30FC\u306F\u300C\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u30B3\u30FC\u30C9-\u756A\u53F7\u300D\u306E\u5F62\u3067\u3059\uFF08\u4F8B: ABC-123\uFF09\u3002")}const res=await this.get(`/api/v2/tasks/resolve-by-key/${encodeURIComponent(trimmed)}`);if(res.status===404){throw new ResolveError(`\u30BF\u30B9\u30AF\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093: ${trimmed}\uFF08\u5B58\u5728\u3057\u306A\u3044\u304B\u3001\u95B2\u89A7\u3067\u304D\u308B\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306B\u3042\u308A\u307E\u305B\u3093\uFF09`,
32
- 404)}if(!res.ok){throw new ResolveError(`\u30BF\u30B9\u30AF\u30AD\u30FC\u3092\u89E3\u6C7A\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F: ${trimmed}\uFF08HTTP ${res.status}\uFF09\u3002\u63A5\u7D9A\u5148\u3068\u30ED\u30B0\u30A4\u30F3\u72B6\u614B\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`,res.status)}const body=isRecord(res.json)?res.json:{};const projectId=str(body["project_id"]);const task=body["task"];if(projectId===null||!isRecord(task)){throw new ResolveError("\u30BF\u30B9\u30AF\u30AD\u30FC\u89E3\u6C7A\u306E\u5FDC\u7B54\u306B p\
33
- roject_id / task \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002",res.status)}safeProjectIdPolicy.assertId(projectId);return{projectId,task}}async currentUser(){const res=await this.get("/api/v2/user");if(!res.ok){throw new ResolveError(`\u30ED\u30B0\u30A4\u30F3\u4E2D\u306E\u30E6\u30FC\u30B6\u30FC\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08HTTP ${res.status}\uFF09\u3002twp login \u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`,
34
- res.status)}const user=isRecord(res.json)?res.json["user"]:void 0;if(!isRecord(user)||str(user["id"])===null){throw new ResolveError("\u30E6\u30FC\u30B6\u30FC\u53D6\u5F97\u306E\u5FDC\u7B54\u306B user.id \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002",res.status)}return{id:user["id"],name:str(user["name"])??user["id"],email:str(user["email"])}}async status(projectId,input,flag="--status"){return resolveNamed(this.applyAlias(
35
- "status",input),await this.statuses(projectId),{flag,label:"\u30B9\u30C6\u30FC\u30BF\u30B9"})}async taskType(projectId,input){return resolveNamed(this.applyAlias("type",input),await this.taskTypes(projectId),{flag:"--type",label:"\u7A2E\u5225"})}async assignee(projectId,input,flag="--assignee"){if(input.trim().toLowerCase()===SELF_REF)return this.self();const value=this.applyAlias("assignee",input);if(value.trim().toLowerCase()===SELF_REF)return this.self();return resolveNamed(value,await this.members(
36
- projectId),{flag,label:"\u30E1\u30F3\u30D0\u30FC"})}async self(){const me=await this.currentUser();return{id:me.id,name:me.name,...me.email!==null?{aliases:[me.email]}:{}}}async defaultStatus(projectId){return requireDefault(await this.statuses(projectId),{flag:"--status",label:"\u30B9\u30C6\u30FC\u30BF\u30B9"})}async defaultTaskType(projectId){return requireDefault(await this.taskTypes(projectId),{flag:"--type",label:"\u7A2E\u5225"})}async statuses(projectId){return namedFromRows(await this.taskMasterRows(
37
- "status",projectId),"\u30B9\u30C6\u30FC\u30BF\u30B9",codedMasterRow)}async taskTypes(projectId){return namedFromRows(await this.taskMasterRows("type",projectId),"\u7A2E\u5225",codedMasterRow)}async taskMaster(kind,projectId,input,flag){const spec=TASK_MASTERS[kind];return resolveNamed(input,await this.taskMasterRefs(kind,projectId),{flag,label:spec.label})}async taskMasterRefs(kind,projectId){const spec=TASK_MASTERS[kind];return namedFromRows(await this.taskMasterRows(kind,projectId),spec.label,
38
- codedMasterRow)}async privateTaskMaster(envelope,input,flag,label){return resolveNamed(input,await this.privateMasters(envelope,label),{flag,label,scope:PRIVATE_SCOPE_LABEL})}async taskMasterRows(kind,projectId){const spec=TASK_MASTERS[kind];return this.cached(spec.scope,projectId,async()=>rawListFrom(await this.get(`/api/v2/projects/${encodeURIComponent(projectId)}/${spec.path}`),spec.envelope,spec.label))}invalidateTaskMaster(kind,projectId){removeCache({profile:this.options.profile,scope:TASK_MASTERS[kind].
39
- scope,project:projectId},this.options.env!==void 0?{env:this.options.env}:{})}async privateStatuses(){return this.privateMasters("statuses","\u30B9\u30C6\u30FC\u30BF\u30B9")}async privateTaskTypes(){return this.privateMasters("types","\u7A2E\u5225")}async privateStatus(input){return resolveNamed(this.applyAlias("status",input),await this.privateStatuses(),{flag:"--status",label:"\u30B9\u30C6\u30FC\u30BF\u30B9",scope:PRIVATE_SCOPE_LABEL})}async privateTaskType(input){return resolveNamed(this.applyAlias(
40
- "type",input),await this.privateTaskTypes(),{flag:"--type",label:"\u7A2E\u5225",scope:PRIVATE_SCOPE_LABEL})}async privateDefaultStatus(){return requireDefault(await this.privateStatuses(),{flag:"--status",label:"\u30B9\u30C6\u30FC\u30BF\u30B9",scope:PRIVATE_SCOPE_LABEL})}async privateDefaultTaskType(){return requireDefault(await this.privateTaskTypes(),{flag:"--type",label:"\u7A2E\u5225",scope:PRIVATE_SCOPE_LABEL})}async privateTask(ref){const trimmed=ref.trim();const res=await this.get(`${PRIVATE_TASKS_PATH}\
41
- /${encodeURIComponent(trimmed)}`);if(res.status===404){throw new ResolveError(`\u500B\u4EBA\u30BF\u30B9\u30AF\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093: ${trimmed}`,404)}if(!res.ok){throw new ResolveError(`\u500B\u4EBA\u30BF\u30B9\u30AF\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F: ${trimmed}\uFF08HTTP ${res.status}\uFF09\u3002\u63A5\u7D9A\u5148\u3068\u30ED\u30B0\u30A4\u30F3\u72B6\u614B\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`,res.status)}const task=isRecord(
42
- res.json)?res.json["task"]:void 0;if(!isRecord(task)){throw new ResolveError("\u500B\u4EBA\u30BF\u30B9\u30AF\u306E\u5FDC\u7B54\u306B task \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002",res.status)}return task}async primaryAssignment(userId){if(!isSafePathSegment(userId)){throw new ResolveError(`\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`)}
43
- const res=await this.get(`/api/v2/organization/users/${encodeURIComponent(userId)}/assignments/primary`);if(res.status===404)return null;if(!res.ok){throw new ResolveError(`\u73FE\u5728\u306E\u4E3B\u6240\u5C5E\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08HTTP ${res.status}${res.error?`: ${res.error}`:""}\uFF09\u3002`,res.status)}const assignment=isRecord(res.json)?res.json["assignment"]:void 0;if(!isRecord(assignment)||typeof assignment["id"]!=="string"){throw new ResolveError(
44
- "\u4E3B\u6240\u5C5E\u306E\u5FDC\u7B54\u306B assignment.id \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002",res.status)}return assignment}async assignments(userId){if(!isSafePathSegment(userId)){throw new ResolveError(`\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`)}const res=await this.get(`/ap\
45
- i/v2/organization/users/${encodeURIComponent(userId)}/assignments`);if(!res.ok){throw new ResolveError(`\u6240\u5C5E\u306E\u4E00\u89A7\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08HTTP ${res.status}${res.error?`: ${res.error}`:""}\uFF09\u3002`,res.status)}const list=isRecord(res.json)?res.json["list"]:void 0;if(!Array.isArray(list)||!list.every(isRecord)){throw new ResolveError("\u6240\u5C5E\u4E00\u89A7\u306E\u5FDC\u7B54\u306B list \u914D\u5217\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
46
- res.status)}return list}async privateMasters(envelope,label){return namedFromRows(await this.privateMasterRows(envelope,label),label,codedMasterRow)}async privateMasterRows(envelope,label){return this.cached(`private-${envelope}`,PRIVATE_MASTERS_CACHE_KEY,async()=>rawListFrom(await this.privateMastersResponse(),envelope,label))}privateMastersResponse(){this.privateMastersInFlight??=this.get(`${PRIVATE_TASKS_PATH}/masters`);return this.privateMastersInFlight}async members(projectId){return this.cached(
47
- "members",projectId,()=>this.namedList(`/api/v2/projects/${encodeURIComponent(projectId)}/members?limit=${PROJECT_MEMBERS_LIMIT}`,"list","\u30E1\u30F3\u30D0\u30FC",row=>({id:str(row["user_id"]),name:str(row["user_name"]),code:null,aliases:[str(row["alias"]),str(row["user_email"])].filter(v=>v!==null)})).then(refs=>assertMembersComplete(refs)))}async memberRows(projectId){return assertMembersComplete(rawListFrom(await this.get(`/api/v2/projects/${encodeURIComponent(projectId)}/members?limit=${PROJECT_MEMBERS_LIMIT}`),
48
- "list","\u30E1\u30F3\u30D0\u30FC"))}invalidateMembers(projectId){removeCache({profile:this.options.profile,scope:"members",project:projectId},this.options.env!==void 0?{env:this.options.env}:{})}async user(input,flag="<\u30E6\u30FC\u30B6\u30FC>"){const trimmed=input.trim();if(trimmed==="")throw new UsageError(`${flag} \u306B\u7A7A\u306E\u5024\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093`);if(trimmed.toLowerCase()===SELF_REF)return this.self();if(UUID_RE.test(trimmed))return{id:trimmed,name:trimmed};
49
- const searched=await this.searchUsers(trimmed);if(searched.refs!==null){const needle=trimmed.toLowerCase();const hits=searched.refs.filter(ref=>[ref.id,ref.code,ref.name,...ref.aliases??[]].some(key=>typeof key==="string"&&key.trim().toLowerCase()===needle));if(hits.length>0)return resolveNamed(trimmed,hits,{flag,label:"\u30E6\u30FC\u30B6\u30FC",scope:TENANT_SCOPE_LABEL})}try{return await resolveNamed(trimmed,await this.visibleUsers(),{flag,label:"\u30E6\u30FC\u30B6\u30FC",scope:TENANT_SCOPE_LABEL})}catch(err){
50
- if(err instanceof UsageError&&searched.failure!==null){throw new UsageError(`${err.message}\uFF08\u30AD\u30FC\u30EF\u30FC\u30C9\u691C\u7D22\u304C ${searched.failure} \u3067\u5931\u6557\u3057\u305F\u305F\u3081\u3001\u8868\u793A\u5BFE\u8C61\u306E\u30E6\u30FC\u30B6\u30FC\u3060\u3051\u3067\u7167\u5408\u3057\u307E\u3057\u305F\uFF09`,err.hint)}throw err}}async searchUsers(keyword){const query=new URLSearchParams({keyword,include_hidden:"true",limit:"100"});const res=await this.get(`${ADMIN_USERS_LIST_PATH}\
51
- ?${query.toString()}`);if(!res.ok)return{refs:null,failure:`HTTP ${res.status}`};return{refs:namedFromRows(rawListFrom(res,"items","\u30E6\u30FC\u30B6\u30FC"),"\u30E6\u30FC\u30B6\u30FC",userRow),failure:null}}async visibleUsers(){return this.cached("admin-users-visible",TENANT_CACHE_KEY,async()=>{const rows=[];let cursor=null;for(let page=0;;page++){if(page>=USER_LIST_MAX_PAGES){throw new ResolveError(`\u30E6\u30FC\u30B6\u30FC\u4E00\u89A7\u304C ${USER_LIST_MAX_PAGES} \u30DA\u30FC\u30B8\u3092\u8D85\u3048\u305F\u305F\u3081\u3001\u540D\u524D\u3067\u89E3\u6C7A\u3067\u304D\u307E\u305B\u3093\u3002ID \u304B\u30E1\u30FC\u30EB\
52
- \u30A2\u30C9\u30EC\u30B9\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}const query=new URLSearchParams({limit:"100"});if(cursor!==null)query.set("cursor",cursor);const res=await this.get(`${ADMIN_USERS_LIST_PATH}?${query.toString()}`);rows.push(...rawListFrom(res,"items","\u30E6\u30FC\u30B6\u30FC"));const body=isRecord(res.json)?res.json:{};if(body["has_more"]===false)break;const next=str(body["next_cursor"]);if(body["has_more"]!==true||next===null){throw new ResolveError("\u30E6\u30FC\u30B6\u30FC\u4E00\u89A7\
53
- \u306E\u5FDC\u7B54\u306B has_more / next_cursor \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002",res.status)}cursor=next}return namedFromRows(rows,"\u30E6\u30FC\u30B6\u30FC",userRow)})}async department(input,flag="--department"){return resolveNamed(input,await this.departments(),{flag,label:"\u90E8\u7F72",scope:TENANT_SCOPE_LABEL})}async position(input,flag="--position"){return resolveNamed(input,await this.positions(),{flag,
54
- label:"\u5F79\u8077",scope:TENANT_SCOPE_LABEL})}async jobTitle(input,flag="--job-title"){return resolveNamed(input,await this.jobTitles(),{flag,label:"\u8077\u4F4D",scope:TENANT_SCOPE_LABEL})}async departments(){return this.cached("departments",TENANT_CACHE_KEY,async()=>namedFromRows(masterList(await this.get(`${DEPARTMENTS_PATH}?limit=${ORG_MASTER_LIMIT}`),"\u90E8\u7F72"),"\u90E8\u7F72",codedMasterRow))}async positions(){return this.cached("positions",TENANT_CACHE_KEY,async()=>namedFromRows(masterList(
55
- await this.get(`${POSITIONS_PATH}?limit=${ORG_MASTER_LIMIT}`),"\u5F79\u8077"),"\u5F79\u8077",codedMasterRow))}async jobTitles(){return this.cached("job-titles",TENANT_CACHE_KEY,async()=>namedFromRows(masterList(await this.get(`${JOB_TITLES_PATH}?limit=${ORG_MASTER_LIMIT}`),"\u8077\u4F4D"),"\u8077\u4F4D",codedMasterRow))}async workerAgent(input,flag="<\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8>"){const trimmed=input.trim();if(trimmed==="")throw new UsageError(`${flag} \u306B\u7A7A\u306E\u5024\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093`);
56
- if(ULID_RE.test(trimmed.toUpperCase()))return{id:trimmed.toUpperCase(),name:trimmed};const res=await this.get(WORKER_AGENTS_PATH);if(res.status===401||res.status===403){throw new ApiError(res.status,isRecord(res.json)?res.json:null,"GET",WORKER_AGENTS_PATH)}const rows=rawListFrom(res,"items","\u30EF\u30FC\u30AB\u30FC\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8");return resolveNamed(trimmed,namedFromRows(rows,"\u30EF\u30FC\u30AB\u30FC\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8",workerAgentRow),{flag,label:"\u30EF\u30FC\u30AB\u30FC\
57
- \u30A8\u30FC\u30B8\u30A7\u30F3\u30C8",scope:"\u3042\u306A\u305F\u304C\u53C2\u7167\u3067\u304D\u308B\u7BC4\u56F2"})}async processMaster(input,flag="--process"){return resolveNamed(input,await this.processMasters(),{flag,label:"\u5DE5\u7A0B\u30DE\u30B9\u30BF",scope:TENANT_SCOPE_LABEL})}async processMasters(){return this.cached("process-masters",TENANT_CACHE_KEY,async()=>namedFromRows(masterList(await this.get(`${PROCESS_MASTERS_PATH}?limit=${ORG_MASTER_LIMIT}`),"\u5DE5\u7A0B\u30DE\u30B9\u30BF"),"\u5DE5\
58
- \u7A0B\u30DE\u30B9\u30BF",codedMasterRow))}async workflow(input,flag="<\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC>",category){return resolveNamed(input,await this.applicableWorkflows(category),{flag,label:category===void 0?"\u7533\u8ACB\u3067\u304D\u308B\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC":`\u7533\u8ACB\u3067\u304D\u308B\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\uFF08${category}\uFF09`,scope:TENANT_SCOPE_LABEL})}async workflowDefinition(id){if(!isSafePathSegment(id)){throw new ResolveError(`\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC ID \u3092\u30D1\u30B9\u306B\u4F7F\
59
- \u3048\u307E\u305B\u3093: ${id}\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}const res=await this.get(`${WORKFLOWS_PATH}/${encodeURIComponent(id)}`);if(res.status===404){throw new ResolveError(`\u7533\u8ACB\u66F8\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093: ${id}`,404)}if(!res.ok){throw new ResolveError(`\u7533\u8ACB\u66F8\u306E\u5B9A\u7FA9\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F: ${id}\uFF08HTTP ${res.status}\uFF09\u3002\u63A5\u7D9A\u5148\u3068\u30ED\u30B0\u30A4\u30F3\u72B6\u614B\u3092\u78BA\u8A8D\u3057\
60
- \u3066\u304F\u3060\u3055\u3044\u3002`,res.status)}const workflow=isRecord(res.json)?res.json["workflow"]:void 0;if(!isRecord(workflow)){throw new ResolveError("\u7533\u8ACB\u66F8\u306E\u5FDC\u7B54\u306B workflow \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002",res.status)}return workflow}async attendanceReportMasters(){const load=async(path2,label)=>rawListFrom(await this.get(`${path2}/active`),"list",label);const[categories,
61
- reasons,details]=await Promise.all([load(ATTENDANCE_REPORT_MASTER_PATHS.categories,"\u52E4\u6020\u9023\u7D61\u306E\u533A\u5206"),load(ATTENDANCE_REPORT_MASTER_PATHS.reasons,"\u52E4\u6020\u9023\u7D61\u306E\u7406\u7531"),load(ATTENDANCE_REPORT_MASTER_PATHS.details,"\u52E4\u6020\u9023\u7D61\u306E\u7406\u7531\u8A73\u7D30")]);return{categories,reasons,details}}async attendanceReport(id){if(!isSafePathSegment(id)){throw new ResolveError(`\u52E4\u6020\u9023\u7D61\u306E ID \u3092\u30D1\u30B9\u306B\u4F7F\u3048\u307E\u305B\u3093: ${id}`)}
62
- const res=await this.get(`${ATTENDANCE_REPORTS_PATH}/${encodeURIComponent(id)}`);if(res.status===404){throw new ResolveError(`\u52E4\u6020\u9023\u7D61\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093: ${id}`,404)}if(!res.ok){throw new ResolveError(`\u52E4\u6020\u9023\u7D61\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F: ${id}\uFF08HTTP ${res.status}\uFF09\u3002\u63A5\u7D9A\u5148\u3068\u30ED\u30B0\u30A4\u30F3\u72B6\u614B\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`,
63
- res.status)}const report=isRecord(res.json)?res.json["report"]:void 0;if(!isRecord(report)){throw new ResolveError("\u52E4\u6020\u9023\u7D61\u306E\u5FDC\u7B54\u306B report \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002",res.status)}return report}async applicableWorkflows(category){const path2=category===void 0?`${WORKFLOWS_PATH}/applicable`:`${WORKFLOWS_PATH}/applicable/${encodeURIComponent(category)}`;const scope=category===
64
- void 0?"workflows-applicable":`workflows-applicable-${category}`;return this.cached(scope,TENANT_CACHE_KEY,async()=>{const res=await this.get(path2);const rows=rawListFrom(res,"list","\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC");const sum=isRecord(res.json)?res.json["sum"]:void 0;if(typeof sum==="number"&&sum>rows.length){throw new ResolveError(`\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u4E00\u89A7\u304C ${sum} \u4EF6\u4E2D ${rows.length} \u4EF6\u3067\u5207\u308A\u8A70\u3081\u3089\u308C\u305F\u305F\u3081\u3001\u540D\u524D\u3067\u89E3\u6C7A\u3067\u304D\u307E\u305B\u3093\u3002ID \u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002`,
19
+ \u3053\u306E Backlog \u30D7\u30ED\u30B8\u30A7\u30AF\u30C8";var PRIVATE_SCOPE_LABEL="\u500B\u4EBA\u30BF\u30B9\u30AF";var TENANT_CACHE_KEY="__tenant__";var TENANT_SCOPE_LABEL="\u3053\u306E\u30C6\u30CA\u30F3\u30C8";var ADMIN_USERS_LIST_PATH="/api/v2/admin/users/list";var PROJECT_MEMBERS_LIMIT=1e4;var DEPARTMENTS_PATH="/api/v2/organization/departments";var POSITIONS_PATH="/api/v2/organization/positions";var JOB_TITLES_PATH="/api/v2/organization/job-titles";var SEGMENTS_PATH="/api/v2/organization/seg\
20
+ ments";var USER_CONTRACT_TYPES_PATH="/api/v2/organization/user-contract-types";var FISCAL_YEAR_SETTINGS_PATH="/api/v2/organization/fiscal-year-settings";var PROCESS_MASTERS_PATH="/api/v2/project/processes";var INQUIRY_CATEGORIES_PATH="/api/v2/inquiries/categories";var SUPPORTS_PATH="/api/v2/supports";var SUPPORT_CATEGORIES_PATH="/api/v2/supports/categories";var NOTIFICATIONS_PATH="/api/v2/notifications";var ANNOUNCEMENTS_PATH="/api/v2/announcements";var WORKER_AGENTS_PATH="/api/v2/worker-agents";
21
+ var AGENT_SESSIONS_PATH="/api/v2/agent/sessions";var AGENT_REPOSITORIES_PATH="/api/v2/agent/repositories";var NOTIFICATION_COUNT_MAX_PAGES=20;var NOTIFICATION_COUNT_PAGE_LIMIT=100;var WORKFLOWS_PATH="/api/v2/workflows";var REPORTS_PATH="/api/v2/reports";var ATTENDANCE_REPORTS_PATH="/api/v2/attendance/reports";var ATTENDANCE_REPORT_MASTER_PATHS={categories:"/api/v2/attendance/report-categories",reasons:"/api/v2/attendance/report-reasons",details:"/api/v2/attendance/report-reason-details"};var ATTENDANCE_REPORT_MASTER_LABELS={
22
+ categories:"\u9023\u7D61\u533A\u5206",reasons:"\u9023\u7D61\u7406\u7531",details:"\u9023\u7D61\u7406\u7531\u8A73\u7D30"};var SALES_ESTIMATES_PATH="/api/v2/sales/estimates";var SALES_INVOICES_PATH="/api/v2/sales/invoices";var SALES_CONTRACTS_PATH="/api/v2/sales/contracts";var SALES_INVOICE_AUTO_TEMPLATES_PATH="/api/v2/sales/invoice-auto-templates";var SALES_DEPOSITS_PATH="/api/v2/sales/deposits";var SALES_PURCHASES_PATH="/api/v2/sales/purchases";var SALES_SUPPLIER_PAYMENTS_PATH="/api/v2/sales/sup\
23
+ plier-payments";var SALES_SUPPLIER_PAYMENT_SCHEDULES_PATH="/api/v2/sales/supplier-payment-schedules";var SALES_BUSINESS_PLACES_PATH="/api/v2/sales/business-places";var SALES_PAYEES_PATH="/api/v2/sales/payees";var SALES_SEAL_IMPRESSIONS_PATH="/api/v2/sales/seal-impressions";var SALES_PURCHASE_AI_MAPPINGS_PATH="/api/v2/sales/purchase-ai-field-mappings";var SALES_ESTIMATE_NO_RULES_PATH="/api/v2/sales/estimate-no-rules";var SALES_INVOICE_NO_RULES_PATH="/api/v2/sales/invoice-no-rules";var SALES_PURCHASE_NO_RULES_PATH="\
24
+ /api/v2/sales/purchase-no-rules";var SALES_ESTIMATE_FORMATS_PATH="/api/v2/sales/estimate-formats";var SALES_ROUNDING_SETTING_PATH="/api/v2/sales/rounding-setting";var SALES_RECORD_KINDS={estimate:{path:SALES_ESTIMATES_PATH,label:"\u898B\u7A4D"},invoice:{path:SALES_INVOICES_PATH,label:"\u8ACB\u6C42"},contract:{path:SALES_CONTRACTS_PATH,label:"\u53D6\u5F15\u5951\u7D04"},"invoice-auto-template":{path:SALES_INVOICE_AUTO_TEMPLATES_PATH,label:"\u81EA\u52D5\u8ACB\u6C42\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8"},
25
+ deposit:{path:SALES_DEPOSITS_PATH,label:"\u5165\u91D1"},purchase:{path:SALES_PURCHASES_PATH,label:"\u4ED5\u5165"},"supplier-payment":{path:SALES_SUPPLIER_PAYMENTS_PATH,label:"\u652F\u6255"},"supplier-payment-schedule":{path:SALES_SUPPLIER_PAYMENT_SCHEDULES_PATH,label:"\u652F\u6255\u5148\u30DE\u30B9\u30BF"},"business-place":{path:SALES_BUSINESS_PLACES_PATH,label:"\u4E8B\u696D\u6240"},payee:{path:SALES_PAYEES_PATH,label:"\u632F\u8FBC\u5148"},"seal-impression":{path:SALES_SEAL_IMPRESSIONS_PATH,label:"\
26
+ \u5370\u5F71"},"purchase-ai-mapping":{path:SALES_PURCHASE_AI_MAPPINGS_PATH,label:"\u4ED5\u5165AI\u30DE\u30C3\u30D4\u30F3\u30B0"},"estimate-no-rule":{path:SALES_ESTIMATE_NO_RULES_PATH,label:"\u898B\u7A4D\u756A\u53F7\u30EB\u30FC\u30EB"},"invoice-no-rule":{path:SALES_INVOICE_NO_RULES_PATH,label:"\u8ACB\u6C42\u756A\u53F7\u30EB\u30FC\u30EB"},"purchase-no-rule":{path:SALES_PURCHASE_NO_RULES_PATH,label:"\u4ED5\u5165\u756A\u53F7\u30EB\u30FC\u30EB"},"estimate-format":{path:SALES_ESTIMATE_FORMATS_PATH,label:"\
27
+ \u898B\u7A4D\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8"}};var SALES_COMPANIES_PATH="/api/v2/sales/companies";var CUSTOMERS_PATH="/api/v2/customers";var COMPANY_SEARCH_PAGE_LIMIT=100;var COMPANY_SEARCH_MAX_PAGES=10;var CUSTOMER_CHILDREN_PAGE_LIMIT=100;var PROSPECTS_PATH="/api/v2/prospects";var PROSPECT_SEARCH_PAGE_LIMIT=100;var PROSPECT_SEARCH_MAX_PAGES=10;function isExactNumericId(value){return/^[0-9]+$/.test(value)&&String(Number(value))===value}function exactCompanyId(ref,label){if(!isExactNumericId(
28
+ ref.id)){throw new ResolveError(`${label}\u4E00\u89A7\u306E id \u304C\u6574\u6570\u3067\u306F\u3042\u308A\u307E\u305B\u3093\uFF08${ref.id}\uFF09\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}return ref}var ORG_MASTER_LIMIT=1e3;var USER_LIST_MAX_PAGES=100;function isRecord(value){return typeof value==="object"&&value!==null&&!Array.isArray(value)}function str(value){return typeof value==="string"&&value.trim()!==""?value:null}function truthyFlag(value){return value===
29
+ true||value===1}function rawGetVia(client){return async path2=>{try{return{ok:true,status:200,json:await client.request("GET",path2),error:null}}catch(err){if(err instanceof ApiError){return{ok:false,status:err.status,json:err.body,error:err.message}}throw err}}}var TASK_MASTERS={status:{path:"task-statuses",envelope:"data",scope:"task-statuses",label:"\u30B9\u30C6\u30FC\u30BF\u30B9"},type:{path:"task-types",envelope:"data",scope:"task-types",label:"\u7A2E\u5225"},category:{path:"task-categories",
30
+ envelope:"data",scope:"task-categories",label:"\u30AB\u30C6\u30B4\u30EA"},milestone:{path:"task-milestones",envelope:"data",scope:"task-milestones",label:"\u30DE\u30A4\u30EB\u30B9\u30C8\u30FC\u30F3"},label:{path:"task-labels",envelope:"items",scope:"task-labels",label:"\u30E9\u30D9\u30EB"}};var Resolver=class{constructor(client,options){this.client=client;this.options=options;this.get=rawGetVia(client)}client;options;get;privateMastersInFlight=null;async project(ref){const trimmed=ref.trim();if(trimmed===
31
+ "")throw new UsageError("\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u30B3\u30FC\u30C9\u304B ID \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044");return resolveProjectRef(trimmed,this.get,safeProjectIdPolicy)}async taskByKey(key){const trimmed=key.trim();if(!isTaskKey(trimmed)){throw new UsageError(`\u30BF\u30B9\u30AF\u30AD\u30FC\u306E\u5F62\u5F0F\u3067\u306F\u3042\u308A\u307E\u305B\u3093: ${key}`,"\u30AD\u30FC\u306F\u300C\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u30B3\u30FC\u30C9-\u756A\u53F7\u300D\u306E\u5F62\u3067\u3059\uFF08\u4F8B: ABC-123\uFF09\u3002")}
32
+ const res=await this.get(`/api/v2/tasks/resolve-by-key/${encodeURIComponent(trimmed)}`);if(res.status===404){throw new ResolveError(`\u30BF\u30B9\u30AF\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093: ${trimmed}\uFF08\u5B58\u5728\u3057\u306A\u3044\u304B\u3001\u95B2\u89A7\u3067\u304D\u308B\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306B\u3042\u308A\u307E\u305B\u3093\uFF09`,404)}if(!res.ok){throw new ResolveError(`\u30BF\u30B9\u30AF\u30AD\u30FC\u3092\u89E3\u6C7A\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F: ${trimmed}\
33
+ \uFF08HTTP ${res.status}\uFF09\u3002\u63A5\u7D9A\u5148\u3068\u30ED\u30B0\u30A4\u30F3\u72B6\u614B\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`,res.status)}const body=isRecord(res.json)?res.json:{};const projectId=str(body["project_id"]);const task=body["task"];if(projectId===null||!isRecord(task)){throw new ResolveError("\u30BF\u30B9\u30AF\u30AD\u30FC\u89E3\u6C7A\u306E\u5FDC\u7B54\u306B project_id / task \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
34
+ res.status)}safeProjectIdPolicy.assertId(projectId);return{projectId,task}}async currentUser(){const res=await this.get("/api/v2/user");if(!res.ok){throw new ResolveError(`\u30ED\u30B0\u30A4\u30F3\u4E2D\u306E\u30E6\u30FC\u30B6\u30FC\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08HTTP ${res.status}\uFF09\u3002twp login \u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`,res.status)}const user=isRecord(res.json)?res.json["user"]:void 0;if(!isRecord(user)||str(user["\
35
+ id"])===null){throw new ResolveError("\u30E6\u30FC\u30B6\u30FC\u53D6\u5F97\u306E\u5FDC\u7B54\u306B user.id \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002",res.status)}return{id:user["id"],name:str(user["name"])??user["id"],email:str(user["email"])}}async status(projectId,input,flag="--status"){return resolveNamed(this.applyAlias("status",input),await this.statuses(projectId),{flag,label:"\u30B9\u30C6\u30FC\u30BF\u30B9"})}async taskType(projectId,input){
36
+ return resolveNamed(this.applyAlias("type",input),await this.taskTypes(projectId),{flag:"--type",label:"\u7A2E\u5225"})}async assignee(projectId,input,flag="--assignee"){if(input.trim().toLowerCase()===SELF_REF)return this.self();const value=this.applyAlias("assignee",input);if(value.trim().toLowerCase()===SELF_REF)return this.self();return resolveNamed(value,await this.members(projectId),{flag,label:"\u30E1\u30F3\u30D0\u30FC"})}async self(){const me=await this.currentUser();return{id:me.id,name:me.
37
+ name,...me.email!==null?{aliases:[me.email]}:{}}}async defaultStatus(projectId){return requireDefault(await this.statuses(projectId),{flag:"--status",label:"\u30B9\u30C6\u30FC\u30BF\u30B9"})}async defaultTaskType(projectId){return requireDefault(await this.taskTypes(projectId),{flag:"--type",label:"\u7A2E\u5225"})}async statuses(projectId){return namedFromRows(await this.taskMasterRows("status",projectId),"\u30B9\u30C6\u30FC\u30BF\u30B9",codedMasterRow)}async taskTypes(projectId){return namedFromRows(
38
+ await this.taskMasterRows("type",projectId),"\u7A2E\u5225",codedMasterRow)}async taskMaster(kind,projectId,input,flag){const spec=TASK_MASTERS[kind];return resolveNamed(input,await this.taskMasterRefs(kind,projectId),{flag,label:spec.label})}async taskMasterRefs(kind,projectId){const spec=TASK_MASTERS[kind];return namedFromRows(await this.taskMasterRows(kind,projectId),spec.label,codedMasterRow)}async privateTaskMaster(envelope,input,flag,label){return resolveNamed(input,await this.privateMasters(
39
+ envelope,label),{flag,label,scope:PRIVATE_SCOPE_LABEL})}async taskMasterRows(kind,projectId){const spec=TASK_MASTERS[kind];return this.cached(spec.scope,projectId,async()=>rawListFrom(await this.get(`/api/v2/projects/${encodeURIComponent(projectId)}/${spec.path}`),spec.envelope,spec.label))}invalidateTaskMaster(kind,projectId){removeCache({profile:this.options.profile,scope:TASK_MASTERS[kind].scope,project:projectId},this.options.env!==void 0?{env:this.options.env}:{})}async privateStatuses(){return this.
40
+ privateMasters("statuses","\u30B9\u30C6\u30FC\u30BF\u30B9")}async privateTaskTypes(){return this.privateMasters("types","\u7A2E\u5225")}async privateStatus(input){return resolveNamed(this.applyAlias("status",input),await this.privateStatuses(),{flag:"--status",label:"\u30B9\u30C6\u30FC\u30BF\u30B9",scope:PRIVATE_SCOPE_LABEL})}async privateTaskType(input){return resolveNamed(this.applyAlias("type",input),await this.privateTaskTypes(),{flag:"--type",label:"\u7A2E\u5225",scope:PRIVATE_SCOPE_LABEL})}async privateDefaultStatus(){
41
+ return requireDefault(await this.privateStatuses(),{flag:"--status",label:"\u30B9\u30C6\u30FC\u30BF\u30B9",scope:PRIVATE_SCOPE_LABEL})}async privateDefaultTaskType(){return requireDefault(await this.privateTaskTypes(),{flag:"--type",label:"\u7A2E\u5225",scope:PRIVATE_SCOPE_LABEL})}async privateTask(ref){const trimmed=ref.trim();const res=await this.get(`${PRIVATE_TASKS_PATH}/${encodeURIComponent(trimmed)}`);if(res.status===404){throw new ResolveError(`\u500B\u4EBA\u30BF\u30B9\u30AF\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093: ${trimmed}`,
42
+ 404)}if(!res.ok){throw new ResolveError(`\u500B\u4EBA\u30BF\u30B9\u30AF\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F: ${trimmed}\uFF08HTTP ${res.status}\uFF09\u3002\u63A5\u7D9A\u5148\u3068\u30ED\u30B0\u30A4\u30F3\u72B6\u614B\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`,res.status)}const task=isRecord(res.json)?res.json["task"]:void 0;if(!isRecord(task)){throw new ResolveError("\u500B\u4EBA\u30BF\u30B9\u30AF\u306E\u5FDC\u7B54\u306B task \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
43
+ res.status)}return task}async primaryAssignment(userId){if(!isSafePathSegment(userId)){throw new ResolveError(`\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`)}const res=await this.get(`/api/v2/organization/users/${encodeURIComponent(userId)}/assignments/primary`);if(res.status===404)return null;if(!res.ok){throw new ResolveError(`\u73FE\u5728\u306E\u4E3B\u6240\u5C5E\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08HTTP ${res.
44
+ status}${res.error?`: ${res.error}`:""}\uFF09\u3002`,res.status)}const assignment=isRecord(res.json)?res.json["assignment"]:void 0;if(!isRecord(assignment)||typeof assignment["id"]!=="string"){throw new ResolveError("\u4E3B\u6240\u5C5E\u306E\u5FDC\u7B54\u306B assignment.id \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002",res.status)}return assignment}async assignments(userId){if(!isSafePathSegment(userId)){throw new ResolveError(
45
+ `\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`)}const res=await this.get(`/api/v2/organization/users/${encodeURIComponent(userId)}/assignments`);if(!res.ok){throw new ResolveError(`\u6240\u5C5E\u306E\u4E00\u89A7\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08HTTP ${res.status}${res.error?`: ${res.error}`:""}\uFF09\u3002`,res.status)}const list=isRecord(
46
+ res.json)?res.json["list"]:void 0;if(!Array.isArray(list)||!list.every(isRecord)){throw new ResolveError("\u6240\u5C5E\u4E00\u89A7\u306E\u5FDC\u7B54\u306B list \u914D\u5217\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002",res.status)}return list}async privateMasters(envelope,label){return namedFromRows(await this.privateMasterRows(envelope,label),label,codedMasterRow)}async privateMasterRows(envelope,label){return this.cached(
47
+ `private-${envelope}`,PRIVATE_MASTERS_CACHE_KEY,async()=>rawListFrom(await this.privateMastersResponse(),envelope,label))}privateMastersResponse(){this.privateMastersInFlight??=this.get(`${PRIVATE_TASKS_PATH}/masters`);return this.privateMastersInFlight}async members(projectId){return this.cached("members",projectId,()=>this.namedList(`/api/v2/projects/${encodeURIComponent(projectId)}/members?limit=${PROJECT_MEMBERS_LIMIT}`,"list","\u30E1\u30F3\u30D0\u30FC",row=>({id:str(row["user_id"]),name:str(
48
+ row["user_name"]),code:null,aliases:[str(row["alias"]),str(row["user_email"])].filter(v=>v!==null)})).then(refs=>assertMembersComplete(refs)))}async memberRows(projectId){return assertMembersComplete(rawListFrom(await this.get(`/api/v2/projects/${encodeURIComponent(projectId)}/members?limit=${PROJECT_MEMBERS_LIMIT}`),"list","\u30E1\u30F3\u30D0\u30FC"))}invalidateMembers(projectId){removeCache({profile:this.options.profile,scope:"members",project:projectId},this.options.env!==void 0?{env:this.options.
49
+ env}:{})}async user(input,flag="<\u30E6\u30FC\u30B6\u30FC>"){const trimmed=input.trim();if(trimmed==="")throw new UsageError(`${flag} \u306B\u7A7A\u306E\u5024\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093`);if(trimmed.toLowerCase()===SELF_REF)return this.self();if(UUID_RE.test(trimmed))return{id:trimmed,name:trimmed};const searched=await this.searchUsers(trimmed);if(searched.refs!==null){const needle=trimmed.toLowerCase();const hits=searched.refs.filter(ref=>[ref.id,ref.code,ref.name,...ref.aliases??
50
+ []].some(key=>typeof key==="string"&&key.trim().toLowerCase()===needle));if(hits.length>0)return resolveNamed(trimmed,hits,{flag,label:"\u30E6\u30FC\u30B6\u30FC",scope:TENANT_SCOPE_LABEL})}try{return await resolveNamed(trimmed,await this.visibleUsers(),{flag,label:"\u30E6\u30FC\u30B6\u30FC",scope:TENANT_SCOPE_LABEL})}catch(err){if(err instanceof UsageError&&searched.failure!==null){throw new UsageError(`${err.message}\uFF08\u30AD\u30FC\u30EF\u30FC\u30C9\u691C\u7D22\u304C ${searched.failure} \u3067\u5931\u6557\u3057\
51
+ \u305F\u305F\u3081\u3001\u8868\u793A\u5BFE\u8C61\u306E\u30E6\u30FC\u30B6\u30FC\u3060\u3051\u3067\u7167\u5408\u3057\u307E\u3057\u305F\uFF09`,err.hint)}throw err}}async searchUsers(keyword){const query=new URLSearchParams({keyword,include_hidden:"true",limit:"100"});const res=await this.get(`${ADMIN_USERS_LIST_PATH}?${query.toString()}`);if(!res.ok)return{refs:null,failure:`HTTP ${res.status}`};return{refs:namedFromRows(rawListFrom(res,"items","\u30E6\u30FC\u30B6\u30FC"),"\u30E6\u30FC\u30B6\u30FC",
52
+ userRow),failure:null}}async visibleUsers(){return this.cached("admin-users-visible",TENANT_CACHE_KEY,async()=>{const rows=[];let cursor=null;for(let page=0;;page++){if(page>=USER_LIST_MAX_PAGES){throw new ResolveError(`\u30E6\u30FC\u30B6\u30FC\u4E00\u89A7\u304C ${USER_LIST_MAX_PAGES} \u30DA\u30FC\u30B8\u3092\u8D85\u3048\u305F\u305F\u3081\u3001\u540D\u524D\u3067\u89E3\u6C7A\u3067\u304D\u307E\u305B\u3093\u3002ID \u304B\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}
53
+ const query=new URLSearchParams({limit:"100"});if(cursor!==null)query.set("cursor",cursor);const res=await this.get(`${ADMIN_USERS_LIST_PATH}?${query.toString()}`);rows.push(...rawListFrom(res,"items","\u30E6\u30FC\u30B6\u30FC"));const body=isRecord(res.json)?res.json:{};if(body["has_more"]===false)break;const next=str(body["next_cursor"]);if(body["has_more"]!==true||next===null){throw new ResolveError("\u30E6\u30FC\u30B6\u30FC\u4E00\u89A7\u306E\u5FDC\u7B54\u306B has_more / next_cursor \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
54
+ res.status)}cursor=next}return namedFromRows(rows,"\u30E6\u30FC\u30B6\u30FC",userRow)})}async department(input,flag="--department"){return resolveNamed(input,await this.departments(),{flag,label:"\u90E8\u7F72",scope:TENANT_SCOPE_LABEL})}async position(input,flag="--position"){return resolveNamed(input,await this.positions(),{flag,label:"\u5F79\u8077",scope:TENANT_SCOPE_LABEL})}async jobTitle(input,flag="--job-title"){return resolveNamed(input,await this.jobTitles(),{flag,label:"\u8077\u4F4D",scope:TENANT_SCOPE_LABEL})}async segment(input,flag="\
55
+ --segment"){return resolveNamed(input,await this.segments(),{flag,label:"\u30BB\u30B0\u30E1\u30F3\u30C8",scope:TENANT_SCOPE_LABEL})}async userContractType(input,flag="--contract-type"){return resolveNamed(input,await this.userContractTypes(),{flag,label:"\u5951\u7D04\u5F62\u614B",scope:TENANT_SCOPE_LABEL})}async departments(){return this.cached("departments",TENANT_CACHE_KEY,async()=>namedFromRows(masterList(await this.get(`${DEPARTMENTS_PATH}?limit=${ORG_MASTER_LIMIT}`),"\u90E8\u7F72"),"\u90E8\u7F72",
56
+ codedMasterRow))}async positions(){return this.cached("positions",TENANT_CACHE_KEY,async()=>namedFromRows(masterList(await this.get(`${POSITIONS_PATH}?limit=${ORG_MASTER_LIMIT}`),"\u5F79\u8077"),"\u5F79\u8077",codedMasterRow))}async segments(){return this.cached("segments",TENANT_CACHE_KEY,async()=>namedFromRows(masterList(await this.get(`${SEGMENTS_PATH}?limit=${ORG_MASTER_LIMIT}`),"\u30BB\u30B0\u30E1\u30F3\u30C8"),"\u30BB\u30B0\u30E1\u30F3\u30C8",codedMasterRow))}async userContractTypes(){return this.
57
+ cached("user-contract-types",TENANT_CACHE_KEY,async()=>namedFromRows(masterList(await this.get(USER_CONTRACT_TYPES_PATH),"\u5951\u7D04\u5F62\u614B"),"\u5951\u7D04\u5F62\u614B",codedMasterRow))}async jobTitles(){return this.cached("job-titles",TENANT_CACHE_KEY,async()=>namedFromRows(masterList(await this.get(`${JOB_TITLES_PATH}?limit=${ORG_MASTER_LIMIT}`),"\u8077\u4F4D"),"\u8077\u4F4D",codedMasterRow))}async workerAgent(input,flag="<\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8>"){const trimmed=input.trim();
58
+ if(trimmed==="")throw new UsageError(`${flag} \u306B\u7A7A\u306E\u5024\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093`);if(ULID_RE.test(trimmed.toUpperCase()))return{id:trimmed.toUpperCase(),name:trimmed};const res=await this.get(WORKER_AGENTS_PATH);if(res.status===401||res.status===403){throw new ApiError(res.status,isRecord(res.json)?res.json:null,"GET",WORKER_AGENTS_PATH)}const rows=rawListFrom(res,"items","\u30EF\u30FC\u30AB\u30FC\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8");return resolveNamed(trimmed,
59
+ namedFromRows(rows,"\u30EF\u30FC\u30AB\u30FC\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8",workerAgentRow),{flag,label:"\u30EF\u30FC\u30AB\u30FC\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8",scope:"\u3042\u306A\u305F\u304C\u53C2\u7167\u3067\u304D\u308B\u7BC4\u56F2"})}async processMaster(input,flag="--process"){return resolveNamed(input,await this.processMasters(),{flag,label:"\u5DE5\u7A0B\u30DE\u30B9\u30BF",scope:TENANT_SCOPE_LABEL})}async processMasters(){return this.cached("process-masters",TENANT_CACHE_KEY,async()=>namedFromRows(
60
+ masterList(await this.get(`${PROCESS_MASTERS_PATH}?limit=${ORG_MASTER_LIMIT}`),"\u5DE5\u7A0B\u30DE\u30B9\u30BF"),"\u5DE5\u7A0B\u30DE\u30B9\u30BF",codedMasterRow))}async workflow(input,flag="<\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC>",category){return resolveNamed(input,await this.applicableWorkflows(category),{flag,label:category===void 0?"\u7533\u8ACB\u3067\u304D\u308B\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC":`\u7533\u8ACB\u3067\u304D\u308B\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\uFF08${category}\uFF09`,scope:TENANT_SCOPE_LABEL})}async workflowDefinition(id){
61
+ if(!isSafePathSegment(id)){throw new ResolveError(`\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC ID \u3092\u30D1\u30B9\u306B\u4F7F\u3048\u307E\u305B\u3093: ${id}\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}const res=await this.get(`${WORKFLOWS_PATH}/${encodeURIComponent(id)}`);if(res.status===404){throw new ResolveError(`\u7533\u8ACB\u66F8\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093: ${id}`,404)}if(!res.ok){throw new ResolveError(`\u7533\u8ACB\u66F8\u306E\u5B9A\u7FA9\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F: ${id}\
62
+ \uFF08HTTP ${res.status}\uFF09\u3002\u63A5\u7D9A\u5148\u3068\u30ED\u30B0\u30A4\u30F3\u72B6\u614B\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`,res.status)}const workflow=isRecord(res.json)?res.json["workflow"]:void 0;if(!isRecord(workflow)){throw new ResolveError("\u7533\u8ACB\u66F8\u306E\u5FDC\u7B54\u306B workflow \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002",res.status)}return workflow}async attendanceReportMasters(){
63
+ const load=async(path2,label)=>rawListFrom(await this.get(`${path2}/active`),"list",label);const[categories,reasons,details]=await Promise.all([load(ATTENDANCE_REPORT_MASTER_PATHS.categories,"\u52E4\u6020\u9023\u7D61\u306E\u533A\u5206"),load(ATTENDANCE_REPORT_MASTER_PATHS.reasons,"\u52E4\u6020\u9023\u7D61\u306E\u7406\u7531"),load(ATTENDANCE_REPORT_MASTER_PATHS.details,"\u52E4\u6020\u9023\u7D61\u306E\u7406\u7531\u8A73\u7D30")]);return{categories,reasons,details}}async attendanceReportMaster(kind,input,flag){
64
+ const label=ATTENDANCE_REPORT_MASTER_LABELS[kind];const rows=masterList(await this.get(`${ATTENDANCE_REPORT_MASTER_PATHS[kind]}?limit=${ORG_MASTER_LIMIT}`),label);return resolveNamed(input,namedFromRows(rows,label,codedMasterRow),{flag,label,scope:TENANT_SCOPE_LABEL})}async attendanceReport(id){if(!isSafePathSegment(id)){throw new ResolveError(`\u52E4\u6020\u9023\u7D61\u306E ID \u3092\u30D1\u30B9\u306B\u4F7F\u3048\u307E\u305B\u3093: ${id}`)}const res=await this.get(`${ATTENDANCE_REPORTS_PATH}/${encodeURIComponent(
65
+ id)}`);if(res.status===404){throw new ResolveError(`\u52E4\u6020\u9023\u7D61\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093: ${id}`,404)}if(!res.ok){throw new ResolveError(`\u52E4\u6020\u9023\u7D61\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F: ${id}\uFF08HTTP ${res.status}\uFF09\u3002\u63A5\u7D9A\u5148\u3068\u30ED\u30B0\u30A4\u30F3\u72B6\u614B\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`,res.status)}const report=isRecord(res.json)?res.json["report"]:void 0;if(!isRecord(
66
+ report)){throw new ResolveError("\u52E4\u6020\u9023\u7D61\u306E\u5FDC\u7B54\u306B report \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002",res.status)}return report}async applicableWorkflows(category){const path2=category===void 0?`${WORKFLOWS_PATH}/applicable`:`${WORKFLOWS_PATH}/applicable/${encodeURIComponent(category)}`;const scope=category===void 0?"workflows-applicable":`workflows-applicable-${category}`;return this.cached(
67
+ scope,TENANT_CACHE_KEY,async()=>{const res=await this.get(path2);const rows=rawListFrom(res,"list","\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC");const sum=isRecord(res.json)?res.json["sum"]:void 0;if(typeof sum==="number"&&sum>rows.length){throw new ResolveError(`\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u4E00\u89A7\u304C ${sum} \u4EF6\u4E2D ${rows.length} \u4EF6\u3067\u5207\u308A\u8A70\u3081\u3089\u308C\u305F\u305F\u3081\u3001\u540D\u524D\u3067\u89E3\u6C7A\u3067\u304D\u307E\u305B\u3093\u3002ID \u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002`,
65
68
  res.status)}return namedFromRows(rows,"\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC",row=>({id:str(row["id"]),name:str(row["name"]),code:null}))})}async reportFormat(input,flag="--format",usableOnly=false){const load=async()=>rawListFrom(await this.get(`${REPORTS_PATH}/formats${usableOnly?"?include_unavailable=false":""}`),"formats","\u30EC\u30DD\u30FC\u30C8\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8");const rows=usableOnly?await load():await this.cached("report-formats",TENANT_CACHE_KEY,load);return resolveNamed(
66
69
  input,namedFromRows(rows,"\u30EC\u30DD\u30FC\u30C8\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8",row=>({id:str(row["id"]),name:str(row["name"]),code:str(row["code"])})),{flag,label:usableOnly?"\u4F5C\u6210\u3067\u304D\u308B\u30EC\u30DD\u30FC\u30C8\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8":"\u30EC\u30DD\u30FC\u30C8\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8",scope:TENANT_SCOPE_LABEL})}async company(input,options){const trimmed=input.trim();if(trimmed==="")throw new UsageError(`${options.flag} \u306B\u7A7A\u306E\u5024\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093`);
67
70
  if(isExactNumericId(trimmed))return options.mustExist===true?this.companyById(trimmed,options):{id:trimmed,name:trimmed};if(/^[0-9]+$/.test(trimmed)){throw new UsageError(`${options.flag} \u306E ID \u306F\u5148\u982D\u306B 0 \u3092\u4ED8\u3051\u306A\u3044\u6570\u5B57\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044: ${trimmed}`)}const label=options.source==="customer"?"\u9867\u5BA2":"\u53D6\u5F15\u5148";const base=options.source==="customer"?CUSTOMERS_PATH:SALES_COMPANIES_PATH;const rows=[];
@@ -137,6 +140,6 @@ name:str(row["name"])}}function agentRepositoryRow(row){const short=str(row["nam
137
140
  \u4EF6\u4E2D ${rows.length} \u4EF6\u3067\u5207\u308A\u8A70\u3081\u3089\u308C\u305F\u305F\u3081\u3001\u540D\u524D\u3067\u89E3\u6C7A\u3067\u304D\u307E\u305B\u3093\u3002ID \u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002`,res.status)}return rows}function codedMasterRow(row){return{id:str(row["id"]),name:str(row["name"]),code:str(row["code"]),isDefault:truthyFlag(row["is_default"])}}function namedListFrom(res,envelope,label,map){return namedFromRows(rawListFrom(res,envelope,label),label,
138
141
  map,res.status??void 0)}function namedFromRows(rows,label,map,status=200){return rows.map((row,index)=>{const mapped=map(row);if(mapped.id===null||mapped.name===null){throw new ResolveError(`${label}\u4E00\u89A7\u306E ${index+1} \u4EF6\u76EE\u306B id / \u540D\u524D\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`,status)}return{id:mapped.id,name:mapped.name,...mapped.code!==void 0?{code:mapped.code}:{},...mapped.aliases!==void 0&&
139
142
  mapped.aliases.length>0?{aliases:mapped.aliases}:{},...mapped.isDefault!==void 0?{isDefault:mapped.isDefault}:{}}})}function requireDefault(candidates,ctx){const hit=candidates.find(ref=>ref.isDefault===true);if(hit!==void 0)return hit;throw new UsageError(`${ctx.flag} \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08${ctx.scope??DEFAULT_LOOKUP_SCOPE}\u306B\u306F\u65E2\u5B9A\u306E${ctx.label}\u304C\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093\uFF09`,`\u6307\u5B9A\u3067\u304D\u308B${ctx.
140
- label}: ${candidates.map(ref=>ref.name).join(" / ")}\uFF08\u53E4\u3044\u30AD\u30E3\u30C3\u30B7\u30E5\u304C\u6B8B\u3063\u3066\u3044\u308B\u5834\u5408\u306F --refresh \u3067\u53D6\u308A\u76F4\u305B\u307E\u3059\uFF09`)}export{BACKLOG_BASE_PATH,backlogSpacePath,REDMINE_BASE_PATH,redmineServerPath,resolveNamed,requireDefaultProject,PRIVATE_TASKS_PATH,BACKLOG_SCOPE_LABEL,BACKLOG_PROJECT_SCOPE_LABEL,PROJECT_MEMBERS_LIMIT,DEPARTMENTS_PATH,POSITIONS_PATH,JOB_TITLES_PATH,INQUIRY_CATEGORIES_PATH,SUPPORTS_PATH,SUPPORT_CATEGORIES_PATH,NOTIFICATIONS_PATH,ANNOUNCEMENTS_PATH,WORKER_AGENTS_PATH,AGENT_SESSIONS_PATH,AGENT_REPOSITORIES_PATH,WORKFLOWS_PATH,REPORTS_PATH,ATTENDANCE_REPORTS_PATH,ATTENDANCE_REPORT_MASTER_PATHS,SALES_ESTIMATES_PATH,
141
- SALES_INVOICES_PATH,SALES_CONTRACTS_PATH,SALES_INVOICE_AUTO_TEMPLATES_PATH,SALES_DEPOSITS_PATH,SALES_PURCHASES_PATH,SALES_SUPPLIER_PAYMENTS_PATH,SALES_SUPPLIER_PAYMENT_SCHEDULES_PATH,SALES_BUSINESS_PLACES_PATH,SALES_PAYEES_PATH,SALES_SEAL_IMPRESSIONS_PATH,SALES_PURCHASE_AI_MAPPINGS_PATH,SALES_ESTIMATE_NO_RULES_PATH,SALES_INVOICE_NO_RULES_PATH,SALES_PURCHASE_NO_RULES_PATH,SALES_ESTIMATE_FORMATS_PATH,SALES_ROUNDING_SETTING_PATH,SALES_COMPANIES_PATH,CUSTOMERS_PATH,PROSPECTS_PATH,isExactNumericId,ORG_MASTER_LIMIT,
142
- TASK_MASTERS,Resolver};
143
+ label}: ${candidates.map(ref=>ref.name).join(" / ")}\uFF08\u53E4\u3044\u30AD\u30E3\u30C3\u30B7\u30E5\u304C\u6B8B\u3063\u3066\u3044\u308B\u5834\u5408\u306F --refresh \u3067\u53D6\u308A\u76F4\u305B\u307E\u3059\uFF09`)}export{BACKLOG_BASE_PATH,backlogSpacePath,REDMINE_BASE_PATH,redmineServerPath,resolveNamed,requireDefaultProject,PRIVATE_TASKS_PATH,BACKLOG_SCOPE_LABEL,BACKLOG_PROJECT_SCOPE_LABEL,PROJECT_MEMBERS_LIMIT,DEPARTMENTS_PATH,POSITIONS_PATH,JOB_TITLES_PATH,SEGMENTS_PATH,USER_CONTRACT_TYPES_PATH,FISCAL_YEAR_SETTINGS_PATH,INQUIRY_CATEGORIES_PATH,SUPPORTS_PATH,SUPPORT_CATEGORIES_PATH,NOTIFICATIONS_PATH,ANNOUNCEMENTS_PATH,WORKER_AGENTS_PATH,AGENT_SESSIONS_PATH,AGENT_REPOSITORIES_PATH,WORKFLOWS_PATH,REPORTS_PATH,
144
+ ATTENDANCE_REPORTS_PATH,ATTENDANCE_REPORT_MASTER_PATHS,ATTENDANCE_REPORT_MASTER_LABELS,SALES_ESTIMATES_PATH,SALES_INVOICES_PATH,SALES_CONTRACTS_PATH,SALES_INVOICE_AUTO_TEMPLATES_PATH,SALES_DEPOSITS_PATH,SALES_PURCHASES_PATH,SALES_SUPPLIER_PAYMENTS_PATH,SALES_SUPPLIER_PAYMENT_SCHEDULES_PATH,SALES_BUSINESS_PLACES_PATH,SALES_PAYEES_PATH,SALES_SEAL_IMPRESSIONS_PATH,SALES_PURCHASE_AI_MAPPINGS_PATH,SALES_ESTIMATE_NO_RULES_PATH,SALES_INVOICE_NO_RULES_PATH,SALES_PURCHASE_NO_RULES_PATH,SALES_ESTIMATE_FORMATS_PATH,
145
+ SALES_ROUNDING_SETTING_PATH,SALES_COMPANIES_PATH,CUSTOMERS_PATH,PROSPECTS_PATH,isExactNumericId,ORG_MASTER_LIMIT,TASK_MASTERS,Resolver};