@tocca-systems/twp-cli 0.72.0 → 0.74.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 (105) hide show
  1. package/CHANGELOG.public.md +22 -0
  2. package/README.md +53 -9
  3. package/dist/{agent-C37HJDJY.js → agent-6E62JWPN.js} +2 -2
  4. package/dist/{agent-loop-XFYCEK5S.js → agent-loop-UTS4MYW6.js} +2 -2
  5. package/dist/{ai-dispatch-GONY4JAY.js → ai-dispatch-OAT752RN.js} +1 -1
  6. package/dist/{analysis-THRX37XW.js → analysis-MVKADQHU.js} +2 -2
  7. package/dist/{announcement-4R7XFO5W.js → announcement-BFQAI6UE.js} +2 -2
  8. package/dist/{api-command-YMEYR2LG.js → api-command-46GLOIHL.js} +3 -3
  9. package/dist/{app-37IMKCQZ.js → app-SQZCZANA.js} +4 -4
  10. package/dist/{attendance-correct-Z5BGCSCL.js → attendance-correct-72KQR4UG.js} +2 -2
  11. package/dist/{attendance-lists-357A3O5Y.js → attendance-lists-6RP7UGA5.js} +1 -1
  12. package/dist/{backlog-KF63TCEG.js → backlog-22NXQQDL.js} +1 -1
  13. package/dist/budget-LJY3YFVB.js +4 -0
  14. package/dist/business-hours-I4X6YQS3.js +18 -0
  15. package/dist/{chunk-DAXVAUV4.js → chunk-2YVJ3QVJ.js} +1 -1
  16. package/dist/{chunk-DFHOCPA5.js → chunk-3QQF4MOB.js} +2 -2
  17. package/dist/{chunk-AGI5KT4C.js → chunk-3WFZOOXZ.js} +1 -1
  18. package/dist/{chunk-VEA72AKG.js → chunk-46Q7TUND.js} +1 -1
  19. package/dist/{chunk-MVZFZAT4.js → chunk-4B6GJBYP.js} +47 -44
  20. package/dist/{chunk-I4TR55UF.js → chunk-5KJ5OIKI.js} +1 -1
  21. package/dist/{chunk-K4JE26L6.js → chunk-5P22UEUF.js} +1 -1
  22. package/dist/{chunk-Z6T5M3NJ.js → chunk-5SPWQAUX.js} +2 -2
  23. package/dist/{chunk-ARB4QFWO.js → chunk-7SYIYLHX.js} +1 -1
  24. package/dist/{chunk-UXEYWMPO.js → chunk-BKE3BFIQ.js} +2 -2
  25. package/dist/{chunk-HPPIVCK3.js → chunk-C7MO3RHJ.js} +7 -4
  26. package/dist/{chunk-A3FJEUDB.js → chunk-D37WSWBT.js} +1 -1
  27. package/dist/chunk-DMXMQGGZ.js +11 -0
  28. package/dist/{chunk-VIWQMDGG.js → chunk-DYNNGNXR.js} +1 -1
  29. package/dist/{chunk-MP6YIILX.js → chunk-FHOJFKR3.js} +12 -11
  30. package/dist/{chunk-CCHPF23L.js → chunk-GAXJPIKO.js} +1 -1
  31. package/dist/{chunk-7PDUN5MS.js → chunk-GTRKN2YS.js} +1 -1
  32. package/dist/{chunk-WYYHMKF7.js → chunk-HOLKWMS2.js} +1 -1
  33. package/dist/{chunk-NBOA4T7F.js → chunk-J2NRDFCR.js} +1 -1
  34. package/dist/{chunk-UGDB4QTS.js → chunk-J3KV6LAX.js} +1 -1
  35. package/dist/{budget-W7JXDJ4J.js → chunk-JIOZ47AX.js} +2 -3
  36. package/dist/{chunk-UFGJSWKU.js → chunk-LDBYJPRD.js} +1 -1
  37. package/dist/{chunk-BBOWZVCC.js → chunk-MNJYY3PR.js} +1 -1
  38. package/dist/{chunk-QVID3GT4.js → chunk-MSVJ53VZ.js} +1 -1
  39. package/dist/{chunk-45OL54MY.js → chunk-OO7GDI2D.js} +1 -1
  40. package/dist/{chunk-YXVN6OCH.js → chunk-PO35MCYP.js} +1 -1
  41. package/dist/{chunk-T3C2BAVA.js → chunk-QQCWGMZN.js} +1 -1
  42. package/dist/{chunk-2CIQOXPK.js → chunk-R5UIH2SI.js} +1 -1
  43. package/dist/chunk-RCRFLVJ6.js +117 -0
  44. package/dist/{chunk-XF4DN44V.js → chunk-SCHQHPI2.js} +2 -2
  45. package/dist/chunk-W4E4F2ZA.js +4 -0
  46. package/dist/{chunk-IVKWLJCY.js → chunk-YA7W7OV4.js} +1 -1
  47. package/dist/cli.js +44 -8
  48. package/dist/{commands-GMUQCBFQ.js → commands-U52UBWSU.js} +2 -2
  49. package/dist/{commands-MYGPEYBE.js → commands-ZCXAJXHW.js} +40 -38
  50. package/dist/{company-W2OBOOKJ.js → company-UYDQAJ5O.js} +3 -3
  51. package/dist/{completion-EMY4WDII.js → completion-YBKZ3GXD.js} +1 -1
  52. package/dist/{contract-LTQVLI7A.js → contract-PJRMXIXY.js} +2 -2
  53. package/dist/{department-GZBKUFON.js → department-JFHUX32Y.js} +1 -1
  54. package/dist/{deposit-HCMV2MBU.js → deposit-YSCEG5QY.js} +2 -2
  55. package/dist/{domain-knowledge-32TTPFVY.js → domain-knowledge-HJHKFS3S.js} +1 -1
  56. package/dist/{estimate-ILUXZJG3.js → estimate-ZY3NFOY2.js} +3 -3
  57. package/dist/{evaluation-PE7QHATW.js → evaluation-MQ7USYDU.js} +1 -1
  58. package/dist/{expense-K2JPBP2M.js → expense-2EDPVAQL.js} +2 -2
  59. package/dist/{fiscal-year-XY4KA67D.js → fiscal-year-5S74MAHA.js} +1 -1
  60. package/dist/holiday-PFBME3RI.js +48 -0
  61. package/dist/{inquiry-FEQWFU7Z.js → inquiry-LVJE53LY.js} +1 -1
  62. package/dist/{invoice-WOQZUL66.js → invoice-JJ46ZXMJ.js} +2 -2
  63. package/dist/{job-title-CDAMB4Q2.js → job-title-PFLVTRNO.js} +1 -1
  64. package/dist/{knowledge-VM6P4XDQ.js → knowledge-43B64GGG.js} +99 -35
  65. package/dist/{leave-TEXQJURZ.js → leave-6L3CTABK.js} +2 -2
  66. package/dist/{license-ZSZM5OSK.js → license-HHAOMEWC.js} +2 -2
  67. package/dist/{logout-guard-3B767ADS.js → logout-guard-IWHF33DM.js} +1 -1
  68. package/dist/{media-TAS7FF5K.js → media-YEWKZ2QS.js} +3 -3
  69. package/dist/{notification-T46TUUMO.js → notification-LNRNOLVW.js} +1 -1
  70. package/dist/{oneshot-XRN744YK.js → oneshot-7H3SFK7Q.js} +1 -1
  71. package/dist/{outlook-KYTXHDAV.js → outlook-YG7GFF44.js} +1 -1
  72. package/dist/{plan-submit-YBTGYQD7.js → plan-submit-CZRVVZZB.js} +1 -1
  73. package/dist/{position-BKZQH6A3.js → position-YFC6XZQL.js} +1 -1
  74. package/dist/{project-KL4DH2XE.js → project-3RTD63II.js} +2 -2
  75. package/dist/{prospect-BEB5AXPM.js → prospect-5EXTP5D2.js} +2 -2
  76. package/dist/{purchase-P37K6MVO.js → purchase-KJ3XVCXG.js} +3 -3
  77. package/dist/{receivable-5N3KL3L4.js → receivable-LF3DYPOO.js} +2 -2
  78. package/dist/{redmine-K7A7AEUA.js → redmine-6FJPODIM.js} +1 -1
  79. package/dist/{registry-GGKX3MCP.js → registry-5IKYCMRP.js} +1 -1
  80. package/dist/{render-YD4B7OH5.js → render-4SBLHU4J.js} +1 -1
  81. package/dist/{report-PZ4GMMK2.js → report-TDPP7SF7.js} +1 -1
  82. package/dist/{run-65IJLMKQ.js → run-EQQOJ76O.js} +2 -2
  83. package/dist/{sales-ai-review-NBNSHUUP.js → sales-ai-review-WIVJOOFW.js} +2 -2
  84. package/dist/{sales-master-23PVQUTQ.js → sales-master-SJSFHAT6.js} +2 -2
  85. package/dist/{sales-numbering-FQ7YPQME.js → sales-numbering-EWYVI3RF.js} +2 -2
  86. package/dist/{search-NYY22NHK.js → search-FCXHO5NB.js} +1 -1
  87. package/dist/{segment-2C3MYZCV.js → segment-3Q64YOMR.js} +1 -1
  88. package/dist/{server-settings-ELHHMBBK.js → server-settings-WH4F2SLC.js} +1 -1
  89. package/dist/{setup-74LO2SXN.js → setup-H22WRMPN.js} +1 -1
  90. package/dist/skill-MWYX74XM.js +4 -0
  91. package/dist/{skill-check-2ILLHGDQ.js → skill-check-YVIMYT2H.js} +1 -1
  92. package/dist/{skill-manage-command-HPJQOTQK.js → skill-manage-command-QYJLCLDK.js} +2 -2
  93. package/dist/{supplier-payment-G2BGSGLA.js → supplier-payment-H4E65YFZ.js} +2 -2
  94. package/dist/{support-E3PBMVG4.js → support-CCE7DP2O.js} +2 -2
  95. package/dist/{task-N6OVWNAT.js → task-OA6YUFL3.js} +42 -24
  96. package/dist/{teams-QRVCFJS4.js → teams-AUFHZRDH.js} +1 -1
  97. package/dist/{user-VODWJQZI.js → user-KQX327AS.js} +3 -3
  98. package/dist/{user-contract-type-7AVII6SV.js → user-contract-type-KS3HMLHY.js} +1 -1
  99. package/dist/{worker-agent-KRMY2RKK.js → worker-agent-BEH65D3X.js} +1 -1
  100. package/dist/{workflow-GWEN7NSQ.js → workflow-EBAADQLR.js} +2 -2
  101. package/package.json +1 -1
  102. package/dist/chunk-35MQ27I6.js +0 -4
  103. package/dist/chunk-5VZ54H2J.js +0 -11
  104. package/dist/chunk-6UPLPTBP.js +0 -58
  105. package/dist/skill-RKCTUJHW.js +0 -4
@@ -12,4 +12,4 @@ write(`${lines.join("\n")}
12
12
  `);throw err}const out=[`[debug] \u2190 ${res.status} ${res.statusText} (${now()-started}ms)`,...formatHeaders(res.headers)];const contentType=res.headers.get("content-type");const attachment=/^\s*attachment\b/i.test(res.headers.get("content-disposition")??"");if(options.omitBodies!==void 0){out.push(` \uFF08\u672C\u6587\u306F${options.omitBodies}\u305F\u3081\u51FA\u529B\u3057\u306A\u3044\uFF09`)}else if(isTextualContentType(contentType)&&!attachment){const raw=await res.clone().text().catch(()=>"\
13
13
  \uFF08\u672C\u6587\u3092\u8AAD\u3081\u307E\u305B\u3093\u3067\u3057\u305F\uFF09");if(raw!=="")out.push(` ${formatBody(raw)}`)}else{const length=res.headers.get("content-length");out.push(` \uFF08\u672C\u6587\u306F ${contentType??"content-type \u4E0D\u660E"}\u30FB${length===null?"\u30B5\u30A4\u30BA\u4E0D\u660E":`${length} \u30D0\u30A4\u30C8`}\u3002${attachment?"\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u306E\u672C\u4F53\u306E\u305F\u3081":"\u30C6\u30AD\u30B9\u30C8\u3067\u306A\u3044\u305F\u3081"}\u51FA\u529B\u3057\u306A\u3044\
14
14
  \uFF09`)}write(`${out.join("\n")}
15
- `);return res}}export{redactSecrets,redactSecretValues,withDebug};
15
+ `);return res}}export{REDACTED,redactSecrets,redactSecretValues,withDebug};
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{isoDate}from"./chunk-JJSBBWJ5.js";import{LIST_PAGING_HELP,PAGE_NUMBER_LIST_FLAGS,PAGE_NUMBER_PAGING_HELP,STABLE_PAGE_ORDER,nonEmpty,pageNumberPaging,pageNumberQuery,pageRangeNotes}from"./chunk-MI6HVYR2.js";import{repeatedValues}from"./chunk-RX5HWI4L.js";import{SALES_ESTIMATES_PATH,SALES_INVOICES_PATH,isExactNumericId,resolveNamed}from"./chunk-MVZFZAT4.js";import{withResolved}from"./chunk-PS5QFKHB.js";import{isRecord,pick}from"./chunk-3ZRMMBP5.js";import{
3
+ import{isoDate}from"./chunk-JJSBBWJ5.js";import{LIST_PAGING_HELP,PAGE_NUMBER_LIST_FLAGS,PAGE_NUMBER_PAGING_HELP,STABLE_PAGE_ORDER,nonEmpty,pageNumberPaging,pageNumberQuery,pageRangeNotes}from"./chunk-MI6HVYR2.js";import{repeatedValues}from"./chunk-RX5HWI4L.js";import{SALES_ESTIMATES_PATH,SALES_INVOICES_PATH,isExactNumericId,resolveNamed}from"./chunk-4B6GJBYP.js";import{withResolved}from"./chunk-PS5QFKHB.js";import{isRecord,pick}from"./chunk-3ZRMMBP5.js";import{
4
4
  ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";var ESTIMATE_STATUSES={new:"\u4F5C\u6210\u4E2D",create_completed:"\u4F5C\u6210\u5B8C\u4E86",in_progress:"\u7533\u8ACB\u4E2D",approved:"\u627F\u8A8D\u6E08",submitted:"\u63D0\u793A\u6E08",rejected:"\u5DEE\u3057\u623B\u3057",deleted:"\u524A\u9664\u6E08"};var INVOICE_STATUSES={new:"\u4F5C\u6210\u4E2D",create_completed:"\u4F5C\u6210\u5B8C\u4E86",in_progress:"\u7533\u8ACB\u4E2D",approved:"\u627F\u8A8D\u6E08",rejected:"\u5DEE\u3057\u623B\u3057",submitted:"\u63D0\u793A\u6E08",manager_confirmation:"\u6848\u4EF6\u62C5\u5F53\u8005\
5
5
  _\u6848\u4EF6\u5185\u5BB9\u30FB\u91D1\u984D\u78BA\u8A8D",invoice_issued:"\u8ACB\u6C42\u66F8\u767A\u884C\u6E08",sent_to_client:"\u5148\u65B9\u9001\u4ED8\u6E08",archived:"\u4FDD\u7BA1\u6E08",deleted:"\u524A\u9664\u6E08",cancelled:"\u53D6\u6D88\uFF08\u7121\u52B9\uFF09",lost:"\u5931\u6CE8"};var ALLOCATION_STATUSES={unallocated:"\u672A\u56DE\u53CE",allocated:"\u56DE\u53CE\u6E08"};function statusRefs(table){return Object.entries(table).map(([code,name])=>({id:code,name,code}))}function statusHelp(table){
6
6
  return Object.entries(table).map(([code,name])=>`${code}\uFF08${name}\uFF09`).join(" / ")}function licenseForbidden(guidance){return body=>body?.error==="permission_denied"?guidance:void 0}function featureLicenseGuidance(feature){return`${feature}\u3092\u4F7F\u3046\u6A29\u9650\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u30C6\u30CA\u30F3\u30C8\u304C${feature}\u3092\u5951\u7D04\u3057\u3066\u3044\u306A\u3044\u304B\u3001\u3042\u306A\u305F\u306E${feature}\u306E\u6A29\u9650\u304C\u300C\u306A\u3057\u300D\u306B\u306A\u3063\u3066\u3044\u307E\u3059\u3002\u30C6\u30CA\u30F3\u30C8\u7BA1\u7406\u8005\u306B\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`}
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{parseWaitOptions,waitUntilTerminal}from"./chunk-WVCEKC7V.js";import{LIST_FLAGS,LIST_PAGING_HELP,envelopePaging,nonEmpty,positiveInteger}from"./chunk-MI6HVYR2.js";import{repeatedValues}from"./chunk-RX5HWI4L.js";import{charCount,readBody}from"./chunk-6LSQCOCJ.js";import{WORKER_AGENTS_PATH}from"./chunk-MVZFZAT4.js";import{isSafePathSegment}from"./chunk-HVZUXLQ4.js";import{ApiError}from"./chunk-JA5A6UJ2.js";import{requireResolved,withResolved}from"./chunk-PS5QFKHB.js";
3
+ import{parseWaitOptions,waitUntilTerminal}from"./chunk-WVCEKC7V.js";import{LIST_FLAGS,LIST_PAGING_HELP,envelopePaging,nonEmpty,positiveInteger}from"./chunk-MI6HVYR2.js";import{repeatedValues}from"./chunk-RX5HWI4L.js";import{charCount,readBody}from"./chunk-6LSQCOCJ.js";import{WORKER_AGENTS_PATH}from"./chunk-4B6GJBYP.js";import{isSafePathSegment}from"./chunk-HVZUXLQ4.js";import{ApiError}from"./chunk-JA5A6UJ2.js";import{requireResolved,withResolved}from"./chunk-PS5QFKHB.js";
4
4
  import{isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiRejectedError,ApiResponseError,UsageError,WaitTimeoutError}from"./chunk-VFPY2A23.js";import{NotLoggedInError,SessionExpiredError}from"./chunk-XNLIEUAW.js";var LABEL="\u30EF\u30FC\u30AB\u30FC\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8";var LIST_COLUMNS=["agent_id","name","is_enabled","schedule","next_run_at","last_run_status","last_run_at","owner_user_name"];var GET_COLUMNS=["agent_id","name","description","owner_user_name","is_enabled","schedule","next_run_at","is_running","last_run_status","last_run_at","last_run_id","allowed_tool_count","write_enabled","ai_model","consecutive_failure_count","auto_disabled_reason"];var TOOL_COLUMNS=["name","category","d\
5
5
  isplay_name","is_mutating","is_available"];var TOOL_GET_COLUMNS=["name","category","display_name","description","is_mutating","is_destructive","is_available","required_feature","required_level","required_api_scopes"];var RUN_COLUMNS=["run_id","status","trigger","started_at","duration_ms","tool_call_count","consumed_credits","summary"];var RUN_GET_COLUMNS=["summary","status","skip_reason","error_code","error_message","run_id","agent_id","trigger","is_dry_run","started_at","finished_at","duration_\
6
6
  ms","iteration_count","tool_call_count","mutation_count","consumed_credits","ai_model"];var STEP_COLUMNS=["step_no","type","tool_name","is_mutation","duration_ms","content","error_message"];var STEP_TYPES=["thinking","tool_call","tool_result","error","budget_warning","final_summary"];var FORBIDDEN="AI\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u6A5F\u80FD\u306E\u30E9\u30A4\u30BB\u30F3\u30B9\uFF08agent\uFF09\u304C\u3042\u306A\u305F\u306E\u30A2\u30AB\u30A6\u30F3\u30C8\u306B\u5272\u308A\u5F53\u3066\u3089\u308C\u3066\u3044\u306A\u3044\u305F\u3081\u4F7F\u3048\u307E\u305B\u3093\u3002\u30C6\u30CA\u30F3\u30C8\u306E\u7BA1\u7406\u8005\u306B\u30E9\u30A4\u30BB\u30F3\u30B9\u306E\u5272\u308A\u5F53\u3066\u3092\u4F9D\u983C\u3057\u3066\u304F\u3060\u3055\u3044\u3002";
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{contentTypeFor,inspectLocalFile,issued}from"./chunk-I4TR55UF.js";import{checkUploadQuota}from"./chunk-V64CGX7V.js";import{readCsvFileText}from"./chunk-QLENN5DD.js";import{featureLicenseGuidance}from"./chunk-BBOWZVCC.js";import{createFlags,fieldBody,hasAnyField,updateFlags}from"./chunk-MP6YIILX.js";import{LIST_FLAGS,LIST_PAGING_HELP,envelopePaging,nonEmpty,positiveInteger}from"./chunk-MI6HVYR2.js";import{CUSTOMERS_PATH,SALES_COMPANIES_PATH,isExactNumericId}from"./chunk-MVZFZAT4.js";
3
+ import{contentTypeFor,inspectLocalFile,issued}from"./chunk-5KJ5OIKI.js";import{checkUploadQuota}from"./chunk-V64CGX7V.js";import{readCsvFileText}from"./chunk-QLENN5DD.js";import{featureLicenseGuidance}from"./chunk-MNJYY3PR.js";import{createFlags,fieldBody,hasAnyField,updateFlags}from"./chunk-FHOJFKR3.js";import{LIST_FLAGS,LIST_PAGING_HELP,envelopePaging,nonEmpty,positiveInteger}from"./chunk-MI6HVYR2.js";import{CUSTOMERS_PATH,SALES_COMPANIES_PATH,isExactNumericId}from"./chunk-4B6GJBYP.js";
4
4
  import{isSafePathSegment}from"./chunk-HVZUXLQ4.js";import{ApiError,errorListMessages}from"./chunk-JA5A6UJ2.js";import{requireResolved,singleRef,withResolved}from"./chunk-PS5QFKHB.js";import{acknowledgement,isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiRejectedError,ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";import fs from"fs";import path from"path";function levelForbidden(licenseGuidance,levelGuidance){return body=>body?.error==="permission_denied"?licenseGuidance:levelGuidance}var COMPANY_LICENSE="\u53D6\u5F15\u5148\u3092\u6271\u3046\u306B\u306F\u8CA9\u58F2\u7BA1\u7406\u304B\u9867\u5BA2\u7BA1\u7406\u306E\u6A29\u9650\u304C\u8981\u308A\u307E\u3059\u304C\u3001\u3069\u3061\u3089\u3082\u3042\u308A\u307E\u305B\u3093\u3002\u30C6\u30CA\u30F3\u30C8\u304C\u3069\u3061\u3089\u3082\u5951\u7D04\u3057\u3066\u3044\u306A\u3044\u304B\u3001\u3042\u306A\u305F\u306E\u6A29\u9650\u304C\u3069\u3061\u3089\u3082\u300C\u306A\u3057\u300D\u306B\u306A\u3063\u3066\u3044\u307E\u3059\u3002\u30C6\u30CA\u30F3\u30C8\u7BA1\u7406\u8005\u306B\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002";
5
5
  var CUSTOMER_LICENSE=featureLicenseGuidance("\u9867\u5BA2\u7BA1\u7406");var COMPANY_WRITE_FORBIDDEN=levelForbidden(COMPANY_LICENSE,"\u9867\u5BA2\u306E\u4F5C\u6210\u30FB\u66F4\u65B0\u306B\u306F\u3001\u9867\u5BA2\u7BA1\u7406\u306E\u6A29\u9650\u304C\u300C\u7DE8\u96C6\u8005\u300D\u4EE5\u4E0A\u304B\u3001\u8CA9\u58F2\u7BA1\u7406\u306E\u6A29\u9650\u304C\u300C\u30E1\u30F3\u30D0\u30FC\u300D\u4EE5\u4E0A\u306E\u3069\u3061\u3089\u304B\u304C\u8981\u308A\u307E\u3059\u3002\u30C6\u30CA\u30F3\u30C8\u7BA1\u7406\u8005\u306B\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002");
6
6
  var LEVEL_LABELS={admin:"\u7BA1\u7406\u8005",editor:"\u7DE8\u96C6\u8005",viewer:"\u95B2\u89A7\u8005",none:"\u306A\u3057"};var CHILD_DELETE_NEEDS="\u62C5\u5F53\u8005\u30FB\u5BFE\u5FDC\u5C65\u6B74\u306E\u524A\u9664\u306B\u306F\u9867\u5BA2\u7BA1\u7406\u306E\u6A29\u9650\u304C\u300C\u7BA1\u7406\u8005\u300D\u3067\u3042\u308B\u3053\u3068\u304C\u8981\u308A\u307E\u3059";var CUSTOMER_DELETE_FORBIDDEN=levelForbidden(COMPANY_LICENSE,"\u9867\u5BA2\u306E\u524A\u9664\u306B\u306F\u3001\u4F01\u696D\u306E\u524A\u9664\u306B\u9867\u5BA2\u7BA1\u7406\u306E\u300C\u7BA1\u7406\u8005\u300D\u304B\u8CA9\u58F2\u7BA1\u7406\u306E\u300C\u30E1\u30F3\u30D0\u30FC\u300D\u4EE5\u4E0A\u3001\u62C5\u5F53\u8005\u30FB\u5BFE\u5FDC\u5C65\u6B74\u306E\u524A\u9664\u306B\u9867\u5BA2\u7BA1\u7406\u306E\u300C\u7BA1\u7406\u8005\u300D\u304C\u8981\u308A\u307E\u3059\u3002\u30C6\u30CA\u30F3\u30C8\u7BA1\u7406\u8005\
@@ -1,3 +1,3 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{redactSecretValues,redactSecrets}from"./chunk-UFGJSWKU.js";import{formatOutput}from"./chunk-74BPZOKU.js";import{stripTerminalControls}from"./chunk-NHYMHCAT.js";function renderOutput(value,format,noRedact=false){if(noRedact)return formatOutput(value,format);const formatted=formatOutput(redactSecretValues(value),format);return format==="json"?formatted:redactSecrets(formatted)}function renderDocument(text,noRedact=false){const visible=stripTerminalControls(text);return noRedact?visible:redactSecrets(visible)}export{renderOutput,renderDocument};
3
+ import{redactSecretValues,redactSecrets}from"./chunk-LDBYJPRD.js";import{formatOutput}from"./chunk-74BPZOKU.js";import{stripTerminalControls}from"./chunk-NHYMHCAT.js";function renderOutput(value,format,noRedact=false){if(noRedact)return formatOutput(value,format);const formatted=formatOutput(redactSecretValues(value),format);return format==="json"?formatted:redactSecrets(formatted)}function renderDocument(text,noRedact=false){const visible=stripTerminalControls(text);return noRedact?visible:redactSecrets(visible)}export{renderOutput,renderDocument};
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{isModeId,isPermissionModeId}from"./chunk-2LOT54OO.js";import{API_TOKEN,HELP_TOKEN,isDomainName}from"./chunk-35MQ27I6.js";import{splitFlagToken}from"./chunk-QQRJLH6B.js";var BUILTIN_COMMANDS=["login","logout","whoami","update","task-loop"];var TASK_LOOP_ACTIONS=["run","status","stop","schedule","setup","charter","skill","settings","plan","capacity"];var VALUE_FLAGS=new Set(["-p","--print","--profile","--tenant","--mode","--permission-mode","--model","--allowed-tools","--disallowed-tools","--project","--engine","--interval","--max-cycles","--ai","--workspace","--ai-config-file","--now","--counts","--gate","--file","--out","--revision","--dir","--from","--to","--c\
3
+ import{isModeId,isPermissionModeId}from"./chunk-2LOT54OO.js";import{API_TOKEN,HELP_TOKEN,isDomainName}from"./chunk-W4E4F2ZA.js";import{splitFlagToken}from"./chunk-QQRJLH6B.js";var BUILTIN_COMMANDS=["login","logout","whoami","update","task-loop"];var TASK_LOOP_ACTIONS=["run","status","stop","schedule","setup","charter","skill","settings","plan","capacity"];var VALUE_FLAGS=new Set(["-p","--print","--profile","--tenant","--mode","--permission-mode","--model","--allowed-tools","--disallowed-tools","--project","--engine","--interval","--max-cycles","--ai","--workspace","--ai-config-file","--now","--counts","--gate","--file","--out","--revision","--dir","--from","--to","--c\
4
4
  onfig","--output","--query"]);var BOOLEAN_FLAGS=new Set(["-h","--help","-v","--version","--no-tui","--doctor","--password","--token","--no-browser","--safe","--daemon","--force-runner","--force","--drain","--yes","-y","--no-ai-config-file","--verbose","--all","--empty","--check","--dry-run","--debug","--refresh"]);function dispatch(argv,limit=2){const tokens=[];const indexes=[];let truncated=false;for(let i=0;i<argv.length;i++){const arg=argv[i];if(arg===void 0)continue;if(arg.startsWith("-")&&arg!==
5
5
  "-"){const{name,value:inline}=splitFlagToken(arg);if(BOOLEAN_FLAGS.has(name)){if(inline!==void 0){truncated=true;break}continue}if(VALUE_FLAGS.has(name)){if(inline!==void 0)continue;const next=argv[i+1];if(next!==void 0&&(!next.startsWith("-")||next==="-"))i++;continue}truncated=true;break}if(arg===""||arg==="-")continue;if(tokens.length>=limit)break;tokens.push(arg);indexes.push(i)}return{tokens,indexes,truncated}}function isBuiltin(token){return token!==void 0&&BUILTIN_COMMANDS.includes(token)}
6
6
  function isTaskLoopAction(token){return token!==void 0&&TASK_LOOP_ACTIONS.includes(token)}function resolveRoute(result){const{tokens,indexes}=result;const[first,second]=tokens;const firstIndex=indexes[0];if(first===void 0||firstIndex===void 0)return{kind:"none",consumed:[]};const consumed=[firstIndex];const secondIndex=indexes[1];if(isBuiltin(first)){if(first==="task-loop"&&isTaskLoopAction(second)){if(secondIndex!==void 0)consumed.push(secondIndex);return{kind:"builtin",command:first,action:second,
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{FORCE_FLAG,OUT_FLAG,REV_FLAG,revOf,singleId,uploadStaged}from"./chunk-VEA72AKG.js";import{CUSTOMER_LICENSE,childForbidden,levelForbidden}from"./chunk-45OL54MY.js";import{inspectLocalFile}from"./chunk-I4TR55UF.js";import{createFlags,fieldBody,hasAnyField,updateFlags}from"./chunk-MP6YIILX.js";import{nonEmpty}from"./chunk-MI6HVYR2.js";import{SALES_ESTIMATES_PATH,isExactNumericId}from"./chunk-MVZFZAT4.js";import{requireResolved,withResolved}from"./chunk-PS5QFKHB.js";
3
+ import{FORCE_FLAG,OUT_FLAG,REV_FLAG,revOf,singleId,uploadStaged}from"./chunk-46Q7TUND.js";import{CUSTOMER_LICENSE,childForbidden,levelForbidden}from"./chunk-OO7GDI2D.js";import{inspectLocalFile}from"./chunk-5KJ5OIKI.js";import{createFlags,fieldBody,hasAnyField,updateFlags}from"./chunk-FHOJFKR3.js";import{nonEmpty}from"./chunk-MI6HVYR2.js";import{SALES_ESTIMATES_PATH,isExactNumericId}from"./chunk-4B6GJBYP.js";import{requireResolved,withResolved}from"./chunk-PS5QFKHB.js";
4
4
  import{acknowledgement,isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";import fs from"fs";import path from"path";var DOCUMENT_TYPES=["order_form","individual_contract","other"];var DOCUMENT_TYPE_HELP="order_form\uFF1D\u6CE8\u6587\u66F8 / individual_contract\uFF1D\u500B\u5225\u5951\u7D04\u66F8 / other\uFF1D\u305D\u306E\u4ED6\u6848\u4EF6\u66F8\u985E";var MAGIC_BYTES={pdf:["%PDF-"],jpg:["\xFF\xD8\xFF"],jpeg:["\xFF\xD8\xFF"],png:["\x89PNG\r\n\n"],xlsx:["PK","PK","PK\x07\b"],docx:["PK","PK","PK\x07\b"],xls:["\xD0\xCF\xE0\xA1\xB1\xE1"],doc:["\xD0\xCF\xE0\xA1\xB1\xE1"]};var FILE_NAME_MAX_CHARS=255;var FIELDS=[
5
5
  {kind:"text",flag:"--name",key:"document_name",label:"\u66F8\u985E\u540D",maxChars:255,summary:"\u66F8\u985E\u540D\uFF08create \u3067\u306F\u5FC5\u9808\uFF09"},{kind:"enum",flag:"--type",key:"document_type",values:DOCUMENT_TYPES,summary:`\u66F8\u985E\u7A2E\u5225\uFF08${DOCUMENT_TYPE_HELP}\u30FBcreate \u3067\u306F\u5FC5\u9808\uFF09`}];var COLUMNS=["document_id","estimate_id","document_type","document_type_label","document_name","current_version","updated_by_name","updated_at"];var VERSION_COLUMNS=[
6
6
  "version_number","file_name","file_size","is_current","created_by_name","created_at"];var ESTIMATE_FLAG={name:"--estimate",summary:"\u898B\u7A4D\u306E ID\uFF08twp estimate list \u306E id \u5217\u306E\u6570\u5B57\u30FB\u5FC5\u9808\uFF09",takesValue:true,placeholder:"<\u898B\u7A4DID>"};var FILE_FLAG={name:"--file",summary:"\u30A2\u30C3\u30D7\u30ED\u30FC\u30C9\u3059\u308B\u30D5\u30A1\u30A4\u30EB\uFF08PDF\u30FBJPEG\u30FBPNG\u30FBWord\u30FBExcel\u3002\u5FC5\u9808\uFF09",takesValue:true,placeholder:"<\
@@ -0,0 +1,117 @@
1
+ import { createRequire as __twpCreateRequire } from 'node:module';
2
+ const require = __twpCreateRequire(import.meta.url);
3
+ import{parseCsvRecords}from"./chunk-DYNNGNXR.js";import{readCsvFileText}from"./chunk-QLENN5DD.js";import{cacheNote,createFlags,fieldBody,hasAnyField,idSegment,masterItem,masterRows,targetId,updateFlags}from"./chunk-FHOJFKR3.js";import{nonEmpty}from"./chunk-MI6HVYR2.js";import{readBody}from"./chunk-6LSQCOCJ.js";import{SKILLS_PATH,SKILL_CATEGORIES_PATH,resolveNamed}from"./chunk-4B6GJBYP.js";import{ULID_RE,isSafePathSegment}from"./chunk-HVZUXLQ4.js";import{
4
+ ApiError}from"./chunk-JA5A6UJ2.js";import{requireResolved,withResolved}from"./chunk-PS5QFKHB.js";import{acknowledgement,isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiRejectedError,ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";var GROUPED_PATH="/api/v2/organization/skills/grouped";var SKILL_MAP_PATH="/api/v2/organization/skill-map";var QUALIFICATIONS_PATH="/api/v2/organization/qualifications";var USERS_LIST_PATH="/api/v2/admin/users/list";var USERS_PAGE_LIMIT=100;var USERS_MAX_PAGES=50;var HR_FORBIDDEN="HR\u7BA1\u7406\u8005\u306E\u6A29\u9650\u304C\u5FC5\u8981\u3067\u3059\u3002\u30B9\u30AD\u30EB\u30DE\u30C3\u30D7\uFF08twp skill map / who\uFF09\u306F\u4EBA\u4E8B\u7BA1\u7406\u306E\u7BA1\u7406\u8005\u3060\u3051\u304C\u53C2\u7167\u3067\u304D\u307E\u3059";
5
+ function groupedSkillRows(body){const categories=isRecord(body)?body["categories"]:void 0;if(!Array.isArray(categories)){throw new ApiResponseError("\u30B9\u30AD\u30EB\u4E00\u89A7\u306E\u5FDC\u7B54\u306B categories \u914D\u5217\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002")}return categories.flatMap(group=>{const category=isRecord(group)&&isRecord(group["category"])?group["category"]:{};const skills=isRecord(group)&&Array.
6
+ isArray(group["skills"])?group["skills"]:[];return skills.filter(isRecord).map(skill=>({...skill,category_id:skill["category_id"]??category["id"]??null,category_name:category["name"]??null}))})}function groupedCategories(body){groupedSkillRows(body);return body["categories"]}function skillMatrix(body){const matrix=isRecord(body)?body["matrix"]:void 0;if(!Array.isArray(matrix)){throw new ApiResponseError("\u30B9\u30AD\u30EB\u30DE\u30C3\u30D7\u306E\u5FDC\u7B54\u306B matrix \u914D\u5217\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002")}
7
+ return matrix.filter(isRecord)}function qualificationRows(body){const list=isRecord(body)?body["list"]:void 0;if(!Array.isArray(list)){throw new ApiResponseError("\u8CC7\u683C\u30DE\u30B9\u30BF\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")}return list}async function skillNames(ctx,ids=[]){const map={};try{for(const row of groupedSkillRows(await ctx.send({method:"GET",path:GROUPED_PATH}))){
8
+ if(typeof row["id"]==="string"&&typeof row["name"]==="string")map[row["id"]]=row["name"]}}catch(err){ctx.warn(`\u30B9\u30AD\u30EB\u540D\u3092\u53D6\u5F97\u3067\u304D\u306A\u304B\u3063\u305F\u305F\u3081\u3001skill_name \u306E\u5217\u306F\u7A7A\u6B04\u3067\u3059\uFF08${err.message}\uFF09\u3002skill_id \u306F --output json \u3067\u78BA\u8A8D\u3067\u304D\u307E\u3059\u3002`);return{}}const missing=[...new Set(ids)].filter(id=>!Object.hasOwn(map,id));if(missing.length===0)return map;try{const body=await ctx.
9
+ send({method:"GET",path:SKILLS_PATH});const list=isRecord(body)&&Array.isArray(body["list"])?body["list"]:[];for(const row of list){if(isRecord(row)&&typeof row["id"]==="string"&&typeof row["name"]==="string")map[row["id"]]=row["name"]}}catch{}const unresolved=missing.filter(id=>!Object.hasOwn(map,id)).length;if(unresolved>0){ctx.warn(`${unresolved} \u4EF6\u306E\u30B9\u30AD\u30EB\u306F\u540D\u524D\u3092\u5F15\u3051\u306A\u304B\u3063\u305F\u305F\u3081\u3001skill_name \u306E\u5217\u304C\u7A7A\u6B04\u3067\u3059\uFF08\u524A\u9664\u3055\u308C\u305F\u30B9\u30AD\u30EB\u306E\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\uFF09\u3002skill_id \u306F --output json \u3067\u78BA\u8A8D\u3067\u304D\u307E\u3059\u3002`)}
10
+ return map}function matrixSkillIds(matrix){return matrix.flatMap(row=>(Array.isArray(row["skills"])?row["skills"].filter(isRecord):[]).map(skill=>skill["skill_id"]).filter(id=>typeof id==="string"))}async function usersByDepartment(ctx,options={}){const departments={};let cursor;for(let page=0;page<USERS_MAX_PAGES;page++){const body=await ctx.send({method:"GET",path:USERS_LIST_PATH,query:{limit:USERS_PAGE_LIMIT,cursor,department_id:options.departmentId,include_hidden:"true"}});const items=isRecord(
11
+ body)?body["items"]:void 0;if(!Array.isArray(items)){throw new ApiResponseError("\u30E6\u30FC\u30B6\u30FC\u4E00\u89A7\u306E\u5FDC\u7B54\u306B items \u914D\u5217\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002")}for(const row of items){if(isRecord(row)&&typeof row["user_id"]==="string"){departments[row["user_id"]]=typeof row["department_name"]==="string"?row["department_name"]:null}}if(options.needed!==void 0&&[...options.needed].
12
+ every(id=>Object.hasOwn(departments,id))){return{departments,complete:true}}const next=isRecord(body)?body["next_cursor"]:void 0;if(!(isRecord(body)&&body["has_more"]===true&&typeof next==="string"&&next!=="")){return{departments,complete:true}}cursor=next}return{departments,complete:false}}var FISCAL_YEAR_FLAG={name:"--fiscal-year",summary:"\u5E74\u5EA6\uFF08\u4F8B: 2026\uFF09\u3002\u7701\u7565\u3059\u308B\u3068\u5168\u5E74\u5EA6\u306E\u30D7\u30ED\u30D5\u30A1\u30A4\u30EB\u304C\u4E26\u3076",takesValue:true,
13
+ placeholder:"<\u5E74\u5EA6>"};function fiscalYear(input){const raw=nonEmpty(input.flags,"--fiscal-year");if(raw===void 0)return void 0;if(!/^\d{4}$/.test(raw)){throw new UsageError(`--fiscal-year \u306B\u300C${raw}\u300D\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093`,"\u897F\u66A64\u6841\u306E\u5E74\u5EA6\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u4F8B: --fiscal-year 2026\uFF09")}return raw}function minLevel(input){const raw=nonEmpty(input.flags,"--min-level");if(raw===void 0)
14
+ return 1;if(!/^[1-5]$/.test(raw)){throw new UsageError(`--min-level \u306B\u300C${raw}\u300D\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093`,"1\u301C5 \u306E\u6574\u6570\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u30B9\u30AD\u30EB\u306E\u8A55\u4FA1\u30EC\u30D9\u30EB\u306F1\u301C5\uFF09")}return Number(raw)}function noArgs(input,usage){if(input.args.length>0)throw new UsageError(`\u4F4D\u7F6E\u5F15\u6570\u306F\u53D6\u308A\u307E\u305B\u3093: ${input.args.join(" ")}`,usage)}function skillMapPlan(input){
15
+ return{method:"GET",path:SKILL_MAP_PATH,query:{fiscal_year:fiscalYear(input)}}}function matchSkill(rows,ref){const byId=rows.find(row=>row["id"]===ref);if(byId!==void 0)return byId;const lower=ref.toLowerCase();const name=row=>String(row["name"]??"").toLowerCase();const exact=rows.filter(row=>name(row)===lower);const hits=exact.length>0?exact:rows.filter(row=>name(row).includes(lower));if(hits.length===1&&hits[0]!==void 0)return hits[0];if(hits.length===0){throw new UsageError(`\u30B9\u30AD\u30EB\u300C${ref}\
16
+ \u300D\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093`,"\u767B\u9332\u3055\u308C\u3066\u3044\u308B\u30B9\u30AD\u30EB\u306F twp skill list \u3067\u78BA\u8A8D\u3067\u304D\u307E\u3059")}throw new UsageError(`\u30B9\u30AD\u30EB\u300C${ref}\u300D\u306B ${hits.length} \u4EF6\u5F53\u305F\u308A\u307E\u3057\u305F: ${hits.map(row=>`${String(row["name"])}\uFF08${String(row["id"])}\uFF09`).join(" / ")}`,"\u540D\u524D\u3092\u5B8C\u5168\u306B\u66F8\u304F\u304B\u3001ID \u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044")}
17
+ var SKILL_LIST_COLUMNS=["category_name","id","name","is_active","description"];var listOperation={name:"list",summary:"\u30B9\u30AD\u30EB\u30DE\u30B9\u30BF\u3092\u30AB\u30C6\u30B4\u30EA\u5225\u306B\u4E00\u89A7\u3059\u308B",usage:"twp skill list",description:"GET /api/v2/organization/skills/grouped\u3002\u30DA\u30FC\u30B8\u30F3\u30B0\u3092\u6301\u305F\u305A\u3001\u5E38\u306B\u5168\u4EF6\u3092\u8FD4\u3057\u307E\u3059\u3002\n--output table / text / tsv \u306F1\u30B9\u30AD\u30EB1\u884C\uFF08category_name / id / name / is_active / description\uFF09\u3067\u3059\u3002\n--output json \u306F\u30AB\u30C6\u30B4\u30EA\u3054\u3068\u306E\u5165\u308C\u5B50\uFF08categories[].category / skills[]\u30FB\u8A55\u4FA1\u57FA\u6E96 evaluation_criteria \u3092\u542B\u3080\uFF09\
18
+ \u3092\u305D\u306E\u307E\u307E\u51FA\u3057\u307E\u3059\u3002",flags:[],plan(input){noArgs(input,"twp skill list help");return{method:"GET",path:GROUPED_PATH}},summarize:body=>groupedSkillRows(body).map(row=>pick(row,SKILL_LIST_COLUMNS)),raw:body=>groupedCategories(body)};function mapBody(body){if(isRecord(body)&&isRecord(body["response"]))return body;return{response:isRecord(body)?body:{},skillNames:{}}}var MAP_COLUMNS=["user_name","skill_name","level","target_level","user_id","skill_id"];var mapOperation={
19
+ name:"map",summary:"\u30B9\u30AD\u30EB\u30DE\u30C3\u30D7\uFF08\u30E6\u30FC\u30B6\u30FC\xD7\u30B9\u30AD\u30EB\u306E\u8A55\u4FA1\u30EC\u30D9\u30EB\uFF09\u3092\u8868\u793A\u3059\u308B\uFF08HR\u7BA1\u7406\u8005\u306E\u307F\uFF09",usage:"twp skill map [--fiscal-year <\u5E74\u5EA6>] [--department <\u90E8\u7F72>]",description:"GET /api/v2/organization/skill-map\u3002\u30B9\u30AD\u30EB\u30D7\u30ED\u30D5\u30A1\u30A4\u30EB\u3092\u6301\u3064\u30E6\u30FC\u30B6\u30FC\u3060\u3051\u304C\u8F09\u308A\u307E\u3059\u3002\nlevel \u306F\u78BA\u5B9A\u30EC\u30D9\u30EB\uFF08\u672A\u78BA\u5B9A\u306A\u3089\u81EA\u5DF1\u8A55\u4FA1\u30EC\u30D9\u30EB\u30FB\u3069\u3061\u3089\u3082\u7121\u3051\u308C\u3070\u7A7A\uFF09\u3001target_level \u306F\u76EE\u6A19\u30EC\u30D9\u30EB\u3067\u3059\u3002\n\u884C\u306F\u30B9\u30AD\u30EB\u30D7\u30ED\u30D5\u30A1\u30A4\u30EB\uFF08\u30E6\u30FC\u30B6\u30FC\xD7\u5E74\u5EA6\uFF09\u3054\u3068\u306B\u51FA\u308B\u306E\u3067\u3001--fiscal-year \u3092\u7701\u7565\u3059\u308B\u3068\u540C\u3058\u4EBA\u304C\u5E74\u5EA6\u306E\u6570\u3060\u3051\
20
+ \u4E26\u3073\u307E\u3059\u3002\n--department \u306F\u4E3B\u6240\u5C5E\u306E\u90E8\u7F72\u3067\u7D5E\u308A\u8FBC\u307F\u307E\u3059\uFF08\u540D\u524D\u30FB\u30B3\u30FC\u30C9\u30FBID\uFF09\u3002\u30B5\u30FC\u30D0\u306E\u30B9\u30AD\u30EB\u30DE\u30C3\u30D7\u306F\u90E8\u7F72\u3067\u7D5E\u308C\u306A\u3044\u305F\u3081\u3001\n\u30E6\u30FC\u30B6\u30FC\u4E00\u89A7\uFF08\u4E3B\u6240\u5C5E\u30FB\u8868\u793A\u30D5\u30E9\u30B0\u3092\u5916\u3057\u305F\u4EBA\u3082\u542B\u3081\u308B\uFF09\u3092\u5F15\u3044\u3066\u305D\u306E\u90E8\u7F72\u306E\u4EBA\u3060\u3051\u306B\u7D5E\u308A\u307E\u3059\u3002\u30E6\u30FC\u30B6\u30FC\u4E00\u89A7\u304C\u5F15\u3051\u306A\u3051\u308C\u3070\n\u7D5E\u3089\u305A\u306B\u51FA\u3059\u3053\u3068\u306F\u305B\u305A\u3001\u6B62\u307E\u308A\u307E\u3059\uFF08\u30E6\u30FC\u30B6\u30FC\u4E00\u89A7\u306F\u7D44\u7E54\u7BA1\u7406\u8005\u306E\u6A29\u9650\u304C\u8981\u308A\u307E\u3059\uFF09\u3002\n\n--output table / text / tsv \u306F1\u30E6\u30FC\u30B6\u30FC1\u30B9\u30AD\u30EB1\u884C\uFF08user_name / skill_name / level / target_level / user_id / skill_id\uFF09\u3067\u3059\u3002\n--output json \u306F\u30B5\u30FC\u30D0\u306E\u5FDC\u7B54\uFF08matrix\u30FBskill_summary\uFF09\u3092\u305D\u306E\u307E\u307E\u51FA\u3057\u307E\u3059\uFF08--department \u3067\u7D5E\u3063\u305F\u5834\u5408\u306F matrix \u3060\u3051\u304C\u7D5E\u3089\u308C\u307E\u3059\uFF09\u3002",
21
+ forbidden:HR_FORBIDDEN,flags:[FISCAL_YEAR_FLAG,{name:"--department",summary:"\u4E3B\u6240\u5C5E\u306E\u90E8\u7F72\u3067\u7D5E\u308A\u8FBC\u3080\uFF08\u540D\u524D\u30FB\u30B3\u30FC\u30C9\u30FBID\uFF09",takesValue:true,placeholder:"<\u90E8\u7F72>"}],async prepare(input,ctx){noArgs(input,"twp skill map help");fiscalYear(input);const department=nonEmpty(input.flags,"--department");if(department===void 0)return input;return withResolved(input,{departmentId:(await ctx.resolver.department(department)).
22
+ id})},plan:skillMapPlan,plannedNotes:input=>["\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",...input.flags.has("--department")?["\u90E8\u7F72\u3067\u7D5E\u308B\u305F\u3081\u3001\u305D\u306E\u90E8\u7F72\u306E\u30E6\u30FC\u30B6\u30FC\u4E00\u89A7\uFF08\u4E3B\u6240\u5C5E\uFF09\u3092 GET \u3057\u307E\u3059\u3002"]:[]],async execute(input,ctx){const response=await ctx.send(skillMapPlan(
23
+ input));let matrix=skillMatrix(response);const departmentId=input.resolved?.["departmentId"];if(departmentId!==void 0){let result;try{result=await usersByDepartment(ctx,{departmentId})}catch(err){if(err instanceof ApiError&&err.status===403){throw new ApiRejectedError(`--department \u3067\u7D5E\u308B\u306B\u306F\u30E6\u30FC\u30B6\u30FC\u4E00\u89A7\uFF08\u7D44\u7E54\u7BA1\u7406\u8005\uFF09\u306E\u6A29\u9650\u304C\u8981\u308A\u307E\u3059\u3002--department \u3092\u5916\u3057\u3066\u5B9F\u884C\u3057\u3066\u304F\u3060\u3055\u3044\uFF08${err.
24
+ message}\uFF09`)}throw err}const{departments,complete}=result;if(!complete){throw new ApiResponseError(`\u90E8\u7F72\u306E\u30E6\u30FC\u30B6\u30FC\u4E00\u89A7\u304C ${USERS_MAX_PAGES*USERS_PAGE_LIMIT} \u4EF6\u3092\u8D85\u3048\u305F\u305F\u3081\u3001\u90E8\u7F72\u3067\u7D5E\u308A\u8FBC\u3081\u307E\u305B\u3093\u3067\u3057\u305F\u3002--department \u3092\u5916\u3057\u3066\u5B9F\u884C\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}const before=matrix.length;matrix=matrix.filter(row=>typeof row["user_id"]===
25
+ "string"&&Object.hasOwn(departments,row["user_id"]));const excluded=before-matrix.length;if(excluded>0){ctx.warn(`\u30B9\u30AD\u30EB\u30DE\u30C3\u30D7\u306E ${before} \u4EBA\u306E\u3046\u3061\u3001\u3053\u306E\u90E8\u7F72\u306E\u30E6\u30FC\u30B6\u30FC\u4E00\u89A7\uFF08\u5728\u7C4D\u4E2D\u30FB\u4E3B\u6240\u5C5E\uFF09\u306B\u51FA\u306A\u3044 ${excluded} \u4EBA\u3092\u9664\u3044\u3066\u3044\u307E\u3059\uFF08\u4ED6\u90E8\u7F72\u306E\u4EBA\u306E\u307B\u304B\u3001\u5931\u52B9\u30FB\u975E\u8868\u793A\u306E\u30E6\u30FC\u30B6\u30FC\u3092\u542B\u307F\u307E\u3059\uFF09\u3002`)}}
26
+ return{response:{...response,matrix},skillNames:await skillNames(ctx,matrixSkillIds(matrix))}},summarize(body){const{response,skillNames:names}=mapBody(body);return skillMatrix(response).flatMap(row=>{const skills=Array.isArray(row["skills"])?row["skills"].filter(isRecord):[];return skills.map(skill=>pick({...skill,user_id:row["user_id"],user_name:row["user_name"],skill_name:typeof skill["skill_id"]==="string"?names[skill["skill_id"]]??null:null},MAP_COLUMNS))})},raw:body=>mapBody(body).response};
27
+ var WHO_COLUMNS=["user_name","department_name","level","target_level","user_id"];function whoRows(body){const{response,departments}=mapBody(body);const skillId=response["skill_id"];return skillMatrix(response).map(row=>{const skill=(Array.isArray(row["skills"])?row["skills"].filter(isRecord):[]).find(s=>s["skill_id"]===skillId)??{};const userId=row["user_id"];return{user_id:userId,user_name:row["user_name"]??null,department_name:typeof userId==="string"?departments!==void 0&&Object.hasOwn(departments,
28
+ userId)?departments[userId]:null:null,skill_id:skillId,level:skill["level"]??null,target_level:skill["target_level"]??null}})}var whoOperation={name:"who",summary:"\u6307\u5B9A\u3057\u305F\u30B9\u30AD\u30EB\u3092\u6301\u3064\u30E6\u30FC\u30B6\u30FC\u3092\u6240\u5C5E\u4ED8\u304D\u3067\u51FA\u3059\uFF08HR\u7BA1\u7406\u8005\u306E\u307F\uFF09",usage:"twp skill who --skill <\u30B9\u30AD\u30EB> [--min-level <1\u301C5>] [--fiscal-year <\u5E74\u5EA6>]",description:"\u30B9\u30AD\u30EB\u30DE\u30C3\u30D7\uFF08GET /api/v2/organization/skill-\
29
+ map\uFF09\u304B\u3089\u3001\u6307\u5B9A\u3057\u305F\u30B9\u30AD\u30EB\u306E\u8A55\u4FA1\u30EC\u30D9\u30EB\u304C --min-level\uFF08\u65E2\u5B9A 1\uFF09\u4EE5\u4E0A\u306E\n\u30E6\u30FC\u30B6\u30FC\u3092\u30EC\u30D9\u30EB\u306E\u9AD8\u3044\u9806\u306B\u51FA\u3057\u307E\u3059\u3002level \u306F\u78BA\u5B9A\u30EC\u30D9\u30EB\uFF08\u672A\u78BA\u5B9A\u306A\u3089\u81EA\u5DF1\u8A55\u4FA1\u30EC\u30D9\u30EB\uFF09\u3067\u3001\u3069\u3061\u3089\u3082\u7121\u3044\u4EBA\u306F\u51FA\u3057\u307E\u305B\u3093\u3002\n\u884C\u306F\u30B9\u30AD\u30EB\u30D7\u30ED\u30D5\u30A1\u30A4\u30EB\uFF08\u30E6\u30FC\u30B6\u30FC\xD7\u5E74\u5EA6\uFF09\u3054\u3068\u306A\u306E\u3067\u3001--fiscal-year \u3092\u7701\u7565\u3059\u308B\u3068\u540C\u3058\u4EBA\u304C\u5E74\u5EA6\u306E\u6570\u3060\u3051\u4E26\u3073\u307E\u3059\u3002\n--skill \u306F ID \u304B\u540D\u524D\u3067\u6307\u5B9A\u3057\u307E\u3059\uFF08\u5B8C\u5168\u4E00\u81F4 \u2192 \u90E8\u5206\u4E00\u81F4\u30671\u4EF6\u306B\u7D5E\u308C\u305F\u3068\u304D\u3060\u3051\u53D7\u3051\u4ED8\u3051\u307E\u3059\uFF09\u3002\n\u30B5\u30FC\u30D0\u306B\u6A2A\u65AD\u691C\u7D22\u306E API \u306F\u7121\u3044\u305F\u3081\u3001\u30B9\u30AD\u30EB\u4E00\u89A7\u30FB\u30B9\u30AD\u30EB\u30DE\u30C3\u30D7\u30FB\u30E6\u30FC\u30B6\u30FC\u4E00\u89A7\uFF08\u6240\u5C5E\u306E\u8868\u793A\u7528\uFF09\u3092\u9806\u306B GET \u3057\u3066 CLI \u3067\u7D5E\u308A\u307E\u3059\u3002\n\u30E6\u30FC\u30B6\u30FC\u4E00\u89A7\u304C\u5F15\u3051\u306A\u3044\uFF08\u7D44\u7E54\u7BA1\u7406\u8005\u3067\u306A\u3044\u7B49\uFF09\u3068\u304D\u306F department_name \u3092\u7A7A\u6B04\u306B\u3057\u3066\u3001\u305D\u306E\u65E8\u3092 stderr \u306B\u51FA\u3057\u307E\u3059\u3002\n\n--output json \u306F\u8A72\u5F53\u8005\u306E\u884C\uFF08user_id / user_name / department_name / skill_id / level / target_level\uFF09\u3092\u51FA\u3057\u307E\u3059\u3002\n\u8CC7\u683C\u306E\u4FDD\u6709\u8005\u306E\u6A2A\u65AD\u691C\u7D22\uFF08twp qualification who\uFF09\u306F\u30B5\u30FC\u30D0\u306B AP\
30
+ I \u304C\u7121\u3044\u305F\u3081\u3001\u307E\u3060\u3042\u308A\u307E\u305B\u3093\u3002",forbidden:HR_FORBIDDEN,flags:[{name:"--skill",summary:"\u5BFE\u8C61\u306E\u30B9\u30AD\u30EB\uFF08ID\u30FB\u540D\u524D\uFF09",takesValue:true,placeholder:"<\u30B9\u30AD\u30EB>"},{name:"--min-level",summary:"\u3053\u306E\u8A55\u4FA1\u30EC\u30D9\u30EB\u4EE5\u4E0A\u306E\u4EBA\u3060\u3051\u51FA\u3059\uFF081\u301C5\u30FB\u65E2\u5B9A 1\uFF09",takesValue:true,placeholder:"<1\u301C5>"},FISCAL_YEAR_FLAG],plan(input){noArgs(
31
+ input,"twp skill who help");if(nonEmpty(input.flags,"--skill")===void 0){throw new UsageError("--skill \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044","twp skill who --skill <\u30B9\u30AD\u30EB> [--min-level <1\u301C5>]")}minLevel(input);return skillMapPlan(input)},plannedNotes:()=>["\u3053\u306E\u524D\u306B\u3001--skill \u3092\u89E3\u6C7A\u3059\u308B\u305F\u3081\u30B9\u30AD\u30EB\u4E00\u89A7\u3092 GET \u3057\u307E\u3059\u3002","\u3053\u306E\u3042\u3068\u3001\u6240\u5C5E\u3092\u8868\u793A\u3059\u308B\u305F\u3081\u30E6\u30FC\u30B6\u30FC\u4E00\u89A7\u3092 GET \u3057\u307E\u3059\u3002"],
32
+ async execute(input,ctx){const ref=nonEmpty(input.flags,"--skill");const threshold=minLevel(input);const skill=matchSkill(groupedSkillRows(await ctx.send({method:"GET",path:GROUPED_PATH})),ref);const skillId=String(skill["id"]);const response=await ctx.send(skillMapPlan(input));const level=row=>{const hit=(Array.isArray(row["skills"])?row["skills"].filter(isRecord):[]).find(s=>s["skill_id"]===skillId);return typeof hit?.["level"]==="number"?hit["level"]:0};const matrix=skillMatrix(response).filter(
33
+ row=>level(row)>=threshold).sort((a,b)=>level(b)-level(a));let departments;if(matrix.length>0){try{const needed=new Set(matrix.map(row=>String(row["user_id"])));const result=await usersByDepartment(ctx,{needed});const found=result.departments;departments=found;const unresolved=[...needed].filter(id=>!Object.hasOwn(found,id)).length;if(unresolved>0){ctx.warn(`${unresolved} \u4EBA\u306E\u6240\u5C5E\u3092\u30E6\u30FC\u30B6\u30FC\u4E00\u89A7\u304B\u3089\u5F15\u3051\u306A\u304B\u3063\u305F\u305F\u3081\u3001department_name \u306F\u7A7A\u6B04\u3067\u3059\uFF08\u975E\u8868\u793A\u30FB\u5931\u52B9\u306E\u30E6\u30FC\u30B6\u30FC\u3001\u307E\u305F\u306F\u4E00\u89A7\u306E\u4E0A\u9650\u8D85\u3048\uFF09\u3002`)}}catch(err){
34
+ ctx.warn(`\u6240\u5C5E\u3092\u53D6\u5F97\u3067\u304D\u306A\u304B\u3063\u305F\u305F\u3081\u3001department_name \u306E\u5217\u306F\u7A7A\u6B04\u3067\u3059\uFF08${err.message}\uFF09\u3002`)}}return{response:{...response,skill_id:skillId,skill_name:skill["name"]??null,matrix},skillNames:{},departments}},summarize:body=>whoRows(body).map(row=>pick(row,WHO_COLUMNS)),raw:body=>whoRows(body),notes(body){const{response}=mapBody(body);if(skillMatrix(response).length>0)return[];return[`\u30B9\u30AD\u30EB\u300C${String(
35
+ response["skill_name"]??response["skill_id"])}\u300D\u3067\u6761\u4EF6\u306B\u5F53\u305F\u308B\u30E6\u30FC\u30B6\u30FC\u306F\u3044\u307E\u305B\u3093\uFF08\u30B9\u30AD\u30EB\u30DE\u30C3\u30D7\u306B\u8F09\u308B\u306E\u306F\u30B9\u30AD\u30EB\u30D7\u30ED\u30D5\u30A1\u30A4\u30EB\u3092\u6301\u3064\u30E6\u30FC\u30B6\u30FC\u3060\u3051\u3067\u3059\uFF09\u3002`]}};var PROFILES_PATH="/api/v2/organization/user-skill-profiles";var SELF_EVALUATE_MAX_CHARS=1e6;var SELF_COMMENT_MAX=2e3;var POLICY_MAX=5e3;var SELF_EVALUATE_HELP='\
36
+ \u5185\u5BB9\uFF08--content-file\uFF09\u306F\u30B5\u30FC\u30D0\u304C\u53D7\u3051\u308B\u5F62\u306E JSON \u3067\u3059\uFF08- \u3067\u6A19\u6E96\u5165\u529B\uFF09:\n {"skills": [{"skill_id": "<\u30B9\u30AD\u30EBID>", "self_level": 1\u301C5, "self_comment": "\u4EFB\u610F\u30FB2,000\u5B57\u307E\u3067"}],\n "skill_up_policy": "\u4EFB\u610F\u30FB\u30B9\u30AD\u30EB\u30A2\u30C3\u30D7\u65B9\u91DD\u30FB5,000\u5B57\u307E\u3067"}\n skill_up_policy \u306F\u30AD\u30FC\u3092\u7701\u3051\u3070\u4ECA\u306E\u65B9\u91DD\u306E\u307E\u307E\u3001\u7A7A\u6587\u5B57\u304B null \u3092\u66F8\u304F\u3068\u6D88\u3048\u307E\u3059\u3002\n skill_id \u3068\u73FE\u5728\u306E\u8A55\u4FA1\u306F twp user skills me \u3067\u78BA\u8A8D\u3067\u304D\u307E\u3059\uFF08--output json \u306E skills[].skill_id\uFF09\u3002\n \u30D7\u30ED\u30D5\u30A1\u30A4\u30EB\u306B\u7121\u3044\u30B9\u30AD\u30EB\u30FB\u77E5\u3089\u306A\u3044\u30AD\u30FC\u306F\u9001\u308B\u524D\u306B\u6B62\u3081\u307E\u3059\uFF08\u30B5\u30FC\u30D0\u306F\u524D\u8005\u3092\u9ED9\u3063\u3066\u7121\u8996\u3059\u308B\u305F\u3081\uFF09\u3002\n \u9001\u3089\u306A\u304B\u3063\u305F\u30B9\u30AD\u30EB\u306F\u4ECA\u306E\u81EA\u5DF1\u8A55\u4FA1\u306E\u307E\u307E\u63D0\u51FA\u3055\u308C\u3001\u307E\u3060\u5024\u306E\u7121\u3044\u3082\u306E\u306F\u9001\u308B\u524D\u306B stderr \u3067\u6319\u3052\u307E\u3059\u3002';
37
+ function profileIdArg(input){const[raw,...rest]=input.args;const id=raw?.trim()??"";const usage="twp skill self-evaluate <\u30D7\u30ED\u30D5\u30A1\u30A4\u30EBID> --content-file <JSON> --yes";if(id==="")throw new UsageError("\u30B9\u30AD\u30EB\u30D7\u30ED\u30D5\u30A1\u30A4\u30EB\u306E ID \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",`${usage}\uFF08ID \u306F twp user skills me \u306E profile_id \u5217\uFF09`);if(rest.length>0)throw new UsageError(`\u53D7\u3051\u53D6\u308C\u308B\u30D7\u30ED\u30D5\u30A1\u30A4\u30EB ID \u306F1\u3064\u3060\u3051\u3067\u3059: ${rest.
38
+ join(" ")}`,usage);if(!isSafePathSegment(id))throw new UsageError(`\u30D7\u30ED\u30D5\u30A1\u30A4\u30EB ID \u306B\u4F7F\u3048\u306A\u3044\u6587\u5B57\u304C\u542B\u307E\u308C\u3066\u3044\u307E\u3059: ${id}`,usage);return encodeURIComponent(id)}function parseSelfEvaluation(text){let parsed;try{parsed=JSON.parse(text)}catch(err){throw new UsageError(`--content-file \u304C JSON \u3068\u3057\u3066\u8AAD\u3081\u307E\u305B\u3093\uFF08${err.message}\uFF09`,SELF_EVALUATE_HELP)}if(!isRecord(parsed))throw new UsageError(
39
+ "--content-file \u306F JSON \u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",SELF_EVALUATE_HELP);const problems=[];for(const key of Object.keys(parsed)){if(key!=="skills"&&key!=="skill_up_policy")problems.push(`\u77E5\u3089\u306A\u3044\u30AD\u30FC: ${key}`)}const skills=parsed["skills"];if(!Array.isArray(skills)||skills.length===0){problems.push("skills \u306F1\u4EF6\u4EE5\u4E0A\u306E\u914D\u5217\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044")}else{
40
+ const seen=new Set;skills.forEach((row,index)=>{const at=`skills[${index}]`;if(!isRecord(row)){problems.push(`${at} \u304C\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3067\u306F\u3042\u308A\u307E\u305B\u3093`);return}for(const key of Object.keys(row)){if(!["skill_id","self_level","self_comment"].includes(key))problems.push(`\u77E5\u3089\u306A\u3044\u30AD\u30FC: ${at}.${key}`)}const skillId=row["skill_id"];if(typeof skillId!=="string"||skillId.trim()==="")problems.push(`${at}.skill_id \u304C\u3042\u308A\u307E\u305B\u3093`);else if(seen.
41
+ has(skillId))problems.push(`${at}.skill_id ${skillId} \u304C\u91CD\u8907\u3057\u3066\u3044\u307E\u3059`);else seen.add(skillId);const level=row["self_level"];if(!(typeof level==="number"&&Number.isInteger(level)&&level>=1&&level<=5)){problems.push(`${at}.self_level \u306F 1\u301C5 \u306E\u6574\u6570\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08${JSON.stringify(level)}\uFF09`)}const comment=row["self_comment"];if(comment!==void 0&&comment!==null){if(typeof comment!=="string")problems.
42
+ push(`${at}.self_comment \u306F\u6587\u5B57\u5217\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044`);else if([...comment].length>SELF_COMMENT_MAX)problems.push(`${at}.self_comment \u304C ${SELF_COMMENT_MAX} \u6587\u5B57\u3092\u8D85\u3048\u3066\u3044\u307E\u3059`)}})}const policy=parsed["skill_up_policy"];if(policy!==void 0&&policy!==null){if(typeof policy!=="string")problems.push("skill_up_policy \u306F\u6587\u5B57\u5217\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044");else if([...policy].
43
+ length>POLICY_MAX)problems.push(`skill_up_policy \u304C ${POLICY_MAX} \u6587\u5B57\u3092\u8D85\u3048\u3066\u3044\u307E\u3059`)}if(problems.length>0){throw new UsageError(`--content-file \u3092\u76F4\u3057\u3066\u304F\u3060\u3055\u3044:
44
+ ${problems.join("\n ")}`,SELF_EVALUATE_HELP)}return parsed}function selfEvaluatePlan(input){const content=input.resolved?.["content"];if(content===void 0)throw new Error("\u5185\u90E8\u30A8\u30E9\u30FC: content \u304C\u89E3\u6C7A\u3055\u308C\u3066\u3044\u307E\u305B\u3093\uFF08prepare() \u306E\u914D\u7DDA\u6F0F\u308C\uFF09");return{method:"POST",path:`${PROFILES_PATH}/${profileIdArg(input)}/self-evaluate`,body:JSON.parse(content)}}var selfEvaluateOperation={name:"self-evaluate",summary:"\u81EA\u5206\u306E\u30B9\u30AD\u30EB\
45
+ \u30D7\u30ED\u30D5\u30A1\u30A4\u30EB\u306B\u81EA\u5DF1\u8A55\u4FA1\u3092\u5165\u308C\u3066\u63D0\u51FA\u3059\u308B\uFF08\u53D6\u308A\u6D88\u305B\u306A\u3044\u30FB--yes \u304C\u8981\u308B\uFF09",usage:"twp skill self-evaluate <\u30D7\u30ED\u30D5\u30A1\u30A4\u30EBID> --content-file <JSON> --yes",description:"POST /api/v2/organization/user-skill-profiles/{id}/self-evaluate\u3002\u753B\u9762\u306E\u300C\u81EA\u5DF1\u8A55\u4FA1\u3092\u9001\u4FE1\u300D\u3068\u540C\u3058\u64CD\u4F5C\u3067\u3059\u3002\n\u9001\u4FE1\u3059\u308B\u3068\u30D7\u30ED\u30D5\u30A1\u30A4\u30EB\u306F\u300C\u4E0B\u66F8\u304D\u300D\uFF08draft\uFF09\u304B\u3089\u300C\u81EA\u5DF1\u8A55\u4FA1\u6E08\u307F\u300D\uFF08self_evaluated\uFF09\u3078\u9032\u307F\u3001\u4E0A\u9577\u3078\u901A\u77E5\u304C\u5C4A\u304D\u307E\u3059\u3002\n\u9001\u4FE1\u5F8C\u306F\u81EA\u5206\u3067\u306F\u76F4\u305B\u306A\u3044\u306E\u3067 --yes \u304C\u8981\u308A\u307E\u3059\u3002\u81EA\u5DF1\u8A55\u4FA1\u3067\u304D\u308B\u306E\u306F\u672C\u4EBA\u306E\u30D7\
46
+ \u30ED\u30D5\u30A1\u30A4\u30EB\u304C draft \u306E\u3068\u304D\u3060\u3051\u3067\u3059\u3002\n\u9001\u308B\u524D\u306B\u30D7\u30ED\u30D5\u30A1\u30A4\u30EB\u3092 GET \u3057\u3001\u30D7\u30ED\u30D5\u30A1\u30A4\u30EB\u306B\u7121\u3044\u30B9\u30AD\u30EB\u3092\u6B62\u3081\u3001\u9001\u3089\u306A\u304B\u3063\u305F\u30B9\u30AD\u30EB\u3092 stderr \u306B\u6319\u3052\u307E\u3059\u3002\n\n"+SELF_EVALUATE_HELP,destructive:true,confirmation:"\u9001\u4FE1\u5F8C\u306F\u53D6\u308A\u6D88\u305B\u305A\u3001\u4E0A\u9577\u3078\u901A\u77E5\u304C\u5C4A\u304F\u64CD\u4F5C",
47
+ forbidden:"\u81EA\u5DF1\u8A55\u4FA1\u306F\u672C\u4EBA\u306E\u30D7\u30ED\u30D5\u30A1\u30A4\u30EB\u3067\u3060\u3051\u9001\u308C\u307E\u3059\uFF08\u4ED6\u4EBA\u306E\u30D7\u30ED\u30D5\u30A1\u30A4\u30EB\u306B\u306F\u9001\u308C\u307E\u305B\u3093\uFF09",flags:[{name:"--content-file",summary:"\u81EA\u5DF1\u8A55\u4FA1\u306E JSON \u30D5\u30A1\u30A4\u30EB\uFF08- \u3067\u6A19\u6E96\u5165\u529B\uFF09",takesValue:true,placeholder:"<\u30D1\u30B9>"}],async prepare(input){profileIdArg(input);const text=await readBody(
48
+ input,{flag:"--content",fileFlag:"--content-file",label:"\u81EA\u5DF1\u8A55\u4FA1\u306E\u5185\u5BB9",maxChars:SELF_EVALUATE_MAX_CHARS,usage:"twp skill self-evaluate <\u30D7\u30ED\u30D5\u30A1\u30A4\u30EBID> --content-file <JSON> --yes"});if(text===void 0)throw new UsageError("--content-file \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",SELF_EVALUATE_HELP);return withResolved(input,{content:JSON.stringify(parseSelfEvaluation(text))})},plan:selfEvaluatePlan,plannedNotes:input=>{const content=JSON.
49
+ parse(input.resolved?.["content"]??'{"skills":[]}');return[`\u3053\u306E\u524D\u306B\u3001\u30B9\u30AD\u30EB\u30D7\u30ED\u30D5\u30A1\u30A4\u30EB\u3092 GET \u3057\u3066\u9001\u308B ${content.skills.length} \u4EF6\u306E\u30B9\u30AD\u30EB\u304C\u30D7\u30ED\u30D5\u30A1\u30A4\u30EB\u306B\u3042\u308B\u304B\u3092\u78BA\u304B\u3081\u307E\u3059\u3002`,"\u9001\u4FE1\u3059\u308B\u3068\u81EA\u5DF1\u8A55\u4FA1\u6E08\u307F\u306B\u306A\u308A\u3001\u4E0A\u9577\u3078\u901A\u77E5\u304C\u5C4A\u304D\u307E\u3059\uFF08\u81EA\u5206\u3067\u306F\u53D6\u308A\u6D88\u305B\u307E\u305B\u3093\uFF09\u3002"]},
50
+ async execute(input,ctx){const plan=selfEvaluatePlan(input);const profileBody=await ctx.send({method:"GET",path:`${PROFILES_PATH}/${profileIdArg(input)}`});const profile=isRecord(profileBody)?profileBody["user_skill_profile"]:void 0;if(!isRecord(profile)){throw new ApiResponseError("\u30B9\u30AD\u30EB\u30D7\u30ED\u30D5\u30A1\u30A4\u30EB\u306E\u5FDC\u7B54\u306B user_skill_profile \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002")}
51
+ if(profile["status"]!=="draft"){throw new ApiRejectedError(`\u3053\u306E\u30D7\u30ED\u30D5\u30A1\u30A4\u30EB\u306F\u300C${String(profile["status"])}\u300D\u306A\u306E\u3067\u81EA\u5DF1\u8A55\u4FA1\u3067\u304D\u307E\u305B\u3093\uFF08\u81EA\u5DF1\u8A55\u4FA1\u306F draft \u306E\u3068\u304D\u3060\u3051\u3067\u3059\u3002\u73FE\u5728\u306E\u72B6\u614B\u306F twp user skills me \u3067\u78BA\u8A8D\u3067\u304D\u307E\u3059\uFF09`)}const profileSkillIds=(Array.isArray(profile["skills"])?profile["skills"]:[]).
52
+ filter(isRecord).map(skill=>skill["skill_id"]).filter(id=>typeof id==="string");const sent=(plan.body.skills??[]).map(skill=>String(skill["skill_id"]));const unknown=sent.filter(id=>!profileSkillIds.includes(id));if(unknown.length>0){throw new UsageError(`\u30D7\u30ED\u30D5\u30A1\u30A4\u30EB\u306B\u7121\u3044\u30B9\u30AD\u30EB\u304C\u542B\u307E\u308C\u3066\u3044\u307E\u3059: ${unknown.join(" / ")}`,`\u3053\u306E\u30D7\u30ED\u30D5\u30A1\u30A4\u30EB\u306E\u30B9\u30AD\u30EB\u306F ${profileSkillIds.
53
+ join(" / ")||"\uFF08\u306A\u3057\uFF09"} \u3067\u3059\uFF08twp user skills me --output json \u3067\u78BA\u8A8D\u3067\u304D\u307E\u3059\uFF09`)}const blank=(Array.isArray(profile["skills"])?profile["skills"]:[]).filter(isRecord).filter(skill=>typeof skill["skill_id"]==="string"&&!sent.includes(skill["skill_id"])&&(skill["self_level"]??null)===null).map(skill=>String(skill["skill_id"]));if(blank.length>0){ctx.warn(`\u9001\u3089\u306A\u304B\u3063\u305F\u30B9\u30AD\u30EB\u306F\u81EA\u5DF1\u8A55\u4FA1\u304C\u672A\u5165\u529B\u306E\u307E\u307E\u63D0\u51FA\u3055\u308C\u307E\u3059: ${blank.
54
+ join(" / ")}`)}return ctx.send(plan)},summarize:body=>{const profile=isRecord(body)&&isRecord(body["user_skill_profile"])?body["user_skill_profile"]:{};return{message:isRecord(body)?body["message"]??null:null,id:profile["id"]??null,status:profile["status"]??null,fiscal_year:profile["fiscal_year"]??null}},raw:body=>{if(!isRecord(body)||body["result"]!==true||!isRecord(body["user_skill_profile"])){throw new ApiResponseError("\u81EA\u5DF1\u8A55\u4FA1\u306E\u5FDC\u7B54\u306B user_skill_profile \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002")}
55
+ return body["user_skill_profile"]}};var SKILL_LABEL="\u30B9\u30AD\u30EB";var CATEGORY_LABEL="\u30B9\u30AD\u30EB\u30AB\u30C6\u30B4\u30EA";var ADMIN_FORBIDDEN=label=>`\u7BA1\u7406\u8005\u306E\u6A29\u9650\u304C\u5FC5\u8981\u3067\u3059\u3002${label}\u306E\u4F5C\u6210\u30FB\u66F4\u65B0\u30FB\u524A\u9664\u30FB\u4E26\u3073\u66FF\u3048\u306F\u7BA1\u7406\u8005\u3060\u3051\u304C\u884C\u3048\u307E\u3059`;var SKILL_COLUMNS=["id","category_id","name","skill_code","sub_group_label","sort_order","is_active","d\
56
+ escription"];var CATEGORY_COLUMNS=["id","name","sort_order","is_active","department_scope","iso_standard","description"];var ACTIVE_FIELD={kind:"boolean",flag:"--active",key:"is_active",summary:"\u6709\u52B9\u306B\u3059\u308B\u304B\uFF08true / false\u3002\u7121\u52B9\u306B\u3059\u308B\u3068\u9078\u629E\u80A2\u306B\u51FA\u306A\u304F\u306A\u308B\uFF09"};var SORT_ORDER_FIELD={kind:"integer",flag:"--sort-order",key:"sort_order",label:"\u8868\u793A\u9806",min:0,summary:"\u8868\u793A\u9806\uFF080\u4EE5\u4E0A\u306E\u6574\u6570\uFF09"};
57
+ var SKILL_FIELDS=[{kind:"text",flag:"--name",key:"name",label:"\u30B9\u30AD\u30EB\u540D",maxChars:255,summary:"\u30B9\u30AD\u30EB\u540D"},{kind:"text",flag:"--description",key:"description",label:"\u8AAC\u660E",maxChars:1e3,summary:"\u8AAC\u660E"},{kind:"text",flag:"--skill-code",key:"skill_code",label:"\u30B9\u30AD\u30EB\u30B3\u30FC\u30C9",maxChars:100,summary:"\u30B9\u30AD\u30EB\u30B3\u30FC\u30C9\uFF08\u4EFB\u610F\uFF09"},{kind:"text",flag:"--sub-group-label",key:"sub_group_label",label:"\u5C0F\u5206\u985E",
58
+ maxChars:100,summary:"\u30AB\u30C6\u30B4\u30EA\u5185\u306E\u5C0F\u5206\u985E\u306E\u898B\u51FA\u3057\uFF08\u4EFB\u610F\uFF09"},SORT_ORDER_FIELD,ACTIVE_FIELD];var CATEGORY_FIELDS=[{kind:"text",flag:"--name",key:"name",label:"\u30AB\u30C6\u30B4\u30EA\u540D",maxChars:255,summary:"\u30AB\u30C6\u30B4\u30EA\u540D"},{kind:"text",flag:"--description",key:"description",label:"\u8AAC\u660E",maxChars:1e3,summary:"\u8AAC\u660E"},SORT_ORDER_FIELD,ACTIVE_FIELD,{kind:"enum",flag:"--department-scope",key:"depar\
59
+ tment_scope",values:["system","sales","admin"],summary:"\u5BFE\u8C61\u306E\u90E8\u9580\u533A\u5206\uFF08system / sales / admin\uFF09"},{kind:"enum",flag:"--iso-standard",key:"iso_standard",values:["ISO9001","ISO27001","both"],summary:"\u5BFE\u5FDC\u3059\u308B ISO \u898F\u683C\uFF08ISO9001 / ISO27001 / both\uFF09"}];var CATEGORY_FLAG={name:"--category",summary:"\u30B9\u30AD\u30EB\u30AB\u30C6\u30B4\u30EA\uFF08\u540D\u524D\u30FBID\uFF09",takesValue:true,placeholder:"<\u30AB\u30C6\u30B4\u30EA>"};var SKILL_REF_FLAG={
60
+ name:"--skill",summary:"\u5BFE\u8C61\u306E\u30B9\u30AD\u30EB\uFF08\u4F4D\u7F6E\u5F15\u6570\u306E\u4EE3\u308F\u308A\u306B\u4F7F\u3048\u308B\uFF09",takesValue:true,placeholder:"<\u30B9\u30AD\u30EB>"};var CATEGORY_REF_FLAG={name:"--category",summary:"\u5BFE\u8C61\u306E\u30B9\u30AD\u30EB\u30AB\u30C6\u30B4\u30EA\uFF08\u4F4D\u7F6E\u5F15\u6570\u306E\u4EE3\u308F\u308A\u306B\u4F7F\u3048\u308B\uFF09",takesValue:true,placeholder:"<\u30AB\u30C6\u30B4\u30EA>"};var SKILL_REF_HELP="<\u30B9\u30AD\u30EB> \u306F\u540D\u524D\u30FB\u30B9\u30AD\u30EB\u30B3\u30FC\u30C9\u30FBID \u306E\u3069\u308C\u3067\u3082\u6307\u5B9A\u3067\
61
+ \u304D\u307E\u3059\uFF08\u7121\u52B9\u5316\u3057\u305F\u30B9\u30AD\u30EB\u3082\u5BFE\u8C61\u3067\u3059\u3002\u540D\u524D\u304C\u8907\u6570\u306B\u4E00\u81F4\u3059\u308C\u3070\u5019\u88DC\u3092\u51FA\u3057\u3066\u6B62\u307E\u308A\u307E\u3059\uFF09\u3002\nID \u4EE5\u5916\u306F\u30B9\u30AD\u30EB\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 CATEGORY_REF_HELP="<\u30AB\u30C6\u30B4\u30EA> \u306F\u540D\u524D\u304B ID \u3067\u6307\u5B9A\u3067\u304D\
62
+ \u307E\u3059\uFF08\u30B9\u30AD\u30EB\u30AB\u30C6\u30B4\u30EA\u306F\u30B3\u30FC\u30C9\u3092\u6301\u3061\u307E\u305B\u3093\uFF09\u3002\nID \u4EE5\u5916\u306F\u30B9\u30AD\u30EB\u30AB\u30C6\u30B4\u30EA\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 skillItem=body=>masterItem(body,"skill",SKILL_LABEL);var categoryItem=body=>masterItem(body,"skill_category",CATEGORY_LABEL);var skillPath=input=>`${SKILLS_PATH}\
63
+ /${idSegment(input,SKILL_LABEL)}`;var categoryPath=input=>`${SKILL_CATEGORIES_PATH}/${idSegment(input,CATEGORY_LABEL)}`;async function prepareSkillTarget(input,ctx,usage){return withResolved(input,{id:await targetId(input,{flag:SKILL_REF_FLAG.name,label:SKILL_LABEL,usage,resolve:ref=>ctx.resolver.skill(ref)})})}async function prepareCategoryTarget(input,ctx,usage){return withResolved(input,{id:await targetId(input,{flag:CATEGORY_REF_FLAG.name,label:CATEGORY_LABEL,usage,resolve:ref=>ctx.resolver.
64
+ skillCategory(ref,"<\u30AB\u30C6\u30B4\u30EA>")})})}function ulidOr(ref){const upper=ref.trim().toUpperCase();return ULID_RE.test(upper)?upper:void 0}async function categoryId(ref,ctx){return ulidOr(ref)??(await ctx.resolver.skillCategory(ref)).id}async function resolveCategoryFlag(input,ctx){const ref=nonEmpty(input.flags,CATEGORY_FLAG.name);if(ref===void 0)return input;return withResolved(input,{category_id:await categoryId(ref,ctx)})}function skillBody(input){const body=fieldBody(input,SKILL_FIELDS);
65
+ const categoryId2=input.resolved?.["category_id"];if(categoryId2!==void 0)body["category_id"]=categoryId2;return body}var skillGetOperation={name:"get",summary:"\u30B9\u30AD\u30EB1\u4EF6\u306E\u8A73\u7D30\u3092\u8868\u793A\u3059\u308B",usage:"twp skill get <\u30B9\u30AD\u30EB>",description:`GET /api/v2/organization/skills/{id}\u3002
66
+
67
+ ${SKILL_REF_HELP}
68
+
69
+ --output json \u306F\u8A55\u4FA1\u57FA\u6E96\uFF08evaluation_criteria\uFF09\u3092\u542B\u3080\u5168\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u51FA\u3057\u307E\u3059\u3002`,flags:[SKILL_REF_FLAG],prepare:(input,ctx)=>prepareSkillTarget(input,ctx,"twp skill get help"),plan:input=>({method:"GET",path:skillPath(input)}),summarize:body=>pick(skillItem(body),SKILL_COLUMNS),raw:body=>skillItem(body)};var skillCreateOperation={name:"create",summary:"\u30B9\u30AD\u30EB\u3092\u4F5C\u6210\u3059\u308B\uFF08\u7BA1\u7406\u8005\u306E\u307F\uFF09",
70
+ usage:"twp skill create --category <\u30AB\u30C6\u30B4\u30EA> --name <\u30B9\u30AD\u30EB\u540D> [\u9805\u76EE\u2026]",description:"POST /api/v2/organization/skills\u3002--category \u3068 --name \u304C\u5FC5\u9808\u3067\u3059\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\n\u8A55\u4FA1\u57FA\u6E96\uFF08evaluation_criteria\uFF09\u3068\u5FC5\u9808\u30ED\u30FC\u30EB\uFF08required_for_roles\uFF09\u306F\u30D5\u30E9\u30B0\u306B\u3057\u3066\u3044\u307E\u305B\u3093\u3002\u753B\u9762\u304B twp api \u3067\u8A2D\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n\n\u4F5C\u6210\u3057\u305F\u30B9\u30AD\u30EB\u306E ID \u304C\u8FD4\u308A\u307E\u3059\u3002",
71
+ forbidden:ADMIN_FORBIDDEN(SKILL_LABEL),flags:[CATEGORY_FLAG,...createFlags(SKILL_FIELDS)],async prepare(input,ctx){if(input.args.length>0)throw new UsageError(`create \u306F\u4F4D\u7F6E\u5F15\u6570\u3092\u53D6\u308A\u307E\u305B\u3093: ${input.args.join(" ")}`,"twp skill create help");const body=fieldBody(input,SKILL_FIELDS);if(nonEmpty(input.flags,CATEGORY_FLAG.name)===void 0)throw new UsageError("--category \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044","twp skill create help");if(body["\
72
+ name"]===void 0)throw new UsageError("--name \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044","twp skill create help");return resolveCategoryFlag(input,ctx)},plan:input=>({method:"POST",path:SKILLS_PATH,body:skillBody(input)}),summarize:body=>pick(skillItem(body),SKILL_COLUMNS),raw:body=>skillItem(body),notes:()=>[cacheNote(SKILL_LABEL)]};var skillUpdateOperation={name:"update",summary:"\u30B9\u30AD\u30EB\u3092\u66F4\u65B0\u3059\u308B\uFF08\u7BA1\u7406\u8005\u306E\u307F\uFF09",usage:"twp \
73
+ skill update <\u30B9\u30AD\u30EB> [--category <\u30AB\u30C6\u30B4\u30EA>] [\u9805\u76EE\u2026]",description:"PUT /api/v2/organization/skills/{id}\u3002\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\n--category \u3092\u6307\u5B9A\u3059\u308B\u3068\u30B9\u30AD\u30EB\u3092\u5225\u306E\u30AB\u30C6\u30B4\u30EA\u3078\u79FB\u3057\u307E\u3059\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\n\n"+
74
+ SKILL_REF_HELP,forbidden:ADMIN_FORBIDDEN(SKILL_LABEL),flags:[CATEGORY_FLAG,...updateFlags(SKILL_FIELDS),SKILL_REF_FLAG],async prepare(input,ctx){if(!hasAnyField(input,SKILL_FIELDS)&&!input.flags.has(CATEGORY_FLAG.name)){throw new UsageError("\u5909\u66F4\u3059\u308B\u9805\u76EE\u30921\u3064\u4EE5\u4E0A\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044","twp skill update help")}fieldBody(input,SKILL_FIELDS);if(input.flags.has(CATEGORY_FLAG.name)&&nonEmpty(input.flags,CATEGORY_FLAG.name)===void 0){throw new UsageError(
75
+ "--category \u306B\u7A7A\u306E\u5024\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093","twp skill update help")}return resolveCategoryFlag(await prepareSkillTarget(input,ctx,"twp skill update help"),ctx)},plan:input=>({method:"PUT",path:skillPath(input),body:skillBody(input)}),summarize:body=>pick(skillItem(body),SKILL_COLUMNS),raw:body=>skillItem(body),notes:()=>[cacheNote(SKILL_LABEL)]};var skillDeleteOperation={name:"delete",summary:"\u30B9\u30AD\u30EB\u3092\u524A\u9664\u3059\u308B\uFF08\u7BA1\u7406\u8005\u306E\u307F\u30FB--yes \u304C\u8981\u308B\u30FB\u8A55\u4FA1\u306E\u8A18\u9332\u304B\u3089\u3082\u6D88\u3048\u308B\uFF09",
76
+ usage:"twp skill delete <\u30B9\u30AD\u30EB> --yes",description:"DELETE /api/v2/organization/skills/{id}\u3002\u30B9\u30AD\u30EB\u306F\u7269\u7406\u524A\u9664\u3055\u308C\u3001**\u5404\u30E6\u30FC\u30B6\u30FC\u306E\u30B9\u30AD\u30EB\u30D7\u30ED\u30D5\u30A1\u30A4\u30EB\u306B\u5165\u3063\u3066\u3044\u308B\n\u305D\u306E\u30B9\u30AD\u30EB\u306E\u8A55\u4FA1\uFF08\u81EA\u5DF1\u8A55\u4FA1\u30FB\u4E00\u6B21\u30FB\u4E8C\u6B21\u8A55\u4FA1\u3068\u30B3\u30E1\u30F3\u30C8\uFF09\u3082\u30B5\u30FC\u30D0\u304C\u4E00\u7DD2\u306B\u6D88\u3057\u307E\u3059**\u3002\u53D6\u308A\u6D88\u305B\u307E\u305B\u3093\u3002\n\u30ED\u30FC\u30EB\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u306E\u5FC5\u9808\u30B9\u30AD\u30EB\u304B\u3089\u53C2\u7167\u3055\u308C\u3066\u3044\u308B\u3068\u304D\u306F\u30B5\u30FC\u30D0\u304C\u65AD\u308A\u307E\u3059\uFF08\u6587\u9762\u3092\u305D\u306E\u307E\u307E\u51FA\u3057\u307E\u3059\uFF09\u3002\n\u4ECA\u5F8C\u4F7F\u308F\u306A\u3044\u3060\u3051\u306A\u3089\u3001\u524A\u9664\u305B\u305A\u306B\u7121\u52B9\u5316\u3057\u3066\u304F\u3060\u3055\u3044: twp skill update <\u30B9\u30AD\u30EB> --active false\n\n"+
77
+ SKILL_REF_HELP,destructive:true,confirmation:"\u30B9\u30AD\u30EB\u3068\u3001\u5404\u30E6\u30FC\u30B6\u30FC\u306E\u30B9\u30AD\u30EB\u30D7\u30ED\u30D5\u30A1\u30A4\u30EB\u306B\u3042\u308B\u305D\u306E\u30B9\u30AD\u30EB\u306E\u8A55\u4FA1\u3092\u6D88\u3059\uFF08\u53D6\u308A\u6D88\u305B\u306A\u3044\uFF09\u64CD\u4F5C",forbidden:ADMIN_FORBIDDEN(SKILL_LABEL),flags:[SKILL_REF_FLAG],prepare:(input,ctx)=>prepareSkillTarget(input,ctx,"twp skill delete help"),plannedNotes:()=>["\u524A\u9664\u3059\u308B\u3068\u3001\u5404\u30E6\u30FC\u30B6\u30FC\u306E\u30B9\u30AD\u30EB\u30D7\u30ED\u30D5\u30A1\u30A4\u30EB\u306B\u3042\u308B\u3053\u306E\u30B9\u30AD\u30EB\u306E\u8A55\u4FA1\
78
+ \u3082\u4E00\u7DD2\u306B\u6D88\u3048\u307E\u3059\uFF08\u53D6\u308A\u6D88\u305B\u307E\u305B\u3093\uFF09\u3002"],plan:input=>({method:"DELETE",path:skillPath(input)}),summarize:body=>acknowledgement(body,"\u30B9\u30AD\u30EB\u524A\u9664"),raw:body=>acknowledgement(body,"\u30B9\u30AD\u30EB\u524A\u9664"),notes:()=>[cacheNote(SKILL_LABEL)]};var REORDER_MAX_BYTES=1e6;var REORDER_USAGE="twp skill reorder --category <\u30AB\u30C6\u30B4\u30EA> --file <\u30D1\u30B9>";var REORDER_FILE_HELP='--file \u306B\u306F\u65B0\u3057\u3044\u4E26\u3073\u9806\u3092\
79
+ \u3001\u5148\u982D\u304B\u3089\u9806\u306B\u66F8\u304D\u307E\u3059\uFF08\u30B9\u30AD\u30EB\u306E ID\u30FB\u30B9\u30AD\u30EB\u30B3\u30FC\u30C9\u30FB\u540D\u524D\u306E\u3069\u308C\u3067\u3082\u53EF\uFF09:\n JSON: ["<\u30B9\u30AD\u30EB>", "<\u30B9\u30AD\u30EB>", \u2026] \u307E\u305F\u306F {"skill_ids": [...]}\n CSV / \u30C6\u30AD\u30B9\u30C8: 1\u884C\u306B1\u30B9\u30AD\u30EB\uFF082\u5217\u76EE\u4EE5\u964D\u306F\u8AAD\u307F\u307E\u305B\u3093\u3002\u30AB\u30F3\u30DE\u3092\u542B\u3080\u540D\u524D\u306F "" \u3067\u56F2\u307F\u307E\u3059\u30021\u884C\u76EE\u304C id / skill_id / name / \u30B9\u30AD\u30EB \u306A\u3089\u898B\u51FA\u3057\u3068\u3057\u3066\u8AAD\u307F\u98DB\u3070\u3057\u307E\u3059\uFF09\n\u30AB\u30C6\u30B4\u30EA\u5185\u306E\u30B9\u30AD\u30EB\u3092**\u904E\u4E0D\u8DB3\u306A\u304F**\u4E26\u3079\u3066\u304F\u3060\u3055\u3044\uFF08\u7121\u52B9\u5316\u3057\u305F\u30B9\u30AD\u30EB\u3082\u542B\u307F\u307E\u3059\u3002\u30B5\u30FC\u30D0\u306F\u4E00\u90E8\u3060\u3051\u306E\u4E26\u3073\u66FF\u3048\u3092\u65AD\u308A\u307E\u3059\uFF09\u3002';
80
+ function parseReorderFile(text){const trimmed=text.trim();let refs;try{const parsed=JSON.parse(trimmed);const list=Array.isArray(parsed)?parsed:isRecord(parsed)?parsed["skill_ids"]:void 0;if(!Array.isArray(list))throw new UsageError('--file \u306E JSON \u306F\u914D\u5217\u304B {"skill_ids": [...]} \u3067\u66F8\u3044\u3066\u304F\u3060\u3055\u3044',REORDER_FILE_HELP);refs=list}catch(err){if(err instanceof UsageError)throw err}if(refs===void 0){const lines=parseCsvRecords(trimmed).map(record=>(record.
81
+ cells[0]??"").trim());if(/^(id|skill_id|name|スキル)$/i.test(lines[0]??""))lines.shift();refs=lines.filter(row=>row!=="")}const problems=[];refs.forEach((ref,index)=>{if(typeof ref!=="string"||ref.trim()==="")problems.push(`${index+1} \u4EF6\u76EE\u304C\u7A7A\u304B\u6587\u5B57\u5217\u3067\u306F\u3042\u308A\u307E\u305B\u3093`)});if(refs.length===0)problems.push("\u30B9\u30AD\u30EB\u304C1\u4EF6\u3082\u3042\u308A\u307E\u305B\u3093");if(problems.length>0)throw new UsageError(`--file \u3092\u76F4\u3057\u3066\u304F\u3060\u3055\u3044:
82
+ ${problems.join("\n ")}`,REORDER_FILE_HELP);return refs.map(ref=>ref.trim())}function reorderPlan(input){return{method:"PUT",path:`${SKILLS_PATH}/reorder`,body:{category_id:requireResolved(input,"category_id"),skill_ids:JSON.parse(requireResolved(input,"skill_ids"))}}}function byDisplayOrder(rows){const order=row=>typeof row["sort_order"]==="number"?row["sort_order"]:Number.MAX_SAFE_INTEGER;return[...rows].sort((a,b)=>order(a)-order(b)||String(a["name"]??"").localeCompare(String(b["name"]??"")))}
83
+ function reorderPreview(current,next){const ordered=byDisplayOrder(current);const names=new Map(ordered.map(row=>[String(row["id"]),String(row["name"]??row["id"])]));const label=id=>`${names.get(id)??id}\uFF08${id}\uFF09`;const missing=ordered.map(row=>String(row["id"])).filter(id=>!next.includes(id));const unknown=next.filter(id=>!names.has(id));const duplicated=[...new Set(next.filter((id,index)=>next.indexOf(id)!==index))];const problems=[...missing.length>0?[`\u4E26\u3073\u306B\u7121\u3044\u30B9\u30AD\u30EB: ${missing.
84
+ map(label).join(" / ")}`]:[],...unknown.length>0?[`\u3053\u306E\u30AB\u30C6\u30B4\u30EA\u306B\u7121\u3044\u30B9\u30AD\u30EB: ${unknown.join(" / ")}`]:[],...duplicated.length>0?[`\u91CD\u8907\u3057\u3066\u3044\u308B\u30B9\u30AD\u30EB: ${duplicated.map(label).join(" / ")}`]:[]];if(problems.length>0){throw new UsageError(`\u30AB\u30C6\u30B4\u30EA\u306E\u30B9\u30AD\u30EB\u3068\u4E26\u3073\u304C\u4E00\u81F4\u3057\u306A\u3044\u305F\u3081\u9001\u308A\u307E\u305B\u3093:
85
+ ${problems.join("\n ")}`,REORDER_FILE_HELP)}const before=ordered.map(row=>String(row["id"]));const moved=next.filter((id,index)=>before.indexOf(id)!==index);if(moved.length===0)return{notes:["\u4ECA\u306E\u4E26\u3073\u3068\u540C\u3058\u3067\u3059\uFF08\u9001\u3063\u3066\u3082\u9806\u756A\u306F\u5909\u308F\u308A\u307E\u305B\u3093\uFF09\u3002"],warnings:[]};return{notes:[`\u4E26\u3073\u9806\u306E\u5909\u66F4: ${next.length} \u4EF6\u4E2D ${moved.length} \u4EF6\u306E\u4F4D\u7F6E\u304C\u5909\u308F\u308A\u307E\u3059\uFF08\u65B0\u3057\u3044\u9806\u30FB\u62EC\u5F27\u5185\u306F\u4ECA\u306E\u4F4D\u7F6E \u2192 \u65B0\u3057\u3044\u4F4D\u7F6E\uFF09:`,
86
+ ...next.map((id,index)=>` ${index+1}. ${names.get(id)??id}\uFF08${before.indexOf(id)+1} \u2192 ${index+1}\uFF09`)],warnings:[]}}var skillReorderOperation={name:"reorder",summary:"\u30AB\u30C6\u30B4\u30EA\u5185\u306E\u30B9\u30AD\u30EB\u306E\u4E26\u3073\u9806\u3092\u307E\u3068\u3081\u3066\u5909\u3048\u308B\uFF08\u7BA1\u7406\u8005\u306E\u307F\uFF09",usage:REORDER_USAGE,description:"PUT /api/v2/organization/skills/reorder\u3002\u753B\u9762\u306E\u30C9\u30E9\u30C3\u30B0\u3067\u306E\u4E26\u3073\u66FF\u3048\u3068\u540C\u3058\u64CD\u4F5C\u3067\u3001\u8868\u793A\u9806\u3092\u5148\u982D\u304B\u3089 100, 200, \u2026 \u306B\u632F\u308A\u76F4\u3057\u307E\u3059\u3002\n\u9001\u308B\u524D\u306B\u305D\u306E\u30AB\u30C6\u30B4\u30EA\u306E\u30B9\u30AD\u30EB\u4E00\u89A7\u3092 GET \u3057\u3001\u904E\u4E0D\u8DB3\
87
+ \u3092\u78BA\u304B\u3081\u3066\u4ECA\u306E\u4E26\u3073\u3068\u306E\u5DEE\u5206\u3092 stderr \u306B\u51FA\u3057\u307E\u3059\uFF08--dry-run \u3067\u3082\u51FA\u307E\u3059\uFF09\u3002\n\n"+REORDER_FILE_HELP,forbidden:ADMIN_FORBIDDEN(SKILL_LABEL),flags:[CATEGORY_FLAG,{name:"--file",summary:"\u65B0\u3057\u3044\u4E26\u3073\u9806\u306E\u30D5\u30A1\u30A4\u30EB\uFF08JSON / CSV / \u30C6\u30AD\u30B9\u30C8\uFF09",takesValue:true,placeholder:"<\u30D1\u30B9>"}],async prepare(input,ctx){if(input.args.length>0)
88
+ throw new UsageError(`reorder \u306F\u4F4D\u7F6E\u5F15\u6570\u3092\u53D6\u308A\u307E\u305B\u3093: ${input.args.join(" ")}`,REORDER_USAGE);const category=nonEmpty(input.flags,CATEGORY_FLAG.name);if(category===void 0)throw new UsageError("--category \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",REORDER_USAGE);const file=nonEmpty(input.flags,"--file");if(file===void 0)throw new UsageError("--file \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",`${REORDER_USAGE}
89
+ ${REORDER_FILE_HELP}`);const refs=parseReorderFile(readCsvFileText(file,REORDER_USAGE,REORDER_MAX_BYTES,size=>new UsageError(`--file \u304C\u5927\u304D\u3059\u304E\u307E\u3059\uFF08${size} \u30D0\u30A4\u30C8\u30FB\u4E0A\u9650 ${REORDER_MAX_BYTES} \u30D0\u30A4\u30C8\uFF09`,REORDER_USAGE)));const category_id=await categoryId(category,ctx);const ids=[];let candidates;for(const ref of refs){const id=ulidOr(ref);if(id!==void 0){ids.push(id);continue}candidates??=await ctx.resolver.skillsInCategory(category_id);
90
+ ids.push((await resolveNamed(ref,candidates,{flag:"--file",label:"\u30B9\u30AD\u30EB",scope:`\u30AB\u30C6\u30B4\u30EA\u300C${category}\u300D`})).id)}return withResolved(input,{category_id,skill_ids:JSON.stringify(ids)})},plan:reorderPlan,plannedNotes:()=>["\u3053\u306E\u524D\u306B\u3001\u30AB\u30C6\u30B4\u30EA\u306E\u30B9\u30AD\u30EB\u4E00\u89A7\u3092 GET \u3057\u3066\u4E26\u3073\u306E\u904E\u4E0D\u8DB3\u3068\u5DEE\u5206\u3092\u78BA\u304B\u3081\u307E\u3059\u3002"],rejected:server=>server.includes(
91
+ "\u4E00\u81F4\u3057\u307E\u305B\u3093")?"\u30AB\u30C6\u30B4\u30EA\u306E\u30B9\u30AD\u30EB\u304C\u5909\u308F\u3063\u305F\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\u3002--refresh \u3092\u4ED8\u3051\u3066\u3082\u3046\u4E00\u5EA6\u5B9F\u884C\u3057\u3001\u5DEE\u5206\u3092\u78BA\u304B\u3081\u3066\u304F\u3060\u3055\u3044\u3002":void 0,async preview(input,ctx){const body=await ctx.send({method:"GET",path:SKILLS_PATH,query:{category_id:requireResolved(input,"category_id")}});const rows=masterRows(body,
92
+ SKILL_LABEL).filter(isRecord);return reorderPreview(rows,JSON.parse(requireResolved(input,"skill_ids")))},summarize:body=>{const skills=isRecord(body)&&Array.isArray(body["skills"])?body["skills"].filter(isRecord):[];return skills.map(row=>pick(row,["sort_order","id","name"]))},raw:body=>{if(!isRecord(body)||body["result"]!==true||!Array.isArray(body["skills"])){throw new ApiResponseError("\u4E26\u3073\u66FF\u3048\u306E\u5FDC\u7B54\u306B skills \u914D\u5217\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002")}
93
+ return body["skills"]},notes:()=>[cacheNote(SKILL_LABEL)]};var CATEGORY_LIST_COLUMNS=["id","name","sort_order","is_active","department_scope","iso_standard"];var CATEGORY_DELETE_GUIDANCE="\uFF08\u672C\u756A\u3067\u306F\u30B5\u30FC\u30D0\u304C\u7406\u7531\u3092\u4F0F\u305B\u3066\u300C\u30B5\u30FC\u30D0\u30FC\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u300D\u3068\u8FD4\u3057\u307E\u3059\u3002\u3053\u306E\u30AB\u30C6\u30B4\u30EA\u3067\u306E 422 \u306F\u7D10\u3065\u304F\u30B9\u30AD\u30EB\u304C\u6B8B\u3063\u3066\u3044\u308B\u3068\u304D\u3060\u3051\u3067\u3059\uFF09\n\u30B9\u30AD\u30EB\u304C1\u4EF6\u3067\u3082\u7D10\u3065\u3044\u3066\u3044\u308B\u30AB\u30C6\u30B4\u30EA\uFF08\u7121\u52B9\u5316\u3057\u305F\u30B9\u30AD\u30EB\u3092\u542B\u3080\uFF09\u306F\u524A\u9664\u3067\u304D\u307E\u305B\u3093\u3002twp skill update <\u30B9\u30AD\u30EB> --category <\u5225\u306E\u30AB\u30C6\u30B4\u30EA> \u3067\u79FB\u3059\u304B\u524A\u9664\u3057\u3066\u304B\u3089\u5B9F\u884C\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n\u4ECA\u5F8C\u4F7F\u308F\u306A\u3044\u3060\u3051\u306A\u3089\u3001\u524A\u9664\u305B\u305A\u306B\u7121\u52B9\u5316\u3057\u3066\u304F\u3060\u3055\u3044: twp skill category update <\u30AB\u30C6\u30B4\u30EA> --active false";
94
+ var categoryResource={name:"category",summary:"\u30B9\u30AD\u30EB\u30AB\u30C6\u30B4\u30EA\uFF08\u4E00\u89A7\u30FB\u53D6\u5F97\u30FB\u4F5C\u6210\u30FB\u66F4\u65B0\u30FB\u524A\u9664\uFF09",operations:[{name:"list",summary:"\u30B9\u30AD\u30EB\u30AB\u30C6\u30B4\u30EA\u3092\u4E00\u89A7\u3059\u308B\uFF08\u7121\u52B9\u5316\u3057\u305F\u3082\u306E\u3092\u542B\u3080\uFF09",usage:"twp skill category list [--active <true|false>] [--keyword <\u8A9E>]",description:`GET /api/v2/organization/skill-categories\u3002\u30DA\
95
+ \u30FC\u30B8\u30F3\u30B0\u3092\u6301\u305F\u305A\u3001\u5E38\u306B\u5168\u4EF6\u3092\u8FD4\u3057\u307E\u3059\u3002
96
+ --keyword \u306F\u540D\u524D\u30FB\u8AAC\u660E\u306E\u90E8\u5206\u4E00\u81F4\u3067\u3059\u3002\u6709\u52B9\u306A\u30AB\u30C6\u30B4\u30EA\u3068\u30B9\u30AD\u30EB\u3060\u3051\u3092\u307E\u3068\u3081\u3066\u898B\u308B\u306A\u3089 twp skill list \u3067\u3059\u3002
97
+
98
+ --output table / text / tsv \u306F\u8981\u7D04\u5217\uFF08${CATEGORY_LIST_COLUMNS.join(" / ")}\uFF09\u3067\u3059\u3002`,flags:[{name:"--active",summary:"\u6709\u52B9\uFF08true\uFF09\uFF0F\u7121\u52B9\uFF08false\uFF09\u3067\u7D5E\u308A\u8FBC\u3080",takesValue:true,placeholder:"<true|false>"},{name:"--keyword",summary:"\u540D\u524D\u30FB\u8AAC\u660E\u306E\u90E8\u5206\u4E00\u81F4\u3067\u7D5E\u308A\u8FBC\u3080",takesValue:true,placeholder:"<\u8A9E>"}],plan(input){noArgs(input,"twp skill category lis\
99
+ t help");const active=input.flags.get("--active");const isActive=active===void 0?void 0:fieldBody(input,[ACTIVE_FIELD])["is_active"]===true?"1":"0";return{method:"GET",path:SKILL_CATEGORIES_PATH,query:{is_active:isActive,keyword:nonEmpty(input.flags,"--keyword")}}},summarize:body=>masterRows(body,CATEGORY_LABEL).map(row=>pick(row,CATEGORY_LIST_COLUMNS)),raw:body=>masterRows(body,CATEGORY_LABEL)},{name:"get",summary:"\u30B9\u30AD\u30EB\u30AB\u30C6\u30B4\u30EA1\u4EF6\u306E\u8A73\u7D30\u3092\u8868\u793A\u3059\u308B",
100
+ usage:"twp skill category get <\u30AB\u30C6\u30B4\u30EA>",description:`GET /api/v2/organization/skill-categories/{id}\u3002
101
+
102
+ ${CATEGORY_REF_HELP}`,flags:[CATEGORY_REF_FLAG],prepare:(input,ctx)=>prepareCategoryTarget(input,ctx,"twp skill category get help"),plan:input=>({method:"GET",path:categoryPath(input)}),summarize:body=>pick(categoryItem(body),CATEGORY_COLUMNS),raw:body=>categoryItem(body)},{name:"create",summary:"\u30B9\u30AD\u30EB\u30AB\u30C6\u30B4\u30EA\u3092\u4F5C\u6210\u3059\u308B\uFF08\u7BA1\u7406\u8005\u306E\u307F\uFF09",usage:"twp skill category create --name <\u30AB\u30C6\u30B4\u30EA\u540D> [\u9805\u76EE\u2026]",
103
+ description:"POST /api/v2/organization/skill-categories\u3002--name \u304C\u5FC5\u9808\u3067\u3059\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",forbidden:ADMIN_FORBIDDEN(CATEGORY_LABEL),flags:createFlags(CATEGORY_FIELDS),async prepare(input){noArgs(input,"twp skill category create help");if(fieldBody(input,CATEGORY_FIELDS)["name"]===void 0)throw new UsageError("--name \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",
104
+ "twp skill category create help");return input},plan:input=>({method:"POST",path:SKILL_CATEGORIES_PATH,body:fieldBody(input,CATEGORY_FIELDS)}),summarize:body=>pick(categoryItem(body),CATEGORY_COLUMNS),raw:body=>categoryItem(body),notes:()=>[cacheNote(CATEGORY_LABEL)]},{name:"update",summary:"\u30B9\u30AD\u30EB\u30AB\u30C6\u30B4\u30EA\u3092\u66F4\u65B0\u3059\u308B\uFF08\u7BA1\u7406\u8005\u306E\u307F\uFF09",usage:"twp skill category update <\u30AB\u30C6\u30B4\u30EA> [\u9805\u76EE\u2026]",description:`\
105
+ PUT /api/v2/organization/skill-categories/{id}\u3002\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
106
+ \u5909\u66F4\u3059\u308B\u9805\u76EE\u30921\u3064\u3082\u6307\u5B9A\u3057\u306A\u3044\u3068\u30A8\u30E9\u30FC\u306B\u306A\u308A\u307E\u3059\u3002
107
+
108
+ ${CATEGORY_REF_HELP}`,forbidden:ADMIN_FORBIDDEN(CATEGORY_LABEL),flags:[...updateFlags(CATEGORY_FIELDS),CATEGORY_REF_FLAG],async prepare(input,ctx){if(!hasAnyField(input,CATEGORY_FIELDS))throw new UsageError("\u5909\u66F4\u3059\u308B\u9805\u76EE\u30921\u3064\u4EE5\u4E0A\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044","twp skill category update help");fieldBody(input,CATEGORY_FIELDS);return prepareCategoryTarget(input,ctx,"twp skill category update help")},plan:input=>({method:"PUT",path:categoryPath(
109
+ input),body:fieldBody(input,CATEGORY_FIELDS)}),summarize:body=>pick(categoryItem(body),CATEGORY_COLUMNS),raw:body=>categoryItem(body),notes:()=>[cacheNote(CATEGORY_LABEL)]},{name:"delete",summary:"\u30B9\u30AD\u30EB\u30AB\u30C6\u30B4\u30EA\u3092\u524A\u9664\u3059\u308B\uFF08\u7BA1\u7406\u8005\u306E\u307F\u30FB--yes \u304C\u8981\u308B\uFF09",usage:"twp skill category delete <\u30AB\u30C6\u30B4\u30EA> --yes",description:`DELETE /api/v2/organization/skill-categories/{id}\u3002
110
+ ${CATEGORY_DELETE_GUIDANCE}
111
+
112
+ ${CATEGORY_REF_HELP}`,destructive:true,forbidden:ADMIN_FORBIDDEN(CATEGORY_LABEL),rejected:()=>CATEGORY_DELETE_GUIDANCE,flags:[CATEGORY_REF_FLAG],prepare:(input,ctx)=>prepareCategoryTarget(input,ctx,"twp skill category delete help"),plan:input=>({method:"DELETE",path:categoryPath(input)}),summarize:body=>acknowledgement(body,"\u30B9\u30AD\u30EB\u30AB\u30C6\u30B4\u30EA\u524A\u9664"),raw:body=>acknowledgement(body,"\u30B9\u30AD\u30EB\u30AB\u30C6\u30B4\u30EA\u524A\u9664"),notes:()=>[cacheNote(CATEGORY_LABEL)]}]};
113
+ var skillDomain={name:"skill",summary:"\u30B9\u30AD\u30EB\u30DE\u30B9\u30BF\u306E\u4E00\u89A7\u30FB\u7BA1\u7406\u30FB\u4E26\u3073\u66FF\u3048\u3001\u30B9\u30AD\u30EB\u30DE\u30C3\u30D7\u30FB\u30B9\u30AD\u30EB\u4FDD\u6709\u8005\u306E\u6A2A\u65AD\u691C\u7D22\u30FB\u81EA\u5DF1\u8A55\u4FA1\u306E\u63D0\u51FA",operations:[listOperation,skillGetOperation,skillCreateOperation,skillUpdateOperation,skillDeleteOperation,skillReorderOperation,mapOperation,whoOperation,selfEvaluateOperation],subresources:[categoryResource]};
114
+ var QUALIFICATION_COLUMNS=["id","name","abbreviation","category","difficulty","is_recommended","is_active"];var qualificationDomain={name:"qualification",summary:"\u8CC7\u683C\u30DE\u30B9\u30BF\u306E\u4E00\u89A7",operations:[{name:"list",summary:"\u8CC7\u683C\u30DE\u30B9\u30BF\u3092\u4E00\u89A7\u3059\u308B",usage:"twp qualification list [--keyword <\u8A9E>] [--recommended] [--category <\u5206\u985E>] [--difficulty <\u96E3\u6613\u5EA6>]",description:"GET /api/v2/organization/qualifications\u3002\u30DA\u30FC\u30B8\u30F3\u30B0\u3092\
115
+ \u6301\u305F\u305A\u3001\u5E38\u306B\u5168\u4EF6\u3092\u8FD4\u3057\u307E\u3059\u3002\n--recommended \u306F\u63A8\u5968\u8CC7\u683C\u3060\u3051\u306B\u7D5E\u308A\u307E\u3059\u3002--category / --difficulty \u306F\u30B5\u30FC\u30D0\u306E\u5024\u3092\u305D\u306E\u307E\u307E\u6E21\u3057\u307E\u3059\n\uFF08\u4F8B: --category technical / --difficulty C\uFF09\u3002\u5024\u306E\u4E00\u89A7\u306F --output json \u306E category / difficulty \u3067\u78BA\u8A8D\u3067\u304D\u307E\u3059\u3002\n\u30E6\u30FC\u30B6\u30FC\u3054\u3068\u306E\u4FDD\u6709\u8CC7\u683C\u306F twp user qualifications <\u30E6\u30FC\u30B6\u30FC> \u3067\u3059\u3002",
116
+ flags:[{name:"--keyword",summary:"\u8CC7\u683C\u540D\u306E\u90E8\u5206\u4E00\u81F4\u3067\u7D5E\u308A\u8FBC\u3080",takesValue:true,placeholder:"<\u8A9E>"},{name:"--recommended",summary:"\u63A8\u5968\u8CC7\u683C\u3060\u3051\u3092\u51FA\u3059",takesValue:false},{name:"--category",summary:"\u5206\u985E\u3067\u7D5E\u308A\u8FBC\u3080\uFF08\u30B5\u30FC\u30D0\u306E\u5024\u30FB\u4F8B: technical\uFF09",takesValue:true,placeholder:"<\u5206\u985E>"},{name:"--difficulty",summary:"\u96E3\u6613\u5EA6\u3067\u7D5E\u308A\u8FBC\u3080\uFF08\u30B5\u30FC\u30D0\u306E\u5024\u30FB\u4F8B: C\uFF09",
117
+ takesValue:true,placeholder:"<\u96E3\u6613\u5EA6>"}],plan(input){noArgs(input,"twp qualification list help");return{method:"GET",path:QUALIFICATIONS_PATH,query:{keyword:nonEmpty(input.flags,"--keyword"),is_recommended:input.flags.has("--recommended")?"true":void 0,category:nonEmpty(input.flags,"--category"),difficulty:nonEmpty(input.flags,"--difficulty")}}},summarize:body=>qualificationRows(body).map(row=>pick(row,QUALIFICATION_COLUMNS)),raw:body=>qualificationRows(body)}]};export{groupedSkillRows,skillMatrix,skillNames,FISCAL_YEAR_FLAG,fiscalYear,matchSkill,parseSelfEvaluation,parseReorderFile,reorderPreview,skillDomain,qualificationDomain};
@@ -1,7 +1,7 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{salesAdminForbidden}from"./chunk-Z6T5M3NJ.js";import{featureLicenseGuidance,licenseForbidden}from"./chunk-BBOWZVCC.js";import{booleanText,boundedText}from"./chunk-JJSBBWJ5.js";import{LIST_PAGING_HELP,PAGE_NUMBER_LIST_FLAGS,nonEmpty,pageNumberPaging,pageNumberQuery,pageRangeNotes}from"./chunk-MI6HVYR2.js";import{repeatedValues}from"./chunk-RX5HWI4L.js";import{SALES_ESTIMATE_FORMATS_PATH,SALES_ESTIMATE_NO_RULES_PATH,SALES_INVOICE_NO_RULES_PATH,SALES_PURCHASE_NO_RULES_PATH,
4
- SALES_ROUNDING_SETTING_PATH,isExactNumericId}from"./chunk-MVZFZAT4.js";import{requireResolved,withResolved}from"./chunk-PS5QFKHB.js";import{acknowledgement,isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";var INT_MAX=2147483647;var MEMBER_FORBIDDEN=licenseForbidden(featureLicenseGuidance("\u8CA9\u58F2\u7BA1\u7406"));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`);return body}function recordOf(body,what){const data=envelope(body,what)["data"];if(!isRecord(data)||typeof data["id"]!==
3
+ import{salesAdminForbidden}from"./chunk-5SPWQAUX.js";import{featureLicenseGuidance,licenseForbidden}from"./chunk-MNJYY3PR.js";import{booleanText,boundedText}from"./chunk-JJSBBWJ5.js";import{LIST_PAGING_HELP,PAGE_NUMBER_LIST_FLAGS,nonEmpty,pageNumberPaging,pageNumberQuery,pageRangeNotes}from"./chunk-MI6HVYR2.js";import{repeatedValues}from"./chunk-RX5HWI4L.js";import{SALES_ESTIMATE_FORMATS_PATH,SALES_ESTIMATE_NO_RULES_PATH,SALES_INVOICE_NO_RULES_PATH,SALES_PURCHASE_NO_RULES_PATH,
4
+ SALES_ROUNDING_SETTING_PATH,isExactNumericId}from"./chunk-4B6GJBYP.js";import{requireResolved,withResolved}from"./chunk-PS5QFKHB.js";import{acknowledgement,isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";var INT_MAX=2147483647;var MEMBER_FORBIDDEN=licenseForbidden(featureLicenseGuidance("\u8CA9\u58F2\u7BA1\u7406"));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`);return body}function recordOf(body,what){const data=envelope(body,what)["data"];if(!isRecord(data)||typeof data["id"]!==
5
5
  "string")throw new ApiResponseError(`${what}\u306E\u5FDC\u7B54\u306B data.id \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`);return data}function serverMessage(body){const message=isRecord(body)?body["message"]:void 0;return typeof message==="string"&&message!==""?[message]:[]}function text(value){return typeof value==="string"||typeof value==="number"?String(value):""}function integerValue(flag,raw,min,max=INT_MAX){const trimmed=raw.
6
6
  trim();const value=/^\d+$/.test(trimmed)?Number(trimmed):Number.NaN;if(!Number.isSafeInteger(value)||value<min||value>max)throw new UsageError(`${flag} \u306F ${min} \u4EE5\u4E0A ${max} \u4EE5\u4E0B\u306E\u6574\u6570\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044: ${raw}`);return value}var RULE_COLUMNS=["id","rule_name","prefix","digit_count","current_number","count_up_num","next_number","sort_order"];function nextNumber(rule,purchaseFormat){const current=rule["current_number"];const step=rule["\
7
7
  count_up_num"]??1;const digits=rule["digit_count"];if(typeof current!=="number"||typeof step!=="number"||typeof digits!=="number")return void 0;const width=purchaseFormat&&digits===0?4:digits;const padded=String(current+step).padStart(width,"0");const prefix=rule["prefix"];if(purchaseFormat)return`${prefix===null||prefix===void 0?"2000":text(prefix)}${padded}`;return typeof prefix==="string"&&prefix!==""&&prefix!=="0"?`${prefix}${padded}`:padded}function withNext(spec,row){const next=nextNumber(
@@ -0,0 +1,4 @@
1
+ import { createRequire as __twpCreateRequire } from 'node:module';
2
+ const require = __twpCreateRequire(import.meta.url);
3
+ var DOMAIN_NAMES=["agent","agent-loop","ai-review-reason","analysis","announcement","attendance","backlog","budget","business-hours","business-place","company","contract","customer","department","deposit","estimate","evaluation","expense","fiscal-year","goal-sheet","holiday","inquiry","invoice","job-title","knowledge","leave","license","media","meeting","note","notification","onedrive","outlook","payee","position","project","prospect","purchase","qualification","receivable","redmine","report","r\
4
+ ounding-setting","seal-impression","search","segment","shift","skill","storage","supplier-payment","support","task","teams","user","user-contract-type","wiki","workchange","worker-agent","workflow"];function isDomainName(value){return value!==void 0&&DOMAIN_NAMES.includes(value)}var HELP_TOKEN="help";var API_TOKEN="api";export{DOMAIN_NAMES,isDomainName,HELP_TOKEN,API_TOKEN};
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{hoursMinutes}from"./chunk-DAXVAUV4.js";import{dateFlag,monthFlag}from"./chunk-EXT4AIDF.js";import{repeatedValues}from"./chunk-RX5HWI4L.js";import{requireResolved,withResolved}from"./chunk-PS5QFKHB.js";import{isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";var ANALYSIS_PATH="/api/v2/analysis";var ACCESSIBLE_PAGES_HINT="\u958B\u3051\u308B\u5206\u6790\u30DA\u30FC\u30B8\u306F twp api /api/v2/analysis/accessible-pages \u3067\u78BA\u8A8D\u3067\u304D\u307E\u3059\u3002";var LICENSE_GUIDANCE="\u5206\u6790\u3092\u4F7F\u3046\u6A29\u9650\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u30C6\u30CA\u30F3\u30C8\u304C\u5206\u6790\u3092\u5951\u7D04\u3057\u3066\u3044\u306A\u3044\u304B\u3001\u3042\u306A\u305F\u306E\u5206\u6790\u306E\u6A29\u9650\u304C\u300C\u306A\u3057\u300D\u306B\u306A\u3063\u3066\u3044\u307E\u3059\u3002\u30C6\u30CA\u30F3\u30C8\u7BA1\u7406\u8005\u306B\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002";
3
+ import{hoursMinutes}from"./chunk-2YVJ3QVJ.js";import{dateFlag,monthFlag}from"./chunk-EXT4AIDF.js";import{repeatedValues}from"./chunk-RX5HWI4L.js";import{requireResolved,withResolved}from"./chunk-PS5QFKHB.js";import{isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";var ANALYSIS_PATH="/api/v2/analysis";var ACCESSIBLE_PAGES_HINT="\u958B\u3051\u308B\u5206\u6790\u30DA\u30FC\u30B8\u306F twp api /api/v2/analysis/accessible-pages \u3067\u78BA\u8A8D\u3067\u304D\u307E\u3059\u3002";var LICENSE_GUIDANCE="\u5206\u6790\u3092\u4F7F\u3046\u6A29\u9650\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u30C6\u30CA\u30F3\u30C8\u304C\u5206\u6790\u3092\u5951\u7D04\u3057\u3066\u3044\u306A\u3044\u304B\u3001\u3042\u306A\u305F\u306E\u5206\u6790\u306E\u6A29\u9650\u304C\u300C\u306A\u3057\u300D\u306B\u306A\u3063\u3066\u3044\u307E\u3059\u3002\u30C6\u30CA\u30F3\u30C8\u7BA1\u7406\u8005\u306B\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002";
4
4
  var PAGE_GUIDANCE=`\u3053\u306E\u5206\u6790\u30DA\u30FC\u30B8\u306E\u95B2\u89A7\u5BFE\u8C61\u306B\u542B\u307E\u308C\u3066\u3044\u307E\u305B\u3093\u3002\u5206\u6790\u306E\u7BA1\u7406\u8005\u306B\u5BFE\u8C61\u3078\u306E\u8FFD\u52A0\u3092\u4F9D\u983C\u3057\u3066\u304F\u3060\u3055\u3044\u3002${ACCESSIBLE_PAGES_HINT}`;var PAGE_DENIED_MARK="\u5206\u6790\u30DA\u30FC\u30B8";function analysisForbidden(levelGuidance2){return body=>{if(body?.error==="permission_denied"){const text=body.error_description??"";
5
5
  if(text.includes(PAGE_DENIED_MARK))return PAGE_GUIDANCE;if(text.includes("\u3053\u306E\u6A5F\u80FD"))return LICENSE_GUIDANCE;return void 0}if(body?.error==="forbidden")return levelGuidance2;return void 0}}function levelGuidance(page,features){return`${page}\u3092\u958B\u304F\u6A29\u9650\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u5206\u6790\u62C5\u5F53\u8005\u30D5\u30E9\u30B0\u3001\u307E\u305F\u306F${features}\u306E\u6A29\u9650\uFF08\u300C\u306A\u3057\u300D\u4EE5\u5916\uFF09\u304C\u8981\u308A\u307E\u3059\u3002\u30C6\u30CA\u30F3\u30C8\u7BA1\u7406\u8005\u306B\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`}
6
6
  var FROM_FLAG={name:"--from",summary:"\u958B\u59CB\u306E\u5E74\u6708\uFF08YYYY-MM\uFF09",takesValue:true,placeholder:"<YYYY-MM>"};var TO_FLAG={name:"--to",summary:"\u7D42\u4E86\u306E\u5E74\u6708\uFF08YYYY-MM\uFF09",takesValue:true,placeholder:"<YYYY-MM>"};var MONTH_FLAG={name:"--month",summary:"1\u304B\u6708\u3060\u3051\uFF08YYYY-MM\uFF09\u3002--from / --to \u3068\u306F\u4F75\u7528\u4E0D\u53EF",takesValue:true,placeholder:"<YYYY-MM>"};var YEAR_FLAG={name:"--year",summary:"1\u5E74\u5206\uFF081\u301C12\u6708\u30FBYYYY\uFF09\u3002--from \
package/dist/cli.js CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire as __twpCreateRequire } from 'node:module';
3
3
  const require = __twpCreateRequire(import.meta.url);
4
- import{GLOBAL_OPTIONS_HELP}from"./chunk-PECIBNFD.js";import{parseArgv}from"./chunk-T3C2BAVA.js";import"./chunk-2LOT54OO.js";import"./chunk-35MQ27I6.js";import"./chunk-QQRJLH6B.js";import"./chunk-VSJBJXZO.js";var VERSION=true?"0.72.0":"0.0.0-dev";var HELP=`twp ${VERSION} \u2014 TWP CLI
4
+ import{GLOBAL_OPTIONS_HELP}from"./chunk-PECIBNFD.js";import{parseArgv}from"./chunk-QQCWGMZN.js";import"./chunk-2LOT54OO.js";import"./chunk-W4E4F2ZA.js";import"./chunk-QQRJLH6B.js";import"./chunk-VSJBJXZO.js";var VERSION=true?"0.74.0":"0.0.0-dev";var HELP=`twp ${VERSION} \u2014 TWP CLI
5
5
 
6
6
  \u4F7F\u3044\u65B9:
7
7
  twp \u5BFE\u8A71 TUI \u3092\u8D77\u52D5
@@ -690,6 +690,24 @@ import{GLOBAL_OPTIONS_HELP}from"./chunk-PECIBNFD.js";import{parseArgv}from"./chu
690
690
  twp user contracts <\u30E6\u30FC\u30B6\u30FC>
691
691
  \u96C7\u7528\u5951\u7D04\u306E\u5C65\u6B74\u3092\u51FA\u3059\uFF08\u539F\u4FA1\u7BA1\u7406\u8005\u30FB\u7BA1\u7406\u8005\u306E\u307F\uFF09
692
692
  twp skill list \u30B9\u30AD\u30EB\u30DE\u30B9\u30BF\u3092\u30AB\u30C6\u30B4\u30EA\u5225\u306B\u4E00\u89A7\u3059\u308B
693
+ twp skill get <\u30B9\u30AD\u30EB> \u30B9\u30AD\u30EB1\u4EF6\u306E\u8A73\u7D30\u3092\u8868\u793A\u3059\u308B
694
+ twp skill create --category <\u30AB\u30C6\u30B4\u30EA> --name <\u540D\u524D>
695
+ \u30B9\u30AD\u30EB\u3092\u4F5C\u6210\u3059\u308B\uFF08\u7BA1\u7406\u8005\u306E\u307F\uFF09
696
+ twp skill update <\u30B9\u30AD\u30EB>
697
+ \u30B9\u30AD\u30EB\u3092\u66F4\u65B0\u3059\u308B\uFF08--category \u3067\u5225\u30AB\u30C6\u30B4\u30EA\u3078\u79FB\u3059\u30FB\u7BA1\u7406\u8005\u306E\u307F\uFF09
698
+ twp skill delete <\u30B9\u30AD\u30EB>
699
+ \u30B9\u30AD\u30EB\u3092\u524A\u9664\u3059\u308B\uFF08\u8A55\u4FA1\u306E\u8A18\u9332\u304B\u3089\u3082\u6D88\u3048\u308B\u30FB--yes \u304C\u8981\u308B\u30FB\u7BA1\u7406\u8005\u306E\u307F\uFF09
700
+ twp skill reorder --category <\u30AB\u30C6\u30B4\u30EA> --file <\u30D1\u30B9>
701
+ \u30AB\u30C6\u30B4\u30EA\u5185\u306E\u30B9\u30AD\u30EB\u306E\u4E26\u3073\u9806\u3092\u307E\u3068\u3081\u3066\u5909\u3048\u308B\uFF08--dry-run \u3067\u5DEE\u5206\u3060\u3051\u898B\u308B\u30FB\u7BA1\u7406\u8005\u306E\u307F\uFF09
702
+ twp skill category list \u30B9\u30AD\u30EB\u30AB\u30C6\u30B4\u30EA\u3092\u4E00\u89A7\u3059\u308B\uFF08\u7121\u52B9\u5316\u3057\u305F\u3082\u306E\u3092\u542B\u3080\uFF09
703
+ twp skill category get <\u30AB\u30C6\u30B4\u30EA>
704
+ \u30B9\u30AD\u30EB\u30AB\u30C6\u30B4\u30EA1\u4EF6\u306E\u8A73\u7D30\u3092\u8868\u793A\u3059\u308B
705
+ twp skill category create --name <\u540D\u524D>
706
+ \u30B9\u30AD\u30EB\u30AB\u30C6\u30B4\u30EA\u3092\u4F5C\u6210\u3059\u308B\uFF08\u7BA1\u7406\u8005\u306E\u307F\uFF09
707
+ twp skill category update <\u30AB\u30C6\u30B4\u30EA>
708
+ \u30B9\u30AD\u30EB\u30AB\u30C6\u30B4\u30EA\u3092\u66F4\u65B0\u3059\u308B\uFF08\u7BA1\u7406\u8005\u306E\u307F\uFF09
709
+ twp skill category delete <\u30AB\u30C6\u30B4\u30EA>
710
+ \u30B9\u30AD\u30EB\u30AB\u30C6\u30B4\u30EA\u3092\u524A\u9664\u3059\u308B\uFF08\u30B9\u30AD\u30EB\u304C\u6B8B\u3063\u3066\u3044\u308C\u3070\u65AD\u3089\u308C\u308B\u30FB--yes \u304C\u8981\u308B\uFF09
693
711
  twp skill map \u30B9\u30AD\u30EB\u30DE\u30C3\u30D7\u3092\u8868\u793A\u3059\u308B\uFF08--department \u3067\u90E8\u7F72\u3092\u7D5E\u308B\u30FBHR\u7BA1\u7406\u8005\u306E\u307F\uFF09
694
712
  twp skill who --skill <\u30B9\u30AD\u30EB>
695
713
  \u30B9\u30AD\u30EB\u3092\u6301\u3064\u4EBA\u3092\u6240\u5C5E\u4ED8\u304D\u3067\u51FA\u3059\uFF08--min-level\u30FBHR\u7BA1\u7406\u8005\u306E\u307F\uFF09
@@ -749,6 +767,22 @@ import{GLOBAL_OPTIONS_HELP}from"./chunk-PECIBNFD.js";import{parseArgv}from"./chu
749
767
  \u4E8B\u696D\u5E74\u5EA6\u8A2D\u5B9A\u3092\u66F4\u65B0\u3059\u308B\uFF08\u7BA1\u7406\u8005\u306E\u307F\uFF09
750
768
  twp fiscal-year delete <\u5E74\u5EA6>
751
769
  \u4E8B\u696D\u5E74\u5EA6\u8A2D\u5B9A\u3092\u524A\u9664\u3059\u308B\uFF08--yes \u304C\u8981\u308B\u30FB\u7BA1\u7406\u8005\u306E\u307F\uFF09
770
+ twp holiday list \u795D\u65E5\u3092\u4E00\u89A7\u3059\u308B\uFF08--year\uFF09
771
+ twp holiday create <\u65E5\u4ED8>
772
+ \u795D\u65E5\u3092\u767B\u9332\u3059\u308B\uFF08--name\u30FB--yes \u304C\u8981\u308B\u30FB\u7BA1\u7406\u8005\u306E\u307F\uFF09
773
+ twp holiday update <\u65E5\u4ED8>
774
+ \u795D\u65E5\u306E\u540D\u524D\u3092\u5909\u3048\u308B\uFF08--yes \u304C\u8981\u308B\u30FB\u7BA1\u7406\u8005\u306E\u307F\uFF09
775
+ twp holiday delete <\u65E5\u4ED8>
776
+ \u795D\u65E5\u3092\u524A\u9664\u3059\u308B\uFF08--yes \u304C\u8981\u308B\u30FB\u7BA1\u7406\u8005\u306E\u307F\uFF09
777
+ twp holiday business-days --from <\u65E5\u4ED8> --to <\u65E5\u4ED8>
778
+ \u671F\u9593\u306E\u55B6\u696D\u65E5\u6570\u3092\u6570\u3048\u308B
779
+ twp holiday export --out <\u30D1\u30B9>
780
+ \u795D\u65E5\u3092 CSV \u306B\u66F8\u304D\u51FA\u3059\uFF08\u7BA1\u7406\u8005\u306E\u307F\uFF09
781
+ twp holiday import --file <CSV>
782
+ \u795D\u65E5\u3092 CSV \u3067\u53D6\u308A\u8FBC\u3080\uFF08--yes \u304C\u8981\u308B\u30FB--dry-run \u3067\u5DEE\u5206\u30FB\u7BA1\u7406\u8005\u306E\u307F\uFF09
783
+ twp business-hours get \u55B6\u696D\u65E5\u30FB\u55B6\u696D\u6642\u9593\u3092\u8868\u793A\u3059\u308B\uFF08\u7BA1\u7406\u8005\u306E\u307F\uFF09
784
+ twp business-hours set --day <\u66DC\u65E5>=<HH:MM>-<HH:MM>|off
785
+ \u55B6\u696D\u65E5\u30FB\u55B6\u696D\u6642\u9593\u3092\u5909\u3048\u308B\uFF08--yes \u304C\u8981\u308B\u30FB--dry-run \u3067\u5DEE\u5206\u30FB\u7BA1\u7406\u8005\u306E\u307F\uFF09
752
786
  twp evaluation list \u898B\u3066\u3088\u3044\u7BC4\u56F2\u306E\u4EBA\u4E8B\u8A55\u4FA1\u3092\u4E00\u89A7\u3059\u308B\uFF08--period\u30FB--status\uFF09
753
787
  twp evaluation subordinates --period <\u8A55\u4FA1\u671F\u9593ID>
754
788
  \u8A55\u4FA1\u8005\u3068\u3057\u3066\u6301\u3064\u90E8\u4E0B\u3068\u8A55\u4FA1\u306E\u72B6\u614B\u3092\u4E00\u89A7\u3059\u308B
@@ -838,8 +872,10 @@ import{GLOBAL_OPTIONS_HELP}from"./chunk-PECIBNFD.js";import{parseArgv}from"./chu
838
872
  \u81EA\u5206\u306E\u30EC\u30DD\u30FC\u30C8\u306B AI \u306E\u30A2\u30C9\u30D0\u30A4\u30B9\u3092\u3082\u3089\u3046\uFF08AI \u30AF\u30EC\u30B8\u30C3\u30C8\u3092\u6D88\u8CBB\u30FB--yes \u304C\u8981\u308B\uFF09
839
873
  twp wiki list \u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E wiki \u30DA\u30FC\u30B8\u3092\u4E00\u89A7\u3059\u308B\uFF08--parent \u3067\u89AA\u30DA\u30FC\u30B8\u76F4\u4E0B\uFF09
840
874
  twp wiki get <\u30DA\u30FC\u30B8ID> wiki \u30DA\u30FC\u30B81\u4EF6\u306E\u8A73\u7D30\u3092\u8868\u793A\u3059\u308B\uFF08--output text \u3067\u672C\u6587\u3092\u8AAD\u3080\uFF09
875
+ --outline \u3067\u898B\u51FA\u3057\u306E\u4E00\u89A7\u3001--section <\u898B\u51FA\u3057> \u3067\u305D\u306E\u7BC0\u3060\u3051
841
876
  twp wiki tree wiki \u30DA\u30FC\u30B8\u306E\u89AA\u5B50\u69CB\u9020\u3092\u51FA\u3059\uFF08\u672C\u6587\u306F\u51FA\u3055\u306A\u3044\uFF09
842
877
  twp wiki tags wiki \u30DA\u30FC\u30B8\u306B\u4ED8\u3044\u3066\u3044\u308B\u30BF\u30B0\u3092\u51FA\u3059
878
+ twp wiki digest wiki \u306E\u7D22\u5F15\uFF08\u4EF6\u540D\u30FBID\u30FB\u5192\u982D\u306E\u6BB5\u843D\u30FB\u30BF\u30B0\u30FB\u66F4\u65B0\u65E5\u30FB\u7248\uFF09\u30921\u56DE\u3067\u51FA\u3059
843
879
  twp wiki versions <\u30DA\u30FC\u30B8ID>
844
880
  wiki \u30DA\u30FC\u30B8\u306E\u7248\u306E\u5C65\u6B74\u3092\u65B0\u3057\u3044\u9806\u306B\u51FA\u3059
845
881
  twp wiki version <\u30DA\u30FC\u30B8ID> <\u7248>
@@ -1292,16 +1328,16 @@ TUI \u5185:
1292
1328
  TWP API \u3092\u547C\u3079\u307E\u3059\u3002TWP API \u306E\u30C4\u30FC\u30EB\u306F\u65E2\u5B9A\u3067\u78BA\u8A8D\u304C\u51FA\u307E\u3059\uFF08-p \u3067\u306F\u62D2\u5426\u3002--allowed-tools \u3067\u540D\u524D\u3092\u8A31\u53EF\uFF09\u3002
1293
1329
  \u4F1A\u8A71\u30FB\u30ED\u30FC\u30AB\u30EB\u30C4\u30FC\u30EB\uFF08\u30D5\u30A1\u30A4\u30EB\u30FB\u30B3\u30DE\u30F3\u30C9\u30FBgit\uFF09\u306F\u30C6\u30CA\u30F3\u30C8\u306E\u30AF\u30EC\u30B8\u30C3\u30C8\u3067\u5B9F\u969B\u306B\u52D5\u304D\u307E\u3059\u3002
1294
1330
  `;function ignoreEpipe(stream){stream.on("error",err=>{if(err.code==="EPIPE")process.exit(0);throw err})}async function main(){const nodeMajor=Number(process.versions.node.split(".")[0]);if(nodeMajor<22){process.stderr.write(`twp-cli \u306B\u306F Node.js 22 \u4EE5\u4E0A\u304C\u5FC5\u8981\u3067\u3059\uFF08\u73FE\u5728: ${process.versions.node}\uFF09
1295
- `);process.exit(1)}ignoreEpipe(process.stdout);ignoreEpipe(process.stderr);if(process.env["TWP_AUTO_UPDATE_WORKER"]==="1"){const{runAutoUpdateWorker}=await import("./auto-update-worker-VG77U4UA.js");await runAutoUpdateWorker().catch(()=>void 0);return}const[first,...rest]=process.argv.slice(2);if(first==="__complete"||first==="completion"){const completion=await import("./completion-EMY4WDII.js");if(first==="completion"){process.exitCode=completion.runCompletion(rest,process.stdout,process.stderr);return}
1296
- const[{loadDomain},{loadUserConfig}]=await Promise.all([import("./registry-GGKX3MCP.js"),import("./config-3CNEQ7KN.js")]);process.exitCode=await completion.runComplete(rest,process.stdout,{loadDomain,profileNames:()=>Object.keys(loadUserConfig().profiles??{})});return}if(first==="configure"){const autoUpdate2=await import("./auto-update-YMI3F44R.js");autoUpdate2.registerRunning();autoUpdate2.onStartup(VERSION);const{runConfigure}=await import("./configure-3H3CGGBI.js");process.exitCode=
1331
+ `);process.exit(1)}ignoreEpipe(process.stdout);ignoreEpipe(process.stderr);if(process.env["TWP_AUTO_UPDATE_WORKER"]==="1"){const{runAutoUpdateWorker}=await import("./auto-update-worker-VG77U4UA.js");await runAutoUpdateWorker().catch(()=>void 0);return}const[first,...rest]=process.argv.slice(2);if(first==="__complete"||first==="completion"){const completion=await import("./completion-YBKZ3GXD.js");if(first==="completion"){process.exitCode=completion.runCompletion(rest,process.stdout,process.stderr);return}
1332
+ const[{loadDomain},{loadUserConfig}]=await Promise.all([import("./registry-5IKYCMRP.js"),import("./config-3CNEQ7KN.js")]);process.exitCode=await completion.runComplete(rest,process.stdout,{loadDomain,profileNames:()=>Object.keys(loadUserConfig().profiles??{})});return}if(first==="configure"){const autoUpdate2=await import("./auto-update-YMI3F44R.js");autoUpdate2.registerRunning();autoUpdate2.onStartup(VERSION);const{runConfigure}=await import("./configure-3H3CGGBI.js");process.exitCode=
1297
1333
  await runConfigure(rest);return}const args=parseArgv(process.argv.slice(2));if(args.command==="version"){process.stdout.write(`${VERSION}
1298
1334
  `);return}if(args.command==="help"){process.stdout.write(HELP);return}if(args.unknown.length>0){process.stderr.write(`\u4E0D\u660E\u306A\u5F15\u6570: ${args.unknown.join(" ")}
1299
1335
 
1300
- ${HELP}`);process.exitCode=2;return}const autoUpdate=await import("./auto-update-YMI3F44R.js");autoUpdate.registerRunning();if(args.command==="task-loop"&&args.taskLoopAction!=="capacity"){process.env[autoUpdate.DISABLE_ENV]="1"}else if(args.command!=="update"){autoUpdate.onStartup(VERSION)}if(args.command==="domain"&&args.domain!==void 0){const{runDomain}=await import("./run-65IJLMKQ.js");process.exitCode=await runDomain({domain:args.domain,...args.operation!==void 0?{operation:args.operation}:
1301
- {},argv:args.domainArgv,help:args.domainHelp,globals:{...args.profile!==void 0?{profile:args.profile}:{},...args.output!==void 0?{output:args.output}:{},...args.query!==void 0?{query:args.query}:{},dryRun:args.dryRun,debug:args.debug,yes:args.yes,refresh:args.refresh},version:VERSION});return}if(args.command==="api"){const{runApiCommand}=await import("./api-command-YMEYR2LG.js");process.exitCode=await runApiCommand({argv:args.domainArgv,help:args.domainHelp,globals:{...args.profile!==void 0?{profile:args.
1302
- profile}:{},...args.output!==void 0?{output:args.output}:{},...args.query!==void 0?{query:args.query}:{},dryRun:args.dryRun,debug:args.debug,yes:args.yes},version:VERSION});return}if(args.command==="update"){const{runUpdate}=await import("./update-NCAVUXSX.js");process.exitCode=await runUpdate({...args.profile!==void 0?{profile:args.profile}:{},version:VERSION});return}if(args.command==="login"||args.command==="logout"||args.command==="whoami"){const{runLogin,runLogout,runWhoami}=await import("./commands-GMUQCBFQ.js");
1303
- const options={profile:args.profile,method:args.loginMethod,tenant:args.tenant,noBrowser:args.loginNoBrowser,cliVersion:VERSION,force:args.logoutForce,...args.output!==void 0?{output:args.output}:{},...args.query!==void 0?{query:args.query}:{}};const runner=args.command==="login"?runLogin:args.command==="logout"?runLogout:runWhoami;process.exitCode=await runner(options);return}if(args.command==="task-loop"){const{runTaskLoop}=await import("./commands-MYGPEYBE.js");process.exitCode=await runTaskLoop(
1336
+ ${HELP}`);process.exitCode=2;return}const autoUpdate=await import("./auto-update-YMI3F44R.js");autoUpdate.registerRunning();if(args.command==="task-loop"&&args.taskLoopAction!=="capacity"){process.env[autoUpdate.DISABLE_ENV]="1"}else if(args.command!=="update"){autoUpdate.onStartup(VERSION)}if(args.command==="domain"&&args.domain!==void 0){const{runDomain}=await import("./run-EQQOJ76O.js");process.exitCode=await runDomain({domain:args.domain,...args.operation!==void 0?{operation:args.operation}:
1337
+ {},argv:args.domainArgv,help:args.domainHelp,globals:{...args.profile!==void 0?{profile:args.profile}:{},...args.output!==void 0?{output:args.output}:{},...args.query!==void 0?{query:args.query}:{},dryRun:args.dryRun,debug:args.debug,yes:args.yes,refresh:args.refresh},version:VERSION});return}if(args.command==="api"){const{runApiCommand}=await import("./api-command-46GLOIHL.js");process.exitCode=await runApiCommand({argv:args.domainArgv,help:args.domainHelp,globals:{...args.profile!==void 0?{profile:args.
1338
+ profile}:{},...args.output!==void 0?{output:args.output}:{},...args.query!==void 0?{query:args.query}:{},dryRun:args.dryRun,debug:args.debug,yes:args.yes},version:VERSION});return}if(args.command==="update"){const{runUpdate}=await import("./update-NCAVUXSX.js");process.exitCode=await runUpdate({...args.profile!==void 0?{profile:args.profile}:{},version:VERSION});return}if(args.command==="login"||args.command==="logout"||args.command==="whoami"){const{runLogin,runLogout,runWhoami}=await import("./commands-U52UBWSU.js");
1339
+ const options={profile:args.profile,method:args.loginMethod,tenant:args.tenant,noBrowser:args.loginNoBrowser,cliVersion:VERSION,force:args.logoutForce,...args.output!==void 0?{output:args.output}:{},...args.query!==void 0?{query:args.query}:{}};const runner=args.command==="login"?runLogin:args.command==="logout"?runLogout:runWhoami;process.exitCode=await runner(options);return}if(args.command==="task-loop"){const{runTaskLoop}=await import("./commands-ZCXAJXHW.js");process.exitCode=await runTaskLoop(
1304
1340
  {action:args.taskLoopAction??"run",project:args.project,profile:args.profile,safe:args.safe,daemon:args.daemon,interval:args.interval,maxCycles:args.maxCycles,forceRunner:args.forceRunner,force:args.stopForce,drain:args.stopDrain,engine:args.engine,version:VERSION,verbose:args.verbose,scheduleNow:args.scheduleNow,scheduleCounts:args.scheduleCounts,scheduleGate:args.scheduleGate,scheduleOp:args.scheduleOp,scheduleConfigOp:args.scheduleConfigOp,scheduleId:args.scheduleId,charterOp:args.charterOp,charterInput:args.
1305
1341
  charterFile,charterOutput:args.charterOut,charterRevision:args.charterRevision,settingsOp:args.settingsOp,skillOp:args.skillOp,skillName:args.skillName,skillAll:args.skillAll,skillDir:args.skillDir,skillConfig:args.skillConfig,output:args.output,query:args.query,revisionFrom:args.revisionFrom,revisionTo:args.revisionTo,planOp:args.planOp,capacityOp:args.capacityOp,planEmpty:args.planEmpty,planCheck:args.planCheck,yes:args.yes,ais:args.ais,workspace:args.workspace,aiConfigFile:args.aiConfigFile,noAiConfigFile:args.
1306
- noAiConfigFile});return}if(args.command==="print"){const{runOneShot}=await import("./oneshot-XRN744YK.js");process.exitCode=await runOneShot({prompt:args.prompt??"",fromStdin:args.promptFromStdin,mode:args.mode??"dev",...args.permissionMode!==void 0?{permissionMode:args.permissionMode}:{},allowedTools:args.allowedTools,disallowedTools:args.disallowedTools,...args.model!==void 0?{model:args.model}:{},...args.profile!==void 0?{profile:args.profile}:{},version:VERSION});return}const{startTui}=await import("./app-37IMKCQZ.js");
1342
+ noAiConfigFile});return}if(args.command==="print"){const{runOneShot}=await import("./oneshot-7H3SFK7Q.js");process.exitCode=await runOneShot({prompt:args.prompt??"",fromStdin:args.promptFromStdin,mode:args.mode??"dev",...args.permissionMode!==void 0?{permissionMode:args.permissionMode}:{},allowedTools:args.allowedTools,disallowedTools:args.disallowedTools,...args.model!==void 0?{model:args.model}:{},...args.profile!==void 0?{profile:args.profile}:{},version:VERSION});return}const{startTui}=await import("./app-SQZCZANA.js");
1307
1343
  await startTui({mode:args.mode,permissionMode:args.permissionMode,allowedTools:args.allowedTools,disallowedTools:args.disallowedTools,model:args.model,profile:args.profile,noTui:args.noTui||!process.stdout.isTTY,doctor:args.doctor,version:VERSION})}await main();
@@ -50,12 +50,12 @@ ${err.hint?`${err.hint}
50
50
  `);return 1}writeErr(`\u30A8\u30E9\u30FC: ${err.message}
51
51
  `);return 1}}async function runLogin(options){return run(async()=>{const profile=resolveProfile(options.profile);const io=makeIo(options.cliVersion);if(options.method==="password"){await passwordLogin(profile,{tenantCode:options.tenant??void 0},process.env,io)}else if(options.method==="token"){await tokenLogin(profile,process.env,io)}else{await browserLogin(profile,process.env,io,{noBrowser:options.noBrowser})}})}async function runLogout(options){return run(async()=>{const profile=resolveProfile(
52
52
  options.profile);const creds=loadCredentials(profile.name);if(!creds){writeOut(`\u30D7\u30ED\u30D5\u30A1\u30A4\u30EB\u300C${profile.name}\u300D\u306F\u30ED\u30B0\u30A4\u30F3\u3057\u3066\u3044\u307E\u305B\u3093\u3002
53
- `);return}const{describeLogoutImpact,findLoopsUsingProfile}=await import("./logout-guard-3B767ADS.js");const found=findLoopsUsingProfile(profile.name,options.logoutGuard);if(found.users.length>0||found.undetermined.length>0){writeErr(describeLogoutImpact(profile.name,found,options.force===true));if(options.force!==true)throw new LogoutRefusedError}const apiUrl=effectiveApiUrl(profile,creds.api_url);const revoked=await httpFetch(`${apiUrl}/api/v2/auth/logout`,{method:"POST",headers:{Accept:"applic\
53
+ `);return}const{describeLogoutImpact,findLoopsUsingProfile}=await import("./logout-guard-IWHF33DM.js");const found=findLoopsUsingProfile(profile.name,options.logoutGuard);if(found.users.length>0||found.undetermined.length>0){writeErr(describeLogoutImpact(profile.name,found,options.force===true));if(options.force!==true)throw new LogoutRefusedError}const apiUrl=effectiveApiUrl(profile,creds.api_url);const revoked=await httpFetch(`${apiUrl}/api/v2/auth/logout`,{method:"POST",headers:{Accept:"applic\
54
54
  ation/json",Authorization:`Bearer ${creds.token}`}}).then(res=>res.ok,()=>false);await deleteCredentials(profile.name);writeOut(`\u2705 \u30ED\u30B0\u30A2\u30A6\u30C8\u3057\u307E\u3057\u305F\uFF08\u30D7\u30ED\u30D5\u30A1\u30A4\u30EB: ${profile.name} / \u30C8\u30FC\u30AF\u30F3: ${maskToken(creds.token)}\uFF09
55
55
  `);if(!revoked){writeOut("\u26A0 \u30B5\u30FC\u30D0\u5074\u306E\u30C8\u30FC\u30AF\u30F3\u5931\u52B9\u306B\u5931\u6557\u3057\u307E\u3057\u305F\uFF08\u30AA\u30D5\u30E9\u30A4\u30F3\u7B49\uFF09\u3002TWP \u306E\u300C\u8A2D\u5B9A > CLI\u7AEF\u672B\u300D\u304B\u3089\u3082\u5931\u52B9\u3067\u304D\u307E\u3059\u3002\n")}})}async function runWhoami(options){return run(async()=>{const profile=resolveProfile(options.profile);const structured=options.output!==void 0||options.query!==void 0;let format=null;if(structured){
56
56
  const{resolveOutputFormat,OUTPUT_FORMATS}=await import("./format-F6PPBPY5.js");format=resolveOutputFormat({...options.output!==void 0?{flag:options.output}:{},isTty:process.stdout.isTTY===true});if(format===null){throw new UsageError(`--output \u306B\u300C${options.output??""}\u300D\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093`,`\u6307\u5B9A\u3067\u304D\u308B\u306E\u306F ${OUTPUT_FORMATS.join(" / ")} \u3067\u3059`)}}const stored=loadCredentials(profile.name);const apiUrl=effectiveApiUrl(
57
57
  profile,stored?.api_url);const session=new AuthSession(profile.name,apiUrl);const client=new TwpApiClient(apiUrl,session,httpFetch,options.cliVersion);const me=await client.get("/api/v2/user");const user=me.user;const creds=loadCredentials(profile.name);if(format!==null){const value={id:user?.id??null,name:user?.name??null,email:user?.email??null,tenant_code:user?.tenant_code??null,role:user?.role??null,is_admin:user?.is_admin??null,profile:profile.name,api_url:apiUrl,expires_at:creds?.token_expires_at??
58
- null};const{evaluateQuery}=await import("./query-XEOVFI4D.js");const{renderOutput}=await import("./render-YD4B7OH5.js");const selected=options.query===void 0?value:await evaluateQuery(options.query,value);const text=renderOutput(selected,format);process.stdout.write(text.endsWith("\n")?text:`${text}
58
+ null};const{evaluateQuery}=await import("./query-XEOVFI4D.js");const{renderOutput}=await import("./render-4SBLHU4J.js");const selected=options.query===void 0?value:await evaluateQuery(options.query,value);const text=renderOutput(selected,format);process.stdout.write(text.endsWith("\n")?text:`${text}
59
59
  `);return}writeOut(`\u30E6\u30FC\u30B6\u30FC: ${user?.name??"?"}\uFF08${user?.email??"?"}\uFF09
60
60
  `);writeOut(`ID: ${user?.id??"?"}
61
61
  `);writeOut(`\u30C6\u30CA\u30F3\u30C8: ${user?.tenant_code??"?"}