@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.
- package/CHANGELOG.public.md +22 -0
- package/README.md +53 -9
- package/dist/{agent-C37HJDJY.js → agent-6E62JWPN.js} +2 -2
- package/dist/{agent-loop-XFYCEK5S.js → agent-loop-UTS4MYW6.js} +2 -2
- package/dist/{ai-dispatch-GONY4JAY.js → ai-dispatch-OAT752RN.js} +1 -1
- package/dist/{analysis-THRX37XW.js → analysis-MVKADQHU.js} +2 -2
- package/dist/{announcement-4R7XFO5W.js → announcement-BFQAI6UE.js} +2 -2
- package/dist/{api-command-YMEYR2LG.js → api-command-46GLOIHL.js} +3 -3
- package/dist/{app-37IMKCQZ.js → app-SQZCZANA.js} +4 -4
- package/dist/{attendance-correct-Z5BGCSCL.js → attendance-correct-72KQR4UG.js} +2 -2
- package/dist/{attendance-lists-357A3O5Y.js → attendance-lists-6RP7UGA5.js} +1 -1
- package/dist/{backlog-KF63TCEG.js → backlog-22NXQQDL.js} +1 -1
- package/dist/budget-LJY3YFVB.js +4 -0
- package/dist/business-hours-I4X6YQS3.js +18 -0
- package/dist/{chunk-DAXVAUV4.js → chunk-2YVJ3QVJ.js} +1 -1
- package/dist/{chunk-DFHOCPA5.js → chunk-3QQF4MOB.js} +2 -2
- package/dist/{chunk-AGI5KT4C.js → chunk-3WFZOOXZ.js} +1 -1
- package/dist/{chunk-VEA72AKG.js → chunk-46Q7TUND.js} +1 -1
- package/dist/{chunk-MVZFZAT4.js → chunk-4B6GJBYP.js} +47 -44
- package/dist/{chunk-I4TR55UF.js → chunk-5KJ5OIKI.js} +1 -1
- package/dist/{chunk-K4JE26L6.js → chunk-5P22UEUF.js} +1 -1
- package/dist/{chunk-Z6T5M3NJ.js → chunk-5SPWQAUX.js} +2 -2
- package/dist/{chunk-ARB4QFWO.js → chunk-7SYIYLHX.js} +1 -1
- package/dist/{chunk-UXEYWMPO.js → chunk-BKE3BFIQ.js} +2 -2
- package/dist/{chunk-HPPIVCK3.js → chunk-C7MO3RHJ.js} +7 -4
- package/dist/{chunk-A3FJEUDB.js → chunk-D37WSWBT.js} +1 -1
- package/dist/chunk-DMXMQGGZ.js +11 -0
- package/dist/{chunk-VIWQMDGG.js → chunk-DYNNGNXR.js} +1 -1
- package/dist/{chunk-MP6YIILX.js → chunk-FHOJFKR3.js} +12 -11
- package/dist/{chunk-CCHPF23L.js → chunk-GAXJPIKO.js} +1 -1
- package/dist/{chunk-7PDUN5MS.js → chunk-GTRKN2YS.js} +1 -1
- package/dist/{chunk-WYYHMKF7.js → chunk-HOLKWMS2.js} +1 -1
- package/dist/{chunk-NBOA4T7F.js → chunk-J2NRDFCR.js} +1 -1
- package/dist/{chunk-UGDB4QTS.js → chunk-J3KV6LAX.js} +1 -1
- package/dist/{budget-W7JXDJ4J.js → chunk-JIOZ47AX.js} +2 -3
- package/dist/{chunk-UFGJSWKU.js → chunk-LDBYJPRD.js} +1 -1
- package/dist/{chunk-BBOWZVCC.js → chunk-MNJYY3PR.js} +1 -1
- package/dist/{chunk-QVID3GT4.js → chunk-MSVJ53VZ.js} +1 -1
- package/dist/{chunk-45OL54MY.js → chunk-OO7GDI2D.js} +1 -1
- package/dist/{chunk-YXVN6OCH.js → chunk-PO35MCYP.js} +1 -1
- package/dist/{chunk-T3C2BAVA.js → chunk-QQCWGMZN.js} +1 -1
- package/dist/{chunk-2CIQOXPK.js → chunk-R5UIH2SI.js} +1 -1
- package/dist/chunk-RCRFLVJ6.js +117 -0
- package/dist/{chunk-XF4DN44V.js → chunk-SCHQHPI2.js} +2 -2
- package/dist/chunk-W4E4F2ZA.js +4 -0
- package/dist/{chunk-IVKWLJCY.js → chunk-YA7W7OV4.js} +1 -1
- package/dist/cli.js +44 -8
- package/dist/{commands-GMUQCBFQ.js → commands-U52UBWSU.js} +2 -2
- package/dist/{commands-MYGPEYBE.js → commands-ZCXAJXHW.js} +40 -38
- package/dist/{company-W2OBOOKJ.js → company-UYDQAJ5O.js} +3 -3
- package/dist/{completion-EMY4WDII.js → completion-YBKZ3GXD.js} +1 -1
- package/dist/{contract-LTQVLI7A.js → contract-PJRMXIXY.js} +2 -2
- package/dist/{department-GZBKUFON.js → department-JFHUX32Y.js} +1 -1
- package/dist/{deposit-HCMV2MBU.js → deposit-YSCEG5QY.js} +2 -2
- package/dist/{domain-knowledge-32TTPFVY.js → domain-knowledge-HJHKFS3S.js} +1 -1
- package/dist/{estimate-ILUXZJG3.js → estimate-ZY3NFOY2.js} +3 -3
- package/dist/{evaluation-PE7QHATW.js → evaluation-MQ7USYDU.js} +1 -1
- package/dist/{expense-K2JPBP2M.js → expense-2EDPVAQL.js} +2 -2
- package/dist/{fiscal-year-XY4KA67D.js → fiscal-year-5S74MAHA.js} +1 -1
- package/dist/holiday-PFBME3RI.js +48 -0
- package/dist/{inquiry-FEQWFU7Z.js → inquiry-LVJE53LY.js} +1 -1
- package/dist/{invoice-WOQZUL66.js → invoice-JJ46ZXMJ.js} +2 -2
- package/dist/{job-title-CDAMB4Q2.js → job-title-PFLVTRNO.js} +1 -1
- package/dist/{knowledge-VM6P4XDQ.js → knowledge-43B64GGG.js} +99 -35
- package/dist/{leave-TEXQJURZ.js → leave-6L3CTABK.js} +2 -2
- package/dist/{license-ZSZM5OSK.js → license-HHAOMEWC.js} +2 -2
- package/dist/{logout-guard-3B767ADS.js → logout-guard-IWHF33DM.js} +1 -1
- package/dist/{media-TAS7FF5K.js → media-YEWKZ2QS.js} +3 -3
- package/dist/{notification-T46TUUMO.js → notification-LNRNOLVW.js} +1 -1
- package/dist/{oneshot-XRN744YK.js → oneshot-7H3SFK7Q.js} +1 -1
- package/dist/{outlook-KYTXHDAV.js → outlook-YG7GFF44.js} +1 -1
- package/dist/{plan-submit-YBTGYQD7.js → plan-submit-CZRVVZZB.js} +1 -1
- package/dist/{position-BKZQH6A3.js → position-YFC6XZQL.js} +1 -1
- package/dist/{project-KL4DH2XE.js → project-3RTD63II.js} +2 -2
- package/dist/{prospect-BEB5AXPM.js → prospect-5EXTP5D2.js} +2 -2
- package/dist/{purchase-P37K6MVO.js → purchase-KJ3XVCXG.js} +3 -3
- package/dist/{receivable-5N3KL3L4.js → receivable-LF3DYPOO.js} +2 -2
- package/dist/{redmine-K7A7AEUA.js → redmine-6FJPODIM.js} +1 -1
- package/dist/{registry-GGKX3MCP.js → registry-5IKYCMRP.js} +1 -1
- package/dist/{render-YD4B7OH5.js → render-4SBLHU4J.js} +1 -1
- package/dist/{report-PZ4GMMK2.js → report-TDPP7SF7.js} +1 -1
- package/dist/{run-65IJLMKQ.js → run-EQQOJ76O.js} +2 -2
- package/dist/{sales-ai-review-NBNSHUUP.js → sales-ai-review-WIVJOOFW.js} +2 -2
- package/dist/{sales-master-23PVQUTQ.js → sales-master-SJSFHAT6.js} +2 -2
- package/dist/{sales-numbering-FQ7YPQME.js → sales-numbering-EWYVI3RF.js} +2 -2
- package/dist/{search-NYY22NHK.js → search-FCXHO5NB.js} +1 -1
- package/dist/{segment-2C3MYZCV.js → segment-3Q64YOMR.js} +1 -1
- package/dist/{server-settings-ELHHMBBK.js → server-settings-WH4F2SLC.js} +1 -1
- package/dist/{setup-74LO2SXN.js → setup-H22WRMPN.js} +1 -1
- package/dist/skill-MWYX74XM.js +4 -0
- package/dist/{skill-check-2ILLHGDQ.js → skill-check-YVIMYT2H.js} +1 -1
- package/dist/{skill-manage-command-HPJQOTQK.js → skill-manage-command-QYJLCLDK.js} +2 -2
- package/dist/{supplier-payment-G2BGSGLA.js → supplier-payment-H4E65YFZ.js} +2 -2
- package/dist/{support-E3PBMVG4.js → support-CCE7DP2O.js} +2 -2
- package/dist/{task-N6OVWNAT.js → task-OA6YUFL3.js} +42 -24
- package/dist/{teams-QRVCFJS4.js → teams-AUFHZRDH.js} +1 -1
- package/dist/{user-VODWJQZI.js → user-KQX327AS.js} +3 -3
- package/dist/{user-contract-type-7AVII6SV.js → user-contract-type-KS3HMLHY.js} +1 -1
- package/dist/{worker-agent-KRMY2RKK.js → worker-agent-BEH65D3X.js} +1 -1
- package/dist/{workflow-GWEN7NSQ.js → workflow-EBAADQLR.js} +2 -2
- package/package.json +1 -1
- package/dist/chunk-35MQ27I6.js +0 -4
- package/dist/chunk-5VZ54H2J.js +0 -11
- package/dist/chunk-6UPLPTBP.js +0 -58
- 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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
4
|
-
SALES_ROUNDING_SETTING_PATH,isExactNumericId}from"./chunk-
|
|
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-
|
|
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-
|
|
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-
|
|
1296
|
-
const[{loadDomain},{loadUserConfig}]=await Promise.all([import("./registry-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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??"?"}
|