@tocca-systems/twp-cli 0.64.0 → 0.66.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (113) hide show
  1. package/CHANGELOG.public.md +24 -0
  2. package/README.md +116 -8
  3. package/command-model/wiki.json +2 -2
  4. package/dist/agent-SFX3ZVOB.js +160 -0
  5. package/dist/{agent-loop-GPPUR2WD.js → agent-loop-6JO4PJRG.js} +23 -20
  6. package/dist/{ai-dispatch-FZDFJ4TN.js → ai-dispatch-YICIA4NI.js} +3 -3
  7. package/dist/analysis-HMOECNWG.js +5 -0
  8. package/dist/{announcement-ASKS53LL.js → announcement-Q642UMYK.js} +1 -1
  9. package/dist/{api-command-N2OJNJBC.js → api-command-4CUGQQI3.js} +4 -4
  10. package/dist/{app-QA2HKG6E.js → app-BBPK653N.js} +4 -4
  11. package/dist/{attendance-correct-KBNPGFGR.js → attendance-correct-DWVFYL2Y.js} +2 -2
  12. package/dist/{attendance-lists-C7TO3GQ2.js → attendance-lists-772Y3ZWA.js} +2 -2
  13. package/dist/{backlog-AWOTTGPB.js → backlog-FG3Y5JTE.js} +38 -28
  14. package/dist/{budget-Z6ILL7AU.js → budget-5WUQAAAZ.js} +2 -2
  15. package/dist/capacity-report-command-PBE73I43.js +15 -0
  16. package/dist/chunk-2OG4LAGD.js +41 -0
  17. package/dist/{chunk-T4QZO6RQ.js → chunk-5SONMN6K.js} +1 -1
  18. package/dist/chunk-6CS5L24D.js +4 -0
  19. package/dist/chunk-6OLZMQBK.js +11 -0
  20. package/dist/chunk-6PAZUW73.js +16 -0
  21. package/dist/{chunk-YKI7NYBD.js → chunk-7EJOKJLV.js} +57 -18
  22. package/dist/{chunk-3WFZOOXZ.js → chunk-AGI5KT4C.js} +1 -1
  23. package/dist/{chunk-LAAKI3GS.js → chunk-APPYZQNC.js} +1 -1
  24. package/dist/{chunk-4CR64SNH.js → chunk-CCBNU5Y3.js} +2 -2
  25. package/dist/{chunk-RWR7OHVP.js → chunk-DAOC7VRM.js} +1 -1
  26. package/dist/{chunk-JYCJ4N6T.js → chunk-F4PGPJOI.js} +1 -1
  27. package/dist/{chunk-AEJHDFXB.js → chunk-FABDZBDZ.js} +5 -5
  28. package/dist/{chunk-PIB6MGG5.js → chunk-FAHDBWW2.js} +1 -1
  29. package/dist/{chunk-234WHKGS.js → chunk-FDVWV3AY.js} +2 -2
  30. package/dist/chunk-G4TZFGNN.js +41 -0
  31. package/dist/{chunk-NQWTPHUO.js → chunk-GLKZ4ZZY.js} +1 -1
  32. package/dist/{worker-agent-XCJGZHMT.js → chunk-HBEOI456.js} +3 -3
  33. package/dist/{chunk-ITRTFBV3.js → chunk-HNG6MF26.js} +52 -49
  34. package/dist/{chunk-QSXS5SB2.js → chunk-HPPIVCK3.js} +3 -2
  35. package/dist/chunk-KDH3KWPO.js +4 -0
  36. package/dist/chunk-LJVAOWZI.js +65 -0
  37. package/dist/{chunk-UIHNYBME.js → chunk-NVMJXFBT.js} +1 -1
  38. package/dist/{chunk-FITASHOM.js → chunk-OMWCSE4P.js} +2 -2
  39. package/dist/{chunk-XPPT3MUY.js → chunk-P2DSHLHD.js} +2 -2
  40. package/dist/chunk-P6M2MCZJ.js +97 -0
  41. package/dist/{chunk-RROCQRRY.js → chunk-QJAZLPA3.js} +1 -1
  42. package/dist/chunk-SPZ3GBYC.js +16 -0
  43. package/dist/chunk-VIWQMDGG.js +91 -0
  44. package/dist/{chunk-S5DEP2HA.js → chunk-W2AIT5FJ.js} +5 -5
  45. package/dist/{chunk-FDRXS6ZU.js → chunk-WBUYPDJH.js} +1 -1
  46. package/dist/{chunk-5LPELULJ.js → chunk-WMEGP2BT.js} +1 -1
  47. package/dist/{chunk-NXWXTUU6.js → chunk-X6L5LUC4.js} +1 -1
  48. package/dist/{chunk-6PQO3AYP.js → chunk-XCPZ4R65.js} +1 -1
  49. package/dist/{chunk-VV4GTQ2L.js → chunk-XGYOJHZC.js} +16 -13
  50. package/dist/cli.js +100 -11
  51. package/dist/{commands-WIQVCMQE.js → commands-4C6TJ4WG.js} +1 -1
  52. package/dist/{commands-HK7DUMUJ.js → commands-62NWF7GA.js} +105 -155
  53. package/dist/{company-YPDJZ3SE.js → company-4DHVAW25.js} +2 -2
  54. package/dist/{completion-7RHQKR5U.js → completion-WR2GXZE7.js} +5 -4
  55. package/dist/{contract-2Y5VN3TR.js → contract-PT7VW4IE.js} +2 -2
  56. package/dist/{department-K4EFC6NW.js → department-C6WIZPBS.js} +1 -1
  57. package/dist/{deposit-NTLHIMJL.js → deposit-OEYFPEZG.js} +1 -1
  58. package/dist/{estimate-C5LUNIWR.js → estimate-4BUJQ3TP.js} +3 -3
  59. package/dist/{evaluation-ZWUHSENB.js → evaluation-GLXQ54F6.js} +1 -1
  60. package/dist/{expense-BXJ7QYMP.js → expense-QE3WIJTN.js} +1 -1
  61. package/dist/fiscal-year-YJWFQN4P.js +17 -0
  62. package/dist/{inquiry-KHPPTYN6.js → inquiry-ORB3ROAJ.js} +1 -1
  63. package/dist/{invoice-VV2NT4A3.js → invoice-XLX5KS2T.js} +3 -3
  64. package/dist/{job-title-RCSL5Y2Z.js → job-title-UDF6I3BP.js} +1 -1
  65. package/dist/{knowledge-BLU6RHS5.js → knowledge-4QPIGJEE.js} +32 -27
  66. package/dist/{leave-RJBCHZCQ.js → leave-3BJMXI7Q.js} +3 -3
  67. package/dist/license-OMIZUUTW.js +56 -0
  68. package/dist/{logout-guard-GQBF3GQH.js → logout-guard-2Y7HPIKN.js} +2 -1
  69. package/dist/{media-OIAOW546.js → media-77LTBOQX.js} +3 -3
  70. package/dist/{notification-KPMGELOR.js → notification-2IESSY5E.js} +1 -1
  71. package/dist/{oneshot-OWEBFX5O.js → oneshot-4XO5HIJR.js} +1 -1
  72. package/dist/{outlook-AAS5DXYQ.js → outlook-KYTXHDAV.js} +1 -1
  73. package/dist/plan-submit-T5KHXNGH.js +4 -0
  74. package/dist/{position-NY5LRELH.js → position-CR6P4WC5.js} +1 -1
  75. package/dist/{project-4MEGZ326.js → project-JJEMEO2W.js} +1 -1
  76. package/dist/{prospect-7D2WK56K.js → prospect-QG6X7ALK.js} +2 -2
  77. package/dist/{purchase-S7W67LJP.js → purchase-Z6ENEOZM.js} +3 -3
  78. package/dist/{receivable-GFJTEELC.js → receivable-ZBDXXMHX.js} +1 -1
  79. package/dist/{redmine-P3EMFFHY.js → redmine-EIFHMLNE.js} +1 -1
  80. package/dist/{registry-GRRRT3I6.js → registry-BIJNO3HE.js} +1 -1
  81. package/dist/{report-FUIVLC7B.js → report-TTXGXSR3.js} +1 -1
  82. package/dist/revision-command-PM7FQUVF.js +31 -0
  83. package/dist/{run-LSWFO4IY.js → run-TYKHDD6N.js} +2 -2
  84. package/dist/{sales-ai-review-P36TTQRO.js → sales-ai-review-6TDJFHDL.js} +1 -1
  85. package/dist/{sales-master-3CGHEFKF.js → sales-master-H5HMVBJV.js} +3 -3
  86. package/dist/{sales-numbering-3M2C2MAI.js → sales-numbering-Q5KRM63Y.js} +1 -1
  87. package/dist/{schedule-command-R5KTFAVZ.js → schedule-command-2HCOGYJW.js} +1 -1
  88. package/dist/{search-U3QNPR4D.js → search-GRAWP2LX.js} +1 -1
  89. package/dist/segment-YOUY4PZC.js +6 -0
  90. package/dist/server-settings-LJBDUOTV.js +4 -0
  91. package/dist/{server-skills-IFTDV3IQ.js → server-skills-KX236POI.js} +1 -1
  92. package/dist/{setup-MUPUY2AX.js → setup-HHPKB6N4.js} +3 -3
  93. package/dist/{skill-C4TGG7SH.js → skill-RH5MBRXZ.js} +1 -1
  94. package/dist/{supplier-payment-KG57PNWJ.js → supplier-payment-EJTFKAKY.js} +2 -2
  95. package/dist/{support-BRVAJ7IH.js → support-FR3KY63E.js} +1 -1
  96. package/dist/{task-RYBYPM4N.js → task-O7K6725Y.js} +3 -3
  97. package/dist/{teams-GPJ6HMIX.js → teams-QRVCFJS4.js} +1 -1
  98. package/dist/{user-3DE46776.js → user-PRGHG3HM.js} +15 -103
  99. package/dist/user-contract-type-K7CLKCEE.js +32 -0
  100. package/dist/worker-agent-WDYZTQ5C.js +4 -0
  101. package/dist/{workflow-MMEOWZJC.js → workflow-S25JXGWN.js} +1 -1
  102. package/package.json +1 -1
  103. package/dist/agent-UAOZYMQM.js +0 -100
  104. package/dist/analysis-RKWGO7UY.js +0 -4
  105. package/dist/chunk-2B7A3OY7.js +0 -102
  106. package/dist/chunk-4P7EYEL5.js +0 -4
  107. package/dist/chunk-AT432SCP.js +0 -15
  108. package/dist/chunk-QEWCTKPV.js +0 -15
  109. package/dist/chunk-QHX5YFMM.js +0 -23
  110. package/dist/chunk-RZ2NZE4U.js +0 -36
  111. package/dist/chunk-THOBFX2S.js +0 -10
  112. package/dist/plan-submit-AWMD7XOY.js +0 -3
  113. package/dist/server-settings-3YD7RR3A.js +0 -3
@@ -1,8 +1,8 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{ASSIGNED_PROJECT_COLUMNS,assignedProjectItems}from"./chunk-4CR64SNH.js";import{FISCAL_YEAR_FLAG,fiscalYear,skillNames}from"./chunk-6UPLPTBP.js";import{createFlags,fieldBody,hasAnyField,resolveRefFields,updateFlags}from"./chunk-VV4GTQ2L.js";import{decodeCsvText,readCsvFileText}from"./chunk-QLENN5DD.js";import{booleanText,boundedText,isoDate,isoDateValue}from"./chunk-JJSBBWJ5.js";import"./chunk-LAAKI3GS.js";import{repeatedValues}from"./chunk-RX5HWI4L.js";
4
- import{LIST_FLAGS,LIST_PAGING_HELP,envelopePaging,flagSegment,nonEmpty,positiveInteger,shellQuote}from"./chunk-MI6HVYR2.js";import{USER_REF_FLAG,USER_REF_HELP,prepareUser,userPath}from"./chunk-YKI7NYBD.js";import"./chunk-EXT4AIDF.js";import"./chunk-6LSQCOCJ.js";import{DEPARTMENTS_PATH,ORG_MASTER_LIMIT,POSITIONS_PATH}from"./chunk-ITRTFBV3.js";import{ResolveError,isSafePathSegment}from"./chunk-HVZUXLQ4.js";import{ApiError}from"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";
5
- import{requireResolved,singleRef,withResolved}from"./chunk-PS5QFKHB.js";import"./chunk-II5RVJQN.js";import{isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiRejectedError,ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";import"./chunk-J7QYPKVK.js";import"./chunk-4VZKNEVN.js";import"./chunk-RZVI6PMW.js";import"./chunk-QQRJLH6B.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";import fs2 from"fs";var ASSIGNMENT_COLUMNS=["id","department_name","position_name","start_date","end_date","is_primary","is_current","is_approval_route","effective_status"];function assignmentRows(body){const response=isRecord(body)&&"response"in body?body["response"]:body;const list=isRecord(response)?response["list"]:void 0;if(!Array.isArray(list)){throw new ApiResponseError("\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")}
3
+ import{ASSIGNED_PROJECT_COLUMNS,assignedProjectItems}from"./chunk-CCBNU5Y3.js";import{FISCAL_YEAR_FLAG,fiscalYear,skillNames}from"./chunk-6UPLPTBP.js";import{exportOperation}from"./chunk-VIWQMDGG.js";import{readCsvFileText}from"./chunk-QLENN5DD.js";import"./chunk-APPYZQNC.js";import{USER_REF_FLAG,USER_REF_HELP,prepareUser,userPath}from"./chunk-7EJOKJLV.js";import"./chunk-EXT4AIDF.js";import{createFlags,fieldBody,hasAnyField,resolveRefFields,updateFlags}from"./chunk-XGYOJHZC.js";
4
+ import{booleanText,boundedText,isoDate,isoDateValue}from"./chunk-JJSBBWJ5.js";import{LIST_FLAGS,LIST_PAGING_HELP,envelopePaging,nonEmpty,positiveInteger,shellQuote}from"./chunk-MI6HVYR2.js";import{repeatedValues}from"./chunk-RX5HWI4L.js";import"./chunk-6LSQCOCJ.js";import{DEPARTMENTS_PATH,ORG_MASTER_LIMIT,POSITIONS_PATH}from"./chunk-HNG6MF26.js";import{ResolveError,isSafePathSegment}from"./chunk-HVZUXLQ4.js";import{ApiError}from"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";
5
+ import{requireResolved,singleRef,withResolved}from"./chunk-PS5QFKHB.js";import"./chunk-II5RVJQN.js";import{isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiRejectedError,ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";import"./chunk-J7QYPKVK.js";import"./chunk-4VZKNEVN.js";import"./chunk-RZVI6PMW.js";import"./chunk-QQRJLH6B.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";import fs from"fs";var ASSIGNMENT_COLUMNS=["id","department_name","position_name","start_date","end_date","is_primary","is_current","is_approval_route","effective_status"];function assignmentRows(body){const response=isRecord(body)&&"response"in body?body["response"]:body;const list=isRecord(response)?response["list"]:void 0;if(!Array.isArray(list)){throw new ApiResponseError("\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")}
6
6
  return list}async function nameMap(ctx,path,label2){try{const body=await ctx.send({method:"GET",path,query:{limit:ORG_MASTER_LIMIT}});const list=isRecord(body)?body["list"]:void 0;if(!Array.isArray(list))throw new Error(`${label2}\u4E00\u89A7\u306E\u5FDC\u7B54\u306B list \u914D\u5217\u304C\u3042\u308A\u307E\u305B\u3093`);const count=isRecord(body)?body["count"]:void 0;if(typeof count==="number"&&count>list.length){ctx.warn(`${label2}\u4E00\u89A7\u304C ${count} \u4EF6\u4E2D ${list.length} \u4EF6\u3067\u5207\u308A\u8A70\u3081\u3089\
7
7
  \u308C\u305F\u305F\u3081\u3001\u4E00\u90E8\u306E${label2}\u540D\u306F\u7A7A\u6B04\u3067\u3059\u3002ID \u306F --output json \u3067\u78BA\u8A8D\u3067\u304D\u307E\u3059\u3002`)}const map={};for(const row of list){if(isRecord(row)&&typeof row["id"]==="string"&&typeof row["name"]==="string"){map[row["id"]]=row["name"]}}return map}catch(err){ctx.warn(`${label2}\u540D\u3092\u53D6\u5F97\u3067\u304D\u306A\u304B\u3063\u305F\u305F\u3081\u3001${label2}\u540D\u306E\u5217\u306F\u7A7A\u6B04\u3067\u3059\uFF08${err.
8
8
  message}\uFF09\u3002ID \u306F --output json \u3067\u78BA\u8A8D\u3067\u304D\u307E\u3059\u3002`);return{}}}function assignmentPlan(input){const suffix=input.flags.has("--current")?"/assignments/current":"/assignments";return{method:"GET",path:`/api/v2/organization/users/${userPath(input,suffix)}`}}var listOperation={name:"list",summary:"\u30E6\u30FC\u30B6\u30FC\u306E\u6240\u5C5E\u306E\u5C65\u6B74\u3092\u4E00\u89A7\u3059\u308B",usage:"twp user assignment list <\u30E6\u30FC\u30B6\u30FC> [--current]",
@@ -133,95 +133,7 @@ newPosition;return withResolved(resolved,inherited)},plan(input){if(isBulk(input
133
133
  input,"userId"),departmentId:requireResolved(input,"department_id"),startDate:isoDate(input,START_DATE_FLAG.name),existingIds:existingIdsOf(input),current};ctx.warn((await partialMoveLines(ctx,target,!(err instanceof ApiError))).join("\n"))}throw err}},summarize:body=>isBulkBody(body)?bulkSummary(body):writeSummary(body,"\u6240\u5C5E\u306E\u4ED8\u3051\u66FF\u3048"),raw:body=>isBulkBody(body)?bulkRaw(body):writeResult(body,"\u6240\u5C5E\u306E\u4ED8\u3051\u66FF\u3048"),notes(body,input){if(isBulkBody(
134
134
  body))return bulkNotes(body);const notes=[...previousPrimaryNotes(body)];const current=currentPrimaryOf(input);const created=isRecord(body)&&isRecord(body["assignment"])?strOrNull(body["assignment"]["id"]):null;if(current!==null&&created!==null){const startDate=isoDate(input,START_DATE_FLAG.name);const immediate=startDate<=(input.resolved?.["today"]??"");const commands=revertCommands(requireResolved(input,"userId"),current,created,immediate);const later=immediate?"":`
135
135
  \uFF08${startDate} \u4EE5\u964D\u306B\u623B\u3059\u3068\u304D\u306F\u30012\u672C\u76EE\u306B --primary true \u3068\u5143\u306E\u89B3\u5BDF\u8005\u306E --observer \u3082\u4ED8\u3051\u3066\u304F\u3060\u3055\u3044\uFF09`;notes.push(`\u53D6\u308A\u6D88\u3059\u306B\u306F:
136
- ${commands.map(c=>` ${c}`).join("\n")}${later}`)}return notes}};var userAssignmentResource={name:"assignment",summary:"\u30E6\u30FC\u30B6\u30FC\u306E\u6240\u5C5E\uFF08\u90E8\u7F72\u30FB\u5F79\u8077\uFF09\u306E\u53C2\u7167\u30FB\u4F5C\u6210\u30FB\u66F4\u65B0\u30FB\u7D42\u4E86\u30FB\u524A\u9664\u30FB\u4ED8\u3051\u66FF\u3048",operations:[listOperation,createOperation,updateOperation,endOperation,deleteOperation,moveOperation]};import fs from"fs";var LOGIN_HISTORY_RETENTION_DAYS=90;var DEFAULT_INACTIVE_DAYS=60;var DEFAULT_MAX_USERS=2e3;var LIST_PAGE_LIMIT=100;var MATRIX_PAGE_LIMIT=200;var LOGIN_HISTORY_LIMIT=500;var CONCURRENCY=4;var SEND_PER_MINUTE=200;var SEND_BURST=30;var RATE_LIMIT_WAIT_MS=6e4;var RATE_LIMIT_RETRIES=2;var LEDGER_MAX_BYTES=5*1024*1024;var USAGE="twp user export [--file <\u53F0\u5E33CSV>] [--include-disabled] [--exclude-hidden] [--inactive-days <\u65E5\u6570>] [--code-column <\u5217\u540D>] [--name-column <\u5217\u540D>] [--email-column <\u5217\u540D>] [--department-c\
137
- olumn <\u5217\u540D>] [--position-column <\u5217\u540D>] [--max-users <\u4EBA\u6570>]";var HELP="twp user export help";var listPaging=envelopePaging({label:"\u30E6\u30FC\u30B6\u30FC\u4E00\u89A7"});var LEDGER_ROLES=["code","name","email","department","position"];var ROLE_LABEL={code:"\u793E\u54E1\u756A\u53F7",name:"\u6C0F\u540D",email:"\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9",department:"\u90E8\u7F72",position:"\u5F79\u8077"};var COLUMN_CANDIDATES={code:["\u793E\u54E1\u756A\u53F7","\u5F93\u696D\u54E1\u756A\u53F7",
138
- "\u793E\u54E1\u30B3\u30FC\u30C9","\u5F93\u696D\u54E1\u30B3\u30FC\u30C9","employee_code","employee_no"],name:["\u6C0F\u540D","\u540D\u524D","\u793E\u54E1\u540D","\u5F93\u696D\u54E1\u540D","name","user_name"],email:["\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9","\u4F1A\u793E\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9","email","login_id"],department:["\u90E8\u7F72","\u90E8\u7F72\u540D","\u6240\u5C5E\u90E8\u7F72","department","department_name"],position:["\u5F79\u8077","\u5F79\u8077\u540D","position",
139
- "position_name"]};function parseCsvRecords(text){const records=[];let cells=[];let field="";let quoted=false;let started=false;let line=1;let recordLine=1;let i=0;const pushRecord=()=>{cells.push(field);records.push({line:recordLine,cells});cells=[];field="";started=false};while(i<text.length){const ch=text[i];if(quoted){if(ch==='"'){if(text[i+1]==='"'){field+='"';i+=2;continue}quoted=false}else if(ch==="\r"||ch==="\n"){if(ch==="\r"&&text[i+1]==="\n")i+=1;line+=1;field+="\n"}else{field+=ch}i+=1;
140
- continue}if(ch==='"'&&field.trim()===""){quoted=true;started=true;field=""}else if(ch===","){cells.push(field);field="";started=true}else if(ch==="\r"||ch==="\n"){if(ch==="\r"&&text[i+1]==="\n")i+=1;pushRecord();line+=1;recordLine=line}else{field+=ch;started=true}i+=1}if(quoted)throw new UsageError(`\u53F0\u5E33 CSV \u306E ${recordLine} \u884C\u76EE\u3067\u5F15\u7528\u7B26\uFF08"\uFF09\u304C\u9589\u3058\u3066\u3044\u307E\u305B\u3093`,HELP);if(started)pushRecord();return records}var decodeLedger=decodeCsvText;
141
- function normalizeHeader(value){return value.normalize("NFKC").trim().toLowerCase()}function normalizeValue(value){return value.normalize("NFKC").replace(/\s+/g," ").trim().toLowerCase()}function resolveColumns(header,overrides){const normalized=header.map(normalizeHeader);const map={};for(const role of LEDGER_ROLES){const wanted=overrides[role];if(wanted!==void 0){const index2=normalized.indexOf(normalizeHeader(wanted));if(index2<0){throw new UsageError(`\u53F0\u5E33 CSV \u306B\u300C${wanted}\u300D\u3068\
142
- \u3044\u3046\u5217\u304C\u3042\u308A\u307E\u305B\u3093\uFF08--${role}-column\uFF09`,`\u898B\u51FA\u3057\u884C\u306E\u5217: ${header.map(h=>h.trim()).join("\u3001")}`)}map[role]=index2;continue}const index=normalized.findIndex(h=>COLUMN_CANDIDATES[role].some(c=>normalizeHeader(c)===h));if(index>=0)map[role]=index}if(map.code===void 0&&map.email===void 0&&map.name===void 0){throw new UsageError("\u53F0\u5E33 CSV \u306B\u3001\u4EBA\u3092\u7A81\u304D\u5408\u308F\u305B\u308B\u5217\uFF08\u793E\u54E1\u756A\u53F7\u30FB\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\u30FB\u6C0F\u540D\u306E\u3069\u308C\u304B\uFF09\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093",
143
- `\u898B\u51FA\u3057\u884C\u306E\u5217: ${header.map(h=>h.trim()).join("\u3001")}
144
- \u5217\u540D\u304C\u9055\u3046\u3068\u304D\u306F --code-column / --email-column / --name-column \u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}return map}function parseLedger(text,overrides){const records=parseCsvRecords(text).filter(r=>r.cells.some(c=>c.trim()!==""));const[header,...body]=records;if(header===void 0)throw new UsageError("\u53F0\u5E33 CSV \u304C\u7A7A\u3067\u3059\uFF081\u884C\u76EE\u306B\u898B\u51FA\u3057\u304C\u5FC5\u8981\u3067\u3059\uFF09",HELP);const columns=resolveColumns(
145
- header.cells,overrides);const rows=[];const errors=[];const seen={code:new Map,email:new Map};for(const record of body){const value=role=>{const index=columns[role];if(index===void 0)return void 0;const raw=(record.cells[index]??"").trim();return raw===""?void 0:raw};const cells={};for(const role of LEDGER_ROLES){const v=value(role);if(v!==void 0)cells[role]=v}const row={line:record.line,...cells};if(row.code===void 0&&row.email===void 0&&row.name===void 0){errors.push(`${record.line} \u884C\u76EE: \u793E\u54E1\u756A\u53F7\u30FB\u30E1\
146
- \u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\u30FB\u6C0F\u540D\u304C\u3059\u3079\u3066\u7A7A\u3067\u3059`);continue}let duplicated=false;for(const role of["code","email"]){const v=row[role];if(v===void 0)continue;const first=seen[role].get(normalizeValue(v));if(first!==void 0){errors.push(`${record.line} \u884C\u76EE: ${ROLE_LABEL[role]} ${v} \u306F ${first} \u884C\u76EE\u3068\u91CD\u8907\u3057\u3066\u3044\u307E\u3059`);duplicated=true}else{seen[role].set(normalizeValue(v),record.line)}}if(!duplicated)rows.
147
- push(row)}if(errors.length>0){throw new UsageError(`\u53F0\u5E33 CSV \u306B\u4E0D\u6B63\u306A\u884C\u304C ${errors.length} \u884C\u3042\u308A\u307E\u3059:
148
- ${errors.join("\n ")}`,HELP)}return{header:header.cells.map(h=>h.trim()),columns,rows}}function readLedgerFile(file){let fd;try{fd=fs.openSync(file,"r");if(!fs.fstatSync(fd).isFile())throw new UsageError(`--file \u306B\u901A\u5E38\u306E\u30D5\u30A1\u30A4\u30EB\u4EE5\u5916\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093: ${file}`,HELP);const buffer=Buffer.alloc(LEDGER_MAX_BYTES+1);let total=0;for(;;){const n=fs.readSync(fd,buffer,total,buffer.length-total,null);if(n===0)break;total+=n;if(total>
149
- LEDGER_MAX_BYTES){throw new UsageError(`--file \u306E\u30D5\u30A1\u30A4\u30EB\u304C\u5927\u304D\u3059\u304E\u307E\u3059: ${file}`,`\u4E0A\u9650\u306F ${LEDGER_MAX_BYTES} \u30D0\u30A4\u30C8\u3067\u3059\u3002`)}}return buffer.subarray(0,total)}catch(err){if(err instanceof UsageError)throw err;const reason=err.code??err.message;throw new UsageError(`--file \u306E\u30D5\u30A1\u30A4\u30EB\u3092\u8AAD\u3081\u307E\u305B\u3093: ${file}\uFF08${reason}\uFF09`,HELP)}finally{if(fd!==void 0)fs.closeSync(fd)}}
150
- var KIND_LABEL={not_in_ledger:"\u53F0\u5E33\u306B\u3044\u306A\u3044\uFF08\u5931\u52B9\u6F0F\u308C\uFF09",missing_in_twp:"TWP \u306B\u3044\u306A\u3044\uFF08\u767B\u9332\u6F0F\u308C\uFF09",disabled_in_twp:"TWP \u3067\u5931\u52B9\u3057\u3066\u3044\u308B\uFF08\u8AA4\u5931\u52B9\uFF09",ambiguous:"\u8907\u6570\u306E\u30E6\u30FC\u30B6\u30FC\u306B\u4E00\u81F4\uFF08\u7A81\u304D\u5408\u308F\u305B\u3067\u304D\u306A\u3044\uFF09",department_mismatch:"\u90E8\u7F72\u304C\u9055\u3046\uFF08\u7570\u52D5\u306E\u53CD\u6620\u6F0F\u308C\uFF09",
151
- position_mismatch:"\u5F79\u8077\u304C\u9055\u3046\uFF08\u7570\u52D5\u306E\u53CD\u6620\u6F0F\u308C\uFF09",inactive:"\u9577\u671F\u9593\u30ED\u30B0\u30A4\u30F3\u3057\u3066\u3044\u306A\u3044"};function str(value){return typeof value==="string"&&value!==""?value:null}function listPlan(input,cursor){return{method:"GET",path:"/api/v2/admin/users/list",query:{limit:LIST_PAGE_LIMIT,cursor,include_hidden:input.flags.has("--exclude-hidden")?void 0:"true"}}}var sleep=ms=>new Promise(resolve=>setTimeout(resolve,
152
- ms));function pacedSender(ctx){const intervalMs=6e4/SEND_PER_MINUTE;let tokens=SEND_BURST;let last=Date.now();let chain=Promise.resolve();const take=()=>{chain=chain.then(async()=>{const now=Date.now();tokens=Math.min(SEND_BURST,tokens+(now-last)/intervalMs);last=now;if(tokens<1){await sleep((1-tokens)*intervalMs);tokens=1;last=Date.now()}tokens-=1});return chain};return async plan=>{for(let attempt=0;;attempt+=1){await take();try{return await ctx.send(plan)}catch(err){if(!(err instanceof ApiError)||
153
- err.status!==429||attempt>=RATE_LIMIT_RETRIES)throw err;ctx.warn(`API \u306E\u30EC\u30FC\u30C8\u5236\u9650\uFF08429\uFF09\u306B\u5F53\u305F\u3063\u305F\u305F\u3081\u3001${RATE_LIMIT_WAIT_MS/1e3} \u79D2\u5F85\u3063\u3066\u9001\u308A\u76F4\u3057\u307E\u3059\u3002`);await sleep(RATE_LIMIT_WAIT_MS)}}}}async function mapPool(items,limit,fn){const results=new Array(items.length);let next=0;let failed=false;const worker=async()=>{while(!failed&&next<items.length){const index=next;next+=1;try{results[index]=
154
- await fn(items[index])}catch(err){failed=true;throw err}}};await Promise.all(Array.from({length:Math.min(limit,items.length)},worker));return results}async function listAllUsers(input,send,maxUsers){const users=[];let cursor;for(;;){const body=await send(listPlan(input,cursor));for(const item of listPaging.items(body)){if(!isRecord(item)||typeof item["user_id"]!=="string"){throw new ApiResponseError("\u30E6\u30FC\u30B6\u30FC\u4E00\u89A7\u306E\u884C\u306B user_id \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002")}
155
- users.push(item)}if(users.length>maxUsers){throw new UsageError(`\u5BFE\u8C61\u306E\u30E6\u30FC\u30B6\u30FC\u304C ${maxUsers} \u4EBA\u3092\u8D85\u3048\u305F\u305F\u3081\u3001\u8A73\u7D30\u3092\u8AAD\u3080\u524D\u306B\u6B62\u3081\u307E\u3057\u305F\uFF081\u4EBA\u3042\u305F\u308A\u6700\u59273\u5F80\u5FA9\u3057\u307E\u3059\uFF09`,input.flags.has("--exclude-hidden")?`\u4E0A\u9650\u3092\u4E0A\u3052\u308B\u306A\u3089 --max-users <\u4EBA\u6570> \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002`:
156
- "\u8868\u793A\u30D5\u30E9\u30B0\u3092\u5916\u3057\u305F\u30E6\u30FC\u30B6\u30FC\u3092\u9664\u304F\u306A\u3089 --exclude-hidden\u3001\u4E0A\u9650\u3092\u4E0A\u3052\u308B\u306A\u3089 --max-users <\u4EBA\u6570> \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002")}const next=listPaging.nextCursor(body);if(next===null)return users;cursor=next}}async function permissionMatrix(input,send){const map=new Map;for(let page=1;;page+=1){const body=await send({method:"GET",path:"/api/v2/admin/users/\
157
- permissions-matrix",query:{page,limit:MATRIX_PAGE_LIMIT,include_hidden:input.flags.has("--exclude-hidden")?void 0:"true"}});const items=isRecord(body)?body["items"]:void 0;const totalPages=isRecord(body)?body["total_pages"]:void 0;if(!Array.isArray(items)||typeof totalPages!=="number"){throw new ApiResponseError("\u6A29\u9650\u30DE\u30C8\u30EA\u30AF\u30B9\u306E\u5FDC\u7B54\u306B items / total_pages \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002")}
158
- for(const item of items){if(!isRecord(item)||typeof item["user_id"]!=="string")continue;const raw=item["feature_permissions"];const levels={};if(isRecord(raw)){for(const[feature,level]of Object.entries(raw)){if(typeof level==="string")levels[feature]=level}}else if(!Array.isArray(raw)){continue}map.set(item["user_id"],levels)}if(page>=totalPages)return map}}function userSegment(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}\
159
- \u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}return encodeURIComponent(userId)}async function userDetail(send,userId){const body=await send({method:"GET",path:`/api/v2/admin/users/${userSegment(userId)}`});if(!isRecord(body)||body["user_id"]!==userId){throw new ApiResponseError(`\u30E6\u30FC\u30B6\u30FC\u8A73\u7D30\u306E\u5FDC\u7B54\u304C ${userId} \u306E\u3082\u306E\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}
160
- return body}async function primaryAssignment(send,userId){const body=await send({method:"GET",path:`/api/v2/organization/users/${userSegment(userId)}/assignments/current`});const list=isRecord(body)?body["list"]:void 0;if(!Array.isArray(list))throw new ApiResponseError("\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");const primary=list.find(row=>isRecord(row)&&
161
- row["is_approval_route"]===true)??list.find(row=>isRecord(row)&&row["is_primary"]===true);return isRecord(primary)?{id:str(primary["id"]),managerId:str(primary["manager_id"])}:{id:null,managerId:null}}async function lastLogin(send,userId){const body=await send({method:"GET",path:"/api/v2/admin/tenant/login-history",query:{user_id:userId,result:"success",limit:LOGIN_HISTORY_LIMIT}});const data=isRecord(body)&&isRecord(body["data"])?body["data"]:body;const histories=isRecord(data)?data["histories"]:
162
- void 0;if(!Array.isArray(histories)){throw new ApiResponseError("\u30ED\u30B0\u30A4\u30F3\u5C65\u6B74\u306E\u5FDC\u7B54\u306B histories \u914D\u5217\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002")}let latest=null;for(const h of histories){const ts=isRecord(h)&&h["result"]==="success"?str(h["timestamp"]):null;if(ts!==null&&(latest===null||ts>latest))latest=ts}return latest}async function collectInventory(input,ctx){const send=pacedSender(
163
- ctx);const maxUsers=Number(requireResolved(input,"maxUsers"));const users=await listAllUsers(input,send,maxUsers);const permissions=await permissionMatrix(input,send);const minutes=Math.ceil(users.length*3/SEND_PER_MINUTE);ctx.warn(`${users.length} \u4EBA\u306E\u8A73\u7D30\u30FB\u6240\u5C5E\u30FB\u6700\u7D42\u30ED\u30B0\u30A4\u30F3\u3092\u8AAD\u307F\u307E\u3059\uFF08\u6700\u5927 ${users.length*3} \u5F80\u5FA9`+(users.length*3>SEND_BURST?`\u30FB\u30EC\u30FC\u30C8\u5236\u9650\u306B\u5408\u308F\u305B\u3066\u6700\u9577 ${minutes}\
164
- \u5206\u307B\u3069`:"")+"\uFF09\u3002");const names=new Map(users.map(u=>[u["user_id"],str(u["user_name"])]));const rows=await mapPool(users,CONCURRENCY,async user=>{const userId=user["user_id"];const detail=await userDetail(send,userId);const authType2=str(detail["auth_type"]);const canLogin=authType2!=="disabled";const wantDetail=canLogin||input.flags.has("--include-disabled");const sso=authType2==="oauth";const[assignment,loginAt]=wantDetail?await Promise.all([primaryAssignment(send,userId),
165
- sso?Promise.resolve(null):lastLogin(send,userId)]):[{id:null,managerId:null},null];const managerId=assignment.managerId;return{user_id:userId,user_name:str(user["user_name"]),email:str(user["email"]),employee_code:str(user["employee_code"]),hire_date:str(detail["hire_date"]),department_name:str(user["department_name"]),position_name:str(user["position_name"]),assignment_id:assignment.id,manager_id:managerId,manager_name:managerId===null?null:names.get(managerId)??null,role:str(user["role"]),is_partner:typeof user["\
166
- is_partner"]==="boolean"?user["is_partner"]:null,permissions:permissions.get(userId)??null,auth_type:authType2,can_login:canLogin,display_flg:typeof user["display_flg"]==="boolean"?user["display_flg"]:null,last_login_at:loginAt,last_login_status:!wantDetail?"not_checked":sso?"sso_not_recorded":loginAt===null?"not_recorded":"recorded"}});return{rows,scanned:users.length}}function daysBetween(fromIso,now){return(now.getTime()-new Date(fromIso).getTime())/864e5}function placeholder(label2){return shellQuote(
167
- `<${label2}>`)}function disableCommand(userId){return`twp user update ${shellQuote(userId)} --auth-type disabled --display false --memberlist false --org-chart false --dashboard false`}function recentlyHired(hireDate,inactiveDays,now){return hireDate!==null&&daysBetween(`${hireDate}T00:00:00Z`,now)<=inactiveDays}function diffAgainstLedger(inventory,ledger,columns,inactiveDays,now){const index={code:new Map,email:new Map,name:new Map};const add=(map,key,row)=>{if(key===null)return;const k=normalizeValue(
168
- key);map.set(k,[...map.get(k)??[],row])};for(const row of inventory){add(index.code,row.employee_code,row);add(index.email,row.email,row);add(index.name,row.user_name,row)}const diffs=[];const matched=new Set;const base=(kind,user,line)=>({kind,kind_label:KIND_LABEL[kind],user_id:user?.user_id??null,user_name:user?.user_name??null,email:user?.email??null,employee_code:user?.employee_code??null,auth_type:user?.auth_type??null,is_partner:user?.is_partner??null,ledger_line:line,twp_value:null,ledger_value:null,
169
- suggestion:null});const fromLedger=(kind,entry)=>({...base(kind,null,entry.line),user_name:entry.name??null,email:entry.email??null,employee_code:entry.code??null,ledger_value:entry.code??entry.email??entry.name??null});for(const entry of ledger){let candidates=[];for(const role of["code","email","name"]){const v=entry[role];if(v===void 0)continue;candidates=index[role].get(normalizeValue(v))??[];if(candidates.length>0)break}if(candidates.length>1){const active=candidates.filter(c=>c.can_login);
170
- if(active.length===1)candidates=active}if(candidates.length>1){diffs.push({...fromLedger("ambiguous",entry),twp_value:`${candidates.length} \u4EBA\u306B\u4E00\u81F4\uFF08${candidates.map(c=>c.user_id).join(", ")}\uFF09`,suggestion:null});continue}const user=candidates[0];if(user===void 0){diffs.push({...fromLedger("missing_in_twp",entry),suggestion:`twp user invite create ${flagSegment("--email",entry.email??"<\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9>")}`});continue}matched.add(user.user_id);if(!user.
171
- can_login){diffs.push({...base("disabled_in_twp",user,entry.line),twp_value:user.auth_type,suggestion:`twp user update ${shellQuote(user.user_id)} --auth-type ${placeholder("\u5931\u52B9\u524D\u306E\u8A8D\u8A3C\u30BF\u30A4\u30D7")} --display true --memberlist true --org-chart true --dashboard true`});continue}if(columns.department!==void 0&&entry.department!==void 0&&normalizeValue(entry.department)!==normalizeValue(user.department_name??"")){diffs.push({...base("department_mismatch",user,entry.
172
- line),twp_value:user.department_name,ledger_value:entry.department,suggestion:`twp user assignment move ${shellQuote(user.user_id)} ${flagSegment("--department",entry.department)} --start-date ${placeholder("\u7570\u52D5\u65E5")}`})}if(columns.position!==void 0&&entry.position!==void 0&&normalizeValue(entry.position)!==normalizeValue(user.position_name??"")){diffs.push({...base("position_mismatch",user,entry.line),twp_value:user.position_name,ledger_value:entry.position,suggestion:user.assignment_id===
173
- null?null:`twp user assignment update ${shellQuote(user.assignment_id)} --user ${shellQuote(user.user_id)} `+flagSegment("--position",entry.position)})}}for(const user of inventory){if(!user.can_login)continue;if(!matched.has(user.user_id)){diffs.push({...base("not_in_ledger",user,null),twp_value:user.auth_type,suggestion:disableCommand(user.user_id)})}if(user.last_login_status==="sso_not_recorded"||recentlyHired(user.hire_date,inactiveDays,now))continue;if(user.last_login_at===null||daysBetween(
174
- user.last_login_at,now)>inactiveDays){diffs.push({...base("inactive",user,null),twp_value:user.last_login_at??`${LOGIN_HISTORY_RETENTION_DAYS}\u65E5\u4EE5\u5185\u306E\u30ED\u30B0\u30A4\u30F3\u8A18\u9332\u306A\u3057`})}}return diffs}var INVENTORY_COLUMNS=["user_id","user_name","email","employee_code","hire_date","department_name","position_name","manager_name","role","is_partner","permissions","auth_type","display_flg","last_login_at"];var DIFF_COLUMNS=["kind","kind_label","user_id","user_name","\
175
- email","employee_code","auth_type","is_partner","ledger_line","twp_value","ledger_value","suggestion"];function exportBody(body){if(!isRecord(body)||!Array.isArray(body["rows"])||body["mode"]!=="inventory"&&body["mode"]!=="diff"){throw new ApiResponseError("\u68DA\u5378\u306E\u7D50\u679C\u3092\u7D44\u307F\u7ACB\u3066\u3089\u308C\u307E\u305B\u3093\u3067\u3057\u305F\uFF08\u5185\u90E8\u30A8\u30E9\u30FC\uFF09\u3002")}return body}function permissionText(levels){if(levels===null)return"\uFF08\u53D6\u5F97\u3067\u304D\u305A\uFF09";
176
- const granted=Object.entries(levels).filter(([,level])=>level!=="none"&&level!=="").sort(([a],[b])=>a.localeCompare(b));return granted.length===0?"\uFF08\u306A\u3057\uFF09":granted.map(([feature,level])=>`${feature}:${level}`).join(";")}function lastLoginText(row){switch(row.last_login_status){case"recorded":return row.last_login_at;case"sso_not_recorded":return"\u5224\u5B9A\u4E0D\u80FD\uFF08SSO \u306F\u8A18\u9332\u3055\u308C\u306A\u3044\uFF09";case"not_recorded":return`${LOGIN_HISTORY_RETENTION_DAYS}\
177
- \u65E5\u4EE5\u5185\u306E\u8A18\u9332\u306A\u3057`;default:return null}}function spreadsheetSafe(value){return typeof value==="string"&&/^[=+\-@\t\r]/.test(value)?`'${value}`:value}function flagValue(input,flag){const raw=input.flags.get(flag);if(raw===void 0)return void 0;if(raw.trim()==="")throw new UsageError(`${flag} \u306B\u7A7A\u306E\u5024\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093`,HELP);return raw}function ledgerOf(input){const raw=input.resolved?.["ledger"];return raw===void 0?void 0:
178
- JSON.parse(raw)}var COLUMN_FLAGS=LEDGER_ROLES.map(role=>({name:`--${role}-column`,summary:`\u53F0\u5E33\u306E${ROLE_LABEL[role]}\u306E\u5217\u540D\uFF08\u65E2\u5B9A\u306F ${COLUMN_CANDIDATES[role].slice(0,3).join(" / ")} \u306A\u3069\u304B\u3089\u63A2\u3059\uFF09`,takesValue:true,placeholder:"<\u5217\u540D>"}));var exportOperation={name:"export",summary:"\u5728\u7C4D\u8005\u3092\u68DA\u5378\u3059\u308B\uFF08\u6240\u5C5E\u30FB\u5F79\u8077\u30FB\u4E0A\u9577\u30FB\u6A29\u9650\u30FB\u6700\u7D42\u30ED\u30B0\u30A4\u30F3\u4ED8\u304D\u30FB\u4EBA\u4E8B\u53F0\u5E33 CSV \u3068\u306E\u5DEE\u5206\uFF09",
179
- usage:USAGE,description:`\u5728\u7C4D\u8005\uFF08\u8A8D\u8A3C\u30BF\u30A4\u30D7\u304C disabled \u3067\u306A\u3044\u30E6\u30FC\u30B6\u30FC\uFF09\u30921\u4EBA1\u884C\u3067\u51FA\u3057\u307E\u3059\u3002\u8868\u793A\u30D5\u30E9\u30B0\u3092\u5916\u3057\u305F\u30E6\u30FC\u30B6\u30FC\u3082\u542B\u307F\u307E\u3059
180
- \uFF08\u8868\u793A\u30D5\u30E9\u30B0\u3060\u3051\u5916\u3057\u3066\u5931\u52B9\u3055\u305B\u3066\u3044\u306A\u3044\u4EBA\u3092\u898B\u3064\u3051\u308B\u305F\u3081\uFF09\u3002--exclude-hidden \u3067\u8868\u793A\u4E2D\u306E\u30E6\u30FC\u30B6\u30FC\u3060\u3051\u306B\u7D5E\u308C\u307E\u3059\u3002
181
- --include-disabled \u3067\u5931\u52B9\u6E08\u307F\u306E\u30E6\u30FC\u30B6\u30FC\u3082\u51FA\u3057\u307E\u3059\u3002\u7D44\u7E54\u7BA1\u7406\u8005\u3060\u3051\u304C\u4F7F\u3048\u307E\u3059\u3002
182
-
183
- \u5217: user_id / user_name / email / employee_code / hire_date\uFF08\u5165\u793E\u65E5\uFF09/ department_name\u30FBposition_name\uFF08\u4E3B\u6240\u5C5E\uFF09/
184
- manager_name\uFF08\u4E3B\u6240\u5C5E\u306E\u4E0A\u9577\uFF09/ role / is_partner / permissions\uFF08\u6A5F\u80FD\u3054\u3068\u306E\u6A29\u9650\u3002none \u306F\u7701\u304F\uFF09/ auth_type / display_flg / last_login_at\u3002
185
- \u500B\u4EBA\u9023\u7D61\u5148\uFF08\u500B\u4EBA\u30E1\u30FC\u30EB\u30FB\u7DCA\u6025\u9023\u7D61\u5148\u306A\u3069\uFF09\u306F\u51FA\u3057\u307E\u305B\u3093\u3002--output tsv \u3067\u8868\u8A08\u7B97\u30BD\u30D5\u30C8\u3078\u3001--output json \u3067\u4ED6\u306E\u30C4\u30FC\u30EB\u3078\u6E21\u305B\u307E\u3059
186
- \uFF08tsv / table \u3067\u306F\u3001= + - @ \u3067\u59CB\u307E\u308B\u5024\u306E\u5148\u982D\u306B ' \u3092\u4ED8\u3051\u3066\u3001\u8868\u8A08\u7B97\u30BD\u30D5\u30C8\u304C\u5F0F\u3068\u3057\u3066\u8AAD\u307E\u306A\u3044\u3088\u3046\u306B\u3057\u307E\u3059\uFF09\u3002
187
-
188
- \u6700\u7D42\u30ED\u30B0\u30A4\u30F3\u306F\u30ED\u30B0\u30A4\u30F3\u5C65\u6B74\u304B\u3089\u53D6\u308A\u307E\u3059\u3002\u6B21\u306E2\u70B9\u306B\u6CE8\u610F\u3057\u3066\u304F\u3060\u3055\u3044\u3002
189
- - \u30ED\u30B0\u30A4\u30F3\u5C65\u6B74\u306F90\u65E5\u3067\u6D88\u3048\u307E\u3059\u3002\u300C90\u65E5\u4EE5\u5185\u306E\u8A18\u9332\u306A\u3057\u300D\u306F\u4E00\u5EA6\u3082\u30ED\u30B0\u30A4\u30F3\u3057\u3066\u3044\u306A\u3044\u3001\u3068\u3044\u3046\u610F\u5473\u3067\u306F\u3042\u308A\u307E\u305B\u3093
190
- - Google / Microsoft \u306E SSO \u3067\u306E\u30ED\u30B0\u30A4\u30F3\u306F\u8A18\u9332\u3055\u308C\u307E\u305B\u3093\u3002\u8A8D\u8A3C\u30BF\u30A4\u30D7\u304C oauth \u306E\u30E6\u30FC\u30B6\u30FC\u306F\u300C\u5224\u5B9A\u4E0D\u80FD\u300D\u3068\u51FA\u3057\u3001
191
- \u9577\u671F\u672A\u30ED\u30B0\u30A4\u30F3\uFF08inactive\uFF09\u306E\u5224\u5B9A\u304B\u3089\u5916\u3057\u307E\u3059\u3002all \u306E\u30E6\u30FC\u30B6\u30FC\u304C SSO \u3060\u3051\u3067\u4F7F\u3063\u3066\u3044\u308B\u5834\u5408\u3082\u8A18\u9332\u306F\u6B8B\u308A\u307E\u305B\u3093
192
-
193
- --file <\u53F0\u5E33CSV> \u3092\u4ED8\u3051\u308B\u3068\u3001\u4EBA\u4E8B\u53F0\u5E33\u3068\u306E\u5DEE\u5206\u3060\u3051\u3092\u51FA\u3057\u307E\u3059\uFF081\u884C\u76EE\u306F\u898B\u51FA\u3057\u3002UTF-8 \u3068 Shift_JIS \u3092\u8AAD\u3081\u307E\u3059\uFF09:
194
- not_in_ledger TWP \u3067\u5931\u52B9\u3057\u3066\u3044\u306A\u3044\u304C\u53F0\u5E33\u306B\u3044\u306A\u3044\uFF08\u9000\u793E\u6642\u306E\u5931\u52B9\u6F0F\u308C\u3002\u30D1\u30FC\u30C8\u30CA\u30FC\u3084\u5171\u7528\u30A2\u30AB\u30A6\u30F3\u30C8\u3082\u51FA\u307E\u3059\uFF09
195
- missing_in_twp \u53F0\u5E33\u306B\u3044\u308B\u304C TWP \u306B\u3044\u306A\u3044\uFF08\u767B\u9332\u6F0F\u308C\uFF09
196
- disabled_in_twp \u53F0\u5E33\u306B\u3044\u308B\u304C TWP \u3067\u5931\u52B9\u3057\u3066\u3044\u308B\uFF08\u8AA4\u5931\u52B9\uFF09
197
- ambiguous \u53F0\u5E33\u306E1\u884C\u304C TWP \u306E\u8907\u6570\u306E\u30E6\u30FC\u30B6\u30FC\u306B\u4E00\u81F4\u3057\u3001\u6C7A\u3081\u3089\u308C\u306A\u3044
198
- department_mismatch \u90E8\u7F72\u304C\u9055\u3046\uFF08\u7570\u52D5\u306E\u53CD\u6620\u6F0F\u308C\u30FB\u53F0\u5E33\u306B\u90E8\u7F72\u306E\u5217\u304C\u3042\u308B\u3068\u304D\uFF09
199
- position_mismatch \u5F79\u8077\u304C\u9055\u3046\uFF08\u540C\u4E0A\u30FB\u53F0\u5E33\u306B\u5F79\u8077\u306E\u5217\u304C\u3042\u308B\u3068\u304D\uFF09
200
- inactive \u30ED\u30B0\u30A4\u30F3\u3067\u304D\u308B\u306E\u306B --inactive-days \u65E5\uFF08\u65E2\u5B9A60\u30FB\u6700\u592790\uFF09\u30ED\u30B0\u30A4\u30F3\u306E\u8A18\u9332\u304C\u7121\u3044
201
- \uFF08\u5165\u793E\u65E5\u304C\u305D\u306E\u65E5\u6570\u4EE5\u5185\u306E\u4EBA\u3068\u3001oauth \u306E\u4EBA\u306F\u51FA\u3057\u307E\u305B\u3093\uFF09
202
- \u53F0\u5E33\u306E\u4EBA\u3068\u306F\u3001\u793E\u54E1\u756A\u53F7 \u2192 \u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9 \u2192 \u6C0F\u540D\u306E\u9806\u306B\u8A66\u3057\u3001\u6700\u521D\u306B TWP \u306E\u8AB0\u304B\u306B\u5F53\u305F\u3063\u305F\u5217\u3067\u7A81\u304D\u5408\u308F\u305B\u307E\u3059\u3002
203
- \u90E8\u7F72\u30FB\u5F79\u8077\u306F TWP \u306E\u540D\u524D\u3068\u6BD4\u3079\u307E\u3059\uFF08\u5168\u89D2\u534A\u89D2\u30FB\u7A7A\u767D\u306E\u63FA\u308C\u3068\u5927\u6587\u5B57\u5C0F\u6587\u5B57\u306F\u7121\u8996\u3057\u307E\u3059\uFF09\u3002
204
- \u5217\u540D\u306F \u793E\u54E1\u756A\u53F7 / \u6C0F\u540D / \u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9 / \u90E8\u7F72 / \u5F79\u8077 \u306A\u3069\u3092\u81EA\u52D5\u3067\u63A2\u3057\u307E\u3059\u3002\u9055\u3046\u3068\u304D\u306F --code-column \u7B49\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044
205
- \uFF08\u898B\u51FA\u3057\u304C\u5358\u306B\u300C\u30E1\u30FC\u30EB\u300D\u306E\u5217\u306F\u500B\u4EBA\u30E1\u30FC\u30EB\u306E\u3053\u3068\u304C\u3042\u308B\u306E\u3067\u81EA\u52D5\u3067\u306F\u4F7F\u3044\u307E\u305B\u3093\uFF09\u3002\u4F7F\u3046\u5217\u306F\u5B9F\u884C\u524D\u306B\u8868\u793A\u3057\u307E\u3059\u3002
206
- \u5404\u884C\u306E suggestion \u306F\u6B21\u306B\u6253\u3064\u30B3\u30DE\u30F3\u30C9\u306E\u6848\u3067\u3059\u3002'<\u7570\u52D5\u65E5>' \u306A\u3069\u306E <\u2026> \u306F\u57CB\u3081\u3066\u304B\u3089\u5B9F\u884C\u3057\u3066\u304F\u3060\u3055\u3044\u3002
207
- \u5B9F\u884C\u3059\u308B\u524D\u306B\u3001\u5BFE\u8C61\u304C\u81EA\u5206\u81EA\u8EAB\u3084\u5171\u7528\u306E\u7BA1\u7406\u30A2\u30AB\u30A6\u30F3\u30C8\u3067\u306A\u3044\u304B\u3092\u78BA\u304B\u3081\u3066\u304F\u3060\u3055\u3044\uFF08\u5931\u52B9\u3055\u305B\u308B\u3068\u30ED\u30B0\u30A4\u30F3\u3067\u304D\u306A\u304F\u306A\u308A\u307E\u3059\uFF09\u3002
208
- twp user assignment move \u306F\u4E0A\u9577\u3092\u5F15\u304D\u7D99\u304C\u306A\u3044\u306E\u3067\u3001\u5FC5\u8981\u306A\u3089 --manager \u3082\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002
209
- \u72B6\u614B\u304C active \u3067\u306A\u3044\u30A2\u30AB\u30A6\u30F3\u30C8\uFF08\u30DE\u30B9\u30BF\u7BA1\u7406\u3067\u505C\u6B62\u3057\u305F\u3082\u306E\u7B49\uFF09\u306F\u4E00\u89A7\u306B\u51FA\u306A\u3044\u305F\u3081\u3001missing_in_twp \u306B\u51FA\u308B\u3053\u3068\u304C\u3042\u308A\u307E\u3059\u3002
210
-
211
- 1\u4EBA\u3042\u305F\u308A\u6700\u59273\u5F80\u5FA9\u3057\u307E\u3059\u3002\u672C\u756A\u306E API \u30EC\u30FC\u30C8\u5236\u9650\u306B\u5408\u308F\u305B\u30661\u5206\u3042\u305F\u308A ${SEND_PER_MINUTE} \u672C\u307E\u3067\u306B\u6291\u3048\u3066\u9001\u308A\u307E\u3059\u3002
212
- \u5BFE\u8C61\u304C --max-users\uFF08\u65E2\u5B9A ${DEFAULT_MAX_USERS} \u4EBA\uFF09\u3092\u8D85\u3048\u308B\u3068\u3001\u8A73\u7D30\u3092\u8AAD\u3080\u524D\u306B\u6B62\u307E\u308A\u307E\u3059\u3002`,forbidden:"\u7D44\u7E54\u7BA1\u7406\u8005\u306E\u6A29\u9650\u304C\u5FC5\u8981\u3067\u3059\u3002twp user export \u306F\u7D44\u7E54\u7BA1\u7406\u8005\u3060\u3051\u304C\u4F7F\u3048\u307E\u3059",flags:[{name:"--file",summary:"\u7A81\u304D\u5408\u308F\u305B\u308B\u4EBA\u4E8B\u53F0\u5E33\u306E CSV\uFF081\u884C\u76EE\u306F\u898B\u51FA\u3057\uFF09",
213
- takesValue:true,placeholder:"<\u53F0\u5E33CSV>"},{name:"--include-disabled",summary:"\u5931\u52B9\u6E08\u307F\u306E\u30E6\u30FC\u30B6\u30FC\u3082\u51FA\u3059\uFF08--file \u7121\u3057\u306E\u3068\u304D\uFF09",takesValue:false},{name:"--exclude-hidden",summary:"\u8868\u793A\u30D5\u30E9\u30B0\u3092\u5916\u3057\u305F\u30E6\u30FC\u30B6\u30FC\u3092\u5BFE\u8C61\u304B\u3089\u5916\u3059",takesValue:false},{name:"--inactive-days",summary:`\u3053\u306E\u65E5\u6570\u30ED\u30B0\u30A4\u30F3\u306E\u8A18\u9332\u304C\u7121\u3044\u5728\u7C4D\u8005\u3092 inactive \u3068\u3057\u3066\u51FA\u3059\uFF08\u65E2\u5B9A ${DEFAULT_INACTIVE_DAYS}\
214
- \u30FB\u6700\u5927 ${LOGIN_HISTORY_RETENTION_DAYS}\uFF09`,takesValue:true,placeholder:"<\u65E5\u6570>"},...COLUMN_FLAGS,{name:"--max-users",summary:`\u5BFE\u8C61\u306E\u4EBA\u6570\u306E\u4E0A\u9650\uFF08\u65E2\u5B9A ${DEFAULT_MAX_USERS}\uFF09`,takesValue:true,placeholder:"<\u4EBA\u6570>"}],async prepare(input){if(input.args.length>0)throw new UsageError(`export \u306F\u4F4D\u7F6E\u5F15\u6570\u3092\u53D6\u308A\u307E\u305B\u3093: ${input.args.join(" ")}`,HELP);const inactiveDays=positiveInteger(input.
215
- flags,"--inactive-days")??DEFAULT_INACTIVE_DAYS;if(inactiveDays>LOGIN_HISTORY_RETENTION_DAYS){throw new UsageError(`--inactive-days \u306F ${LOGIN_HISTORY_RETENTION_DAYS} \u4EE5\u4E0B\u306B\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u53D7\u3051\u53D6\u3063\u305F\u5024: ${inactiveDays}\uFF09`,`\u30ED\u30B0\u30A4\u30F3\u5C65\u6B74\u306F ${LOGIN_HISTORY_RETENTION_DAYS} \u65E5\u3067\u6D88\u3048\u308B\u305F\u3081\u3001\u305D\u308C\u3088\u308A\u524D\u306F\u5224\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002`)}
216
- const maxUsers=positiveInteger(input.flags,"--max-users")??DEFAULT_MAX_USERS;const file=flagValue(input,"--file");const overrides={};for(const role of LEDGER_ROLES){const value=flagValue(input,`--${role}-column`);if(value!==void 0)overrides[role]=value}const resolved={inactiveDays:String(inactiveDays),maxUsers:String(maxUsers)};if(file===void 0)return withResolved(input,resolved);if(input.flags.has("--include-disabled")){throw new UsageError("--include-disabled \u306F --file \u3068\u4E00\u7DD2\u306B\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093",
217
- "\u5DEE\u5206\u3067\u306F\u5931\u52B9\u6E08\u307F\u306E\u30E6\u30FC\u30B6\u30FC\u3082\u7A81\u304D\u5408\u308F\u305B\u306B\u4F7F\u3044\u3001\u53F0\u5E33\u306B\u3044\u308B\u4EBA\u306F disabled_in_twp \u3068\u3057\u3066\u51FA\u3057\u307E\u3059\u3002")}resolved["ledger"]=JSON.stringify(parseLedger(decodeLedger(readLedgerFile(file)),overrides));return withResolved(input,resolved)},plan:input=>listPlan(input),plannedNotes:input=>{const notes=["\u3053\u306E\u3042\u3068\u4E00\u89A7\u306E\u7D9A\u304D\u30FB\u6A29\u9650\u30DE\u30C8\u30EA\u30AF\u30B9\u3092 GET \u3057\u30011\u4EBA\u305A\u3064\u8A73\u7D30\u30FB\u73FE\u5728\u306E\u6240\u5C5E\u30FB\u30ED\u30B0\u30A4\u30F3\u5C65\u6B74\u3092 GET \u3057\u307E\u3059\uFF08\u8AAD\u307F\u53D6\u308A\
218
- \u3060\u3051\uFF09\u3002"];if(!input.flags.has("--exclude-hidden"))notes.push("\u8868\u793A\u30D5\u30E9\u30B0\u3092\u5916\u3057\u305F\u30E6\u30FC\u30B6\u30FC\u3082\u5BFE\u8C61\u306B\u3057\u307E\u3059\uFF08--exclude-hidden \u3067\u9664\u3051\u307E\u3059\uFF09\u3002");const ledger=ledgerOf(input);if(ledger!==void 0){const used=LEDGER_ROLES.filter(role=>ledger.columns[role]!==void 0).map(role=>`${ROLE_LABEL[role]}=\u300C${ledger.header[ledger.columns[role]]??""}\u300D`);notes.push(`\u53F0\u5E33 ${ledger.
219
- rows.length} \u884C\u3092\u8AAD\u307F\u307E\u3057\u305F\u3002\u4F7F\u3046\u5217: ${used.join("\u3001")}`)}return notes},async execute(input,ctx){const{rows,scanned}=await collectInventory(input,ctx);const disabled=rows.filter(r=>!r.can_login).length;const ssoUndetermined=rows.filter(r=>r.can_login&&r.last_login_status==="sso_not_recorded").length;const excludedHidden=input.flags.has("--exclude-hidden");const ledger=ledgerOf(input);if(ledger===void 0){const visible=input.flags.has("--include-disa\
220
- bled")?rows:rows.filter(r=>r.can_login);return{mode:"inventory",rows:visible,scanned,disabled,ssoUndetermined,excludedHidden}}const diffs=diffAgainstLedger(rows,ledger.rows,ledger.columns,Number(requireResolved(input,"inactiveDays")),new Date);return{mode:"diff",rows:diffs,scanned,disabled,ssoUndetermined,excludedHidden}},summarize(body){const result=exportBody(body);if(result.mode==="diff"){return result.rows.map(row=>Object.fromEntries(DIFF_COLUMNS.map(c=>[c,spreadsheetSafe(row[c])])))}return result.
221
- rows.map(row=>Object.fromEntries(INVENTORY_COLUMNS.map(c=>{if(c==="permissions")return[c,permissionText(row.permissions)];if(c==="last_login_at")return[c,lastLoginText(row)];if(c==="manager_name")return[c,spreadsheetSafe(row.manager_name??row.manager_id)];return[c,spreadsheetSafe(row[c])]})))},raw:body=>exportBody(body).rows,notes(body){const result=exportBody(body);const notes=[`${result.scanned} \u4EBA\u3092\u8AAD\u307F\u307E\u3057\u305F\uFF08\u3046\u3061\u5931\u52B9\u6E08\u307F ${result.disabled}\
222
- \u4EBA\uFF09\u3002`+(result.excludedHidden?"\u8868\u793A\u30D5\u30E9\u30B0\u3092\u5916\u3057\u305F\u30E6\u30FC\u30B6\u30FC\u306F\u5BFE\u8C61\u5916\u3067\u3059\uFF08--exclude-hidden\uFF09\u3002":"")];if(result.ssoUndetermined>0){notes.push(`\u8A8D\u8A3C\u30BF\u30A4\u30D7\u304C oauth \u306E ${result.ssoUndetermined} \u4EBA\u306F\u3001SSO \u306E\u30ED\u30B0\u30A4\u30F3\u304C\u8A18\u9332\u3055\u308C\u306A\u3044\u305F\u3081\u6700\u7D42\u30ED\u30B0\u30A4\u30F3\u3092\u5224\u5B9A\u3057\u3066\u3044\u307E\u305B\u3093\u3002`)}
223
- if(result.mode==="diff"){const counts=new Map;for(const row of result.rows)counts.set(row.kind,(counts.get(row.kind)??0)+1);notes.push(counts.size===0?"\u53F0\u5E33\u3068\u306E\u5DEE\u5206\u306F\u3042\u308A\u307E\u305B\u3093\u3002":`\u5DEE\u5206: ${[...counts].map(([kind,n])=>`${kind} ${n}\u4EF6`).join(" / ")}`);if(result.excludedHidden){notes.push("--exclude-hidden \u306E\u305F\u3081\u3001\u8868\u793A\u30D5\u30E9\u30B0\u3092\u5916\u3057\u305F\u307E\u307E\u5931\u52B9\u3057\u3066\u3044\u306A\u3044\u30E6\u30FC\u30B6\u30FC\uFF08\u5931\u52B9\u6F0F\u308C\uFF09\u306F\u51FA\u3066\u3044\u307E\u305B\u3093\u3002\u307E\u305F\u3001\u8868\u793A\u30D5\u30E9\u30B0\u3092\u5916\u3057\u305F\u30E6\u30FC\u30B6\u30FC\u304C missing_in_twp\uFF08\u767B\u9332\u6F0F\u308C\uFF09\u3068\u3057\u3066\u51FA\u3066\u3044\u308B\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\u3002")}}
224
- return notes}};var PROFILE_SKILL_COLUMNS=["fiscal_year","status","skill_name","self_level","primary_level","secondary_level","confirmed_level","target_level","profile_id","skill_id"];function profileRows(body){const response=isRecord(body)&&"response"in body?body["response"]:body;const list=isRecord(response)?response["list"]:void 0;if(!Array.isArray(list)){throw new ApiResponseError("\u30B9\u30AD\u30EB\u30D7\u30ED\u30D5\u30A1\u30A4\u30EB\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")}
136
+ ${commands.map(c=>` ${c}`).join("\n")}${later}`)}return notes}};var userAssignmentResource={name:"assignment",summary:"\u30E6\u30FC\u30B6\u30FC\u306E\u6240\u5C5E\uFF08\u90E8\u7F72\u30FB\u5F79\u8077\uFF09\u306E\u53C2\u7167\u30FB\u4F5C\u6210\u30FB\u66F4\u65B0\u30FB\u7D42\u4E86\u30FB\u524A\u9664\u30FB\u4ED8\u3051\u66FF\u3048",operations:[listOperation,createOperation,updateOperation,endOperation,deleteOperation,moveOperation]};var PROFILE_SKILL_COLUMNS=["fiscal_year","status","skill_name","self_level","primary_level","secondary_level","confirmed_level","target_level","profile_id","skill_id"];function profileRows(body){const response=isRecord(body)&&"response"in body?body["response"]:body;const list=isRecord(response)?response["list"]:void 0;if(!Array.isArray(list)){throw new ApiResponseError("\u30B9\u30AD\u30EB\u30D7\u30ED\u30D5\u30A1\u30A4\u30EB\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")}
225
137
  return list}function skillsPlan(input){userPath(input);return{method:"GET",path:"/api/v2/organization/user-skill-profiles",query:{user_id:input.resolved?.["userId"],fiscal_year:fiscalYear(input)}}}var skillsOperation={name:"skills",summary:"\u30E6\u30FC\u30B6\u30FC\u306E\u30B9\u30AD\u30EB\u8A55\u4FA1\uFF08\u5E74\u5EA6\u3054\u3068\u306E\u81EA\u5DF1\u30FB\u4E00\u6B21\u30FB\u4E8C\u6B21\u30FB\u78BA\u5B9A\u30EC\u30D9\u30EB\uFF09\u3092\u51FA\u3059",usage:"twp user skills <\u30E6\u30FC\u30B6\u30FC> [--fiscal-year <\u5E74\u5EA6>]",
226
138
  description:"GET /api/v2/organization/user-skill-profiles?user_id=\u2026\u3002\u5E74\u5EA6\u3054\u3068\u306E\u30B9\u30AD\u30EB\u30D7\u30ED\u30D5\u30A1\u30A4\u30EB\u3092\u51FA\u3057\u307E\u3059\u3002\nstatus \u306F\u30D7\u30ED\u30D5\u30A1\u30A4\u30EB\u306E\u8A55\u4FA1\u6BB5\u968E\uFF08\u30B5\u30FC\u30D0\u306E\u5024\uFF09\u3001self_level / primary_level / secondary_level / confirmed_level \u306F\n\u81EA\u5DF1\u30FB\u4E00\u6B21\u30FB\u4E8C\u6B21\u8A55\u4FA1\u3068\u78BA\u5B9A\u30EC\u30D9\u30EB\uFF08\u672A\u5165\u529B\u306F\u7A7A\uFF09\u3001target_level \u306F\u76EE\u6A19\u30EC\u30D9\u30EB\u3067\u3059\u3002\n\u53C2\u7167\u3067\u304D\u308B\u306E\u306F\u672C\u4EBA\u30FB\u4E0A\u9577\uFF08\u4E0A\u9577\u30C1\u30A7\u30FC\u30F3\uFF09\u30FBHR\u7BA1\u7406\u8005\u3060\u3051\u3067\u3059\u3002\u5358\u4FA1\uFF08unit_price\uFF09\u306FHR\u7BA1\u7406\u8005\u306B\u3060\u3051\u8FD4\u308A\u307E\u3059\u3002\n\n--output table / text / tsv \u306F1\u30D7\u30ED\u30D5\u30A1\u30A4\u30EB1\u30B9\u30AD\u30EB1\u884C\u3067\u3059\u3002--output json \u306F\u30B5\u30FC\u30D0\u306E\u30D7\u30ED\u30D5\u30A1\u30A4\u30EB\u3092\u305D\u306E\u307E\u307E\u51FA\u3057\u307E\u3059\u3002\n\n"+
227
139
  USER_REF_HELP,forbidden:"\u3053\u306E\u30E6\u30FC\u30B6\u30FC\u306E\u30B9\u30AD\u30EB\u8A55\u4FA1\u3092\u53C2\u7167\u3059\u308B\u6A29\u9650\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u672C\u4EBA\u30FB\u4E0A\u9577\u30FBHR\u7BA1\u7406\u8005\u3060\u3051\u304C\u53C2\u7167\u3067\u304D\u307E\u3059",flags:[USER_REF_FLAG,FISCAL_YEAR_FLAG],async prepare(input,ctx){fiscalYear(input);return prepareUser(input,ctx,"twp user skills help")},plan:skillsPlan,plannedNotes:()=>["\u3053\u306E\u3042\u3068\u3001\u30B9\u30AD\u30EB\u540D\u3092\u8868\u793A\u3059\u308B\u305F\u3081\u30B9\u30AD\u30EB\u4E00\u89A7\u3092 GET \u3057\u307E\u3059\u3002"],
@@ -288,7 +200,7 @@ usage:"twp user invite resend <\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9|\u30C8
288
200
  body,"\u62DB\u5F85\u306E\u518D\u9001")},{name:"delete",summary:"\u62DB\u5F85\u3092\u53D6\u308A\u6D88\u3059\uFF08\u53D7\u8AFE\u7528\u306E\u30EA\u30F3\u30AF\u304C\u4F7F\u3048\u306A\u304F\u306A\u308B\uFF09",usage:"twp user invite delete <\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9|\u30C8\u30FC\u30AF\u30F3> --yes",description:`${INVITE_REF_HELP}
289
201
 
290
202
  \u53D6\u308A\u6D88\u3057\u305F\u62DB\u5F85\u306F\u5143\u306B\u623B\u305B\u307E\u305B\u3093\u3002\u3082\u3046\u4E00\u5EA6\u62DB\u5F85\u3059\u308B\u3068\u304D\u306F twp user invite create \u3092\u4F7F\u3044\u307E\u3059\u3002`,destructive:true,forbidden:FORBIDDEN2,flags:[INVITE_REF_FLAG],prepare:input=>prepareInvite(input,"twp user invite delete help"),plan:input=>refPlan(input,"DELETE"),plannedNotes:refNotes,async execute(input,ctx){return ctx.send({method:"DELETE",path:invitePath(await tokenFor(input,
291
- ctx))})},summarize:body=>successAck(body,"\u62DB\u5F85\u306E\u53D6\u6D88"),raw:body=>successAck(body,"\u62DB\u5F85\u306E\u53D6\u6D88")}]};var LIST_COLUMNS2=["user_id","user_name","email","employee_code","department_name","position_name","role","display_flg"];var GET_COLUMNS=["user_id","user_name","user_name_kana","email","employee_code","role","auth_type","hire_date","is_locked","display_flg","memberlist_flg","org_chart_flg","dashboard_flg"];var EMPLOYMENT_TYPES=["employee","partner"];var listPaging2=envelopePaging({label:"\u30E6\u30FC\u30B6\u30FC\u4E00\u89A7"});function userObject(body){if(!isRecord(body)||typeof body["user_id"]!==
203
+ ctx))})},summarize:body=>successAck(body,"\u62DB\u5F85\u306E\u53D6\u6D88"),raw:body=>successAck(body,"\u62DB\u5F85\u306E\u53D6\u6D88")}]};var LIST_COLUMNS2=["user_id","user_name","email","employee_code","department_name","position_name","role","display_flg"];var GET_COLUMNS=["user_id","user_name","user_name_kana","email","employee_code","role","auth_type","hire_date","is_locked","display_flg","memberlist_flg","org_chart_flg","dashboard_flg"];var EMPLOYMENT_TYPES=["employee","partner"];var listPaging=envelopePaging({label:"\u30E6\u30FC\u30B6\u30FC\u4E00\u89A7"});function userObject(body){if(!isRecord(body)||typeof body["user_id"]!==
292
204
  "string"){throw new ApiResponseError("\u30E6\u30FC\u30B6\u30FC\u8A73\u7D30\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")}const rest={...body};delete rest["result"];return rest}var TEXT_FIELDS=[{flag:"--name",key:"user_name",label:"\u6C0F\u540D",maxChars:255,summary:"\u6C0F\u540D",placeholder:"<\u6C0F\u540D>"},{flag:"--kana",key:"user_name_kana",label:"\u30D5\u30EA\u30AC\u30CA",maxChars:255,
293
205
  summary:"\u6C0F\u540D\u306E\u30D5\u30EA\u30AC\u30CA",placeholder:"<\u30D5\u30EA\u30AC\u30CA>"},{flag:"--email",key:"login_id",label:"\u30ED\u30B0\u30A4\u30F3ID",maxChars:255,summary:"\u30ED\u30B0\u30A4\u30F3ID\uFF08\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\uFF09",placeholder:"<\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9>"},{flag:"--employee-code",key:"employee_code",label:"\u793E\u54E1\u756A\u53F7",maxChars:50,summary:"\u793E\u54E1\u756A\u53F7",placeholder:"<\u793E\u54E1\u756A\u53F7>"}];var DISPLAY_FIELDS=[
294
206
  {flag:"--display",key:"display_flg",summary:"\u30E6\u30FC\u30B6\u30FC\u4E00\u89A7\u30FB\u9078\u629E\u80A2\u306B\u8868\u793A\u3059\u308B\u304B\uFF08true / false\uFF09"},{flag:"--memberlist",key:"memberlist_flg",summary:"\u30E1\u30F3\u30D0\u30FC\u4E00\u89A7\u306B\u8868\u793A\u3059\u308B\u304B\uFF08true / false\uFF09"},{flag:"--org-chart",key:"org_chart_flg",summary:"\u7D44\u7E54\u56F3\u306B\u8868\u793A\u3059\u308B\u304B\uFF08true / false\uFF09"},{flag:"--dashboard",key:"dashboard_flg",summary:"\u30C0\u30C3\u30B7\
@@ -299,13 +211,13 @@ var PASSWORD_HINT="\u30D1\u30B9\u30EF\u30FC\u30C9\u306F --password-file \u306B\u
299
211
  function booleanFlag(input,flag){const raw=input.flags.get(flag);return raw===void 0?void 0:booleanText(flag,raw)}function roleType(input){const raw=input.flags.get("--role");if(raw===void 0)return void 0;const type=ROLE_TO_TYPE[raw.trim().toLowerCase()];if(type===void 0){throw new UsageError(`--role \u306B\u300C${raw}\u300D\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093`,"\u6307\u5B9A\u3067\u304D\u308B\u306E\u306F admin\uFF08\u7BA1\u7406\u8005\uFF09/ user\uFF08\u4E00\u822C\uFF09\u3067\u3059\u3002")}
300
212
  return type}function authType(input){const raw=input.flags.get("--auth-type");if(raw===void 0)return void 0;const value=raw.trim().toLowerCase();if(!AUTH_TYPES.includes(value)){throw new UsageError(`--auth-type \u306B\u300C${raw}\u300D\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093`,`\u6307\u5B9A\u3067\u304D\u308B\u306E\u306F ${AUTH_TYPES.join(" / ")} \u3067\u3059\uFF08disabled \u3067\u5931\u52B9\uFF09\u3002`)}return value}async function readPassword(input,usage){const file=input.flags.get(PASSWORD_FILE_FLAG.
301
213
  name);if(file===void 0)return void 0;let text;if(file==="-"){if(process.stdin.isTTY===true){throw new UsageError("--password-file - \u306F\u6A19\u6E96\u5165\u529B\u304B\u3089\u8AAD\u307F\u307E\u3059\u304C\u3001\u7AEF\u672B\u304C\u7E4B\u304C\u3063\u3066\u3044\u307E\u3059","\u30D1\u30A4\u30D7\u304B\u30EA\u30C0\u30A4\u30EC\u30AF\u30C8\u3067\u6A19\u6E96\u5165\u529B\u306B\u6E21\u3059\u304B\u3001--password-file \u306B\u30D5\u30A1\u30A4\u30EB\u306E\u30D1\u30B9\u3092\u6E21\u3057\u3066\u304F\u3060\u3055\u3044\u3002")}
302
- const chunks=[];let size=0;for await(const chunk of process.stdin){const buffer=Buffer.from(chunk);size+=buffer.length;if(size>PASSWORD_FILE_MAX_BYTES){throw new UsageError(`\u6A19\u6E96\u5165\u529B\u306E\u30D1\u30B9\u30EF\u30FC\u30C9\u304C\u5927\u304D\u3059\u304E\u307E\u3059\uFF08${PASSWORD_FILE_MAX_BYTES} \u30D0\u30A4\u30C8\u8D85\uFF09`,usage)}chunks.push(buffer)}text=Buffer.concat(chunks).toString("utf8")}else{try{const stat=fs2.statSync(file);if(!stat.isFile())throw new UsageError(`--passwor\
303
- d-file \u306B\u901A\u5E38\u306E\u30D5\u30A1\u30A4\u30EB\u4EE5\u5916\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093: ${file}`,usage);if(stat.size>PASSWORD_FILE_MAX_BYTES){throw new UsageError(`--password-file \u306E\u30D5\u30A1\u30A4\u30EB\u304C\u5927\u304D\u3059\u304E\u307E\u3059\uFF08${stat.size} \u30D0\u30A4\u30C8\uFF09: ${file}`,usage)}text=fs2.readFileSync(file,"utf8")}catch(err){if(err instanceof UsageError)throw err;const reason=err.code??err.message;throw new UsageError(`--password-file \
304
- \u306E\u30D5\u30A1\u30A4\u30EB\u3092\u8AAD\u3081\u307E\u305B\u3093: ${file}\uFF08${reason}\uFF09`,usage)}}const password=text.replace(/^\uFEFF/,"").replace(/\r?\n$/,"");if([...password].length<PASSWORD_MIN_CHARS){throw new UsageError(`\u30D1\u30B9\u30EF\u30FC\u30C9\u306F ${PASSWORD_MIN_CHARS} \u6587\u5B57\u4EE5\u4E0A\u306B\u3057\u3066\u304F\u3060\u3055\u3044\uFF08${[...password].length} \u6587\u5B57\uFF09`,usage)}return password}function userFields(input){const body={};for(const field of TEXT_FIELDS){
305
- const value=boundedText(input,field.flag,{maxChars:field.maxChars,label:field.label});if(value!==void 0)body[field.key]=value}const type=roleType(input);if(type!==void 0)body["type"]=type;const hireDate=isoDate(input,HIRE_DATE_FLAG.name);if(hireDate!==void 0)body["hire_date"]=hireDate;for(const field of DISPLAY_FIELDS){const value=booleanFlag(input,field.flag);if(value!==void 0)body[field.key]=value}return body}function writeAck(body,label2){if(!isRecord(body)||body["result"]!==true){throw new ApiResponseError(
306
- `${label2}\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`)}const rest={...body};delete rest["result"];return rest}function licenseNotes(body){const warnings=isRecord(body)?body["license_warnings"]:void 0;if(!Array.isArray(warnings)||warnings.length===0)return[];const texts=warnings.map(warning=>isRecord(warning)?String(warning["message"]??warning["feature_label"]??warning["\
307
- feature"]??""):String(warning));return[`\u30E9\u30A4\u30BB\u30F3\u30B9\u306E\u7A7A\u304D\u304C\u8DB3\u308A\u306A\u3044\u305F\u3081\u3001\u4E00\u90E8\u306E\u6A5F\u80FD\u6A29\u9650\u306F\u4ED8\u4E0E\u3055\u308C\u3066\u3044\u307E\u305B\u3093: ${texts.join(" / ")}`]}var createOperation2={name:"create",summary:"\u30E6\u30FC\u30B6\u30FC\u3092\u4F5C\u6210\u3059\u308B\uFF08\u5165\u793E\u30FB\u7D44\u7E54\u7BA1\u7406\u8005\u306E\u307F\uFF09",usage:"twp user create --name <\u6C0F\u540D> --email <\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9> --password-\
308
- file <\u30D1\u30B9|-> [--role admin|user] [--kana <\u30D5\u30EA\u30AC\u30CA>] [--hire-date <YYYY-MM-DD>] [--employee-code <\u793E\u54E1\u756A\u53F7>] [--display true|false] \u2026",description:`--name / --email / --password-file \u304C\u5FC5\u9808\u3067\u3059\u3002--role \u3092\u7701\u304F\u3068\u4E00\u822C\u30E6\u30FC\u30B6\u30FC\uFF08user\uFF09\u3067\u4F5C\u6210\u3057\u307E\u3059\u3002
214
+ const chunks=[];let size=0;for await(const chunk of process.stdin){const buffer=Buffer.from(chunk);size+=buffer.length;if(size>PASSWORD_FILE_MAX_BYTES){throw new UsageError(`\u6A19\u6E96\u5165\u529B\u306E\u30D1\u30B9\u30EF\u30FC\u30C9\u304C\u5927\u304D\u3059\u304E\u307E\u3059\uFF08${PASSWORD_FILE_MAX_BYTES} \u30D0\u30A4\u30C8\u8D85\uFF09`,usage)}chunks.push(buffer)}text=Buffer.concat(chunks).toString("utf8")}else{try{const stat=fs.statSync(file);if(!stat.isFile())throw new UsageError(`--password\
215
+ -file \u306B\u901A\u5E38\u306E\u30D5\u30A1\u30A4\u30EB\u4EE5\u5916\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093: ${file}`,usage);if(stat.size>PASSWORD_FILE_MAX_BYTES){throw new UsageError(`--password-file \u306E\u30D5\u30A1\u30A4\u30EB\u304C\u5927\u304D\u3059\u304E\u307E\u3059\uFF08${stat.size} \u30D0\u30A4\u30C8\uFF09: ${file}`,usage)}text=fs.readFileSync(file,"utf8")}catch(err){if(err instanceof UsageError)throw err;const reason=err.code??err.message;throw new UsageError(`--password-file \u306E\u30D5\
216
+ \u30A1\u30A4\u30EB\u3092\u8AAD\u3081\u307E\u305B\u3093: ${file}\uFF08${reason}\uFF09`,usage)}}const password=text.replace(/^\uFEFF/,"").replace(/\r?\n$/,"");if([...password].length<PASSWORD_MIN_CHARS){throw new UsageError(`\u30D1\u30B9\u30EF\u30FC\u30C9\u306F ${PASSWORD_MIN_CHARS} \u6587\u5B57\u4EE5\u4E0A\u306B\u3057\u3066\u304F\u3060\u3055\u3044\uFF08${[...password].length} \u6587\u5B57\uFF09`,usage)}return password}function userFields(input){const body={};for(const field of TEXT_FIELDS){const value=boundedText(
217
+ input,field.flag,{maxChars:field.maxChars,label:field.label});if(value!==void 0)body[field.key]=value}const type=roleType(input);if(type!==void 0)body["type"]=type;const hireDate=isoDate(input,HIRE_DATE_FLAG.name);if(hireDate!==void 0)body["hire_date"]=hireDate;for(const field of DISPLAY_FIELDS){const value=booleanFlag(input,field.flag);if(value!==void 0)body[field.key]=value}return body}function writeAck(body,label2){if(!isRecord(body)||body["result"]!==true){throw new ApiResponseError(`${label2}\
218
+ \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`)}const rest={...body};delete rest["result"];return rest}function licenseNotes(body){const warnings=isRecord(body)?body["license_warnings"]:void 0;if(!Array.isArray(warnings)||warnings.length===0)return[];const texts=warnings.map(warning=>isRecord(warning)?String(warning["message"]??warning["feature_label"]??warning["featur\
219
+ e"]??""):String(warning));return[`\u30E9\u30A4\u30BB\u30F3\u30B9\u306E\u7A7A\u304D\u304C\u8DB3\u308A\u306A\u3044\u305F\u3081\u3001\u4E00\u90E8\u306E\u6A5F\u80FD\u6A29\u9650\u306F\u4ED8\u4E0E\u3055\u308C\u3066\u3044\u307E\u305B\u3093: ${texts.join(" / ")}`]}var createOperation2={name:"create",summary:"\u30E6\u30FC\u30B6\u30FC\u3092\u4F5C\u6210\u3059\u308B\uFF08\u5165\u793E\u30FB\u7D44\u7E54\u7BA1\u7406\u8005\u306E\u307F\uFF09",usage:"twp user create --name <\u6C0F\u540D> --email <\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9> --password-file <\
220
+ \u30D1\u30B9|-> [--role admin|user] [--kana <\u30D5\u30EA\u30AC\u30CA>] [--hire-date <YYYY-MM-DD>] [--employee-code <\u793E\u54E1\u756A\u53F7>] [--display true|false] \u2026",description:`--name / --email / --password-file \u304C\u5FC5\u9808\u3067\u3059\u3002--role \u3092\u7701\u304F\u3068\u4E00\u822C\u30E6\u30FC\u30B6\u30FC\uFF08user\uFF09\u3067\u4F5C\u6210\u3057\u307E\u3059\u3002
309
221
  \u8868\u793A\u30D5\u30E9\u30B0\u3092\u7701\u304F\u3068\u3001\u30B5\u30FC\u30D0\u306E\u65E2\u5B9A\uFF08\u3059\u3079\u3066 true\uFF1D\u8868\u793A\u3059\u308B\uFF09\u3067\u4F5C\u6210\u3057\u307E\u3059\u3002
310
222
  \u6A5F\u80FD\u6A29\u9650\u306F\u30C6\u30CA\u30F3\u30C8\u306E\u65E2\u5B9A\u3067\u4ED8\u4E0E\u3055\u308C\u307E\u3059\uFF08\u30E9\u30A4\u30BB\u30F3\u30B9\u306E\u7A7A\u304D\u304C\u8DB3\u308A\u306A\u3044\u6A5F\u80FD\u306F\u4ED8\u4E0E\u3055\u308C\u305A\u3001stderr \u306B\u51FA\u307E\u3059\uFF09\u3002
311
223
 
@@ -342,10 +254,10 @@ if(ref==="me")notes.push("\u5BFE\u8C61\u306F\u81EA\u5206\u81EA\u8EAB\u3067\u3059
342
254
  usage:"twp user list [--department <\u90E8\u7F72>] [--position <\u5F79\u8077>] [--employment employee|partner] [--keyword <\u8A9E>] [--include-hidden] [--all] [--limit <\u4EF6\u6570>] [--cursor <\u30AB\u30FC\u30BD\u30EB>]",description:"--department / --position \u306F\u540D\u524D\u30FB\u30B3\u30FC\u30C9\u30FBID \u306E\u3069\u308C\u3067\u3082\u6307\u5B9A\u3067\u304D\u307E\u3059\uFF08\u4E3B\u6240\u5C5E\u3067\u7D5E\u308A\u8FBC\u307F\u307E\u3059\uFF09\u3002\n--employment \u306F employee\uFF08\u793E\u54E1\uFF09\u304B partner\uFF08\u30D1\u30FC\u30C8\u30CA\u30FC\uFF09\u3067\u3059\u3002\n--include-hidden \u306F\u8868\u793A\u30D5\u30E9\u30B0\u3092\u5916\u3057\u305F\u30E6\u30FC\u30B6\u30FC\u3082\u542B\u3081\u307E\u3059\uFF08\u7D44\u7E54\u7BA1\u7406\u8005\u306E\u3068\u304D\u3060\u3051\u52B9\u304D\u307E\u3059\uFF09\u3002\n\u5931\u52B9\uFF08\u30ED\u30B0\u30A4\u30F3\u4E0D\u53EF\uFF09\u3057\u305F\u30E6\u30FC\u30B6\u30FC\u3082\u4E00\u89A7\u306B\u542B\u307E\u308C\u307E\u3059\u3002\u5931\u52B9\u304B\u3069\u3046\u304B\u306F twp user get \u306E auth_type \u3067\u78BA\u8A8D\u3067\u304D\u307E\u3059\n\uFF08\u5168\u54E1\u306E\u8A8D\u8A3C\u30BF\u30A4\u30D7\u3092\u4E00\u89A7\u3067\u898B\u308B\u306A\u3089 twp user export \
343
255
  --include-disabled\uFF09\u3002\n\n--output json \u306F API \u304C\u8FD4\u3059\u5168\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u51FA\u3057\u307E\u3059\u3002\n--output table / text / tsv \u306F\u8981\u7D04\u5217\uFF08user_id / user_name / email / employee_code / department_name / position_name / role / display_flg\uFF09\u3067\u3059\u3002\n\n"+LIST_PAGING_HELP,flags:[...LIST_FLAGS,{name:"--department",summary:"\u4E3B\u6240\u5C5E\u306E\u90E8\u7F72\u3067\u7D5E\u308A\u8FBC\u3080\uFF08\u540D\u524D\u30FB\u30B3\u30FC\u30C9\u30FBID\uFF09",
344
256
  takesValue:true,placeholder:"<\u90E8\u7F72>"},{name:"--position",summary:"\u4E3B\u6240\u5C5E\u306E\u5F79\u8077\u3067\u7D5E\u308A\u8FBC\u3080\uFF08\u540D\u524D\u30FB\u30B3\u30FC\u30C9\u30FBID\uFF09",takesValue:true,placeholder:"<\u5F79\u8077>"},{name:"--employment",summary:"\u96C7\u7528\u533A\u5206\u3067\u7D5E\u308A\u8FBC\u3080\uFF08employee / partner\uFF09",takesValue:true,placeholder:"<\u533A\u5206>"},{name:"--keyword",summary:"\u6C0F\u540D\u30FB\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\u306E\u90E8\u5206\u4E00\u81F4\u3067\u7D5E\u308A\u8FBC\u3080",
345
- takesValue:true,placeholder:"<\u8A9E>"},{name:"--include-hidden",summary:"\u8868\u793A\u30D5\u30E9\u30B0\u3092\u5916\u3057\u305F\u30E6\u30FC\u30B6\u30FC\u3082\u542B\u3081\u308B",takesValue:false}],paging:listPaging2,async prepare(input,ctx){if(input.args.length>0){throw new UsageError(`list \u306F\u4F4D\u7F6E\u5F15\u6570\u3092\u53D6\u308A\u307E\u305B\u3093: ${input.args.join(" ")}`,"twp user list help")}const employment=nonEmpty(input.flags,"--employment");if(employment!==void 0&&!EMPLOYMENT_TYPES.
257
+ takesValue:true,placeholder:"<\u8A9E>"},{name:"--include-hidden",summary:"\u8868\u793A\u30D5\u30E9\u30B0\u3092\u5916\u3057\u305F\u30E6\u30FC\u30B6\u30FC\u3082\u542B\u3081\u308B",takesValue:false}],paging:listPaging,async prepare(input,ctx){if(input.args.length>0){throw new UsageError(`list \u306F\u4F4D\u7F6E\u5F15\u6570\u3092\u53D6\u308A\u307E\u305B\u3093: ${input.args.join(" ")}`,"twp user list help")}const employment=nonEmpty(input.flags,"--employment");if(employment!==void 0&&!EMPLOYMENT_TYPES.
346
258
  includes(employment)){throw new UsageError(`--employment \u306B\u300C${employment}\u300D\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093`,`\u6307\u5B9A\u3067\u304D\u308B\u306E\u306F ${EMPLOYMENT_TYPES.join(" / ")} \u3067\u3059`)}const resolved={};const department=nonEmpty(input.flags,"--department");if(department!==void 0)resolved["departmentId"]=(await ctx.resolver.department(department)).id;const position=nonEmpty(input.flags,"--position");if(position!==void 0)resolved["positionId"]=(await ctx.
347
- resolver.position(position)).id;return withResolved(input,resolved)},plan(input){return{method:"GET",path:"/api/v2/admin/users/list",query:{limit:positiveInteger(input.flags,"--limit"),cursor:nonEmpty(input.flags,"--cursor"),keyword:nonEmpty(input.flags,"--keyword"),department_id:input.resolved?.["departmentId"],position_id:input.resolved?.["positionId"],employment_type:nonEmpty(input.flags,"--employment"),include_hidden:input.flags.has("--include-hidden")?"true":void 0}}},summarize:body=>listPaging2.
348
- items(body).map(row=>pick(row,LIST_COLUMNS2)),raw:body=>listPaging2.items(body)},{name:"get",summary:"\u30E6\u30FC\u30B6\u30FC1\u4EBA\u306E\u8A73\u7D30\u3092\u8868\u793A\u3059\u308B\uFF08\u7D44\u7E54\u7BA1\u7406\u8005\u306E\u307F\uFF09",usage:"twp user get <\u30E6\u30FC\u30B6\u30FC>",description:USER_REF_HELP+"\n\nauth_type \u304C disabled \u306E\u30E6\u30FC\u30B6\u30FC\u306F\u5931\u52B9\uFF08\u30ED\u30B0\u30A4\u30F3\u4E0D\u53EF\uFF09\u3057\u3066\u3044\u307E\u3059\u3002\n\u8981\u7D04\uFF08table / text / tsv\uFF09\u306B\u306F\u500B\u4EBA\u9023\u7D61\u5148\u3092\u51FA\u3057\u307E\u305B\u3093\u3002--output json \u306F API \u304C\u8FD4\u3059\u5168\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u51FA\u3057\u307E\u3059\u3002",
259
+ resolver.position(position)).id;return withResolved(input,resolved)},plan(input){return{method:"GET",path:"/api/v2/admin/users/list",query:{limit:positiveInteger(input.flags,"--limit"),cursor:nonEmpty(input.flags,"--cursor"),keyword:nonEmpty(input.flags,"--keyword"),department_id:input.resolved?.["departmentId"],position_id:input.resolved?.["positionId"],employment_type:nonEmpty(input.flags,"--employment"),include_hidden:input.flags.has("--include-hidden")?"true":void 0}}},summarize:body=>listPaging.
260
+ items(body).map(row=>pick(row,LIST_COLUMNS2)),raw:body=>listPaging.items(body)},{name:"get",summary:"\u30E6\u30FC\u30B6\u30FC1\u4EBA\u306E\u8A73\u7D30\u3092\u8868\u793A\u3059\u308B\uFF08\u7D44\u7E54\u7BA1\u7406\u8005\u306E\u307F\uFF09",usage:"twp user get <\u30E6\u30FC\u30B6\u30FC>",description:USER_REF_HELP+"\n\nauth_type \u304C disabled \u306E\u30E6\u30FC\u30B6\u30FC\u306F\u5931\u52B9\uFF08\u30ED\u30B0\u30A4\u30F3\u4E0D\u53EF\uFF09\u3057\u3066\u3044\u307E\u3059\u3002\n\u8981\u7D04\uFF08table / text / tsv\uFF09\u306B\u306F\u500B\u4EBA\u9023\u7D61\u5148\u3092\u51FA\u3057\u307E\u305B\u3093\u3002--output json \u306F API \u304C\u8FD4\u3059\u5168\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u51FA\u3057\u307E\u3059\u3002",
349
261
  forbidden:"\u7D44\u7E54\u7BA1\u7406\u8005\u306E\u6A29\u9650\u304C\u5FC5\u8981\u3067\u3059\u3002twp user get \u306F\u7D44\u7E54\u7BA1\u7406\u8005\u3060\u3051\u304C\u4F7F\u3048\u307E\u3059",flags:[USER_REF_FLAG],prepare:(input,ctx)=>prepareUser(input,ctx,"twp user get help"),plan:input=>({method:"GET",path:`/api/v2/admin/users/${userPath(input)}`}),summarize:body=>pick(userObject(body),GET_COLUMNS),raw:body=>userObject(body)},{name:"projects",summary:"\u6307\u5B9A\u3057\u305F\u30E6\u30FC\u30B6\u30FC\u304C\u53C2\u753B\u3057\u3066\u3044\u308B\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3092\u4E00\u89A7\u3059\u308B\uFF08\u7D44\u7E54\u7BA1\u7406\u8005\u306E\u307F\uFF09",
350
262
  usage:"twp user projects <\u30E6\u30FC\u30B6\u30FC>",description:"GET /api/v2/admin/users/{id}/projects\u3002\u3053\u306E API \u306F\u30DA\u30FC\u30B8\u30F3\u30B0\u3092\u6301\u305F\u305A\u3001\u5E38\u306B\u5168\u4EF6\u3092\u8FD4\u3057\u307E\u3059\u3002\nmember_start_date / member_end_date \u306F\u305D\u306E\u30E6\u30FC\u30B6\u30FC\u306E\u53C2\u753B\u671F\u9593\u3067\u3059\uFF08start_date / end_date \u306F\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u671F\u9593\uFF09\u3002\n\u81EA\u5206\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306F\u7D44\u7E54\u7BA1\u7406\u8005\u3067\u306A\u304F\u3066\u3082 twp project mine \u3067\u8AAD\u3081\u307E\u3059\u3002\n\n"+
351
263
  USER_REF_HELP,forbidden:"\u7D44\u7E54\u7BA1\u7406\u8005\u306E\u6A29\u9650\u304C\u5FC5\u8981\u3067\u3059\u3002twp user projects \u306F\u7D44\u7E54\u7BA1\u7406\u8005\u3060\u3051\u304C\u4F7F\u3048\u307E\u3059\uFF08\u81EA\u5206\u306E\u5206\u306F twp project mine\uFF09",flags:[USER_REF_FLAG],prepare:(input,ctx)=>prepareUser(input,ctx,"twp user projects help"),plan:input=>({method:"GET",path:`/api/v2/admin/users/${userPath(input,"/projects")}`}),summarize:body=>assignedProjectItems(body).map(row=>pick(
@@ -0,0 +1,32 @@
1
+ import { createRequire as __twpCreateRequire } from 'node:module';
2
+ const require = __twpCreateRequire(import.meta.url);
3
+ import{booleanQuery,cacheNote,createFlags,fieldBody,hasAnyField,idSegment,masterItem,masterRows,referencedDeleteGuidance,targetId,updateFlags}from"./chunk-XGYOJHZC.js";import"./chunk-JJSBBWJ5.js";import"./chunk-MI6HVYR2.js";import{USER_CONTRACT_TYPES_PATH}from"./chunk-HNG6MF26.js";import"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";import{withResolved}from"./chunk-PS5QFKHB.js";import"./chunk-II5RVJQN.js";import{
4
+ acknowledgement,pick}from"./chunk-3ZRMMBP5.js";import{UsageError}from"./chunk-VFPY2A23.js";import"./chunk-J7QYPKVK.js";import"./chunk-4VZKNEVN.js";import"./chunk-RZVI6PMW.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var NAME="user-contract-type";var LABEL="\u5951\u7D04\u5F62\u614B";var ITEM_KEY="contract_type";var CALCULATION_TYPES=["salary_based","salary_executive","salary_manager","hourly_based","contract_based","other_exempt"];var FIELDS=[{kind:"text",flag:"--name",key:"name",label:`${LABEL}\u540D`,maxChars:255,summary:`${LABEL}\u540D`},{kind:"text",flag:"--code",key:"code",label:`${LABEL}\u30B3\u30FC\u30C9`,maxChars:50,summary:`${LABEL}\u30B3\u30FC\u30C9\uFF08\u4EFB\u610F\u30FB\u30C6\u30CA\u30F3\u30C8\u5185\u3067\u4E00\u610F\uFF09`},
5
+ {kind:"enum",flag:"--calculation-type",key:"calculation_type",values:CALCULATION_TYPES,summary:"\u8A08\u7B97\u533A\u5206\uFF08salary_based: \u4E00\u822C\u5F93\u696D\u54E1 / salary_executive: \u5F79\u54E1 / salary_manager: \u7BA1\u7406\u76E3\u7763\u8005 / hourly_based: \u6642\u7D66\u5236 / contract_based: \u696D\u52D9\u59D4\u8A17 / other_exempt: \u8A08\u7B97\u5BFE\u8C61\u5916\uFF09"},{kind:"integer",flag:"--monthly-hours",key:"default_monthly_hours",label:"\u6708\u9593\u6240\u5B9A\u6642\u9593",min:1,
6
+ max:744,summary:"\u6708\u9593\u6240\u5B9A\u6642\u9593\uFF081\u301C744\uFF09"},{kind:"number",flag:"--daily-hours",key:"default_daily_hours",label:"1\u65E5\u306E\u6240\u5B9A\u6642\u9593",min:1,max:24,summary:"1\u65E5\u306E\u6240\u5B9A\u6642\u9593\uFF081\u301C24\u30FB\u5C0F\u6570\u53EF\uFF09"},{kind:"number",flag:"--bonus-months",key:"bonus_months_default",label:"\u8CDE\u4E0E\u6708\u6570",min:0,max:24,summary:"\u8CDE\u4E0E\u6708\u6570\u306E\u65E2\u5B9A\uFF080\u301C24\u30FB\u5C0F\u6570\u53EF\uFF09"},
7
+ {kind:"boolean",flag:"--paid-leave-eligible",key:"is_paid_leave_eligible",summary:"\u6709\u7D66\u4F11\u6687\u306E\u4ED8\u4E0E\u5BFE\u8C61\u304B\uFF08true / false\uFF09"},{kind:"boolean",flag:"--auto-break-correction",key:"auto_break_correction",summary:"\u4F11\u61A9\u306E\u81EA\u52D5\u88DC\u6B63\u3092\u884C\u3046\u304B\uFF08true / false\uFF09"},{kind:"time",flag:"--start-time",key:"default_start_time",summary:"\u59CB\u696D\u6642\u523B\u306E\u65E2\u5B9A\uFF08HH:MM\uFF09"},{kind:"time",flag:"--end\
8
+ -time",key:"default_end_time",summary:"\u7D42\u696D\u6642\u523B\u306E\u65E2\u5B9A\uFF08HH:MM\uFF09"},{kind:"weekdays",flag:"--work-schedule",key:"default_work_schedule",summary:"\u52E4\u52D9\u65E5\u306E\u65E2\u5B9A\uFF08\u65E5\u66DC\u59CB\u307E\u308A\u30FB\u65E5\u6708\u706B\u6C34\u6728\u91D1\u571F\u306E 0 / 1 \u30927\u6841\u3002\u6708\u301C\u91D1\u306A\u3089 0111110\uFF09"},{kind:"integer",flag:"--flex-type",key:"flex_type",label:"\u30D5\u30EC\u30C3\u30AF\u30B9\u533A\u5206",min:0,max:1,summary:"\
9
+ \u30D5\u30EC\u30C3\u30AF\u30B9\u533A\u5206\uFF080: \u901A\u5E38 / 1: \u30D5\u30EC\u30C3\u30AF\u30B9\uFF09"},{kind:"integer",flag:"--flex-settlement-period",key:"flex_settlement_period",label:"\u30D5\u30EC\u30C3\u30AF\u30B9\u306E\u6E05\u7B97\u671F\u9593",min:1,max:3,summary:"\u30D5\u30EC\u30C3\u30AF\u30B9\u306E\u6E05\u7B97\u671F\u9593\uFF081\u301C3\u304B\u6708\uFF09"},{kind:"time",flag:"--core-time-start",key:"default_core_time_start",summary:"\u30B3\u30A2\u30BF\u30A4\u30E0\u958B\u59CB\uFF08HH:MM\uFF09"},
10
+ {kind:"time",flag:"--core-time-end",key:"default_core_time_end",summary:"\u30B3\u30A2\u30BF\u30A4\u30E0\u7D42\u4E86\uFF08HH:MM\uFF09"},{kind:"integer",flag:"--sort-order",key:"sort_order",label:"\u8868\u793A\u9806",min:0,max:9999,summary:"\u8868\u793A\u9806\uFF080\u301C9999\uFF09"},{kind:"boolean",flag:"--active",key:"is_active",summary:"\u6709\u52B9\u304B\uFF08true / false\uFF09"},{kind:"text",flag:"--description",key:"description",label:"\u8AAC\u660E",maxChars:1e3,summary:"\u8AAC\u660E"}];var LIST_COLUMNS=[
11
+ "id","code","name","calculation_type","default_monthly_hours","sort_order","is_active"];var GET_COLUMNS=["id","code","name","calculation_type","default_monthly_hours","default_daily_hours","bonus_months_default","is_paid_leave_eligible","auto_break_correction","default_start_time","default_end_time","default_work_schedule","flex_type","flex_settlement_period","default_core_time_start","default_core_time_end","sort_order","is_active","description"];var DELETE_GUIDANCE=`\u4ECA\u5F8C\u4F7F\u308F\u306A\u3044${LABEL}\
12
+ \u306F\u3001\u524A\u9664\u305B\u305A\u306B\u7121\u52B9\u5316\u3057\u3066\u304F\u3060\u3055\u3044: twp ${NAME} update <${LABEL}> --active false
13
+ \uFF08\u65E2\u5B58\u306E\u5951\u7D04\u306F\u305D\u306E\u307E\u307E\u6B8B\u308A\u307E\u3059\uFF09`;var REF_HELP=`<${LABEL}> \u306F\u540D\u524D\u30FB\u30B3\u30FC\u30C9\u30FBID \u306E\u3069\u308C\u3067\u3082\u6307\u5B9A\u3067\u304D\u307E\u3059\uFF08\u540D\u524D\u304C\u8907\u6570\u306B\u4E00\u81F4\u3059\u308C\u3070\u5019\u88DC\u3092\u51FA\u3057\u3066\u6B62\u307E\u308A\u307E\u3059\uFF09\u3002
14
+ ID \u4EE5\u5916\u306F${LABEL}\u4E00\u89A7\uFF08\u65E2\u5B9A10\u5206\u30AD\u30E3\u30C3\u30B7\u30E5\u30FB--refresh \u3067\u53D6\u308A\u76F4\u3057\uFF09\u3068\u7167\u5408\u3057\u307E\u3059\u3002`;var REF_FLAG={name:`--${NAME}`,summary:`\u5BFE\u8C61\u306E${LABEL}\uFF08\u4F4D\u7F6E\u5F15\u6570\u306E\u4EE3\u308F\u308A\u306B\u4F7F\u3048\u308B\uFF09`,takesValue:true,placeholder:`<${LABEL}>`};var FORBIDDEN=`\u7BA1\u7406\u8005\u306E\u6A29\u9650\u304C\u5FC5\u8981\u3067\u3059\u3002${LABEL}\u306E\u4F5C\u6210\u30FB\u66F4\u65B0\u30FB\u524A\u9664\u306F\u7BA1\u7406\u8005\u3060\u3051\u304C\u884C\u3048\
15
+ \u307E\u3059`;async function prepareTarget(input,ctx,usage){return withResolved(input,{id:await targetId(input,{flag:REF_FLAG.name,label:LABEL,usage,resolve:ref=>ctx.resolver.userContractType(ref,`<${LABEL}>`)})})}var itemPath=input=>`${USER_CONTRACT_TYPES_PATH}/${idSegment(input,LABEL)}`;var item=body=>masterItem(body,ITEM_KEY,LABEL);var userContractTypeDomain={name:NAME,summary:`${LABEL}\u30DE\u30B9\u30BF\uFF08\u4E00\u89A7\u30FB\u53D6\u5F97\u30FB\u4F5C\u6210\u30FB\u66F4\u65B0\u30FB\u524A\u9664\uFF09`,
16
+ operations:[{name:"list",summary:`${LABEL}\u3092\u4E00\u89A7\u3059\u308B`,usage:`twp ${NAME} list [--active true|false]`,description:`\u3053\u306E API \u306F\u5168\u4EF6\u3092\u8FD4\u3057\u307E\u3059\uFF08\u30DA\u30FC\u30B8\u30F3\u30B0\u3082\u6253\u3061\u5207\u308A\u3082\u3042\u308A\u307E\u305B\u3093\uFF09\u3002
17
+
18
+ --output json \u306F API \u304C\u8FD4\u3059\u5168\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u51FA\u3057\u307E\u3059\u3002
19
+ --output table / text / tsv \u306F\u8981\u7D04\u5217\uFF08${LIST_COLUMNS.join(" / ")}\uFF09\u3067\u3059\u3002`,flags:[{name:"--active",summary:"\u6709\u52B9\u304B\u3069\u3046\u304B\u3067\u7D5E\u308A\u8FBC\u3080\uFF08true / false\uFF09",takesValue:true,placeholder:"<true|false>"}],plan(input){if(input.args.length>0){throw new UsageError(`list \u306F\u4F4D\u7F6E\u5F15\u6570\u3092\u53D6\u308A\u307E\u305B\u3093: ${input.args.join(" ")}`,`twp ${NAME} list help`)}const active=input.flags.get("--active");
20
+ return{method:"GET",path:USER_CONTRACT_TYPES_PATH,query:{is_active:active!==void 0?booleanQuery("--active",active):void 0}}},summarize:body=>masterRows(body,LABEL).map(row=>pick(row,LIST_COLUMNS)),raw:body=>masterRows(body,LABEL)},{name:"get",summary:`${LABEL}1\u4EF6\u306E\u8A73\u7D30\u3092\u8868\u793A\u3059\u308B`,usage:`twp ${NAME} get <${LABEL}>`,description:`${REF_HELP}
21
+
22
+ --output json \u306F API \u304C\u8FD4\u3059\u5168\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u51FA\u3057\u307E\u3059\u3002`,flags:[REF_FLAG],prepare:(input,ctx)=>prepareTarget(input,ctx,`twp ${NAME} get help`),plan:input=>({method:"GET",path:itemPath(input)}),summarize:body=>pick(item(body),GET_COLUMNS),raw:body=>item(body)},{name:"create",summary:`${LABEL}\u3092\u4F5C\u6210\u3059\u308B\uFF08\u7BA1\u7406\u8005\u306E\u307F\uFF09`,usage:`twp ${NAME} create --name <\u540D\u524D> --calculation-type <\u8A08\u7B97\u533A\u5206> [\u9805\u76EE\u2026]`,
23
+ description:`--name \u3068 --calculation-type \u304C\u5FC5\u9808\u3067\u3059\uFF08--code \u306F\u4EFB\u610F\uFF09\u3002\u305D\u306E\u307B\u304B\u306E\u9805\u76EE\u306F\u7701\u304F\u3068\u30B5\u30FC\u30D0\u306E\u65E2\u5B9A\u3067\u4F5C\u6210\u3057\u307E\u3059\u3002
24
+
25
+ \u4F5C\u6210\u3057\u305F${LABEL}\u306E ID \u304C\u8FD4\u308A\u307E\u3059\u3002`,forbidden:FORBIDDEN,flags:createFlags(FIELDS),prepare(input){if(input.args.length>0){throw new UsageError(`create \u306F\u4F4D\u7F6E\u5F15\u6570\u3092\u53D6\u308A\u307E\u305B\u3093: ${input.args.join(" ")}`,`twp ${NAME} create help`)}const body=fieldBody(input,FIELDS);for(const[flag,key]of[["--name","name"],["--calculation-type","calculation_type"]]){if(body[key]===void 0)throw new UsageError(`${flag} \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044`,
26
+ `twp ${NAME} create help`)}return Promise.resolve(input)},plan:input=>({method:"POST",path:USER_CONTRACT_TYPES_PATH,body:fieldBody(input,FIELDS)}),summarize:body=>pick(item(body),GET_COLUMNS),raw:body=>item(body),notes:()=>[cacheNote(LABEL)]},{name:"update",summary:`${LABEL}\u3092\u66F4\u65B0\u3059\u308B\uFF08\u7BA1\u7406\u8005\u306E\u307F\uFF09`,usage:`twp ${NAME} update <${LABEL}> [\u9805\u76EE\u2026]`,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
27
+
28
+ ${REF_HELP}`,forbidden:FORBIDDEN,flags:[...updateFlags(FIELDS),REF_FLAG],async prepare(input,ctx){if(!hasAnyField(input,FIELDS)){throw new UsageError("\u5909\u66F4\u3059\u308B\u9805\u76EE\u30921\u3064\u4EE5\u4E0A\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",`twp ${NAME} update help`)}fieldBody(input,FIELDS);return prepareTarget(input,ctx,`twp ${NAME} update help`)},plan:input=>({method:"PUT",path:itemPath(input),body:fieldBody(input,FIELDS)}),summarize:body=>pick(item(body),GET_COLUMNS),raw:body=>item(
29
+ body),notes:()=>[cacheNote(LABEL)]},{name:"delete",summary:`${LABEL}\u3092\u524A\u9664\u3059\u308B\uFF08\u7BA1\u7406\u8005\u306E\u307F\u30FB--yes \u304C\u8981\u308B\uFF09`,usage:`twp ${NAME} delete <${LABEL}> --yes`,description:`\u5951\u7D04\uFF08\u7D42\u4E86\u6E08\u307F\u306E\u5C65\u6B74\u3092\u542B\u3080\uFF09\u304B\u3089\u53C2\u7167\u3055\u308C\u3066\u3044\u308B${LABEL}\u306F\u3001\u30B5\u30FC\u30D0\u304C\u524A\u9664\u3092\u65AD\u308A\u307E\u3059\u3002
30
+ ${DELETE_GUIDANCE}
31
+
32
+ ${REF_HELP}`,destructive:true,forbidden:FORBIDDEN,rejected:referencedDeleteGuidance(DELETE_GUIDANCE),flags:[REF_FLAG],prepare:(input,ctx)=>prepareTarget(input,ctx,`twp ${NAME} delete help`),plan:input=>({method:"DELETE",path:itemPath(input)}),summarize:body=>acknowledgement(body,`${LABEL}\u524A\u9664`),raw:body=>acknowledgement(body,`${LABEL}\u524A\u9664`),notes:()=>[cacheNote(LABEL)]}]};export{userContractTypeDomain};
@@ -0,0 +1,4 @@
1
+ import { createRequire as __twpCreateRequire } from 'node:module';
2
+ const require = __twpCreateRequire(import.meta.url);
3
+ import{SCHEDULE_HELP,parseSchedule,readRunStatus,workerAgentDomain}from"./chunk-HBEOI456.js";import"./chunk-WVCEKC7V.js";import"./chunk-MI6HVYR2.js";import"./chunk-RX5HWI4L.js";import"./chunk-6LSQCOCJ.js";import"./chunk-HNG6MF26.js";import"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";import"./chunk-PS5QFKHB.js";import"./chunk-II5RVJQN.js";import"./chunk-3ZRMMBP5.js";import"./chunk-VFPY2A23.js";
4
+ import"./chunk-XNLIEUAW.js";import"./chunk-J7QYPKVK.js";import"./chunk-4VZKNEVN.js";import"./chunk-RZVI6PMW.js";import"./chunk-QQRJLH6B.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";export{SCHEDULE_HELP,parseSchedule,readRunStatus,workerAgentDomain};
@@ -1,4 +1,4 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{applyInstancePlan,createInstancePlan,formColumns,parseInstanceContent,workflowDomain,writtenInstance}from"./chunk-FDRXS6ZU.js";import"./chunk-NQWTPHUO.js";import"./chunk-RWR7OHVP.js";import"./chunk-5LPELULJ.js";import"./chunk-JJSBBWJ5.js";import"./chunk-RX5HWI4L.js";import"./chunk-MI6HVYR2.js";import"./chunk-6LSQCOCJ.js";import"./chunk-ITRTFBV3.js";import"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";
3
+ import{applyInstancePlan,createInstancePlan,formColumns,parseInstanceContent,workflowDomain,writtenInstance}from"./chunk-WBUYPDJH.js";import"./chunk-GLKZ4ZZY.js";import"./chunk-DAOC7VRM.js";import"./chunk-WMEGP2BT.js";import"./chunk-JJSBBWJ5.js";import"./chunk-MI6HVYR2.js";import"./chunk-RX5HWI4L.js";import"./chunk-6LSQCOCJ.js";import"./chunk-HNG6MF26.js";import"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";
4
4
  import"./chunk-PS5QFKHB.js";import"./chunk-II5RVJQN.js";import"./chunk-3ZRMMBP5.js";import"./chunk-VFPY2A23.js";import"./chunk-XNLIEUAW.js";import"./chunk-J7QYPKVK.js";import"./chunk-4VZKNEVN.js";import"./chunk-RZVI6PMW.js";import"./chunk-QQRJLH6B.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";export{applyInstancePlan,createInstancePlan,formColumns,parseInstanceContent,workflowDomain,writtenInstance};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tocca-systems/twp-cli",
3
- "version": "0.64.0",
3
+ "version": "0.66.0",
4
4
  "description": "TWP CLI — Tocca Working Platform の CLI 型統合インターフェース(AIエージェントハーネス)",
5
5
  "type": "module",
6
6
  "bin": {
@@ -1,100 +0,0 @@
1
- import { createRequire as __twpCreateRequire } from 'node:module';
2
- const require = __twpCreateRequire(import.meta.url);
3
- import{LIST_FLAGS,LIST_PAGING_HELP,envelopePaging,nonEmpty,positiveInteger}from"./chunk-MI6HVYR2.js";import{readBody}from"./chunk-6LSQCOCJ.js";import{AGENT_REPOSITORIES_PATH,AGENT_SESSIONS_PATH}from"./chunk-ITRTFBV3.js";import{isSafePathSegment}from"./chunk-HVZUXLQ4.js";import{ApiError}from"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";import{requireResolved,withResolved}from"./chunk-PS5QFKHB.js";import"./chunk-II5RVJQN.js";import{isRecord,pick}from"./chunk-3ZRMMBP5.js";
4
- import{ApiRejectedError,ApiResponseError,NetworkError,UsageError,WaitTimeoutError}from"./chunk-VFPY2A23.js";import{NotLoggedInError,SessionExpiredError}from"./chunk-XNLIEUAW.js";import"./chunk-J7QYPKVK.js";import"./chunk-4VZKNEVN.js";import"./chunk-RZVI6PMW.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var SESSION_COLUMNS=["sessionId","status","repositoryFullName","baseBranch","workBranch","prUrl","aiModel","myRole","createdAt"];var SESSION_GET_COLUMNS=["sessionId","status","repositoryFullName","repositoryId","baseBranch","workBranch","branchName","prUrl","errorMessage","aiProvider","aiModel","sessionMode","executionMode","masterUserName","myRole","createdAt","updatedAt","completedAt","instructions"];var CHAT_COLUMNS=["timestamp","role","user_name","content"];var REPOSITORY_COLUMNS=["id","full\
5
- _name","default_branch","private"];var BRANCH_COLUMNS=["name","protected"];var DIFF_COLUMNS=["path","status","additions","deletions"];var INSTRUCTION_MAX_CHARS=1e4;var ACTIVE=new Set(["created","pending","provisioning","running"]);var FAILED=new Set(["failed","cancelled","expired"]);var WAIT_POLL_INTERVAL_MS=5e3;var WAIT_DEFAULT_SECONDS=300;var WAIT_MAX_SECONDS=540;var WAIT_CHAT_SCAN_LIMIT=2e3;var sleep=ms=>new Promise(resolve=>setTimeout(resolve,ms));var SESSION_REF_HELP="<\u30BB\u30C3\u30B7\u30E7\u30F3> \u306F\u30BB\u30C3\u30B7\u30E7\u30F3 ID\uFF08twp \
6
- agent session list \u306E sessionId \u5217\uFF09\u3067\u3059\u3002";var CREDIT_CONFIRMATION="AI \u30AF\u30EC\u30B8\u30C3\u30C8\u3092\u6D88\u8CBB\u3059\u308B\u64CD\u4F5C";function usageOf(op){return`twp agent ${op} help`}function noArgs(input,op){if(input.args.length>0)throw new UsageError(`${op} \u306F\u4F4D\u7F6E\u5F15\u6570\u3092\u53D6\u308A\u307E\u305B\u3093: ${input.args.join(" ")}`,usageOf(op))}function single(input,op,label,hint){const values=input.args.map(arg=>arg.trim());if(values.length>
7
- 1)throw new UsageError(`${op} \u304C\u53D7\u3051\u53D6\u308C\u308B\u5F15\u6570\u306F ${label} \u3060\u3051\u3067\u3059: ${values.slice(1).join(" ")}`,usageOf(op));const value=values[0]??"";if(value==="")throw new UsageError(`${label}\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044`,usageOf(op));if(!isSafePathSegment(value))throw new UsageError(`${label}\u3068\u3057\u3066\u4F7F\u3048\u306A\u3044\u5024\u3067\u3059: ${value}`,hint);return value}function sessionId(input,op){return single(input,
8
- `session ${op}`,"<\u30BB\u30C3\u30B7\u30E7\u30F3>","\u30BB\u30C3\u30B7\u30E7\u30F3 ID \u306F twp agent session list \u306E sessionId \u5217\u3067\u78BA\u8A8D\u3067\u304D\u307E\u3059\u3002")}function sessionPath(id,suffix=""){return`${AGENT_SESSIONS_PATH}/${encodeURIComponent(id)}${suffix}`}function envelope(body,what){if(!isRecord(body)||body["result"]!==true)throw new ApiResponseError(`${what}\u306E\u5FDC\u7B54\u306E\u5F62\u304C\u60F3\u5B9A\u3068\u9055\u3044\u307E\u3059\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`);
9
- return body}function sessionOf(body,what){const session=envelope(body,what)["session"];if(!isRecord(session)||typeof session["sessionId"]!=="string"){throw new ApiResponseError(`${what}\u306E\u5FDC\u7B54\u306B session.sessionId \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}return session}function listOf(body,key,what){const value=envelope(body,what)[key];if(!Array.isArray(value))throw new ApiResponseError(`${what}\u306E\u5FDC\u7B54\u306B ${key}\
10
- \u914D\u5217\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`);return value}function limitIn(input,max){const limit=positiveInteger(input.flags,"--limit");if(limit!==void 0&&limit>max)throw new UsageError(`--limit \u306F 1\u301C${max} \u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044: ${limit}`);return limit}function refusedBeforeSending(err){return err instanceof ApiError&&err.status>=400&&err.status<500||err instanceof
11
- NotLoggedInError||err instanceof SessionExpiredError}var WAIT_FLAG={name:"--wait",summary:"runner \u306E\u4F5C\u696D\u304C\u6B62\u307E\u308B\uFF08\u5B8C\u4E86\u30FB\u5931\u6557\u30FB\u5165\u529B\u5F85\u3061\uFF09\u307E\u3067\u5F85\u3061\u3001\u6700\u5F8C\u306E\u30A2\u30B7\u30B9\u30BF\u30F3\u30C8\u767A\u8A00\u30FB\u4F5C\u696D\u30D6\u30E9\u30F3\u30C1\u30FBPR URL \u3092\u51FA\u3059",takesValue:false};var TIMEOUT_FLAG={name:"--timeout",summary:`--wait \u3067\u5F85\u3064\u4E0A\u9650\u306E\u79D2\u6570\uFF08\u65E2\u5B9A ${WAIT_DEFAULT_SECONDS}\
12
- \u30FB\u6700\u5927 ${WAIT_MAX_SECONDS}\uFF09`,takesValue:true,placeholder:"<\u79D2>"};function waitSeconds(input,op){const timeout=positiveInteger(input.flags,TIMEOUT_FLAG.name);if(!input.flags.has(WAIT_FLAG.name)){if(timeout!==void 0)throw new UsageError("--timeout \u306F --wait \u3068\u4E00\u7DD2\u306B\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",usageOf(op));return void 0}if(timeout!==void 0&&timeout>WAIT_MAX_SECONDS){throw new UsageError(`--timeout \u306F ${WAIT_MAX_SECONDS} \u79D2\u4EE5\u4E0B\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\
13
- \uFF08\u305D\u308C\u3088\u308A\u9577\u304F\u5F85\u3064\u306A\u3089 --wait \u3092\u5916\u3057\u3001\u3042\u3068\u3067 twp agent session get \u3067\u78BA\u304B\u3081\u3066\u304F\u3060\u3055\u3044\uFF09`,usageOf(op))}return timeout??WAIT_DEFAULT_SECONDS}function chatRows(body){return listOf(body,"messages","\u30C1\u30E3\u30C3\u30C8")}function lastAssistant(rows){for(let i=rows.length-1;i>=0;i--){const row=rows[i];if(isRecord(row)&&row["role"]==="assistant"&&typeof row["content"]==="string"){return{
14
- role:"assistant",content:row["content"],timestamp:typeof row["timestamp"]==="string"?row["timestamp"]:""}}}return null}function isAfter(timestamp,since){if(since===null)return true;const a=Date.parse(timestamp);const b=Date.parse(since);return!Number.isNaN(a)&&!Number.isNaN(b)&&a>b}async function waitForSession(ctx,id,seconds,since){const deadline=Date.now()+seconds*1e3;const hint=`twp agent session get ${id}`;ctx.warn(`runner \u306E\u4F5C\u696D\u304C\u6B62\u307E\u308B\u306E\u3092\u5F85\u3061\u307E\u3059\uFF08${WAIT_POLL_INTERVAL_MS/
15
- 1e3} \u79D2\u304A\u304D\u30FB\u6700\u5927 ${seconds} \u79D2\uFF09\u3002`);for(;;){await sleep(WAIT_POLL_INTERVAL_MS);let session;try{session=sessionOf(await ctx.send({method:"GET",path:sessionPath(id)}),"\u30BB\u30C3\u30B7\u30E7\u30F3");const status=String(session["status"]);if(FAILED.has(status)){const reason=typeof session["errorMessage"]==="string"&&session["errorMessage"]!==""?`: ${session["errorMessage"]}`:"";throw new ApiRejectedError(`\u30BB\u30C3\u30B7\u30E7\u30F3\u304C ${status} \u3067\u7D42\u308F\u308A\u307E\u3057\u305F${reason}\
16
- \u3002\u4F1A\u8A71\u306F twp agent session chat ${id} \u3067\u8AAD\u3081\u307E\u3059`)}if(!ACTIVE.has(status)){const last=lastAssistant(chatRows(await ctx.send({method:"GET",path:sessionPath(id,"/chat-messages"),query:{limit:WAIT_CHAT_SCAN_LIMIT}})));if(last!==null&&isAfter(last.timestamp,since))return{session,last};if(since===null)return{session,last}}}catch(err){if(err instanceof ApiRejectedError)throw err;ctx.warn(`\u6307\u793A\u306F\u53D7\u3051\u4ED8\u3051\u6E08\u307F\u3067\u3059\u304C\u3001\u5F85\u3064\u9014\u4E2D\u3067\u30BB\u30C3\u30B7\u30E7\u30F3\u3092\u8AAD\u3081\u307E\u305B\u3093\u3067\u3057\u305F\u3002\u6253\u3061\u76F4\u3059\u524D\u306B ${hint}\
17
- \u3067\u78BA\u304B\u3081\u3066\u304F\u3060\u3055\u3044\u3002`);if(err instanceof NetworkError||err instanceof ApiResponseError||err instanceof ApiError&&(err.status>=500||err.status===429)){throw new WaitTimeoutError(`\u5F85\u3064\u9014\u4E2D\u3067\u30BB\u30C3\u30B7\u30E7\u30F3\u3092\u8AAD\u3081\u307E\u305B\u3093\u3067\u3057\u305F\uFF08${err.message}\uFF09\u3002\u4F5C\u696D\u306F\u53D7\u3051\u4ED8\u3051\u6E08\u307F\u3067\u3059\u3002\u6253\u3061\u76F4\u3055\u305A ${hint} \u3067\u78BA\u304B\u3081\u3066\u304F\u3060\u3055\u3044`)}
18
- throw err}if(Date.now()>=deadline){const status=String(session["status"]);throw new WaitTimeoutError(ACTIVE.has(status)?`${seconds} \u79D2\u5F85\u3061\u307E\u3057\u305F\u304C\u4F5C\u696D\u304C\u6B62\u307E\u308A\u307E\u305B\u3093\u3067\u3057\u305F\uFF08status=${status}\uFF09\u3002\u3042\u3068\u3067 ${hint} \u3068 twp agent session chat ${id} \u3067\u78BA\u304B\u3081\u3066\u304F\u3060\u3055\u3044\uFF08\u4F5C\u696D\u306F runner \u4E0A\u3067\u7D9A\u3044\u3066\u3044\u307E\u3059\uFF09`:`${seconds} \u79D2\u5F85\u3061\
19
- \u307E\u3057\u305F\u304C\u3001\u9001\u3063\u305F\u6307\u793A\u3088\u308A\u5F8C\u306E\u30A2\u30B7\u30B9\u30BF\u30F3\u30C8\u767A\u8A00\u3092\u78BA\u8A8D\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08status=${status}\uFF09\u3002twp agent session chat ${id} \u3067\u78BA\u304B\u3081\u3066\u304F\u3060\u3055\u3044\uFF08\u6B62\u307E\u3063\u305F\u307E\u307E\u306A\u3089 twp agent session resume \u3067\u518D\u958B\u3067\u304D\u307E\u3059\uFF09`)}}}function startedOf(body,what){const data=envelope(body,
20
- what);const session=data["session"];if(session!==void 0&&session!==null&&!isRecord(session))throw new ApiResponseError(`${what}\u306E\u5FDC\u7B54\u306E session \u304C\u60F3\u5B9A\u3068\u9055\u3044\u307E\u3059\u3002`);const ts=data["timestamp"];return{session:isRecord(session)?session:null,timestamp:typeof ts==="string"?ts:null,last_assistant_message:typeof data["last_assistant_message"]==="string"?data["last_assistant_message"]:null,last_assistant_at:typeof data["last_assistant_at"]==="string"?data["\
21
- last_assistant_at"]:null}}function startedRaw(what){return body=>startedOf(body,what)}function startedSummary(what){return body=>{const started=startedOf(body,what);const session=started.session??{};return{sessionId:session["sessionId"]??null,status:session["status"]??null,workBranch:session["workBranch"]??session["branchName"]??null,prUrl:session["prUrl"]??null,last_assistant_message:started.last_assistant_message}}}function startedDocument(what){return body=>{const started=startedOf(body,what);
22
- const session=started.session??{};const lines=[started.last_assistant_message??"\uFF08\u30A2\u30B7\u30B9\u30BF\u30F3\u30C8\u306E\u767A\u8A00\u306F\u307E\u3060\u3042\u308A\u307E\u305B\u3093\uFF09",""];for(const key of["sessionId","status","workBranch","branchName","prUrl","errorMessage"]){const value=session[key];if(value!==null&&value!==void 0&&value!=="")lines.push(`${key}: ${String(value)}`)}return`${lines.join("\n")}
23
- `}}function startedNotes(op){return(body,input)=>{const started=startedOf(body,op);const id=started.session?.["sessionId"]??input.args[0]??"<\u30BB\u30C3\u30B7\u30E7\u30F3>";if(input.flags.has(WAIT_FLAG.name))return[];return[`runner \u306F\u975E\u540C\u671F\u3067\u52D5\u304D\u307E\u3059\u3002\u9032\u307F\u5177\u5408\u306F twp agent session get ${String(id)}\u3001\u4F1A\u8A71\u306F twp agent session chat ${String(id)} \u3067\u8AAD\u3081\u307E\u3059\uFF08--wait \u3092\u4ED8\u3051\u308B\u3068\u6B62\u307E\u308B\u307E\u3067\u5F85\u3061\u307E\u3059\uFF09\u3002`]}}
24
- function waitPlannedNotes(input,idHint){return["\u9001\u308B\u3068\u30C6\u30CA\u30F3\u30C8\u306E AI \u30AF\u30EC\u30B8\u30C3\u30C8\u3092\u6D88\u8CBB\u3057\u307E\u3059\uFF08runner \u304C AI \u3092\u547C\u3076\u305F\u3081\uFF09",...input.flags.has(WAIT_FLAG.name)?[`\u7D9A\u3051\u3066 GET ${AGENT_SESSIONS_PATH}/${idHint} \u3092 ${WAIT_POLL_INTERVAL_MS/1e3} \u79D2\u304A\u304D\u306B\u9001\u308A\u3001\u6B62\u307E\u3063\u305F\u3089\u30C1\u30E3\u30C3\u30C8\u30921\u56DE\u8AAD\u307F\u307E\u3059`]:[]]}async function sendAndMaybeWait(input,ctx,plan,op,idFrom){
25
- const seconds=waitSeconds(input,op);let sent;try{sent=await ctx.send(plan)}catch(err){if(op==="session instruct"&&err instanceof ApiError&&err.status===400&&String(err.body?.error_description??"").includes("\u53D7\u3051\u4ED8\u3051\u3089\u308C\u308B\u72B6\u614B\u3067\u306F\u3042\u308A\u307E\u305B\u3093")){ctx.warn("\u7D42\u308F\u3063\u305F\u30BB\u30C3\u30B7\u30E7\u30F3\u306B\u306F\u6307\u793A\u3092\u9001\u308C\u307E\u305B\u3093\u3002twp agent session resume <\u30BB\u30C3\u30B7\u30E7\u30F3> --body-file <\u30D1\u30B9> --yes \u3067\u518D\u958B\u306E\u6307\u793A\u3068\u3057\u3066\u9001\u308C\u307E\u3059\u3002")}
26
- if(!refusedBeforeSending(err)){ctx.warn("\u9001\u4FE1\u306E\u7D50\u679C\u3092\u53D7\u3051\u53D6\u308C\u307E\u305B\u3093\u3067\u3057\u305F\u3002\u30B5\u30FC\u30D0\u3067\u53D7\u3051\u4ED8\u3051\u6E08\u307F\u306E\u3053\u3068\u304C\u3042\u308A\u307E\u3059\uFF08\u6253\u3061\u76F4\u3059\u3068\u4E8C\u91CD\u306B\u30AF\u30EC\u30B8\u30C3\u30C8\u3092\u6D88\u8CBB\u3057\u3046\u308B\uFF09\u3002twp agent session list \u3067\u78BA\u304B\u3081\u3066\u304F\u3060\u3055\u3044\u3002")}throw err}const data=envelope(sent,
27
- op);if(isRecord(data["session"])&&FAILED.has(String(data["session"]["status"]))){const failed=data["session"];const reason=typeof failed["errorMessage"]==="string"&&failed["errorMessage"]!==""?`: ${failed["errorMessage"]}`:"";throw new ApiRejectedError(`\u30BB\u30C3\u30B7\u30E7\u30F3\u306F ${String(failed["status"])} \u3067\u3059${reason}\uFF08session=${String(failed["sessionId"])}\uFF09`)}const base={result:true,session:isRecord(data["session"])?data["session"]:null,timestamp:typeof data["times\
28
- tamp"]==="string"?data["timestamp"]:null,last_assistant_message:null,last_assistant_at:null};if(seconds===void 0)return base;const id=idFrom(data);const since=op==="session create"?null:base["timestamp"]??new Date().toISOString();const{session,last}=await waitForSession(ctx,id,seconds,since);return{...base,session,last_assistant_message:last?.content??null,last_assistant_at:last?.timestamp??null}}var sessionPaging=envelopePaging({label:"\u30BB\u30C3\u30B7\u30E7\u30F3\u4E00\u89A7"});function sessionRows(body){
29
- envelope(body,"\u30BB\u30C3\u30B7\u30E7\u30F3\u4E00\u89A7");return sessionPaging.items(body)}var REPOSITORY_FLAG={name:"--repository",summary:"\u30EA\u30DD\u30B8\u30C8\u30EA\uFF08owner/repo\u30FB\u540D\u524D\u30FBID\u3002twp agent repository list \u3067\u78BA\u8A8D\u3067\u304D\u308B\uFF09",takesValue:true,placeholder:"<owner/repo>"};async function resolveRepository(input,ctx,ref,flag){const repo=await ctx.resolver.agentRepository(ref,flag);if(!isSafePathSegment(repo.id))throw new UsageError(`\u30EA\u30DD\u30B8\
30
- \u30C8\u30EA ID \u3068\u3057\u3066\u4F7F\u3048\u306A\u3044\u5024\u3067\u3059: ${repo.id}`);return withResolved(input,{repositoryId:repo.id})}var sessionListOperation={name:"list",summary:"\u30B3\u30F3\u30C6\u30CA\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u306E\u30BB\u30C3\u30B7\u30E7\u30F3\u3092\u4E00\u89A7\u3059\u308B\uFF08\u81EA\u5206\u304C\u30DE\u30B9\u30BF\u30FC\u304B\u30E1\u30F3\u30D0\u30FC\u306E\u3082\u306E\u30FB\u65B0\u3057\u3044\u9806\uFF09",usage:"twp agent session list [--status <\u72B6\u614B>] [--rep\
31
- ository <owner/repo>] [--all] [--limit <\u4EF6\u6570>] [--cursor <\u30AB\u30FC\u30BD\u30EB>]",description:`\u81EA\u5206\u304C\u30DE\u30B9\u30BF\u30FC\uFF08\u8D77\u52D5\u3057\u305F\u4EBA\uFF09\u304B\u30E1\u30F3\u30D0\u30FC\u3068\u3057\u3066\u53C2\u52A0\u3057\u3066\u3044\u308B\u30BB\u30C3\u30B7\u30E7\u30F3\u3060\u3051\u304C\u51FA\u307E\u3059\u3002
32
- --status \u306F pending / provisioning / running / completed / failed / cancelled \u7B49\u306E\u72B6\u614B\u3067\u7D5E\u308A\u307E\u3059\u3002
33
-
34
- --output json \u306F API \u304C\u8FD4\u3059\u5168\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u51FA\u3057\u307E\u3059\uFF08\u6307\u793A\u6587\u30FB\u30B7\u30B9\u30C6\u30E0\u30D7\u30ED\u30F3\u30D7\u30C8\u30FB\u6DFB\u4ED8\u306E\u4E00\u89A7\u3092\u542B\u3080\uFF09\u3002
35
- --output table / text / tsv \u306F\u8981\u7D04\u5217\uFF08${SESSION_COLUMNS.join(" / ")}\uFF09\u3067\u3059\u3002
36
-
37
- `+LIST_PAGING_HELP,flags:[...LIST_FLAGS,{name:"--status",summary:"\u72B6\u614B\u3067\u7D5E\u308A\u8FBC\u3080",takesValue:true,placeholder:"<\u72B6\u614B>"},REPOSITORY_FLAG],paging:sessionPaging,async prepare(input,ctx){noArgs(input,"session list");limitIn(input,100);const repo=nonEmpty(input.flags,REPOSITORY_FLAG.name);return repo===void 0?input:resolveRepository(input,ctx,repo,REPOSITORY_FLAG.name)},plan:input=>({method:"GET",path:AGENT_SESSIONS_PATH,query:{status:nonEmpty(input.flags,"--status"),
38
- repositoryId:input.resolved?.["repositoryId"],limit:limitIn(input,100),cursor:nonEmpty(input.flags,"--cursor")}}),summarize:body=>sessionRows(body).map(row=>pick(row,SESSION_COLUMNS)),raw:sessionRows,notes:body=>sessionRows(body).length===0?["\u6761\u4EF6\u306B\u4E00\u81F4\u3059\u308B\u30BB\u30C3\u30B7\u30E7\u30F3\u306F\u3042\u308A\u307E\u305B\u3093\u3002"]:[]};var sessionGetOperation={name:"get",summary:"\u30BB\u30C3\u30B7\u30E7\u30F31\u4EF6\u306E\u72B6\u614B\u30FB\u4F5C\u696D\u30D6\u30E9\u30F3\u30C1\u30FBPR \u3092\u8868\u793A\u3059\u308B",
39
- usage:"twp agent session get <\u30BB\u30C3\u30B7\u30E7\u30F3>",description:`${SESSION_REF_HELP}
40
- \u53C2\u52A0\u3057\u3066\u3044\u306A\u3044\u30BB\u30C3\u30B7\u30E7\u30F3\u306F\u300C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u300D\u306B\u306A\u308A\u307E\u3059\u3002
41
-
42
- --output json \u306F API \u304C\u8FD4\u3059\u5168\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u51FA\u3057\u307E\u3059\u3002`,flags:[],plan:input=>({method:"GET",path:sessionPath(sessionId(input,"get"))}),summarize:body=>pick(sessionOf(body,"\u30BB\u30C3\u30B7\u30E7\u30F3"),SESSION_GET_COLUMNS),raw:body=>sessionOf(body,"\u30BB\u30C3\u30B7\u30E7\u30F3")};var INSTRUCTIONS_SPEC={flag:"--instructions",fileFlag:"--instructions-file",label:"\u521D\u671F\u6307\u793A",maxChars:INSTRUCTION_MAX_CHARS,usage:"twp ag\
43
- ent session create --repository <owner/repo> --instructions-file <\u30D1\u30B9> --yes"};var BODY_SPEC={flag:"--body",fileFlag:"--body-file",label:"\u6307\u793A",maxChars:INSTRUCTION_MAX_CHARS,usage:"twp agent session instruct <\u30BB\u30C3\u30B7\u30E7\u30F3> --body-file <\u30D1\u30B9> --yes"};var sessionCreateOperation={name:"create",summary:"\u30EA\u30DD\u30B8\u30C8\u30EA\u3067\u4F5C\u696D\u3059\u308B\u30BB\u30C3\u30B7\u30E7\u30F3\u3092\u8D77\u52D5\u3059\u308B\uFF08AI \u30AF\u30EC\u30B8\u30C3\u30C8\u3092\u6D88\u8CBB\u30FB--yes \u304C\u8981\u308B\u30FB--wait \u3067\u6B62\u307E\u308B\u307E\u3067\u5F85\u3064\uFF09",
44
- usage:"twp agent session create --repository <owner/repo> (--instructions-file <\u30D1\u30B9> | --instructions <\u6587>) [--base <\u30D6\u30E9\u30F3\u30C1>] [--model <\u30E2\u30C7\u30EB>] [--wait [--timeout <\u79D2>]] --yes",description:`\u753B\u9762\u306E\u300C\u65B0\u3057\u3044\u30BB\u30C3\u30B7\u30E7\u30F3\u300D\u3068\u540C\u3058 POST /api/v2/agent/sessions \u3092\u9001\u308A\u307E\u3059\u3002runner \u304C\u8D77\u52D5\u3057\u3066\u30EA\u30DD\u30B8\u30C8\u30EA\u3092\u53D6\u5F97\u3057\u3001
45
- \u4F5C\u696D\u30D6\u30E9\u30F3\u30C1\uFF08agent/task-<\u30BB\u30C3\u30B7\u30E7\u30F3ID>\uFF09\u3067\u6307\u793A\u3069\u304A\u308A\u306B\u4F5C\u696D\u3057\u307E\u3059\u3002\u30C6\u30CA\u30F3\u30C8\u306E AI \u30AF\u30EC\u30B8\u30C3\u30C8\u3092\u6D88\u8CBB\u3057\u307E\u3059\u3002
46
- --repository \u306F twp agent repository list \u306E full_name\uFF08owner/repo\uFF09\u304B id \u3067\u3059\u3002
47
- --base \u3092\u7701\u304F\u3068\u3001\u30B5\u30FC\u30D0\u304C\u30EA\u30DD\u30B8\u30C8\u30EA\u306E\u65E2\u5B9A\u306E\u30D6\u30E9\u30F3\u30C1\u3092\u4F7F\u3044\u307E\u3059\u3002--model \u3092\u7701\u304F\u3068\u30B5\u30FC\u30D0\u306E\u65E2\u5B9A\u306E\u30E2\u30C7\u30EB\u3067\u3059\u3002
48
- --wait \u3092\u4ED8\u3051\u308B\u3068 5 \u79D2\u304A\u304D\u306B\u72B6\u614B\u3092\u5F15\u304D\u3001\u4F5C\u696D\u304C\u6B62\u307E\u3063\u305F\u3089\u6700\u5F8C\u306E\u30A2\u30B7\u30B9\u30BF\u30F3\u30C8\u767A\u8A00\u30FB\u4F5C\u696D\u30D6\u30E9\u30F3\u30C1\u30FBPR URL \u3092\u51FA\u3057\u307E\u3059
49
- \uFF08failed / cancelled / expired \u306A\u3089\u7D42\u4E86\u30B3\u30FC\u30C9 3\u3001--timeout \u79D2\u3067\u6B62\u307E\u3089\u306A\u3051\u308C\u3070\u7D42\u4E86\u30B3\u30FC\u30C9 6\uFF1D\u672A\u5B8C\u4E86\u30FB\u6253\u3061\u76F4\u3055\u306A\u3044\u3002\u65E2\u5B9A ${WAIT_DEFAULT_SECONDS} \u79D2\u30FB\u6700\u5927 ${WAIT_MAX_SECONDS} \u79D2\uFF09\u3002
50
- \u6307\u793A\u6587\u306F\u6539\u884C\u3084 Markdown \u3092\u58CA\u3055\u306A\u3044\u3088\u3046 --instructions-file \u3067\u6E21\u3057\u3066\u304F\u3060\u3055\u3044\uFF08- \u3067\u6A19\u6E96\u5165\u529B\uFF09\u3002`,destructive:true,confirmation:CREDIT_CONFIRMATION,flags:[REPOSITORY_FLAG,{name:"--base",summary:"\u4F5C\u696D\u306E\u8D77\u70B9\u306B\u3059\u308B\u30D6\u30E9\u30F3\u30C1\uFF08twp agent repository branches \u3067\u78BA\u8A8D\u3067\u304D\u308B\uFF09",takesValue:true,placeholder:"<\u30D6\u30E9\u30F3\u30C1>"},
51
- {name:INSTRUCTIONS_SPEC.fileFlag,summary:"\u521D\u671F\u6307\u793A\u3092\u30D5\u30A1\u30A4\u30EB\u304B\u3089\u8AAD\u3080\uFF08- \u3067\u6A19\u6E96\u5165\u529B\uFF09",takesValue:true,placeholder:"<\u30D1\u30B9>"},{name:INSTRUCTIONS_SPEC.flag,summary:"\u521D\u671F\u6307\u793A\u3092\u76F4\u63A5\u6E21\u3059\uFF08\u6539\u884C\u3092\u542B\u3080\u306A\u3089 --instructions-file\uFF09",takesValue:true,placeholder:"<\u6587>"},{name:"--model",summary:"AI \u30E2\u30C7\u30EB\uFF08claude \u306E\u30E2\u30C7\u30EB\u306E\u307F\u30FB\u7701\u7565\u6642\u306F\u30B5\u30FC\u30D0\u306E\u65E2\u5B9A\uFF09",
52
- takesValue:true,placeholder:"<\u30E2\u30C7\u30EB>"},WAIT_FLAG,TIMEOUT_FLAG],async prepare(input,ctx){noArgs(input,"session create");waitSeconds(input,"session create");const repo=nonEmpty(input.flags,REPOSITORY_FLAG.name);if(repo===void 0)throw new UsageError("--repository \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044","\u30EA\u30DD\u30B8\u30C8\u30EA\u306F twp agent repository list \u3067\u78BA\u8A8D\u3067\u304D\u307E\u3059\u3002");const instructions=await readBody(input,INSTRUCTIONS_SPEC);
53
- if(instructions===void 0)throw new UsageError("\u521D\u671F\u6307\u793A\u3092 --instructions-file \u304B --instructions \u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",INSTRUCTIONS_SPEC.usage);return withResolved(await resolveRepository(input,ctx,repo,REPOSITORY_FLAG.name),{instructions})},plan:input=>({method:"POST",path:AGENT_SESSIONS_PATH,body:{repositoryId:requireResolved(input,"repositoryId"),instructions:requireResolved(input,"instructions"),...nonEmpty(input.flags,"--base")!==void 0?
54
- {baseBranch:nonEmpty(input.flags,"--base")}:{},...nonEmpty(input.flags,"--model")!==void 0?{aiModel:nonEmpty(input.flags,"--model")}:{}}}),plannedNotes:input=>waitPlannedNotes(input,"{\u4F5C\u6210\u3057\u305F\u30BB\u30C3\u30B7\u30E7\u30F3ID}"),execute:(input,ctx)=>sendAndMaybeWait(input,ctx,sessionCreateOperation.plan(input),"session create",data=>{const session=data["session"];const id=isRecord(session)?session["sessionId"]:void 0;if(typeof id!=="string"||!isSafePathSegment(id))throw new ApiResponseError(
55
- "\u30BB\u30C3\u30B7\u30E7\u30F3\u4F5C\u6210\u306E\u5FDC\u7B54\u306B session.sessionId \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002");return id}),summarize:startedSummary("\u30BB\u30C3\u30B7\u30E7\u30F3\u4F5C\u6210"),raw:startedRaw("\u30BB\u30C3\u30B7\u30E7\u30F3\u4F5C\u6210"),document:startedDocument("\u30BB\u30C3\u30B7\u30E7\u30F3\u4F5C\u6210"),notes:startedNotes("\u30BB\u30C3\u30B7\u30E7\u30F3\u4F5C\u6210")};var sessionInstructOperation={
56
- name:"instruct",summary:"\u52D5\u3044\u3066\u3044\u308B\u30BB\u30C3\u30B7\u30E7\u30F3\u3078\u8FFD\u52A0\u306E\u6307\u793A\u3092\u9001\u308B\uFF08AI \u30AF\u30EC\u30B8\u30C3\u30C8\u3092\u6D88\u8CBB\u30FB--yes \u304C\u8981\u308B\u30FB--wait \u3067\u7B54\u3048\u3092\u5F85\u3064\uFF09",usage:"twp agent session instruct <\u30BB\u30C3\u30B7\u30E7\u30F3> (--body-file <\u30D1\u30B9> | --body <\u6587>) [--wait [--timeout <\u79D2>]] --yes",description:`${SESSION_REF_HELP}
57
- \u753B\u9762\u306E\u30C1\u30E3\u30C3\u30C8\u6B04\u304B\u3089\u9001\u308B\u306E\u3068\u540C\u3058 POST /api/v2/agent/sessions/{id}/instructions \u3067\u3059\u3002\u767A\u8A00\u8005\u306F\u3042\u306A\u305F\u3068\u3057\u3066\u8A18\u9332\u3055\u308C\u307E\u3059\u3002
58
- \u30BB\u30C3\u30B7\u30E7\u30F3\u304C running / pending / \u5165\u529B\u5F85\u3061\u306E\u3068\u304D\u3060\u3051\u53D7\u3051\u4ED8\u3051\u307E\u3059\uFF08\u7D42\u308F\u3063\u305F\u30BB\u30C3\u30B7\u30E7\u30F3\u306F twp agent session resume \u3067\u518D\u958B\u3057\u307E\u3059\uFF09\u3002
59
- --wait \u3092\u4ED8\u3051\u308B\u3068\u3001\u9001\u3063\u305F\u6642\u523B\u3088\u308A\u5F8C\u306E\u30A2\u30B7\u30B9\u30BF\u30F3\u30C8\u767A\u8A00\u304C\u51FA\u3066\u4F5C\u696D\u304C\u6B62\u307E\u308B\u307E\u3067\u5F85\u3061\u307E\u3059\u3002`,destructive:true,confirmation:CREDIT_CONFIRMATION,flags:[{name:BODY_SPEC.fileFlag,summary:"\u6307\u793A\u3092\u30D5\u30A1\u30A4\u30EB\u304B\u3089\u8AAD\u3080\uFF08- \u3067\u6A19\u6E96\u5165\u529B\uFF09",takesValue:true,placeholder:"<\u30D1\u30B9>"},{name:BODY_SPEC.
60
- flag,summary:"\u6307\u793A\u3092\u76F4\u63A5\u6E21\u3059\uFF08\u6539\u884C\u3092\u542B\u3080\u306A\u3089 --body-file\uFF09",takesValue:true,placeholder:"<\u6587>"},WAIT_FLAG,TIMEOUT_FLAG],async prepare(input){sessionId(input,"instruct");waitSeconds(input,"session instruct");const body=await readBody(input,BODY_SPEC);if(body===void 0)throw new UsageError("\u6307\u793A\u3092 --body-file \u304B --body \u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",BODY_SPEC.usage);return withResolved(input,
61
- {instruction:body})},plan:input=>({method:"POST",path:sessionPath(sessionId(input,"instruct"),"/instructions"),body:{instruction:requireResolved(input,"instruction")}}),plannedNotes:input=>waitPlannedNotes(input,input.args[0]??"<\u30BB\u30C3\u30B7\u30E7\u30F3>"),execute:(input,ctx)=>sendAndMaybeWait(input,ctx,sessionInstructOperation.plan(input),"session instruct",()=>sessionId(input,"instruct")),summarize:startedSummary("\u6307\u793A\u306E\u9001\u4FE1"),raw:startedRaw("\u6307\u793A\u306E\u9001\u4FE1"),
62
- document:startedDocument("\u6307\u793A\u306E\u9001\u4FE1"),notes:startedNotes("\u6307\u793A\u306E\u9001\u4FE1")};var RESUME_SPEC={...BODY_SPEC,label:"\u518D\u958B\u306E\u6307\u793A",usage:"twp agent session resume <\u30BB\u30C3\u30B7\u30E7\u30F3> [--body-file <\u30D1\u30B9>] --yes"};var sessionResumeOperation={name:"resume",summary:"\u6B62\u307E\u3063\u305F\u30BB\u30C3\u30B7\u30E7\u30F3\u3092\u518D\u958B\u3059\u308B\uFF08AI \u30AF\u30EC\u30B8\u30C3\u30C8\u3092\u6D88\u8CBB\u30FB--yes \u304C\u8981\u308B\u30FB--body-file \u3067\u518D\u958B\u306E\u6307\u793A\uFF09",
63
- usage:"twp agent session resume <\u30BB\u30C3\u30B7\u30E7\u30F3> [--body-file <\u30D1\u30B9> | --body <\u6587>] [--wait [--timeout <\u79D2>]] --yes",description:`${SESSION_REF_HELP}
64
- \u753B\u9762\u306E\u300C\u518D\u958B\u300D\u3068\u540C\u3058 POST /api/v2/agent/sessions/{id}/resume \u3067\u3059\u3002runner \u3092\u8D77\u52D5\u3057\u76F4\u3057\u3001\u4F5C\u696D\u30D6\u30E9\u30F3\u30C1\u306E\u7D9A\u304D\u304B\u3089\u4F5C\u696D\u3057\u307E\u3059\u3002
65
- \u518D\u958B\u306E\u6307\u793A\u306F\u4EFB\u610F\u3067\u3059\uFF08\u7701\u304F\u3068\u524D\u56DE\u306E\u7D9A\u304D\u3092\u518D\u958B\u3057\u307E\u3059\uFF09\u3002`,destructive:true,confirmation:CREDIT_CONFIRMATION,flags:[{name:BODY_SPEC.fileFlag,summary:"\u518D\u958B\u306E\u6307\u793A\u3092\u30D5\u30A1\u30A4\u30EB\u304B\u3089\u8AAD\u3080\uFF08- \u3067\u6A19\u6E96\u5165\u529B\uFF09",takesValue:true,placeholder:"<\u30D1\u30B9>"},{name:BODY_SPEC.flag,summary:"\u518D\u958B\u306E\u6307\u793A\u3092\u76F4\u63A5\u6E21\u3059",
66
- takesValue:true,placeholder:"<\u6587>"},WAIT_FLAG,TIMEOUT_FLAG],async prepare(input){sessionId(input,"resume");waitSeconds(input,"session resume");const body=await readBody(input,RESUME_SPEC);return body===void 0?input:withResolved(input,{resumeInstruction:body})},plan:input=>{const instruction=input.resolved?.["resumeInstruction"];return{method:"POST",path:sessionPath(sessionId(input,"resume"),"/resume"),body:instruction===void 0?{}:{resumeInstruction:instruction}}},plannedNotes:input=>waitPlannedNotes(
67
- input,input.args[0]??"<\u30BB\u30C3\u30B7\u30E7\u30F3>"),execute:(input,ctx)=>sendAndMaybeWait(input,ctx,sessionResumeOperation.plan(input),"session resume",()=>sessionId(input,"resume")),summarize:startedSummary("\u30BB\u30C3\u30B7\u30E7\u30F3\u306E\u518D\u958B"),raw:startedRaw("\u30BB\u30C3\u30B7\u30E7\u30F3\u306E\u518D\u958B"),document:startedDocument("\u30BB\u30C3\u30B7\u30E7\u30F3\u306E\u518D\u958B"),notes:startedNotes("\u30BB\u30C3\u30B7\u30E7\u30F3\u306E\u518D\u958B")};function messageOf(body,what){
68
- const data=envelope(body,what);return{message:typeof data["message"]==="string"?data["message"]:null}}var sessionCancelOperation={name:"cancel",summary:"\u52D5\u3044\u3066\u3044\u308B\u30BB\u30C3\u30B7\u30E7\u30F3\u3092\u6B62\u3081\u308B\uFF08runner \u3092\u505C\u6B62\u3059\u308B\u3002\u8A18\u9332\u306F\u6B8B\u308A\u3001resume \u3067\u518D\u958B\u3067\u304D\u308B\uFF09",usage:"twp agent session cancel <\u30BB\u30C3\u30B7\u30E7\u30F3>",description:`${SESSION_REF_HELP}
69
- \u753B\u9762\u306E\u300C\u505C\u6B62\u300D\u3068\u540C\u3058 DELETE /api/v2/agent/sessions/{id} \u3067\u3059\u3002\u30BB\u30C3\u30B7\u30E7\u30F3\u306E\u8A18\u9332\u306F\u6D88\u3048\u307E\u305B\u3093\uFF08\u6D88\u3059\u306E\u306F delete\uFF09\u3002`,flags:[],plan:input=>({method:"DELETE",path:sessionPath(sessionId(input,"cancel"))}),summarize:body=>messageOf(body,"\u30BB\u30C3\u30B7\u30E7\u30F3\u306E\u505C\u6B62"),raw:body=>messageOf(body,"\u30BB\u30C3\u30B7\u30E7\u30F3\u306E\u505C\u6B62")};var sessionDeleteOperation={
70
- name:"delete",summary:"\u30BB\u30C3\u30B7\u30E7\u30F3\u3092\u524A\u9664\u3059\u308B\uFF08\u30DE\u30B9\u30BF\u30FC\u306E\u307F\u30FB\u53D6\u308A\u6D88\u305B\u306A\u3044\u30FB--yes \u304C\u8981\u308B\uFF09",usage:"twp agent session delete <\u30BB\u30C3\u30B7\u30E7\u30F3> --yes",description:`${SESSION_REF_HELP}
71
- DELETE /api/v2/agent/sessions/{id}/delete\u3002\u8D77\u52D5\u3057\u305F\u672C\u4EBA\uFF08\u30DE\u30B9\u30BF\u30FC\uFF09\u3060\u3051\u304C\u524A\u9664\u3067\u304D\u307E\u3059\u3002\u4F5C\u696D\u30D6\u30E9\u30F3\u30C1\u30FBPR \u306F GitHub \u306B\u6B8B\u308A\u307E\u3059\u3002`,destructive:true,flags:[],plan:input=>({method:"DELETE",path:sessionPath(sessionId(input,"delete"),"/delete")}),summarize:body=>messageOf(body,"\u30BB\u30C3\u30B7\u30E7\u30F3\u306E\u524A\u9664"),raw:body=>messageOf(body,"\u30BB\u30C3\u30B7\
72
- \u30E7\u30F3\u306E\u524A\u9664")};var logPaging=envelopePaging({label:"\u30BB\u30C3\u30B7\u30E7\u30F3\u30ED\u30B0",itemsKey:"logs",readCursor:body=>{const record=isRecord(body)?body:{};return{hasMore:record["hasMore"],cursor:record["nextCursor"]}}});function logRows(body){envelope(body,"\u30BB\u30C3\u30B7\u30E7\u30F3\u30ED\u30B0");return logPaging.items(body)}var sessionLogsOperation={name:"logs",summary:"\u30BB\u30C3\u30B7\u30E7\u30F3\u306E\u5B9F\u884C\u30ED\u30B0\uFF08runner \u306E\u30A4\u30D9\u30F3\u30C8\uFF09\u3092\u4E00\u89A7\u3059\u308B",
73
- usage:"twp agent session logs <\u30BB\u30C3\u30B7\u30E7\u30F3> [--all] [--limit <\u4EF6\u6570>] [--cursor <\u30AB\u30FC\u30BD\u30EB>]",description:`${SESSION_REF_HELP}
74
- --output json \u306F API \u304C\u8FD4\u3059\u5168\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u51FA\u3057\u307E\u3059\u3002
75
-
76
- ${LIST_PAGING_HELP}`,flags:[...LIST_FLAGS],paging:logPaging,plan:input=>({method:"GET",path:sessionPath(sessionId(input,"logs"),"/logs"),query:{limit:positiveInteger(input.flags,"--limit"),cursor:nonEmpty(input.flags,"--cursor")}}),summarize:body=>logRows(body),raw:logRows,notes:body=>logRows(body).length===0?["\u30ED\u30B0\u306F\u307E\u3060\u3042\u308A\u307E\u305B\u3093\u3002"]:[]};function chatSummary(row){const metadata=isRecord(row)&&isRecord(row["metadata"])?row["metadata"]:{};return{...pick(
77
- row,["timestamp","role","content"]),user_name:metadata["userName"]??null}}var sessionChatOperation={name:"chat",summary:"\u30BB\u30C3\u30B7\u30E7\u30F3\u306E\u4F1A\u8A71\uFF08\u6307\u793A\u3068\u30A2\u30B7\u30B9\u30BF\u30F3\u30C8\u306E\u767A\u8A00\u30FB\u30D5\u30A1\u30A4\u30EB\u5909\u66F4\uFF09\u3092\u53E4\u3044\u9806\u306B\u8868\u793A\u3059\u308B",usage:"twp agent session chat <\u30BB\u30C3\u30B7\u30E7\u30F3> [--limit <\u4EF6\u6570>]",description:`${SESSION_REF_HELP}
78
- --limit \u306F\u30B5\u30FC\u30D0\u304C**\u53E4\u3044\u5074\u304B\u3089**\u8D70\u67FB\u3059\u308B\u30ED\u30B0\u306E\u4EF6\u6570\u3067\u3059\uFF08\u65E2\u5B9A 100\uFF09\u3002\u30C4\u30FC\u30EB\u306E\u30ED\u30B0\u3082\u6570\u3048\u3066\u304B\u3089\u4F1A\u8A71\u3060\u3051\u3092\u6B8B\u3059\u306E\u3067\u3001
79
- \u9577\u3044\u30BB\u30C3\u30B7\u30E7\u30F3\u3067\u306F\u65E2\u5B9A\u306E\u307E\u307E\u3060\u3068\u6700\u8FD1\u306E\u767A\u8A00\u307E\u3067\u5C4A\u304D\u307E\u305B\u3093\u3002\u6700\u5F8C\u307E\u3067\u8AAD\u3080\u306B\u306F --limit \u3092\u5927\u304D\u304F\u3057\u3066\u304F\u3060\u3055\u3044\u3002\u3053\u306EAPI\u306B\u30DA\u30FC\u30B8\u30F3\u30B0\u306F\u3042\u308A\u307E\u305B\u3093\u3002
80
- --output text \u306F1\u767A\u8A00\u30921\u6BB5\u843D\u306B\u3057\u3066\u8AAD\u3081\u308B\u5F62\u3067\u51FA\u3057\u307E\u3059\u3002
81
-
82
- --output json \u306F API \u304C\u8FD4\u3059\u5168\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u51FA\u3057\u307E\u3059\u3002--output table / tsv \u306F\u8981\u7D04\u5217\uFF08${CHAT_COLUMNS.join(" / ")}\uFF09\u3067\u3059\u3002`,flags:[{name:"--limit",summary:"\u30B5\u30FC\u30D0\u304C\u53E4\u3044\u5074\u304B\u3089\u8D70\u67FB\u3059\u308B\u30ED\u30B0\u306E\u4EF6\u6570\uFF08\u65E2\u5B9A 100\uFF09",takesValue:true,placeholder:"<\u4EF6\u6570>"}],plan:input=>({method:"GET",path:sessionPath(sessionId(input,"cha\
83
- t"),"/chat-messages"),query:{limit:positiveInteger(input.flags,"--limit")}}),summarize:body=>chatRows(body).map(chatSummary).map(row=>pick(row,CHAT_COLUMNS)),raw:chatRows,document(body){const blocks=chatRows(body).map(row=>{const s=chatSummary(row);const who=s["role"]==="user"?`user${s["user_name"]!==null?`\uFF08${String(s["user_name"])}\uFF09`:""}`:String(s["role"]??"");return`[${String(s["timestamp"]??"")}] ${who}
84
- ${String(s["content"]??"")}`});return blocks.length===0?"\uFF08\u4F1A\u8A71\u306F\u307E\u3060\u3042\u308A\u307E\u305B\u3093\uFF09\n":`${blocks.join("\n\n")}
85
- `},notes:body=>chatRows(body).length===0?["\u4F1A\u8A71\u306F\u307E\u3060\u3042\u308A\u307E\u305B\u3093\uFF08runner \u304C\u8D77\u52D5\u4E2D\u304B\u3001\u4F1A\u8A71\u306E\u4FDD\u5B58\u5148\u306B\u5C4A\u3044\u3066\u3044\u307E\u305B\u3093\uFF09\u3002"]:[]};function diffOf(body){return envelope(body,"Git \u306E\u5DEE\u5206")["gitDiff"]??null}function diffFiles(body){const diff=diffOf(body);if(diff===null)return[];if(Array.isArray(diff))return diff;if(isRecord(diff)&&Array.isArray(diff["files"]))return diff["\
86
- files"];throw new ApiResponseError("Git \u306E\u5DEE\u5206\u306E\u5FDC\u7B54\u306B files \u914D\u5217\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002")}var sessionDiffOperation={name:"diff",summary:"\u4F5C\u696D\u30D6\u30E9\u30F3\u30C1\u306E\u5909\u66F4\u30D5\u30A1\u30A4\u30EB\uFF08\u8D77\u70B9\u30D6\u30E9\u30F3\u30C1\u3068\u306E\u5DEE\u5206\uFF09\u3092\u8868\u793A\u3059\u308B",usage:"twp agent session diff <\u30BB\u30C3\u30B7\u30E7\u30F3>",
87
- description:`${SESSION_REF_HELP}
88
- --output table / tsv \u306F\u5909\u66F4\u30D5\u30A1\u30A4\u30EB1\u4EF6\uFF1D1\u884C\uFF08${DIFF_COLUMNS.join(" / ")}\uFF09\u3001--output text \u306F unified diff \u306E\u672C\u6587\u3067\u3059\u3002
89
- --output json \u306F API \u306E gitDiff\uFF08diff \u672C\u6587\u30FBfiles\u30FBbaseBranch\uFF09\u3092\u305D\u306E\u307E\u307E\u51FA\u3057\u307E\u3059\uFF08runner \u304C\u307E\u3060\u5DEE\u5206\u3092\u5831\u544A\u3057\u3066\u3044\u306A\u3051\u308C\u3070 null\uFF09\u3002`,flags:[],plan:input=>({method:"GET",path:sessionPath(sessionId(input,"diff"),"/git-diff")}),summarize:body=>diffFiles(body).map(row=>pick(row,DIFF_COLUMNS)),raw:diffOf,document(body){const diff=diffOf(body);const text=isRecord(diff)&&
90
- typeof diff["diff"]==="string"?diff["diff"]:"";return text===""?"\uFF08\u5DEE\u5206\u306F\u3042\u308A\u307E\u305B\u3093\uFF09\n":text.endsWith("\n")?text:`${text}
91
- `},notes:body=>diffOf(body)===null?["\u5DEE\u5206\u306F\u307E\u3060\u3042\u308A\u307E\u305B\u3093\uFF08runner \u304C\u307E\u3060\u5909\u66F4\u3092\u5831\u544A\u3057\u3066\u3044\u307E\u305B\u3093\uFF09\u3002"]:diffFiles(body).length===0?["\u5909\u66F4\u30D5\u30A1\u30A4\u30EB\u306F\u3042\u308A\u307E\u305B\u3093\u3002"]:[]};function repositoryRows(body){return listOf(body,"list","\u30EA\u30DD\u30B8\u30C8\u30EA\u4E00\u89A7")}var repositoryListOperation={name:"list",summary:"\u30BB\u30C3\u30B7\u30E7\u30F3\u3092\u8D77\u52D5\u3067\u304D\u308B\u30EA\u30DD\u30B8\u30C8\u30EA\u3092\u4E00\u89A7\u3059\u308B\uFF08\u53C2\u52A0\u30D7\
92
- \u30ED\u30B8\u30A7\u30AF\u30C8\u306B\u7D10\u3065\u3044\u305F\u3082\u306E\uFF09",usage:"twp agent repository list",description:`\u30C6\u30CA\u30F3\u30C8\u306B\u9023\u643A\u3057\u305F GitHub \u30EA\u30DD\u30B8\u30C8\u30EA\u306E\u3046\u3061\u3001\u3042\u306A\u305F\u304C\u53C2\u52A0\u3059\u308B\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306B\u7D10\u3065\u3044\u305F\u3082\u306E\u3060\u3051\u304C\u51FA\u307E\u3059\u3002
93
- \u3053\u306E API \u306F\u30DA\u30FC\u30B8\u30F3\u30B0\u3092\u6301\u305F\u305A\u3001\u5168\u4EF6\u3092\u8FD4\u3057\u307E\u3059\u3002
94
-
95
- --output table / text / tsv \u306F\u8981\u7D04\u5217\uFF08${REPOSITORY_COLUMNS.join(" / ")}\uFF09\u3067\u3059\u3002`,flags:[],plan(input){noArgs(input,"repository list");return{method:"GET",path:AGENT_REPOSITORIES_PATH}},summarize:body=>repositoryRows(body).map(row=>pick(row,REPOSITORY_COLUMNS)),raw:repositoryRows,notes:body=>repositoryRows(body).length===0?["\u8D77\u52D5\u3067\u304D\u308B\u30EA\u30DD\u30B8\u30C8\u30EA\u306F\u3042\u308A\u307E\u305B\u3093\uFF08GitHub \u9023\u643A\u304C\u672A\u8A2D\u5B9A\u304B\u3001\u53C2\u52A0\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306B\u30EA\u30DD\u30B8\u30C8\u30EA\u304C\u7D10\u3065\u3044\u3066\u3044\u307E\u305B\u3093\uFF09\u3002"]:
96
- []};var repositoryBranchesOperation={name:"branches",summary:"\u30EA\u30DD\u30B8\u30C8\u30EA\u306E\u30D6\u30E9\u30F3\u30C1\u3092\u4E00\u89A7\u3059\u308B\uFF08--base \u306B\u6E21\u305B\u308B\u540D\u524D\uFF09",usage:"twp agent repository branches <\u30EA\u30DD\u30B8\u30C8\u30EA>",description:"<\u30EA\u30DD\u30B8\u30C8\u30EA> \u306F twp agent repository list \u306E full_name\uFF08owner/repo\uFF09\u304B id \u3067\u3059\u3002",flags:[],async prepare(input,ctx){const values=input.args.map(arg=>arg.trim());
97
- if(values.length!==1||values[0]==="")throw new UsageError("<\u30EA\u30DD\u30B8\u30C8\u30EA>\u30921\u3064\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",usageOf("repository branches"));return resolveRepository(input,ctx,values[0],"<\u30EA\u30DD\u30B8\u30C8\u30EA>")},plan:input=>({method:"GET",path:`${AGENT_REPOSITORIES_PATH}/${encodeURIComponent(requireResolved(input,"repositoryId"))}/branches`}),summarize:body=>listOf(body,"list","\u30D6\u30E9\u30F3\u30C1\u4E00\u89A7").map(row=>pick(row,BRANCH_COLUMNS)),
98
- raw:body=>listOf(body,"list","\u30D6\u30E9\u30F3\u30C1\u4E00\u89A7")};var sessionResource={name:"session",summary:"\u30BB\u30C3\u30B7\u30E7\u30F3\uFF08\u8D77\u52D5\u30FB\u6307\u793A\u30FB\u518D\u958B\u30FB\u505C\u6B62\u30FB\u524A\u9664\u30FB\u72B6\u614B\u30FB\u4F1A\u8A71\u30FB\u30ED\u30B0\u30FB\u5DEE\u5206\uFF09",operations:[sessionListOperation,sessionGetOperation,sessionCreateOperation,sessionInstructOperation,sessionResumeOperation,sessionCancelOperation,sessionDeleteOperation,sessionLogsOperation,
99
- sessionChatOperation,sessionDiffOperation]};var repositoryResource={name:"repository",summary:"\u30BB\u30C3\u30B7\u30E7\u30F3\u3092\u8D77\u52D5\u3067\u304D\u308B\u30EA\u30DD\u30B8\u30C8\u30EA\u3068\u305D\u306E\u30D6\u30E9\u30F3\u30C1",operations:[repositoryListOperation,repositoryBranchesOperation]};var agentDomain={name:"agent",summary:"\u30B3\u30F3\u30C6\u30CA\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\uFF08\u30EA\u30DD\u30B8\u30C8\u30EA\u3067\u4F5C\u696D\u3059\u308B AI \u30BB\u30C3\u30B7\u30E7\u30F3\u306E\u8D77\u52D5\u30FB\u6307\u793A\u30FB\u76E3\u8996\uFF09",
100
- operations:[],subresources:[sessionResource,repositoryResource]};export{WAIT_POLL_INTERVAL_MS,agentDomain};
@@ -1,4 +0,0 @@
1
- import { createRequire as __twpCreateRequire } from 'node:module';
2
- const require = __twpCreateRequire(import.meta.url);
3
- import{FROM_FLAG,MANHOUR_DESCRIPTION,MANHOUR_FROM_FLAG,MANHOUR_TO_FLAG,MONTH_FLAG,TO_FLAG,analysisDomain,analysisForbidden,currentMonth,dataOf,listIn,manhourNotes,manhourQuery,manhourRows,monthRange,monthsBetween,noArgs,profitRows,rangeNotes,recordOf,staffKpiRows,workloadDistributionNotes,workloadDistributionRows}from"./chunk-LAAKI3GS.js";import"./chunk-RX5HWI4L.js";import"./chunk-YKI7NYBD.js";import"./chunk-EXT4AIDF.js";import"./chunk-6LSQCOCJ.js";import"./chunk-ITRTFBV3.js";
4
- import"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";import"./chunk-PS5QFKHB.js";import"./chunk-II5RVJQN.js";import"./chunk-3ZRMMBP5.js";import"./chunk-VFPY2A23.js";import"./chunk-J7QYPKVK.js";import"./chunk-4VZKNEVN.js";import"./chunk-RZVI6PMW.js";import"./chunk-QQRJLH6B.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";export{FROM_FLAG,MANHOUR_DESCRIPTION,MANHOUR_FROM_FLAG,MANHOUR_TO_FLAG,MONTH_FLAG,TO_FLAG,analysisDomain,analysisForbidden,currentMonth,dataOf,listIn,manhourNotes,manhourQuery,manhourRows,monthRange,monthsBetween,noArgs,profitRows,rangeNotes,recordOf,staffKpiRows,workloadDistributionNotes,workloadDistributionRows};