@tocca-systems/twp-cli 0.43.0 → 0.45.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 +16 -0
- package/README.md +92 -6
- package/dist/{agent-loop-MMWJHN3D.js → agent-loop-RMJXHBNG.js} +1 -1
- package/dist/{ai-dispatch-MXTI2KZ2.js → ai-dispatch-L6XZCCU4.js} +2 -2
- package/dist/analysis-KUCETWIJ.js +3 -0
- package/dist/{api-command-DND4342Q.js → api-command-6C3MFXVU.js} +8 -7
- package/dist/{app-2DWKZ2VE.js → app-6DA35MYO.js} +5 -5
- package/dist/{backlog-SDWC7OY5.js → backlog-Q7VYDMDL.js} +1 -1
- package/dist/budget-FOFE3YUJ.js +97 -0
- package/dist/{chunk-L35F47BO.js → chunk-4OSCQLZT.js} +1 -1
- package/dist/{chunk-CZMJXLDZ.js → chunk-7GSTR64T.js} +1 -1
- package/dist/chunk-C2MQANJO.js +9 -0
- package/dist/{chunk-YQ4DGLD3.js → chunk-D5FEOBB6.js} +20 -17
- package/dist/{chunk-RKYNTQAI.js → chunk-DS5TH5YQ.js} +1 -1
- package/dist/{chunk-XPYNN63B.js → chunk-DVKPGJMS.js} +1 -1
- package/dist/chunk-E7MUDY4P.js +82 -0
- package/dist/{chunk-HBYFCYWA.js → chunk-EM3SDCCU.js} +17 -16
- package/dist/{chunk-HBSD3UC6.js → chunk-EWTFE233.js} +2 -2
- package/dist/{chunk-O5AUX7AQ.js → chunk-IOCNJMVW.js} +2 -1
- package/dist/{chunk-67UNSXM7.js → chunk-JLNY7HRM.js} +2 -2
- package/dist/{chunk-XYIM36Q4.js → chunk-JNPCHV7S.js} +1 -1
- package/dist/{chunk-AHLI7BUX.js → chunk-NAAMNYX3.js} +1 -1
- package/dist/{chunk-XSSKEJGO.js → chunk-O3UQPM6L.js} +1 -1
- package/dist/chunk-Q3B65OFC.js +3 -0
- package/dist/{chunk-3ZOHVESS.js → chunk-QV6DH37Q.js} +1 -1
- package/dist/chunk-XTREYDO5.js +81 -0
- package/dist/{chunk-PGJ42IUR.js → chunk-XUNFV6ZQ.js} +1 -1
- package/dist/{chunk-NKIBB72I.js → chunk-XXVYGQ72.js} +1 -1
- package/dist/{chunk-OUP3JLVH.js → chunk-Y4SREWAG.js} +1 -1
- package/dist/chunk-Y5EN7RYN.js +4 -0
- package/dist/{chunk-PORE2NZO.js → chunk-YPMT453N.js} +1 -1
- package/dist/{chunk-QEWI75KI.js → chunk-ZM3MTWNT.js} +1 -1
- package/dist/cli.js +75 -9
- package/dist/{commands-BDYQKXPD.js → commands-5GP3REIU.js} +12 -12
- package/dist/{commands-255HOMWQ.js → commands-JUD4ZNWT.js} +1 -1
- package/dist/{company-7TFFYG4A.js → company-UTEAM246.js} +3 -3
- package/dist/{completion-H65LUFVF.js → completion-YSP6UE25.js} +1 -1
- package/dist/{contract-SIFZY6D4.js → contract-GUY73GRP.js} +2 -2
- package/dist/{department-NSK6YY6X.js → department-QMTJYMN2.js} +1 -1
- package/dist/{deposit-FUM7OA6F.js → deposit-FOATHWXV.js} +2 -2
- package/dist/{estimate-RL3N3JAE.js → estimate-6UWI7SKV.js} +4 -4
- package/dist/{inquiry-K7RSYLFW.js → inquiry-3VBBJT2K.js} +1 -1
- package/dist/{invoice-E7XIBLRA.js → invoice-FOZJR42A.js} +3 -3
- package/dist/{job-title-OF3ABHUQ.js → job-title-IIRFPZNV.js} +1 -1
- package/dist/{knowledge-ZQYVNFNI.js → knowledge-6SXUV46K.js} +2 -2
- package/dist/{leave-MAFA6EQO.js → leave-LQAXN6F4.js} +2 -2
- package/dist/{media-LL4AVP5H.js → media-VK6AUGZY.js} +1 -1
- package/dist/{notification-KBL7QJE3.js → notification-NTU3JCR2.js} +1 -1
- package/dist/{oneshot-EUW726TV.js → oneshot-67EDIE2F.js} +1 -1
- package/dist/outlook-PQ4OCB5Z.js +98 -0
- package/dist/{position-MZADW4R4.js → position-WGLV3JZ6.js} +1 -1
- package/dist/project-REBUFMPX.js +4 -0
- package/dist/{prospect-L43GCNWK.js → prospect-DJAJNTRQ.js} +3 -3
- package/dist/{purchase-643XP2UX.js → purchase-7RVUWXMS.js} +4 -4
- package/dist/{receivable-O7H2LJ4K.js → receivable-SHRWUYJW.js} +2 -2
- package/dist/{registry-PGMXXWHA.js → registry-CP4LGNGZ.js} +1 -1
- package/dist/{render-ASQBZ75M.js → render-4L5BDU3B.js} +1 -1
- package/dist/{report-YTPDB4Y7.js → report-SUTO7E7Z.js} +1 -1
- package/dist/run-NVS532DL.js +4 -0
- package/dist/{sales-ai-review-J5ICW6RB.js → sales-ai-review-LC4XDQLS.js} +2 -2
- package/dist/{sales-master-MCS3UL4M.js → sales-master-C4EYXIKP.js} +3 -3
- package/dist/sales-numbering-YK447QBC.js +4 -0
- package/dist/{server-settings-326MD7T4.js → server-settings-3E7G56G7.js} +1 -1
- package/dist/{supplier-payment-QF2YMAVT.js → supplier-payment-MLLTGVCO.js} +3 -3
- package/dist/{task-GSZZ7HT2.js → task-7SKWCZWV.js} +19 -14
- package/dist/{user-IF6PAMW7.js → user-FPXO3IHG.js} +7 -5
- package/dist/{workflow-BHOWO32V.js → workflow-FU2EBVBW.js} +1 -1
- package/package.json +2 -2
- package/dist/chunk-TDU6U5PY.js +0 -8
- package/dist/chunk-YO2RNKCQ.js +0 -4
- package/dist/outlook-KVMKMFUE.js +0 -37
- package/dist/project-ZVRVNXWI.js +0 -13
- package/dist/run-SRTDTEKL.js +0 -4
- package/dist/sales-numbering-2DVWFJFG.js +0 -4
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
|
+
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
+
import{hoursMinutes}from"./chunk-YLXW7TIU.js";import{dateFlag,monthFlag}from"./chunk-4B3T4UE7.js";import{repeatedValues}from"./chunk-F7K37QG6.js";import{requireResolved,withResolved}from"./chunk-LXIAOCUW.js";import{isRecord,pick}from"./chunk-VTQAI52S.js";import{ApiResponseError,UsageError}from"./chunk-UFND7FBC.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
|
+
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
|
+
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
|
+
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 \
|
|
7
|
+
/ --to / --month \u3068\u306F\u4F75\u7528\u4E0D\u53EF",takesValue:true,placeholder:"<YYYY>"};function currentMonth(now=new Date){return`${String(now.getFullYear())}-${String(now.getMonth()+1).padStart(2,"0")}`}function monthRange(input,usage){const from=monthFlag(input.flags,FROM_FLAG.name);const to=monthFlag(input.flags,TO_FLAG.name);const month=monthFlag(input.flags,MONTH_FLAG.name);if(month!==void 0){if(from!==void 0||to!==void 0){throw new UsageError("--month \u3068 --from / --to \u306F\u4F75\u7528\u3067\u304D\u307E\u305B\u3093",
|
|
8
|
+
usage)}return{from:month,to:month,defaulted:false}}if(from===void 0&&to===void 0){const now=currentMonth();return{from:now,to:now,defaulted:true}}if(from===void 0||to===void 0){throw new UsageError("--from \u3068 --to \u306F\u4E21\u65B9\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF081\u304B\u6708\u3060\u3051\u306A\u3089 --month\uFF09",usage)}if(from>to){throw new UsageError(`--from\uFF08${from}\uFF09\u304C --to\uFF08${to}\uFF09\u3088\u308A\u5F8C\u306B\u306A\u3063\u3066\u3044\u307E\u3059`,usage)}
|
|
9
|
+
return{from,to,defaulted:false}}function rangeNotes(range){return range.defaulted?[`\u671F\u9593\u306E\u6307\u5B9A\u304C\u7121\u3044\u306E\u3067\u5F53\u6708\uFF08${range.from}\u30FB\u3053\u306E\u7AEF\u672B\u306E\u6642\u8A08\uFF09\u3092\u96C6\u8A08\u3057\u307E\u3059\u3002\u5225\u306E\u6708\u306F --month / --from --to \u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002`]:[]}function noArgs(input,usage){if(input.args.length>0){throw new UsageError(`\u4F4D\u7F6E\u5F15\u6570\u306F\u53D7\u3051\u53D6\u308A\u307E\u305B\u3093: ${input.
|
|
10
|
+
args.join(" ")}`,usage)}}function listIn(body,key,label){const list=isRecord(body)?body[key]:void 0;if(!isRecord(body)||body["result"]!==true||!Array.isArray(list)){throw new ApiResponseError(`${label}\u306E\u5FDC\u7B54\u306B ${key} \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}return list.map(row=>isRecord(row)?row:{})}function dataOf(body,label){if(!isRecord(body)||body["result"]!==true||!("data"in body)){throw new ApiResponseError(
|
|
11
|
+
`${label}\u306E\u5FDC\u7B54\u306B data \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}return body["data"]}function dataList(body,key,label){return listIn({result:true,[key]:dataOf(body,label)?.[key]},key,label)}function recordOf(value){return isRecord(value)?value:{}}function monthColumns(row,field,months){const values=new Map;const entries=row["by_month"];if(Array.isArray(entries)){for(const entry of entries){if(isRecord(
|
|
12
|
+
entry)&&typeof entry["year_month"]==="string")values.set(entry["year_month"],entry[field]??null)}}const out={};for(const month of months)out[month]=values.has(month)?values.get(month):null;return out}function monthsBetween(from,to){const pattern=/^(\d{4})-(\d{2})$/;const a=typeof from==="string"?pattern.exec(from):null;const b=typeof to==="string"?pattern.exec(to):null;if(a===null||b===null)return[];const months=[];let index=Number(a[1])*12+Number(a[2])-1;const last=Number(b[1])*12+Number(b[2])-
|
|
13
|
+
1;for(let n=0;index<=last&&n<120;index++,n++){months.push(`${String(Math.floor(index/12))}-${String(index%12+1).padStart(2,"0")}`)}return months}function responseMonths(body){if(!isRecord(body))return[];const listed=body["year_months"];if(Array.isArray(listed)&&listed.every(m=>typeof m==="string"))return listed;return monthsBetween(body["start_ym"],body["end_ym"])}function summaryNote(body,label,parts){const summary=isRecord(body)&&isRecord(body["summary"])?body["summary"]:null;if(summary===null)
|
|
14
|
+
return[];const text=parts.map(([key,name])=>`${name} ${String(summary[key]??"-")}`).join(" / ");return[`${label}: ${text}`]}function periodNote(body){if(!isRecord(body))return[];const from=body["start_ym"];const to=body["end_ym"];return typeof from==="string"&&typeof to==="string"?[`\u671F\u9593: ${from} \u301C ${to}`]:[]}var SCOPE_FLAG={name:"--scope",summary:"\u96C6\u8A08\u306E\u8EF8\uFF08project\uFF1D\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u5225\u30FB\u65E2\u5B9A / user\uFF1D\u30E6\u30FC\u30B6\u30FC\u5225\uFF09",
|
|
15
|
+
takesValue:true,placeholder:"<project|user>"};var PROJECT_FILTER_FLAG={name:"--project",summary:"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3067\u7D5E\u308A\u8FBC\u3080\uFF08\u30B3\u30FC\u30C9\u30FBID\uFF09",takesValue:true,placeholder:"<\u30B3\u30FC\u30C9|ID>"};var USER_FLAG={name:"--user",summary:"\u30E6\u30FC\u30B6\u30FC\u3067\u7D5E\u308A\u8FBC\u3080\uFF08\u6C0F\u540D\u30FB\u30E1\u30FC\u30EB\u30FBID\u30FBme\uFF09",takesValue:true,placeholder:"<\u30E6\u30FC\u30B6\u30FC>"};var DEPARTMENT_FLAG={name:"\
|
|
16
|
+
--department",summary:"\u90E8\u7F72\u3067\u7D5E\u308A\u8FBC\u3080\uFF08\u540D\u524D\u30FB\u30B3\u30FC\u30C9\u30FBID\uFF09",takesValue:true,placeholder:"<\u90E8\u7F72>"};var OPERATING_USAGE="twp analysis operating-hours list [--scope project|user] [--month <YYYY-MM> | --from <YYYY-MM> --to <YYYY-MM> | --year <YYYY>] [--project <\u30B3\u30FC\u30C9>] [--user <\u30E6\u30FC\u30B6\u30FC>] [--department <\u90E8\u7F72>]";function operatingScope(input){const raw=input.flags.get(SCOPE_FLAG.name)?.trim()??
|
|
17
|
+
"project";if(raw!=="project"&&raw!=="user"){throw new UsageError(`--scope \u306F project \u304B user \u3067\u3059\uFF08\u53D7\u3051\u53D6\u3063\u305F\u5024: ${raw}\uFF09`,OPERATING_USAGE)}return raw}function checkOperatingFilters(input,scope){const misplaced=scope==="project"?[USER_FLAG.name,DEPARTMENT_FLAG.name].filter(name=>input.flags.has(name)):[PROJECT_FILTER_FLAG.name].filter(name=>input.flags.has(name));if(misplaced.length>0){throw new UsageError(`--scope ${scope} \u3067\u306F ${misplaced.
|
|
18
|
+
join(" / ")} \u304C\u52B9\u304D\u307E\u305B\u3093\uFF08\u30B5\u30FC\u30D0\u304C\u7121\u8996\u3057\u307E\u3059\uFF09`,scope==="project"?"--user / --department \u306F --scope user \u3068\u4E00\u7DD2\u306B\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002":"--project \u306F --scope project\uFF08\u65E2\u5B9A\uFF09\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002")}}function operatingPeriod(input){const year=input.flags.get(YEAR_FLAG.name);if(year===void 0){const range=monthRange(input,
|
|
19
|
+
OPERATING_USAGE);return{query:{start_ym:range.from,end_ym:range.to},range}}if([FROM_FLAG,TO_FLAG,MONTH_FLAG].some(flag=>input.flags.has(flag.name))){throw new UsageError("--year \u3068 --month / --from / --to \u306F\u4F75\u7528\u3067\u304D\u307E\u305B\u3093",OPERATING_USAGE)}const value=year.trim();if(!/^\d{4}$/.test(value)||Number(value)<2e3||Number(value)>2100){throw new UsageError(`--year \u306F 2000\u301C2100 \u306E\u897F\u66A64\u6841\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u53D7\u3051\u53D6\u3063\u305F\u5024: ${year}\
|
|
20
|
+
\uFF09`,OPERATING_USAGE)}return{query:{year:value},range:null}}async function resolveFilters(input,ctx){const resolved={};const project=input.flags.get(PROJECT_FILTER_FLAG.name);const user=input.flags.get(USER_FLAG.name);const department=input.flags.get(DEPARTMENT_FLAG.name);if(project!==void 0)resolved["projectId"]=(await ctx.resolver.project(project)).id;if(user!==void 0)resolved["userId"]=(await ctx.resolver.user(user,USER_FLAG.name)).id;if(department!==void 0)resolved["departmentId"]=(await ctx.
|
|
21
|
+
resolver.department(department,DEPARTMENT_FLAG.name)).id;return withResolved(input,resolved)}function resolvedOrUndefined(input,key){return input.resolved?.[key]}var operatingHoursList={name:"list",summary:"\u7A3C\u50CD\u5206\u6790\uFF08\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u5225\u30FB\u30E6\u30FC\u30B6\u30FC\u5225\u306E\u7A3C\u50CD\u6642\u9593\uFF09\u3092\u8868\u793A\u3059\u308B",usage:OPERATING_USAGE,description:"\u753B\u9762\u306E\u300C\u7A3C\u50CD\u5206\u6790\u300D\u3068\u540C\u3058 GET /api/v2/analysis/operating-hours \u3067\u3059\u3002\n\u671F\u9593\u3092\u6307\u5B9A\u3057\u306A\u3051\u308C\u3070\u5F53\u6708\uFF08\u3053\u306E\u7AEF\u672B\u306E\u6642\u8A08\uFF09\u3067\u3059\u3002\u671F\u9593\u306F\u6700\
|
|
22
|
+
\u592724\u304B\u6708\uFF08\u30B5\u30FC\u30D0\u304C\u691C\u67FB\u3057\u307E\u3059\uFF09\u3002\n--scope project\uFF08\u65E2\u5B9A\uFF09\u306F --project \u3060\u3051\u3001--scope user \u306F --user / --department \u3060\u3051\u3067\u7D5E\u308A\u8FBC\u3081\u307E\u3059\u3002\n--output table / text / tsv \u306F\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\uFF08\u307E\u305F\u306F\u30E6\u30FC\u30B6\u30FC\uFF09\u3054\u3068\u306B1\u884C\u3067\u3001\u6708\u3054\u3068\u306E\u6642\u9593\u3092 YYYY-MM \u5217\u306B\u4E26\u3079\u307E\u3059\u3002\n\u30E1\u30F3\u30D0\u30FC\u5225\uFF08by_user\uFF09\u30FB\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u5225\uFF08by_project\uFF09\u30FB\u4E88\u6E2C\u306E\u6839\u62E0\uFF08forecast_basis\uFF09\u306F --output json \u304B --query \u3067\u8AAD\u3081\u307E\u3059\u3002\n\u5024\u306F\u30B5\u30FC\u30D0\u306E\u96C6\u8A08\u306E\u307E\u307E\u3067\u3001CLI \u306F\u518D\u8A08\u7B97\u3057\u307E\u305B\u3093\u3002",
|
|
23
|
+
flags:[SCOPE_FLAG,MONTH_FLAG,FROM_FLAG,TO_FLAG,YEAR_FLAG,PROJECT_FILTER_FLAG,USER_FLAG,DEPARTMENT_FLAG],forbidden:analysisForbidden(levelGuidance("\u7A3C\u50CD\u5206\u6790","\u52E4\u6020\u3068\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u4E21\u65B9")),async prepare(input,ctx){noArgs(input,OPERATING_USAGE);const scope=operatingScope(input);checkOperatingFilters(input,scope);operatingPeriod(input);return resolveFilters(input,ctx)},plan(input){noArgs(input,OPERATING_USAGE);const scope=operatingScope(
|
|
24
|
+
input);checkOperatingFilters(input,scope);const{query}=operatingPeriod(input);return{method:"GET",path:`${ANALYSIS_PATH}/operating-hours`,query:{scope,...query,project_id:resolvedOrUndefined(input,"projectId"),user_id:resolvedOrUndefined(input,"userId"),department_id:resolvedOrUndefined(input,"departmentId")}}},plannedNotes:input=>{const{range}=operatingPeriod(input);return range===null?[]:rangeNotes(range)},summarize:body=>operatingRows(body),raw:body=>{operatingRows(body);return body},notes:body=>{
|
|
25
|
+
const scope=isRecord(body)?body["scope"]:void 0;return[...periodNote(body),...scope==="user"?summaryNote(body,"\u5408\u8A08",[["total_hours","\u7A3C\u50CD"],["total_overtime_hours","\u6B8B\u696D"],["user_count","\u4EBA\u6570"]]):summaryNote(body,"\u5408\u8A08",[["total_hours","\u7A3C\u50CD"],["project_count","\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u6570"]])]}};function operatingRows(body){const scope=isRecord(body)?body["scope"]:void 0;const months=responseMonths(body);if(scope==="project"){return listIn(
|
|
26
|
+
body,"projects","\u7A3C\u50CD\u5206\u6790").map(row=>({project_code:row["project_code"]??null,project_name:row["project_name"]??null,...monthColumns(row,"hours",months),total_hours:row["total_hours"]??null,members:Array.isArray(row["by_user"])?row["by_user"].length:null,project_id:row["project_id"]??null}))}if(scope==="user"){return listIn(body,"users","\u7A3C\u50CD\u5206\u6790").map(row=>({department_name:row["department_name"]??null,user_name:row["user_name"]??null,email:row["email"]??null,...monthColumns(
|
|
27
|
+
row,"hours",months),total_hours:row["total_hours"]??null,total_standard_hours:row["total_standard_hours"]??null,total_overtime_hours:row["total_overtime_hours"]??null,forecast_hours:row["forecast_hours"]??null,forecast_deviation_hours:row["forecast_deviation_hours"]??null,user_id:row["user_id"]??null}))}throw new ApiResponseError("\u7A3C\u50CD\u5206\u6790\u306E\u5FDC\u7B54\u306E scope \u304C project / user \u306E\u3069\u3061\u3089\u3067\u3082\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002")}
|
|
28
|
+
var PROJECT_ASSIGNMENT_USAGE="twp analysis project-assignment list [--month <YYYY-MM> | --from <YYYY-MM> --to <YYYY-MM>] [--project <\u30B3\u30FC\u30C9>]";var projectAssignmentList={name:"list",summary:"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u30A2\u30B5\u30A4\u30F3\uFF08\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3054\u3068\u306E\u30A2\u30B5\u30A4\u30F3\u6642\u9593\uFF09\u3092\u8868\u793A\u3059\u308B",usage:PROJECT_ASSIGNMENT_USAGE,description:"\u753B\u9762\u306E\u300C\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u30A2\u30B5\u30A4\u30F3\u300D\u306E\u30BF\u30A4\u30E0\u30E9\u30A4\u30F3\u3068\u540C\u3058 GET /api/v2/analysis/project-assi\
|
|
29
|
+
gnment \u3067\u3059\uFF08\u7BC4\u56F2\u6307\u5B9A\uFF09\u3002\n\u671F\u9593\u3092\u6307\u5B9A\u3057\u306A\u3051\u308C\u3070\u5F53\u6708\uFF08\u3053\u306E\u7AEF\u672B\u306E\u6642\u8A08\uFF09\u3067\u3059\u3002\u5BFE\u8C61\u306F\u7A3C\u50CD\u4E2D\uFF08active\uFF09\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3067\u3059\u3002\n--output table / text / tsv \u306F\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3054\u3068\u306B1\u884C\u3067\u3001\u6708\u3054\u3068\u306E\u30A2\u30B5\u30A4\u30F3\u6642\u9593\u3092 YYYY-MM \u5217\u306B\u4E26\u3079\u307E\u3059\u3002\n\u30E1\u30F3\u30D0\u30FC\u3054\u3068\u306E\u5185\u8A33\uFF08members\uFF09\u306F --output json \u304B --query \u3067\u8AAD\u3081\u307E\u3059\u3002",
|
|
30
|
+
flags:[MONTH_FLAG,FROM_FLAG,TO_FLAG,PROJECT_FILTER_FLAG],forbidden:analysisForbidden(levelGuidance("\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u30A2\u30B5\u30A4\u30F3\u5206\u6790","\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8")),async prepare(input,ctx){noArgs(input,PROJECT_ASSIGNMENT_USAGE);monthRange(input,PROJECT_ASSIGNMENT_USAGE);return resolveFilters(input,ctx)},plan(input){noArgs(input,PROJECT_ASSIGNMENT_USAGE);const range=monthRange(input,PROJECT_ASSIGNMENT_USAGE);return{method:"GET",path:`${ANALYSIS_PATH}\
|
|
31
|
+
/project-assignment`,query:{start_ym:range.from,end_ym:range.to,project_id:resolvedOrUndefined(input,"projectId")}}},plannedNotes:input=>rangeNotes(monthRange(input,PROJECT_ASSIGNMENT_USAGE)),summarize:body=>listIn(body,"projects","\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u30A2\u30B5\u30A4\u30F3\u5206\u6790").map(row=>({project_code:row["project_code"]??null,project_name:row["project_name"]??null,...monthColumns(row,"assigned_hours",responseMonths(body)),total_assigned_hours:row["total_assigned_hour\
|
|
32
|
+
s"]??null,total_estimated_hours:row["total_estimated_hours"]??null,member_count:row["member_count"]??null,project_id:row["project_id"]??null})),raw:body=>{listIn(body,"projects","\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u30A2\u30B5\u30A4\u30F3\u5206\u6790");return body},notes:body=>[...periodNote(body),...summaryNote(body,"\u5408\u8A08",[["project_count","\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u6570"],["total_assigned_hours","\u30A2\u30B5\u30A4\u30F3\u6642\u9593"],["total_estimated_hours","\u3046\u3061\u898B\u8FBC\u307F"]])]};
|
|
33
|
+
var STAFF_ASSIGNMENT_USAGE="twp analysis staff-assignment list [--month <YYYY-MM> | --from <YYYY-MM> --to <YYYY-MM>] [--user <\u30E6\u30FC\u30B6\u30FC>] [--department <\u90E8\u7F72>]";var staffAssignmentList={name:"list",summary:"\u4EBA\u6750\u5225\u30A2\u30B5\u30A4\u30F3\uFF08\u30E6\u30FC\u30B6\u30FC\u3054\u3068\u306E\u30A2\u30B5\u30A4\u30F3\u6642\u9593\u3068\u7A3C\u50CD\u7387\uFF09\u3092\u8868\u793A\u3059\u308B",usage:STAFF_ASSIGNMENT_USAGE,description:"\u753B\u9762\u306E\u300C\u4EBA\u6750\u5225\u30A2\u30B5\u30A4\u30F3\u300D\u3068\u540C\u3058 GET /api/v2/analysis/sta\
|
|
34
|
+
ff-assignment \u3067\u3059\uFF08\u7BC4\u56F2\u6307\u5B9A\uFF09\u3002\n\u671F\u9593\u3092\u6307\u5B9A\u3057\u306A\u3051\u308C\u3070\u5F53\u6708\uFF08\u3053\u306E\u7AEF\u672B\u306E\u6642\u8A08\uFF09\u3067\u3059\u3002\n--output table / text / tsv \u306F\u30E6\u30FC\u30B6\u30FC\u3054\u3068\u306B1\u884C\u3067\u3001\u6708\u3054\u3068\u306E\u30A2\u30B5\u30A4\u30F3\u6642\u9593\u3092 YYYY-MM \u5217\u306B\u4E26\u3079\u307E\u3059\u3002\n\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u5225\u306E\u5185\u8A33\uFF08projects\uFF09\u30FB\u7A3C\u50CD\u306E\u4F4E\u3044\u4EBA\uFF08bench_users\uFF09\u30FB\u8D85\u904E\u3057\u3066\u3044\u308B\u4EBA\uFF08overallocated_users\uFF09\u306F\n--output json \u304B --query \u3067\u8AAD\u3081\u307E\u3059\u3002\u7A3C\u50CD\u7387\u306F\u30B5\u30FC\u30D0\u306E\u5024\u306E\u307E\u307E\u3067\u3059\u3002",
|
|
35
|
+
flags:[MONTH_FLAG,FROM_FLAG,TO_FLAG,USER_FLAG,DEPARTMENT_FLAG],forbidden:analysisForbidden(levelGuidance("\u4EBA\u6750\u5225\u30A2\u30B5\u30A4\u30F3\u5206\u6790","\u4EBA\u4E8B\u7BA1\u7406")),async prepare(input,ctx){noArgs(input,STAFF_ASSIGNMENT_USAGE);monthRange(input,STAFF_ASSIGNMENT_USAGE);return resolveFilters(input,ctx)},plan(input){noArgs(input,STAFF_ASSIGNMENT_USAGE);const range=monthRange(input,STAFF_ASSIGNMENT_USAGE);return{method:"GET",path:`${ANALYSIS_PATH}/staff-assignment`,query:{start_ym:range.
|
|
36
|
+
from,end_ym:range.to,user_id:resolvedOrUndefined(input,"userId"),department_id:resolvedOrUndefined(input,"departmentId")}}},plannedNotes:input=>rangeNotes(monthRange(input,STAFF_ASSIGNMENT_USAGE)),summarize:body=>listIn(body,"users","\u4EBA\u6750\u5225\u30A2\u30B5\u30A4\u30F3\u5206\u6790").map(row=>({department_name:row["department_name"]??null,user_name:row["user_name"]??null,...monthColumns(row,"assigned_hours",responseMonths(body)),total_assigned_hours:row["total_assigned_hours"]??null,total_standard_hours:row["\
|
|
37
|
+
total_standard_hours"]??null,avg_utilization_rate:row["avg_utilization_rate"]??null,avg_actual_utilization_rate:row["avg_actual_utilization_rate"]??null,user_id:row["user_id"]??null})),raw:body=>{listIn(body,"users","\u4EBA\u6750\u5225\u30A2\u30B5\u30A4\u30F3\u5206\u6790");return body},notes:body=>[...periodNote(body),...summaryNote(body,"\u5408\u8A08",[["user_count","\u4EBA\u6570"],["avg_utilization_rate","\u5E73\u5747\u7A3C\u50CD\u7387"],["overallocated_count","\u8D85\u904E"],["bench_count","\u4F4E\
|
|
38
|
+
\u7A3C\u50CD"]])]};var CAPACITY_FORBIDDEN=analysisForbidden(levelGuidance("\u30AD\u30E3\u30D1\u30B7\u30C6\u30A3\u30D7\u30E9\u30F3\u30CB\u30F3\u30B0","\u52E4\u6020\u3068\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u4E21\u65B9"));var CAPACITY_USER_FLAG={name:"--user",summary:"\u5BFE\u8C61\u306E\u30E6\u30FC\u30B6\u30FC\uFF08\u6C0F\u540D\u30FB\u30E1\u30FC\u30EB\u30FBID\u30FBme\uFF09\u3002\u7E70\u308A\u8FD4\u3057\u6307\u5B9A\u3067\u304D\u308B\u3002\u7121\u3051\u308C\u3070\u5728\u7C4D\u8005\u5168\u54E1",
|
|
39
|
+
takesValue:true,placeholder:"<\u30E6\u30FC\u30B6\u30FC>",repeatable:true};function capacityData(body,label){const data=dataOf(body,label);if(!isRecord(data)){throw new ApiResponseError(`${label}\u306E\u5FDC\u7B54\u306E data \u304C\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}return data}function capacityMembers(body){return dataList(body,"members","\u30AD\u30E3\u30D1\u30B7\u30C6\u30A3")}
|
|
40
|
+
var CAPACITY_COLUMNS=["user_name","standard_hours_per_day","available_hours_per_week","total_estimated_hours","utilization_rate","status","due_this_week_task_count","active_task_count","tasks_with_estimate","tasks_without_estimate","truncated","user_id"];var ALERT_COLUMNS=["user_name","status","utilization_rate","excess_hours","total_estimated_hours","available_hours_per_week","due_this_week_task_count","active_task_count","user_id"];function noArgsPlan(usage,path){return input=>{noArgs(input,usage);
|
|
41
|
+
return{method:"GET",path}}}var capacityResource={name:"capacity",summary:"\u30AD\u30E3\u30D1\u30B7\u30C6\u30A3\u30D7\u30E9\u30F3\u30CB\u30F3\u30B0\uFF08\u4ECA\u9031\u306E\u898B\u7A4D\u5DE5\u6570\u3068\u7A3C\u50CD\u7387\u30FB\u904E\u8CA0\u8377\u30A2\u30E9\u30FC\u30C8\u30FB\u518D\u5206\u914D\u5019\u88DC\u30FB\u6A19\u6E96\u52E4\u52D9\u6642\u9593\uFF09",operations:[{name:"list",summary:"\u30E1\u30F3\u30D0\u30FC\u3054\u3068\u306E\u4ECA\u9031\u306E\u30AD\u30E3\u30D1\u30B7\u30C6\u30A3\u3068\u7A3C\u50CD\u7387\u3092\u8868\u793A\u3059\u308B",
|
|
42
|
+
usage:"twp analysis capacity list [--user <\u30E6\u30FC\u30B6\u30FC> ...]",description:"\u753B\u9762\u306E\u300C\u30AD\u30E3\u30D1\u30B7\u30C6\u30A3\u300D\u306E\u8868\u3068\u540C\u3058 GET /api/v2/analysis/capacity \u3067\u3059\u3002\u9031\u306F\u4ECA\u9031\uFF08\u6708\u301C\u65E5\u30FB\u30B5\u30FC\u30D0\u304C\u6C7A\u3081\u307E\u3059\uFF09\u3002\n--user \u3092\u4ED8\u3051\u306A\u3051\u308C\u3070\u5728\u7C4D\u8005\u5168\u54E1\u3067\u3059\u3002\u9031\u306E\u7BC4\u56F2\u30FB\u904E\u8CA0\u8377\u306E\u4EBA\u6570\u306F stderr \u306B\u51FA\u3057\u307E\u3059\u3002",
|
|
43
|
+
flags:[CAPACITY_USER_FLAG],forbidden:CAPACITY_FORBIDDEN,async prepare(input,ctx){noArgs(input,"twp analysis capacity list help");const ids=[];for(const ref of repeatedValues(input,CAPACITY_USER_FLAG.name)){ids.push((await ctx.resolver.user(ref,CAPACITY_USER_FLAG.name)).id)}return ids.length===0?input:withResolved(input,{userIds:ids.join(",")})},plan(input){noArgs(input,"twp analysis capacity list help");return{method:"GET",path:`${ANALYSIS_PATH}/capacity`,query:{user_ids:resolvedOrUndefined(input,
|
|
44
|
+
"userIds")}}},summarize:body=>capacityMembers(body).map(row=>pick(row,CAPACITY_COLUMNS)),raw:body=>{dataList(body,"members","\u30AD\u30E3\u30D1\u30B7\u30C6\u30A3");return capacityData(body,"\u30AD\u30E3\u30D1\u30B7\u30C6\u30A3")},notes:body=>{const summary=recordOf(capacityData(body,"\u30AD\u30E3\u30D1\u30B7\u30C6\u30A3")["summary"]);const notes=[`\u9031: ${String(summary["week_start"]??"-")} \u301C ${String(summary["week_end"]??"-")} / \u4EBA\u6570 ${String(summary["total_members"]??"-")} / \u904E\u8CA0\u8377\
|
|
45
|
+
${String(summary["overloaded_count"]??"-")} / \u6CE8\u610F ${String(summary["caution_count"]??"-")} / \u5224\u5B9A\u4E0D\u80FD ${String(summary["unknown_count"]??"-")}`];const truncated=summary["truncated_member_count"];if(typeof truncated==="number"&&truncated>0){notes.push(`${String(truncated)} \u4EBA\u306F\u30BF\u30B9\u30AF\u306E\u4EF6\u6570\u304C\u4E0A\u9650\u306B\u9054\u3057\u305F\u305F\u3081\u3001\u898B\u7A4D\u5DE5\u6570\u304C\u9014\u4E2D\u307E\u3067\u306E\u96C6\u8A08\u3067\u3059\uFF08truncated \u5217\uFF09\u3002`)}
|
|
46
|
+
return notes}},{name:"alerts",summary:"\u76F4\u5C5E\u306E\u90E8\u4E0B\u306E\u3046\u3061\u3001\u6CE8\u610F\u30FB\u904E\u8CA0\u8377\u306E\u30E1\u30F3\u30D0\u30FC\u3092\u8868\u793A\u3059\u308B",usage:"twp analysis capacity alerts",description:"GET /api/v2/analysis/capacity/alerts\u3002\u5BFE\u8C61\u306F\u3042\u306A\u305F\u304C\u4E0A\u9577\u3068\u3057\u3066\u767B\u9332\u3055\u308C\u3066\u3044\u308B\u76F4\u5C5E\u306E\u90E8\u4E0B\u3060\u3051\u3067\u3059\n\uFF08\u6CE8\u610F caution\u30FB\u904E\u8CA0\u8377 overloaded \u306E\u4EBA\u3060\u3051\u304C\u4E26\u3073\u307E\u3059\uFF09\u3002",
|
|
47
|
+
flags:[],forbidden:CAPACITY_FORBIDDEN,plan:noArgsPlan("twp analysis capacity alerts help",`${ANALYSIS_PATH}/capacity/alerts`),summarize:body=>dataList(body,"alerts","\u30AD\u30E3\u30D1\u30B7\u30C6\u30A3\u306E\u30A2\u30E9\u30FC\u30C8").map(row=>pick(row,ALERT_COLUMNS)),raw:body=>{dataList(body,"alerts","\u30AD\u30E3\u30D1\u30B7\u30C6\u30A3\u306E\u30A2\u30E9\u30FC\u30C8");return capacityData(body,"\u30AD\u30E3\u30D1\u30B7\u30C6\u30A3\u306E\u30A2\u30E9\u30FC\u30C8")},notes:body=>{const summary=recordOf(
|
|
48
|
+
capacityData(body,"\u30AD\u30E3\u30D1\u30B7\u30C6\u30A3\u306E\u30A2\u30E9\u30FC\u30C8")["summary"]);return[`\u76F4\u5C5E\u306E\u90E8\u4E0B ${String(summary["total_subordinates"]??"-")} \u4EBA / \u904E\u8CA0\u8377 ${String(summary["overloaded_count"]??"-")} / \u6CE8\u610F ${String(summary["caution_count"]??"-")}`]}},{name:"redistribution",summary:"\u904E\u8CA0\u8377\u306E\u30E1\u30F3\u30D0\u30FC\u3068\u3001\u4ED5\u4E8B\u3092\u79FB\u305B\u308B\u5019\u88DC\u3092\u8868\u793A\u3059\u308B",usage:"twp \
|
|
49
|
+
analysis capacity redistribution",description:"GET /api/v2/analysis/capacity/redistribution\u3002--output table / text / tsv \u306F\u300C\u904E\u8CA0\u8377\u306E\u30E1\u30F3\u30D0\u30FC \xD7 \u5019\u88DC\u300D1\u7D44\u30671\u884C\u3067\u3059\n\uFF08\u5019\u88DC\u304C\u7121\u3044\u30E1\u30F3\u30D0\u30FC\u306F candidate_name \u304C\u7A7A\u306E1\u884C\uFF09\u3002",flags:[],forbidden:CAPACITY_FORBIDDEN,plan:noArgsPlan("twp analysis capacity redistribution help",`${ANALYSIS_PATH}/capacity/redistribut\
|
|
50
|
+
ion`),summarize:body=>dataList(body,"overloaded_members","\u30AD\u30E3\u30D1\u30B7\u30C6\u30A3\u306E\u518D\u5206\u914D\u5019\u88DC").flatMap(member=>{const base={user_name:member["user_name"]??null,utilization_rate:member["utilization_rate"]??null,excess_hours:member["excess_hours"]??null};const candidates=Array.isArray(member["candidates"])?member["candidates"].map(recordOf):[];if(candidates.length===0)return[{...base,candidate_name:null,candidate_utilization_rate:null,spare_capacity_hours:null,
|
|
51
|
+
backlog_task_count:null}];return candidates.map(candidate=>({...base,candidate_name:candidate["user_name"]??null,candidate_utilization_rate:candidate["utilization_rate"]??null,spare_capacity_hours:candidate["spare_capacity_hours"]??null,backlog_task_count:candidate["backlog_task_count"]??null}))}),raw:body=>{dataList(body,"overloaded_members","\u30AD\u30E3\u30D1\u30B7\u30C6\u30A3\u306E\u518D\u5206\u914D\u5019\u88DC");return capacityData(body,"\u30AD\u30E3\u30D1\u30B7\u30C6\u30A3\u306E\u518D\u5206\u914D\u5019\u88DC")}},
|
|
52
|
+
{name:"settings",summary:"\u6A19\u6E96\u52E4\u52D9\u6642\u9593\uFF081\u65E5\u3042\u305F\u308A\uFF09\u3092\u500B\u5225\u306B\u8A2D\u5B9A\u3057\u3066\u3044\u308B\u30E6\u30FC\u30B6\u30FC\u3092\u8868\u793A\u3059\u308B",usage:"twp analysis capacity settings",description:"GET /api/v2/analysis/capacity/settings\u3002\u4E26\u3076\u306E\u306F\u500B\u5225\u306B\u4FDD\u5B58\u3057\u305F\u30E6\u30FC\u30B6\u30FC\u3060\u3051\u3067\u3059\uFF08\u305D\u308C\u4EE5\u5916\u306F\u65E2\u5B9A\u5024\u3067\u8A08\u7B97\u3055\u308C\u307E\u3059\u3002\n\u4F7F\u308F\u308C\u3066\u3044\u308B\u5024\u306F twp analysis capacity list \u306E standard_hours_per_day \u5217\uFF09\u3002\u5909\u66F4\u306F\u753B\u9762\u304B\u3089\u884C\u3063\u3066\u304F\u3060\u3055\u3044\u3002",
|
|
53
|
+
flags:[],forbidden:CAPACITY_FORBIDDEN,plan:noArgsPlan("twp analysis capacity settings help",`${ANALYSIS_PATH}/capacity/settings`),summarize:body=>settingsRows(body).map(row=>pick(row,["user_id","standard_hours_per_day","updated_at"])),raw:body=>settingsRows(body)}]};function settingsRows(body){const data=dataOf(body,"\u6A19\u6E96\u52E4\u52D9\u6642\u9593\u306E\u8A2D\u5B9A");if(!Array.isArray(data)){throw new ApiResponseError("\u6A19\u6E96\u52E4\u52D9\u6642\u9593\u306E\u8A2D\u5B9A\u306E\u5FDC\u7B54\u306E data \u304C\u914D\u5217\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002")}
|
|
54
|
+
return data.map(recordOf)}var TEAM_FLAG={name:"--team",summary:"\u81EA\u5206\u304C\u4E0A\u9577\u306E\u30E1\u30F3\u30D0\u30FC\u306E\u5206\u3092\u8868\u793A\u3059\u308B\uFF08\u7121\u3051\u308C\u3070\u81EA\u5206\u306E\u5206\uFF09",takesValue:false};var WORKLOAD_DATE_FLAG={name:"--date",summary:"\u691C\u77E5\u65E5\u3067\u7D5E\u308A\u8FBC\u3080\uFF08YYYY-MM-DD\u30FB--team \u306E\u3068\u304D\u3060\u3051\uFF09",takesValue:true,placeholder:"<YYYY-MM-DD>"};var WORKLOAD_USAGE="twp analysis workload list [\
|
|
55
|
+
--team [--date <YYYY-MM-DD>]]";var WORKLOAD_COLUMNS=["detection_date","user_name","risk_level","risk_score","overtime_ratio","task_load_ratio","deadline_miss_rate","completion_speed_ratio","user_id"];function workloadRows(body){return listIn({result:isRecord(body)?body["result"]:void 0,data:dataOf(body,"\u8CA0\u8377\u72B6\u6CC1")},"data","\u8CA0\u8377\u72B6\u6CC1")}var workloadResource={name:"workload",summary:"\u904E\u8CA0\u8377\u691C\u77E5\u30A2\u30E9\u30FC\u30C8\uFF08\u6B8B\u696D\u30FB\u30BF\u30B9\u30AF\u91CF\u30FB\u671F\u9650\u8D85\u904E\u304B\u3089\u51FA\u3059\u8CA0\u8377\u306E\u30EA\u30B9\u30AF\uFF09",
|
|
56
|
+
operations:[{name:"list",summary:"\u8CA0\u8377\u306E\u30EA\u30B9\u30AF\u5224\u5B9A\u3092\u8868\u793A\u3059\u308B\uFF08\u65E2\u5B9A\u306F\u81EA\u5206\u30FB--team \u3067\u90E8\u4E0B\uFF09",usage:WORKLOAD_USAGE,description:"\u65E2\u5B9A\u306F GET /api/v2/analysis/workload-alerts/me\uFF08\u81EA\u5206\u30FB\u76F4\u8FD130\u4EF6\uFF09\u3067\u3059\u3002\n--team \u3092\u4ED8\u3051\u308B\u3068 GET /api/v2/analysis/workload-alerts/team\uFF08\u3042\u306A\u305F\u304C\u4E0A\u9577\u306E\u30E1\u30F3\u30D0\u30FC\uFF09\u3067\u3001--date \u3067\u691C\u77E5\u65E5\u3092\u7D5E\u308C\u307E\u3059\u3002\n\u3053\u308C\u306F\u4EBA\u4E8B\u30E1\u30CB\u30E5\u30FC\u306E\u300C\u8CA0\u8377\u72B6\u6CC1\u300D\u3067\u4F7F\u308F\u308C\u3066\u3044\u308B\u5224\u5B9A\u3067\u3001\u5206\u6790\u30DA\u30FC\u30B8\u306E\u95B2\u89A7\u5BFE\u8C61\u306E\u8A2D\u5B9A\u306F\u639B\u304B\u308A\u307E\u305B\u3093\uFF08\u5206\u6790\u306E\u6A29\u9650\u306F\u8981\u308A\u307E\u3059\uFF09\u3002",
|
|
57
|
+
flags:[TEAM_FLAG,WORKLOAD_DATE_FLAG],forbidden:analysisForbidden(levelGuidance("\u30E1\u30F3\u30D0\u30FC\u306E\u8CA0\u8377\u72B6\u6CC1","\u52E4\u6020\u3068\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u4E21\u65B9")),plan(input){noArgs(input,WORKLOAD_USAGE);const date=dateFlag(input.flags,WORKLOAD_DATE_FLAG.name);if(!input.flags.has(TEAM_FLAG.name)){if(date!==void 0)throw new UsageError("--date \u306F --team \u3068\u4E00\u7DD2\u306B\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u81EA\u5206\u306E\u5206\u306F\u65E5\u4ED8\u3067\u7D5E\u308C\u307E\u305B\u3093\uFF09",
|
|
58
|
+
WORKLOAD_USAGE);return{method:"GET",path:`${ANALYSIS_PATH}/workload-alerts/me`}}return{method:"GET",path:`${ANALYSIS_PATH}/workload-alerts/team`,query:{date}}},summarize:body=>workloadRows(body).map(row=>pick(row,WORKLOAD_COLUMNS)),raw:body=>workloadRows(body)}]};var HEALTH_FORBIDDEN=analysisForbidden(levelGuidance("\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u5065\u5168\u6027\u30B9\u30B3\u30A2","\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8"));var HEALTH_DATE_FLAG={name:"--date",summary:"\u57FA\u6E96\u65E5\uFF08YYYY-MM-DD\uFF09\u3002\u7121\u3051\u308C\u3070\u4ECA\u65E5\
|
|
59
|
+
\uFF08\u30B5\u30FC\u30D0\u304C\u6C7A\u3081\u307E\u3059\uFF09",takesValue:true,placeholder:"<YYYY-MM-DD>"};var WARNING_ONLY_FLAG={name:"--warning-only",summary:"\u65E9\u671F\u8B66\u544A\u304C\u51FA\u3066\u3044\u308B\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3060\u3051\u306B\u3059\u308B",takesValue:false};var HEALTH_PROJECT_FLAG={name:"--project",summary:"\u5BFE\u8C61\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\uFF08\u30B3\u30FC\u30C9\u30FBID\uFF09\u3002\u7121\u3051\u308C\u3070\u65E2\u5B9A\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8",
|
|
60
|
+
takesValue:true,placeholder:"<\u30B3\u30FC\u30C9|ID>"};var START_DATE_FLAG={name:"--from",summary:"\u958B\u59CB\u65E5\uFF08YYYY-MM-DD\uFF09",takesValue:true,placeholder:"<YYYY-MM-DD>"};var END_DATE_FLAG={name:"--to",summary:"\u7D42\u4E86\u65E5\uFF08YYYY-MM-DD\uFF09\u3002\u7121\u3051\u308C\u3070\u4ECA\u65E5",takesValue:true,placeholder:"<YYYY-MM-DD>"};var GRANULARITY_FLAG={name:"--granularity",summary:"\u96C6\u8A08\u306E\u7C92\u5EA6\uFF08day\u30FB\u65E2\u5B9A / week / month\uFF09",takesValue:true,
|
|
61
|
+
placeholder:"<day|week|month>"};var HEALTH_COLUMNS=["project_name","total_level","health_index","total_score","max_score","early_warning","trend","segment_name","calculation_status","project_id"];var HISTORY_COLUMNS=["date","total_level","health_index","total_score","max_score","early_warning","trend","calculation_status"];var INSIGHT_COLUMNS=["priority","type","title","description","related_dimension"];function healthData(body,label){const data=dataOf(body,label);if(!isRecord(data)){throw new ApiResponseError(
|
|
62
|
+
`${label}\u306E\u5FDC\u7B54\u306E data \u304C\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}return data}async function healthProject(input,ctx,usage,check){noArgs(input,usage);check(input);return withResolved(input,{projectId:await ctx.projectId(input.flags.get(HEALTH_PROJECT_FLAG.name))})}function granularity(input,usage){const raw=input.flags.get(GRANULARITY_FLAG.name)?.trim();
|
|
63
|
+
if(raw===void 0)return void 0;if(raw!=="day"&&raw!=="week"&&raw!=="month"){throw new UsageError(`--granularity \u306F day / week / month \u3067\u3059\uFF08\u53D7\u3051\u53D6\u3063\u305F\u5024: ${raw}\uFF09`,usage)}return raw}var HISTORY_USAGE="twp analysis project-health history [--project <\u30B3\u30FC\u30C9>] [--from <YYYY-MM-DD>] [--to <YYYY-MM-DD>] [--granularity day|week|month]";var INSIGHTS_USAGE="twp analysis project-health insights [--project <\u30B3\u30FC\u30C9>] [--date <YYYY-MM-DD>] --yes";
|
|
64
|
+
function historyQuery(input){const start=dateFlag(input.flags,START_DATE_FLAG.name);const end=dateFlag(input.flags,END_DATE_FLAG.name);if(start!==void 0&&end!==void 0&&start>end){throw new UsageError(`--from\uFF08${start}\uFF09\u304C --to\uFF08${end}\uFF09\u3088\u308A\u5F8C\u306B\u306A\u3063\u3066\u3044\u307E\u3059`,HISTORY_USAGE)}return{start_date:start,end_date:end,granularity:granularity(input,HISTORY_USAGE)}}var projectHealthResource={name:"project-health",summary:"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u5065\u5168\u6027\u30B9\u30B3\u30A2\uFF08\u4E00\u89A7\u30FB\u63A8\u79FB\u30FBAI \u306B\u3088\u308B\u6240\
|
|
65
|
+
\u898B\uFF09",operations:[{name:"list",summary:"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3054\u3068\u306E\u5065\u5168\u6027\u30B9\u30B3\u30A2\u3092\u8868\u793A\u3059\u308B",usage:"twp analysis project-health list [--date <YYYY-MM-DD>] [--warning-only]",description:"GET /api/v2/analysis/project-health\u3002\u4E26\u3073\u306F\u30B5\u30FC\u30D0\u306E\u307E\u307E\uFF08\u5371\u967A\u5EA6\u306E\u9AD8\u3044\u9806\uFF09\u3067\u3059\u3002\n\u5168\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3092\u95B2\u89A7\u3067\u304D\u308B\u4EBA\u306F\u5168\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3001\u305D\u308C\u4EE5\u5916\u306F\u30E1\u30F3\u30D0\u30FC\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3060\u3051\u304C\u4E26\u3073\u307E\u3059\u3002\n--date \u306E\u65E5\u306E\u30B9\u30B3\u30A2\u304C\u7121\u3051\u308C\u3070\u3001\u30B5\u30FC\u30D0\u304C\u76F4\u8FD17\u65E5\u307E\u3067\u9061\u308B\u304B\u3001\u305D\u306E\u5834\u3067\u8A08\u7B97\u3057\u307E\u3059\u3002\n\u67F1\u3054\u3068\u306E\u5185\u8A33\uFF08pillars / breakdown\uFF09\u306F --output json \u304B --query \u3067\u8AAD\u3081\u307E\u3059\u3002",
|
|
66
|
+
flags:[HEALTH_DATE_FLAG,WARNING_ONLY_FLAG],forbidden:HEALTH_FORBIDDEN,plan(input){noArgs(input,"twp analysis project-health list help");return{method:"GET",path:`${ANALYSIS_PATH}/project-health`,query:{date:dateFlag(input.flags,HEALTH_DATE_FLAG.name),warning_only:input.flags.has(WARNING_ONLY_FLAG.name)?1:void 0}}},summarize:body=>healthProjects(body).map(row=>pick(row,HEALTH_COLUMNS)),raw:body=>{healthProjects(body);return healthData(body,"\u5065\u5168\u6027\u30B9\u30B3\u30A2")},notes:body=>{const summary=recordOf(
|
|
67
|
+
healthData(body,"\u5065\u5168\u6027\u30B9\u30B3\u30A2")["summary"]);return[`\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8 ${String(summary["total_projects"]??"-")} \u4EF6 / \u5E73\u5747 ${String(summary["average_score"]??"-")} / \u5065\u5168 ${String(summary["healthy_count"]??"-")} / \u826F\u597D ${String(summary["good_count"]??"-")} / \u6CE8\u610F ${String(summary["warning_count"]??"-")} / \u5371\u967A ${String(summary["critical_count"]??"-")} / \u7B97\u51FA\u4E0D\u80FD ${String(summary["unavailable_cou\
|
|
68
|
+
nt"]??"-")}`]}},{name:"history",summary:"1\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u5065\u5168\u6027\u30B9\u30B3\u30A2\u306E\u63A8\u79FB\u3092\u8868\u793A\u3059\u308B",usage:HISTORY_USAGE,description:"GET /api/v2/analysis/project-health/history\u3002--project \u304C\u7121\u3051\u308C\u3070\u65E2\u5B9A\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\uFF08TWP_PROJECT \u7B49\uFF09\u3067\u3059\u3002\n\u671F\u9593\u3092\u7701\u304F\u3068\u30B5\u30FC\u30D0\u304C\u6C7A\u3081\u307E\u3059\uFF08\u7D42\u4E86\uFF1D\u4ECA\u65E5\u3001\u958B\u59CB\uFF1Dday \u306F30\u65E5\u524D\u30FBweek \u306F12\u9031\u524D\u30FBmonth \u306F12\u304B\u6708\u524D\uFF09\u3002",
|
|
69
|
+
flags:[HEALTH_PROJECT_FLAG,START_DATE_FLAG,END_DATE_FLAG,GRANULARITY_FLAG],forbidden:HEALTH_FORBIDDEN,prepare:(input,ctx)=>healthProject(input,ctx,HISTORY_USAGE,historyQuery),plan(input){noArgs(input,HISTORY_USAGE);return{method:"GET",path:`${ANALYSIS_PATH}/project-health/history`,query:{project_id:requireResolved(input,"projectId"),...historyQuery(input)}}},summarize:body=>historyRows(body).map(row=>pick(row,HISTORY_COLUMNS)),raw:body=>{historyRows(body);return healthData(body,"\u5065\u5168\u6027\u30B9\u30B3\u30A2\u306E\u63A8\u79FB")},
|
|
70
|
+
notes:body=>[`\u5E73\u5747\u30B9\u30B3\u30A2: ${String(healthData(body,"\u5065\u5168\u6027\u30B9\u30B3\u30A2\u306E\u63A8\u79FB")["average_score"]??"-")}`]},{name:"insights",summary:"1\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u5065\u5168\u6027\u306B\u3064\u3044\u3066 AI \u306E\u6240\u898B\u3092\u751F\u6210\u3059\u308B\uFF08AI \u30AF\u30EC\u30B8\u30C3\u30C8\u3092\u6D88\u8CBB\u30FB--yes \u304C\u8981\u308B\uFF09",usage:INSIGHTS_USAGE,description:"GET /api/v2/analysis/project-health/insights\u3002**\u547C\u3076\u305F\u3073\u306B\
|
|
71
|
+
\u30B5\u30FC\u30D0\u304C AI \u3067\u6240\u898B\u3092\u751F\u6210\u3057\u3001\u30C6\u30CA\u30F3\u30C8\u306E AI \u30AF\u30EC\u30B8\u30C3\u30C8\u3092\u6D88\u8CBB\u3057\u307E\u3059**\n\uFF08\u4FDD\u5B58\u3055\u308C\u305F\u7D50\u679C\u3092\u8FD4\u3059 API \u3067\u306F\u3042\u308A\u307E\u305B\u3093\uFF09\u3002\u305D\u306E\u305F\u3081\u8AAD\u307F\u53D6\u308A\u3067\u3059\u304C --yes \u304C\u8981\u308A\u307E\u3059\u3002\n\u30B9\u30B3\u30A2\u304C\u7121\u3044\u65E5\u306F\u30B5\u30FC\u30D0\u304C AI \u3092\u547C\u3070\u305A\u306B\u7406\u7531\uFF08message\uFF09\u3092\u8FD4\u3057\u307E\u3059\u3002\u30AF\u30EC\u30B8\u30C3\u30C8\u304C\u8DB3\u308A\u306A\u3044\u3068 402 \u3067\u3059\u3002",
|
|
72
|
+
destructive:true,confirmation:"AI \u30AF\u30EC\u30B8\u30C3\u30C8\u3092\u6D88\u8CBB\u3059\u308B\u64CD\u4F5C",flags:[HEALTH_PROJECT_FLAG,HEALTH_DATE_FLAG],forbidden:HEALTH_FORBIDDEN,prepare:(input,ctx)=>healthProject(input,ctx,INSIGHTS_USAGE,i=>dateFlag(i.flags,HEALTH_DATE_FLAG.name)),plan(input){noArgs(input,INSIGHTS_USAGE);return{method:"GET",path:`${ANALYSIS_PATH}/project-health/insights`,query:{project_id:requireResolved(input,"projectId"),date:dateFlag(input.flags,HEALTH_DATE_FLAG.name)}}},plannedNotes:input=>[
|
|
73
|
+
`\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8 ${input.flags.get(HEALTH_PROJECT_FLAG.name)??"\uFF08\u65E2\u5B9A\uFF09"}\uFF08ID: ${input.resolved?.["projectId"]??"-"}\uFF09\u30FB${dateFlag(input.flags,HEALTH_DATE_FLAG.name)??"\u4ECA\u65E5"} \u306E\u6240\u898B\u3092\u751F\u6210\u3057\u307E\u3059`,"\u30C6\u30CA\u30F3\u30C8\u306E AI \u30AF\u30EC\u30B8\u30C3\u30C8\u3092\u6D88\u8CBB\u3057\u307E\u3059\uFF08\u305D\u306E\u65E5\u306E\u30B9\u30B3\u30A2\u304C\u7121\u3051\u308C\u3070\u6D88\u8CBB\u3057\u307E\u305B\u3093\uFF09"],
|
|
74
|
+
summarize:body=>insightRows(body).map(row=>pick(row,INSIGHT_COLUMNS)),raw:body=>{insightRows(body);return healthData(body,"\u5065\u5168\u6027\u306E\u6240\u898B")},notes:body=>{const message=healthData(body,"\u5065\u5168\u6027\u306E\u6240\u898B")["message"];return typeof message==="string"&&message!==""?[message]:[]}}]};function healthProjects(body){return listIn({result:true,projects:healthData(body,"\u5065\u5168\u6027\u30B9\u30B3\u30A2")["projects"]},"projects","\u5065\u5168\u6027\u30B9\u30B3\u30A2")}
|
|
75
|
+
function historyRows(body){return listIn({result:true,history:healthData(body,"\u5065\u5168\u6027\u30B9\u30B3\u30A2\u306E\u63A8\u79FB")["history"]},"history","\u5065\u5168\u6027\u30B9\u30B3\u30A2\u306E\u63A8\u79FB")}function insightRows(body){return listIn({result:true,insights:healthData(body,"\u5065\u5168\u6027\u306E\u6240\u898B")["insights"]},"insights","\u5065\u5168\u6027\u306E\u6240\u898B")}var analysisDomain={name:"analysis",summary:"\u5206\u6790\uFF08\u7A3C\u50CD\u5206\u6790\u30FB\u30A2\u30B5\u30A4\u30F3\u5206\u6790\u30FB\u30AD\u30E3\u30D1\u30B7\u30C6\u30A3\u30FB\u8CA0\u8377\u30FB\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u5065\u5168\u6027\uFF09\u306E\u8AAD\u307F\u53D6\u308A",
|
|
76
|
+
operations:[],subresources:[{name:"operating-hours",summary:"\u7A3C\u50CD\u5206\u6790\uFF08\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u5225\u30FB\u30E6\u30FC\u30B6\u30FC\u5225\u306E\u7A3C\u50CD\u6642\u9593\uFF09",operations:[operatingHoursList]},{name:"project-assignment",summary:"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u30A2\u30B5\u30A4\u30F3\uFF08\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3054\u3068\u306E\u30A2\u30B5\u30A4\u30F3\u6642\u9593\uFF09",operations:[projectAssignmentList]},{name:"staff-assignment",
|
|
77
|
+
summary:"\u4EBA\u6750\u5225\u30A2\u30B5\u30A4\u30F3\uFF08\u30E6\u30FC\u30B6\u30FC\u3054\u3068\u306E\u30A2\u30B5\u30A4\u30F3\u6642\u9593\u3068\u7A3C\u50CD\u7387\uFF09",operations:[staffAssignmentList]},capacityResource,workloadResource,projectHealthResource]};var MANHOUR_FROM_FLAG={name:"--from",summary:"\u958B\u59CB\u65E5\uFF08YYYY-MM-DD\uFF09\u3002\u7121\u3051\u308C\u3070\u4ECA\u6708\u306E\u521D\u65E5\uFF08\u30B5\u30FC\u30D0\u304C\u6C7A\u3081\u307E\u3059\uFF09",takesValue:true,placeholder:"<YYY\
|
|
78
|
+
Y-MM-DD>"};var MANHOUR_TO_FLAG={name:"--to",summary:"\u7D42\u4E86\u65E5\uFF08YYYY-MM-DD\uFF09\u3002\u7121\u3051\u308C\u3070\u4ECA\u6708\u306E\u672B\u65E5\uFF08\u30B5\u30FC\u30D0\u304C\u6C7A\u3081\u307E\u3059\uFF09",takesValue:true,placeholder:"<YYYY-MM-DD>"};function manhourQuery(input,usage){const start=dateFlag(input.flags,MANHOUR_FROM_FLAG.name);const end=dateFlag(input.flags,MANHOUR_TO_FLAG.name);if(start!==void 0&&end!==void 0&&start>end){throw new UsageError(`--from\uFF08${start}\uFF09\u304C --to\uFF08${end}\
|
|
79
|
+
\uFF09\u3088\u308A\u5F8C\u306B\u306A\u3063\u3066\u3044\u307E\u3059`,usage)}return{start_date:start,end_date:end}}var MANHOUR_DESCRIPTION="\u671F\u9593\u3092\u7701\u304F\u3068\u4ECA\u6708\u3067\u3059\uFF08\u30C6\u30CA\u30F3\u30C8\u306E\u696D\u52D9\u65E5\u306E\u533A\u5207\u308A\u3067\u30B5\u30FC\u30D0\u304C\u6C7A\u3081\u307E\u3059\uFF09\u3002\n--output table / text / tsv \u306F\u30E6\u30FC\u30B6\u30FC\u3054\u3068\u306E\u5408\u8A08\uFF08\u5206\u3068 h:mm\uFF09\u3067\u3001\u65E5\u5225\uFF08by_date\uFF09\u306F --output json \u304B --query \u3067\u8AAD\u3081\u307E\u3059\u3002\n\u5FDC\u7B54\u306B\u30E6\u30FC\u30B6\u30FC\u540D\u306F\u542B\u307E\u308C\u307E\u305B\u3093\uFF08user_id \u306F twp project members \u306E user_id \u3068\u540C\u3058\u5024\u3067\u3059\uFF09\u3002";
|
|
80
|
+
function manhourRows(body,label){return listIn(body,"by_user",label).map(row=>({user_id:row["user_id"]??null,total_minutes:row["total_minutes"]??null,total:hoursMinutes(row["total_minutes"])??null}))}function manhourNotes(body){if(!isRecord(body))return[];return[`\u671F\u9593: ${String(body["start_date"]??"-")} \u301C ${String(body["end_date"]??"-")} / \u5408\u8A08 ${String(hoursMinutes(body["total_minutes"])??"-")}`]}function workloadDistributionRows(body){return listIn(body,"members","\u30E1\u30F3\u30D0\u30FC\u5225\u306E\u8CA0\u8377").
|
|
81
|
+
map(row=>({user_name:row["user_name"]??(row["user_id"]===null?"\uFF08\u672A\u5272\u308A\u5F53\u3066\uFF09":null),total_tasks:row["total_tasks"]??null,estimated_hours:row["estimated_hours"]??null,by_status:Array.isArray(row["by_status"])?row["by_status"].map(recordOf).map(s=>`${String(s["status_name"]??s["status_id"]??"?")}:${String(s["count"]??"?")}`).join(" "):null,user_id:row["user_id"]??null}))}function workloadDistributionNotes(body){if(!isRecord(body))return[];return[`\u672A\u5B8C\u4E86 ${String(
|
|
82
|
+
body["total_active_tasks"]??"-")} \u4EF6 / \u5168\u30BF\u30B9\u30AF ${String(body["total_tasks"]??"-")} \u4EF6`]}export{analysisForbidden,currentMonth,monthsBetween,analysisDomain,MANHOUR_FROM_FLAG,MANHOUR_TO_FLAG,manhourQuery,MANHOUR_DESCRIPTION,manhourRows,manhourNotes,workloadDistributionRows,workloadDistributionNotes};
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{loadDomain}from"./chunk-
|
|
4
|
-
import{GLOBAL_OPTIONS_HELP}from"./chunk-YLM54X35.js";import{AuthSession,NotLoggedInError,SessionExpiredError,loadCredentials}from"./chunk-XNLIEUAW.js";import{effectiveApiUrl,loadUserConfig,resolveConfiguredOutput,resolveProfile}from"./chunk-4VZKNEVN.js";import{HELP_TOKEN}from"./chunk-
|
|
5
|
-
positiveInteger,shellQuote}from"./chunk-IOGMOXYF.js";import{isRecord}from"./chunk-VTQAI52S.js";import{ApiRejectedError,ApiResponseError,EXIT_API_CLIENT,EXIT_API_SERVER,EXIT_AUTH,EXIT_FAILURE,EXIT_OK,EXIT_USAGE,NetworkError,UsageError}from"./chunk-UFND7FBC.js";import{httpFetch}from"./chunk-J7QYPKVK.js";import{stripTerminalControls}from"./chunk-NHYMHCAT.js";import fs from"fs";import path from"path";var NO_REDACT_FLAG={name:"--no-redact",summary:"\u5FDC\u7B54\u306E\u4F0F\u5B57\u5316\u3092\u89E3\u9664\u3057\u3066\u751F\u306E\u5024\u3092\u51FA\u3059\uFF08\u9375\u306E\u53D7\u3051\u53D6\u308A\u7B49\uFF09",takesValue:false};var NO_REDACT_NOTICE="\u6CE8\u8A18: --no-redact \u306E\u305F\u3081\u51FA\u529B\u3092\u4F0F\u5B57\u5316\u3057\u307E\u305B\u3093\uFF08\u7AEF\u672B\u3068\u30ED\u30B0\u306B\u5E73\u6587\u3067\u6B8B\u308A\u307E\u3059\uFF09\u3002";function withCommonFlags(flags){return flags.some(flag=>flag.
|
|
3
|
+
import{loadDomain}from"./chunk-C2MQANJO.js";import{evaluateQuery}from"./chunk-ATYA6DG5.js";import{renderDocument,renderOutput}from"./chunk-Y4SREWAG.js";import{redactSecretValues,redactSecrets,withDebug}from"./chunk-IOCNJMVW.js";import{JsonBodyWithView}from"./chunk-Q3B65OFC.js";import{Resolver,requireDefaultProject}from"./chunk-D5FEOBB6.js";import{ResolveError}from"./chunk-GMBJTG6A.js";import{parseOperationArgs}from"./chunk-F7K37QG6.js";import{ApiError,
|
|
4
|
+
MultipartBody,TwpApiClient,appendQuery}from"./chunk-IF2K4PM5.js";import{GLOBAL_OPTIONS_HELP}from"./chunk-YLM54X35.js";import{AuthSession,NotLoggedInError,SessionExpiredError,loadCredentials}from"./chunk-XNLIEUAW.js";import{effectiveApiUrl,loadUserConfig,resolveConfiguredOutput,resolveProfile}from"./chunk-4VZKNEVN.js";import{HELP_TOKEN}from"./chunk-Y5EN7RYN.js";import{OUTPUT_FORMATS,resolveOutputFormat}from"./chunk-K2ONOH3L.js";import{stringWidth}from"./chunk-WVS4W5FY.js";
|
|
5
|
+
import{DEFAULT_MAX_ITEMS,DEFAULT_MAX_PAGES,nextPageNotes,positiveInteger,shellQuote}from"./chunk-IOGMOXYF.js";import{isRecord}from"./chunk-VTQAI52S.js";import{ApiRejectedError,ApiResponseError,EXIT_API_CLIENT,EXIT_API_SERVER,EXIT_AUTH,EXIT_FAILURE,EXIT_OK,EXIT_USAGE,NetworkError,UsageError}from"./chunk-UFND7FBC.js";import{httpFetch}from"./chunk-J7QYPKVK.js";import{stripTerminalControls}from"./chunk-NHYMHCAT.js";import fs from"fs";import path from"path";var NO_REDACT_FLAG={name:"--no-redact",summary:"\u5FDC\u7B54\u306E\u4F0F\u5B57\u5316\u3092\u89E3\u9664\u3057\u3066\u751F\u306E\u5024\u3092\u51FA\u3059\uFF08\u9375\u306E\u53D7\u3051\u53D6\u308A\u7B49\uFF09",takesValue:false};var NO_REDACT_NOTICE="\u6CE8\u8A18: --no-redact \u306E\u305F\u3081\u51FA\u529B\u3092\u4F0F\u5B57\u5316\u3057\u307E\u305B\u3093\uFF08\u7AEF\u672B\u3068\u30ED\u30B0\u306B\u5E73\u6587\u3067\u6B8B\u308A\u307E\u3059\uFF09\u3002";function withCommonFlags(flags){return flags.some(flag=>flag.
|
|
6
6
|
name===NO_REDACT_FLAG.name)?flags:[...flags,NO_REDACT_FLAG]}function alignedList(entries,indent=" "){const width=entries.reduce((max,[left])=>Math.max(max,stringWidth(left)),0);return entries.map(([left,right])=>`${indent}${left}${" ".repeat(Math.max(0,width-stringWidth(left)))} ${right}`).join("\n")}function subresourcesOf(resource){return resource.subresources??[]}function renderResourceHelp(resource,path2){const subresources=subresourcesOf(resource);const operationSection=resource.operations.length===0?"":`
|
|
7
7
|
\u64CD\u4F5C:
|
|
8
8
|
${alignedList(resource.operations.map(op=>[op.name,op.summary]))}
|
|
@@ -24,19 +24,20 @@ return EXIT_AUTH;if(err instanceof ApiError)return exitCodeForStatus(err.status)
|
|
|
24
24
|
Error?err.message:String(err));const rawHint=err instanceof UsageError?err.hint:void 0;const hint=rawHint!==void 0?safeText(rawHint):void 0;if(format==="json"){const body={code,message};if(err instanceof ApiError)body["status"]=err.status;if(err instanceof ResolveError&&err.status!==null)body["status"]=err.status;if(hint!==void 0)body["hint"]=hint;write(`${JSON.stringify({error:body},null,2)}
|
|
25
25
|
`);return}write(`${message}
|
|
26
26
|
`);if(hint!==void 0)write(`${hint}
|
|
27
|
-
`)}function dryRunValue(apiUrl,plan,sensitiveBody){const value={method:plan.method,url:`${apiUrl}${appendQuery(plan.path,plan.query)}`};if(plan.body!==void 0)value["body"]=plan.body instanceof MultipartBody?plan.body.toJSON():plan.body;if(sensitiveBody!==void 0&&isRecord(value["body"])){const hidden=`\uFF08${sensitiveBody}\u305F\u3081\u8868\u793A\u3057\u306A\u3044\u30FB--no-redact \u3067\u8868\u793A\uFF09`;value["body"]=
|
|
28
|
-
async function send(client,apiUrl,plan){try{return await client.request(plan.method,appendQuery(plan.path,plan.query),plan.body)}catch(err){if(err instanceof ApiError||err instanceof NotLoggedInError||err instanceof SessionExpiredError){throw err}throw new NetworkError(`${apiUrl} \u3078\u306E\u901A\u4FE1\u306B\u5931\u6557\u3057\u307E\u3057\u305F: ${err.message}`,{cause:err})}}async function putSigned(fetchImpl,url,bytes,contentType){
|
|
29
|
-
|
|
30
|
-
GET"})}catch(err){throw new NetworkError(`\u30B9\u30C8\u30EC\u30FC\u30B8\u304B\u3089\u306E\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u306B\u5931\u6557\u3057\u307E\u3057\u305F: ${err.message}`,{cause:err})}if(!res.ok){throw new NetworkError(`\u30B9\u30C8\u30EC\u30FC\u30B8\u304B\u3089\u306E\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u304C\u62D2\u5426\u3055\u308C\u307E\u3057\u305F\uFF08HTTP ${res.status}\uFF09`)}return{bytes:new Uint8Array(await res.arrayBuffer()),contentType:res.
|
|
31
|
-
const raw=input.flags.get(spec.outFlag);if(raw===void 0||raw.trim()===""){throw new UsageError(`${spec.outFlag} \u306F\u5FC5\u9808\u3067\u3059\uFF08twp ${commandPath} ${operationName}\uFF09`,`\u66F8\u304D\u51FA\u3057\u5148\u306E\u30D5\u30A1\u30A4\u30EB\u30D1\u30B9\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u6A19\u6E96\u51FA\u529B\u3078\u306F\u51FA\u3057\u307E\u305B\u3093\uFF09\u3002`)}
|
|
32
|
-
if(!target.force&&fs.existsSync(target.out)){throw new UsageError(`\u66F8\u304D\u51FA\u3057\u5148\u304C\u65E2\u306B\u3042\u308A\u307E\u3059: ${target.out}`,`\u4E0A\u66F8\u304D\u3059\u308B\u306A\u3089 ${forceFlag} \u3092\u4ED8\u3051\u3066\u304F\u3060\u3055\u3044\uFF08\u65E2\u5B9A\u3067\u306F\u4E0A\u66F8\u304D\u3057\u307E\u305B\u3093\uFF09\u3002`)}const dir=path.dirname(target.
|
|
33
|
-
"\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3092\u4F5C\u3063\u3066\u304B\u3089\u5B9F\u884C\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u81EA\u52D5\u3067\u306F\u4F5C\u6210\u3057\u307E\u305B\u3093\uFF09\u3002")}}async function download(args){let received;if(args.signed!==void 0){const url=args.signed.signedUrl(await send(args.client,args.
|
|
34
|
-
path,args.plan.query))}catch(err){if(err instanceof ApiError||err instanceof NotLoggedInError||err instanceof SessionExpiredError)throw err;throw new NetworkError(`${args.apiUrl} \u3078\u306E\u901A\u4FE1\u306B\u5931\u6557\u3057\u307E\u3057\u305F: ${err.message}`,{cause:err})}}try{fs.writeFileSync(args.target.out,received.bytes,{
|
|
35
|
-
target.out}`,"\u4E0A\u66F8\u304D\u3059\u308B\u306A\u3089 --force \u3092\u4ED8\u3051\u3066\u304F\u3060\u3055\u3044\u3002")}throw new Error(`\u66F8\u304D\u51FA\u3057\u306B\u5931\u6557\u3057\u307E\u3057\u305F\uFF08${args.target.out}\uFF09: ${err.message}`,{cause:err})}const captured={};for(const name of args.captureHeaders??
|
|
36
|
-
|
|
37
|
-
return new UsageError(`${vocabulary.mode} \u304C\u4E0A\u9650\u306B\u9054\u3057\u305F\u305F\u3081\u4E2D\u65AD\u3057\u307E\u3057\u305F\uFF08${reason}\uFF0F${pages} \u30DA\u30FC\u30B8\u30FB${count} \u4EF6\u3092\u53D6\u5F97\u6E08\u307F\uFF09\u3002\u3053\u308C\u306F\u5168\u4EF6\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002`,`${vocabulary.capAdvice}\u7D9A\u304D\u3060\u3051\u3092\u53D6\u308B\u306A\u3089 ${resumeHint(
|
|
38
|
-
const{paging,maxPages,maxItems}=args;const vocabulary=args.vocabulary??CURATED_PAGING_VOCABULARY;const merged=[];const cursorParam=paging.cursorParamFor?.(args.plan)??paging.cursorParam;const first=args.plan.query?.[cursorParam];let sent=typeof first==="string"?first:"";let scanTruncated=false;for(let page=1;;page+=1){const plan=page===1?args.plan:{...args.plan,query:{...args.plan.query,[cursorParam]:sent}};
|
|
39
|
-
apiUrl,plan)}catch(err){if(page>1){(args.warn??writeErr)(`${vocabulary.mode} \u306F ${page} \u30DA\u30FC\u30B8\u76EE\u3067\u5931\u6557\u3057\u307E\u3057\u305F\uFF08${page-1} \u30DA\u30FC\u30B8\u30FB${merged.length} \u4EF6\u3092\u53D6\u5F97\u6E08\u307F\uFF09\u3002\u3053\u308C\u306F\u5168\u4EF6\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002\u7D9A\u304D\u306F ${resumeHint(vocabulary,stripTerminalControls(sent))}
|
|
27
|
+
`)}function dryRunValue(apiUrl,plan,sensitiveBody){const value={method:plan.method,url:`${apiUrl}${appendQuery(plan.path,plan.query)}`};if(plan.body!==void 0)value["body"]=plan.body instanceof MultipartBody?plan.body.toJSON():plan.body;if(plan.body instanceof JsonBodyWithView)value["body"]=plan.body.dryRunView();if(sensitiveBody!==void 0&&isRecord(value["body"])){const hidden=`\uFF08${sensitiveBody}\u305F\u3081\u8868\u793A\u3057\u306A\u3044\u30FB--no-redact \u3067\u8868\u793A\uFF09`;value["body"]=
|
|
28
|
+
Object.fromEntries(Object.keys(value["body"]).map(key=>[key,hidden]))}return value}async function send(client,apiUrl,plan){try{return await client.request(plan.method,appendQuery(plan.path,plan.query),plan.body)}catch(err){if(err instanceof ApiError||err instanceof NotLoggedInError||err instanceof SessionExpiredError){throw err}throw new NetworkError(`${apiUrl} \u3078\u306E\u901A\u4FE1\u306B\u5931\u6557\u3057\u307E\u3057\u305F: ${err.message}`,{cause:err})}}async function putSigned(fetchImpl,url,bytes,contentType){
|
|
29
|
+
let res;try{res=await fetchImpl(url,{method:"PUT",headers:{"Content-Type":contentType},body:bytes})}catch(err){throw new NetworkError(`\u30B9\u30C8\u30EC\u30FC\u30B8\u3078\u306E\u30A2\u30C3\u30D7\u30ED\u30FC\u30C9\u306B\u5931\u6557\u3057\u307E\u3057\u305F: ${err.message}`,{cause:err})}if(!res.ok){throw new NetworkError(`\u30B9\u30C8\u30EC\u30FC\u30B8\u3078\u306E\u30A2\u30C3\u30D7\u30ED\u30FC\u30C9\u304C\u62D2\u5426\u3055\u308C\u307E\u3057\u305F\uFF08HTTP ${res.status}\uFF09`)}}async function getSigned(fetchImpl,url){
|
|
30
|
+
let res;try{res=await fetchImpl(url,{method:"GET"})}catch(err){throw new NetworkError(`\u30B9\u30C8\u30EC\u30FC\u30B8\u304B\u3089\u306E\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u306B\u5931\u6557\u3057\u307E\u3057\u305F: ${err.message}`,{cause:err})}if(!res.ok){throw new NetworkError(`\u30B9\u30C8\u30EC\u30FC\u30B8\u304B\u3089\u306E\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u304C\u62D2\u5426\u3055\u308C\u307E\u3057\u305F\uFF08HTTP ${res.status}\uFF09`)}return{bytes:new Uint8Array(await res.arrayBuffer()),contentType:res.
|
|
31
|
+
headers.get("content-type")}}function resolveDownloadTarget(spec,commandPath,operationName,input){const raw=input.flags.get(spec.outFlag);if(raw===void 0||raw.trim()===""){throw new UsageError(`${spec.outFlag} \u306F\u5FC5\u9808\u3067\u3059\uFF08twp ${commandPath} ${operationName}\uFF09`,`\u66F8\u304D\u51FA\u3057\u5148\u306E\u30D5\u30A1\u30A4\u30EB\u30D1\u30B9\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u6A19\u6E96\u51FA\u529B\u3078\u306F\u51FA\u3057\u307E\u305B\u3093\uFF09\u3002`)}
|
|
32
|
+
return{out:path.resolve(raw.trim()),force:input.flags.has(spec.forceFlag)}}function assertWritableTarget(target,forceFlag){if(!target.force&&fs.existsSync(target.out)){throw new UsageError(`\u66F8\u304D\u51FA\u3057\u5148\u304C\u65E2\u306B\u3042\u308A\u307E\u3059: ${target.out}`,`\u4E0A\u66F8\u304D\u3059\u308B\u306A\u3089 ${forceFlag} \u3092\u4ED8\u3051\u3066\u304F\u3060\u3055\u3044\uFF08\u65E2\u5B9A\u3067\u306F\u4E0A\u66F8\u304D\u3057\u307E\u305B\u3093\uFF09\u3002`)}const dir=path.dirname(target.
|
|
33
|
+
out);if(!fs.existsSync(dir)){throw new UsageError(`\u66F8\u304D\u51FA\u3057\u5148\u306E\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u304C\u3042\u308A\u307E\u305B\u3093: ${dir}`,"\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3092\u4F5C\u3063\u3066\u304B\u3089\u5B9F\u884C\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u81EA\u52D5\u3067\u306F\u4F5C\u6210\u3057\u307E\u305B\u3093\uFF09\u3002")}}async function download(args){let received;if(args.signed!==void 0){const url=args.signed.signedUrl(await send(args.client,args.
|
|
34
|
+
apiUrl,args.plan),args.plan);received=await getSigned(args.signed.fetchImpl,url)}else{try{received=await args.client.requestBinary(args.plan.method,appendQuery(args.plan.path,args.plan.query))}catch(err){if(err instanceof ApiError||err instanceof NotLoggedInError||err instanceof SessionExpiredError)throw err;throw new NetworkError(`${args.apiUrl} \u3078\u306E\u901A\u4FE1\u306B\u5931\u6557\u3057\u307E\u3057\u305F: ${err.message}`,{cause:err})}}try{fs.writeFileSync(args.target.out,received.bytes,{
|
|
35
|
+
flag:args.target.force?"w":"wx"})}catch(err){const code=err.code;if(code==="EEXIST"){throw new UsageError(`\u66F8\u304D\u51FA\u3057\u5148\u304C\u65E2\u306B\u3042\u308A\u307E\u3059: ${args.target.out}`,"\u4E0A\u66F8\u304D\u3059\u308B\u306A\u3089 --force \u3092\u4ED8\u3051\u3066\u304F\u3060\u3055\u3044\u3002")}throw new Error(`\u66F8\u304D\u51FA\u3057\u306B\u5931\u6557\u3057\u307E\u3057\u305F\uFF08${args.target.out}\uFF09: ${err.message}`,{cause:err})}const captured={};for(const name of args.captureHeaders??
|
|
36
|
+
[]){const value=received.headers?.get(name);if(typeof value==="string")captured[name]=value}return{path:args.target.out,size:received.bytes.byteLength,contentType:received.contentType,...Object.keys(captured).length>0?{headers:captured}:{}}}function resumeHint(vocabulary,cursor){return vocabulary.resume!==void 0?vocabulary.resume(cursor):`${vocabulary.resumeFlag} ${shellQuote(cursor)}`}var CURATED_PAGING_VOCABULARY={mode:"--all",resumeFlag:"--cursor",capAdvice:"--limit \u3092\u5927\u304D\u304F\u3057\u3066\u5F80\u5FA9\u3092\u6E1B\u3089\u3059\u304B\u3001--max-pages \
|
|
37
|
+
/ --max-items \u3092\u4E0A\u3052\u3066\u304F\u3060\u3055\u3044\u3002"};function capExceeded(vocabulary,reason,pages,count,cursor){return new UsageError(`${vocabulary.mode} \u304C\u4E0A\u9650\u306B\u9054\u3057\u305F\u305F\u3081\u4E2D\u65AD\u3057\u307E\u3057\u305F\uFF08${reason}\uFF0F${pages} \u30DA\u30FC\u30B8\u30FB${count} \u4EF6\u3092\u53D6\u5F97\u6E08\u307F\uFF09\u3002\u3053\u308C\u306F\u5168\u4EF6\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002`,`${vocabulary.capAdvice}\u7D9A\u304D\u3060\u3051\u3092\u53D6\u308B\u306A\u3089 ${resumeHint(
|
|
38
|
+
vocabulary,cursor)} \u304B\u3089\u518D\u958B\u3067\u304D\u307E\u3059`)}async function fetchAllPages(args){const{paging,maxPages,maxItems}=args;const vocabulary=args.vocabulary??CURATED_PAGING_VOCABULARY;const merged=[];const cursorParam=paging.cursorParamFor?.(args.plan)??paging.cursorParam;const first=args.plan.query?.[cursorParam];let sent=typeof first==="string"?first:"";let scanTruncated=false;for(let page=1;;page+=1){const plan=page===1?args.plan:{...args.plan,query:{...args.plan.query,[cursorParam]:sent}};
|
|
39
|
+
let body;try{body=page===1&&"firstPage"in args?args.firstPage:await send(args.client,args.apiUrl,plan)}catch(err){if(page>1){(args.warn??writeErr)(`${vocabulary.mode} \u306F ${page} \u30DA\u30FC\u30B8\u76EE\u3067\u5931\u6557\u3057\u307E\u3057\u305F\uFF08${page-1} \u30DA\u30FC\u30B8\u30FB${merged.length} \u4EF6\u3092\u53D6\u5F97\u6E08\u307F\uFF09\u3002\u3053\u308C\u306F\u5168\u4EF6\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002\u7D9A\u304D\u306F ${resumeHint(vocabulary,stripTerminalControls(sent))}\
|
|
40
|
+
\u304B\u3089\u518D\u958B\u3067\u304D\u307E\u3059\u3002
|
|
40
41
|
`)}throw err}for(const item of paging.items(body))merged.push(item);if(typeof body==="object"&&body!==null&&body["scan_truncated"]===true)scanTruncated=true;const next=paging.nextCursor(body);if(next===null){const combined=paging.withItems(body,merged);const flagged=scanTruncated&&typeof combined==="object"&&combined!==null&&!Array.isArray(combined)?{...combined,scan_truncated:true}:combined;return{body:flagged,pages:page,count:merged.length}}if(merged.length>=maxItems)throw capExceeded(vocabulary,
|
|
41
42
|
`\u6700\u5927\u4EF6\u6570 ${maxItems} \u4EF6`,page,merged.length,next);if(page>=maxPages)throw capExceeded(vocabulary,`\u6700\u5927\u30DA\u30FC\u30B8\u6570 ${maxPages}`,page,merged.length,next);if(next===sent){throw new ApiResponseError(`\u540C\u3058\u30AB\u30FC\u30BD\u30EB\uFF08${next}\uFF09\u304C\u7E70\u308A\u8FD4\u3057\u8FD4\u3055\u308C\u305F\u305F\u3081\u4E2D\u65AD\u3057\u307E\u3057\u305F\u3002${merged.length} \u4EF6\u3092\u53D6\u5F97\u3057\u305F\u6642\u70B9\u3067\u3001\u3053\u308C\u306F\u5168\u4EF6\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002`)}
|
|
42
43
|
sent=next}}function resolvePaging(operation,path2,input){const all=input.flags.has("--all");const maxPages=positiveInteger(input.flags,"--max-pages")??DEFAULT_MAX_PAGES;const maxItems=positiveInteger(input.flags,"--max-items")??DEFAULT_MAX_ITEMS;positiveInteger(input.flags,"--limit");if(all&&operation.paging===void 0){throw new UsageError(`twp ${path2} ${operation.name} \u306F --all \u306B\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u305B\u3093`)}for(const name of["--max-pages","--max-items"]){if(!all&&
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{
|
|
4
|
-
|
|
3
|
+
import{contentTypeFor,inspectLocalFile,issued}from"./chunk-HNUBM24L.js";import{createFlags,fieldBody,hasAnyField,updateFlags}from"./chunk-JNPCHV7S.js";import{checkUploadQuota}from"./chunk-2YNZ4MRT.js";import{readCsvFileText}from"./chunk-OHXZO5WK.js";import{featureLicenseGuidance}from"./chunk-XXVYGQ72.js";import{CUSTOMERS_PATH,SALES_COMPANIES_PATH,isExactNumericId}from"./chunk-D5FEOBB6.js";import{isSafePathSegment}from"./chunk-GMBJTG6A.js";import{ApiError,
|
|
4
|
+
errorListMessages}from"./chunk-IF2K4PM5.js";import{LIST_FLAGS,LIST_PAGING_HELP,envelopePaging,nonEmpty,positiveInteger}from"./chunk-IOGMOXYF.js";import{requireResolved,singleRef,withResolved}from"./chunk-LXIAOCUW.js";import{acknowledgement,isRecord,pick}from"./chunk-VTQAI52S.js";import{ApiRejectedError,ApiResponseError,UsageError}from"./chunk-UFND7FBC.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\
|
|
7
7
|
\u306B\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002");var CUSTOMER_UPDATE_FORBIDDEN=levelForbidden(CUSTOMER_LICENSE,"\u9867\u5BA2\u306E\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");
|
|
@@ -3,7 +3,8 @@ const require = __twpCreateRequire(import.meta.url);
|
|
|
3
3
|
import{stripTerminalControls}from"./chunk-NHYMHCAT.js";var SENSITIVE_HEADERS=new Set(["authorization","proxy-authorization","cookie","set-cookie","x-api-key","x-auth-token","x-vercel-protection-bypass"]);var REDACTED="***\uFF08\u4F0F\u5B57\uFF09";var SECRET_KEY_PATTERN="[A-Za-z0-9_-]*(?:token|secret|password|passwd|api[_-]?key|credential|signature)[A-Za-z0-9_-]*";var NOT_SECRET_FLAGS="(?:starting-token)";var NOT_SECRET_QUERY="(?:skiptoken)";function redactSecrets(text){return text.replace(/\bBearer\s+[^\s"'`,;)\]}]+/gi,`Bearer ${REDACTED}`).replace(
|
|
4
4
|
/(\/v2\/(?:admin\/)?invitations\/)[A-Za-z0-9_-]{16,}/g,`$1${REDACTED}`).replace(new RegExp(`("${SECRET_KEY_PATTERN}"\\s*:\\s*)"(?:[^"\\\\]|\\\\.)*"`,"gi"),`$1"${REDACTED}"`).replace(new RegExp(`([?&](?!${NOT_SECRET_QUERY}=)${SECRET_KEY_PATTERN}=)[^&\\s"'\`,;)\\]}]+`,"gi"),`$1${REDACTED}`).replace(new RegExp(`(--(?!${NOT_SECRET_FLAGS}(?:=|\\s))${SECRET_KEY_PATTERN}(?:=|\\s+))('[^']*'|"[^"]*"|[A-Za-z0-9_.~+/=|:%-]+)`,"gi"),`$1${REDACTED}`)}var SECRET_KEY_NAME=new RegExp(`^${SECRET_KEY_PATTERN}$`,"\
|
|
5
5
|
i");function redactSecretValues(value){if(Array.isArray(value))return value.map(item=>redactSecretValues(item));if(value!==null&&typeof value==="object"){const out={};for(const[key,item]of Object.entries(value)){out[key]=SECRET_KEY_NAME.test(key)?REDACTED:redactSecretValues(item)}return out}return value}function formatHeaders(headers){if(!headers)return[];const entries=headers instanceof Headers?[...headers.entries()]:Array.isArray(headers)?headers:Object.entries(headers);return entries.map(([name,
|
|
6
|
-
value])=>{const shown=SENSITIVE_HEADERS.has(name.toLowerCase())?REDACTED:redactSecrets(String(value));return` ${name.toLowerCase()}: ${shown}`})}var BODY_LIMIT=4e3;function formatBody(raw){const safe=redactSecrets(stripTerminalControls(raw));return safe.length>BODY_LIMIT?`${safe.
|
|
6
|
+
value])=>{const shown=SENSITIVE_HEADERS.has(name.toLowerCase())?REDACTED:redactSecrets(String(value));return` ${name.toLowerCase()}: ${shown}`})}var BODY_LIMIT=4e3;function omitAttachmentBytes(body){return body.replace(/"contentBytes":"([A-Za-z0-9+/=]*)"/g,(_,b64)=>`"contentBytes":"\uFF08base64 ${b64.length} \u6587\u5B57\u30FB\u51FA\u529B\u3057\u306A\u3044\uFF09"`)}function formatBody(raw){const safe=omitAttachmentBytes(redactSecrets(stripTerminalControls(raw)));return safe.length>BODY_LIMIT?`${safe.
|
|
7
|
+
slice(0,BODY_LIMIT)}
|
|
7
8
|
\u2026\uFF08\u4EE5\u964D ${safe.length-BODY_LIMIT} \u6587\u5B57\u3092\u7701\u7565\uFF09`:safe}function isTextualContentType(contentType){if(contentType===null)return false;return/^\s*(text\/|application\/(json|xml|javascript|x-www-form-urlencoded)|application\/[\w.+-]*\+(json|xml))/i.test(contentType)}function withDebug(inner,options={}){const write=options.write??(text=>void process.stderr.write(text));const now=options.now??(()=>Date.now());return async(input,init)=>{const method=init?.method??
|
|
8
9
|
"GET";const lines=[`[debug] \u2192 ${method} ${redactSecrets(input)}`,...formatHeaders(init?.headers)];if(options.omitBodies!==void 0&&init?.body!==void 0&&init.body!==null)lines.push(` \uFF08\u672C\u6587\u306F${options.omitBodies}\u305F\u3081\u51FA\u529B\u3057\u306A\u3044\uFF09`);else if(typeof init?.body==="string")lines.push(` ${formatBody(init.body)}`);else if(init?.body instanceof Uint8Array)lines.push(` \uFF08\u672C\u6587\u306F ${init.body.byteLength} \u30D0\u30A4\u30C8\u306E\u30D0\u30A4\u30C8\u5217\u3002\u51FA\u529B\u3057\u306A\u3044\uFF09`);
|
|
9
10
|
write(`${lines.join("\n")}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{CUSTOMER_FLAG,CUSTOMER_LICENSE,childForbidden,levelForbidden,prepareCustomerFlag}from"./chunk-
|
|
4
|
-
import{NotLoggedInError,SessionExpiredError}from"./chunk-XNLIEUAW.js";import{nonEmpty}from"./chunk-IOGMOXYF.js";import{requireResolved,withResolved}from"./chunk-LXIAOCUW.js";import{acknowledgement,isRecord,pick}from"./chunk-VTQAI52S.js";import{ApiResponseError,UsageError}from"./chunk-UFND7FBC.js";import fs from"fs";import path from"path";var CONTRACT_TYPES=["basic_contract","nda","other"];var CONTRACT_TYPE_HELP="basic_contract\uFF1D\u57FA\u672C\u5951\u7D04\u66F8 / nda\uFF1D\u6A5F\u5BC6\u4FDD\u6301\u5951\u7D04\u66F8 / other\uFF1D\u305D\u306E\u4ED6\u5951\u7D04\u66F8\u985E";var FILE_NAME_MAX_CHARS=255;var PDF_MAGIC="%PDF-";var CONTRACT_FIELDS=[{kind:"text",flag:"--name",key:"document_name",label:"\u66F8\u985E\u540D",maxChars:255,summary:"\u66F8\u985E\u540D\uFF08create \u3067\u306F\u5FC5\u9808\uFF09"},{kind:"enum",flag:"--type",key:"\
|
|
3
|
+
import{CUSTOMER_FLAG,CUSTOMER_LICENSE,childForbidden,levelForbidden,prepareCustomerFlag}from"./chunk-EWTFE233.js";import{inspectLocalFile}from"./chunk-HNUBM24L.js";import{createFlags,fieldBody,hasAnyField,updateFlags}from"./chunk-JNPCHV7S.js";import{checkUploadQuota}from"./chunk-2YNZ4MRT.js";import{booleanText}from"./chunk-XDHLO54T.js";import{CUSTOMERS_PATH,isExactNumericId}from"./chunk-D5FEOBB6.js";import{isSafePathSegment}from"./chunk-GMBJTG6A.js";import{
|
|
4
|
+
ApiError}from"./chunk-IF2K4PM5.js";import{NotLoggedInError,SessionExpiredError}from"./chunk-XNLIEUAW.js";import{nonEmpty}from"./chunk-IOGMOXYF.js";import{requireResolved,withResolved}from"./chunk-LXIAOCUW.js";import{acknowledgement,isRecord,pick}from"./chunk-VTQAI52S.js";import{ApiResponseError,UsageError}from"./chunk-UFND7FBC.js";import fs from"fs";import path from"path";var CONTRACT_TYPES=["basic_contract","nda","other"];var CONTRACT_TYPE_HELP="basic_contract\uFF1D\u57FA\u672C\u5951\u7D04\u66F8 / nda\uFF1D\u6A5F\u5BC6\u4FDD\u6301\u5951\u7D04\u66F8 / other\uFF1D\u305D\u306E\u4ED6\u5951\u7D04\u66F8\u985E";var FILE_NAME_MAX_CHARS=255;var PDF_MAGIC="%PDF-";var CONTRACT_FIELDS=[{kind:"text",flag:"--name",key:"document_name",label:"\u66F8\u985E\u540D",maxChars:255,summary:"\u66F8\u985E\u540D\uFF08create \u3067\u306F\u5FC5\u9808\uFF09"},{kind:"enum",flag:"--type",key:"\
|
|
5
5
|
document_type",values:CONTRACT_TYPES,summary:`\u66F8\u985E\u7A2E\u5225\uFF08${CONTRACT_TYPE_HELP}\u30FBcreate \u3067\u306F\u5FC5\u9808\uFF09`}];var CONTRACT_COLUMNS=["document_id","company_id","document_type","document_name","current_version","updated_by_name","updated_at"];var VERSION_COLUMNS=["version_number","file_name","file_size","is_current","created_by_name","created_at"];var CASE_COLUMNS=["document_id","document_type_label","document_name","estimate_no","estimate_title","project_name","c\
|
|
6
6
|
urrent_version","updated_at"];var FILE_FLAG={name:"--file",summary:"\u30A2\u30C3\u30D7\u30ED\u30FC\u30C9\u3059\u308B PDF \u30D5\u30A1\u30A4\u30EB\u306E\u30D1\u30B9\uFF08\u5FC5\u9808\uFF09",takesValue:true,placeholder:"<\u30D1\u30B9.pdf>"};var OUT_FLAG={name:"--out",summary:"\u66F8\u304D\u51FA\u3057\u5148\u306E\u30D5\u30A1\u30A4\u30EB\u30D1\u30B9\uFF08\u5FC5\u9808\u3002\u6A19\u6E96\u51FA\u529B\u3078\u306F\u51FA\u3057\u307E\u305B\u3093\uFF09",takesValue:true,placeholder:"<\u30D1\u30B9>"};var FORCE_FLAG={
|
|
7
7
|
name:"--force",summary:"\u66F8\u304D\u51FA\u3057\u5148\u304C\u65E2\u306B\u3042\u308C\u3070\u4E0A\u66F8\u304D\u3059\u308B\uFF08\u65E2\u5B9A\u3067\u306F\u4E0A\u66F8\u304D\u3057\u306A\u3044\uFF09",takesValue:false};var REV_FLAG={name:"--rev",summary:"\u53D6\u308A\u51FA\u3059\u7248\u306E\u756A\u53F7\uFF08\u7701\u7565\u6642\u306F\u73FE\u884C\u7248\u3002get \u306E versions \u306E version_number\uFF09",takesValue:true,placeholder:"<\u7248\u756A\u53F7>"};var CONTRACT_REF_HELP="--customer\uFF08\u9867\u5BA2\uFF09\u304C\u5FC5\u9808\u3067\u3059\u3002<\u66F8\u985EID>\
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{booleanText,boundedText,isoDate}from"./chunk-XDHLO54T.js";import{ORG_MASTER_LIMIT}from"./chunk-
|
|
3
|
+
import{booleanText,boundedText,isoDate}from"./chunk-XDHLO54T.js";import{ORG_MASTER_LIMIT}from"./chunk-D5FEOBB6.js";import{ULID_RE,UUID_RE,isSafePathSegment}from"./chunk-GMBJTG6A.js";import{nonEmpty,positiveInteger}from"./chunk-IOGMOXYF.js";import{requireResolved,singleRef,withResolved}from"./chunk-LXIAOCUW.js";import{acknowledgement,isRecord,pick}from"./chunk-VTQAI52S.js";import{ApiResponseError,UsageError}from"./chunk-UFND7FBC.js";var CLEAR_DATE="none";function placeholderOf(field){switch(field.kind){case"text":return`<${field.label}>`;case"integer":return"<\u6574\u6570>";case"boolean":return"<true|false>";case"enum":return`<${field.values.join("|")}>`;case"date":return`<YYYY-MM-DD|${CLEAR_DATE}>`;case"ref":return field.placeholder}}function createFlags(fields){return fields.map(field=>({name:field.flag,summary:field.summary,takesValue:true,placeholder:placeholderOf(field)}))}function updateFlags(fields){const flags=[];for(const field of fields){
|
|
4
4
|
flags.push({name:field.flag,summary:field.summary,takesValue:true,placeholder:placeholderOf(field)});if(field.kind==="ref")flags.push({name:field.clearFlag,summary:field.clearSummary,takesValue:false})}return flags}function integerValue(field,raw){const trimmed=raw.trim();const value=/^\d+$/.test(trimmed)?Number(trimmed):Number.NaN;const tooLarge=field.max!==void 0&&value>field.max;if(!Number.isSafeInteger(value)||value<field.min||tooLarge){const range=field.max!==void 0?`${field.min} \u4EE5\u4E0A ${field.
|
|
5
5
|
max} \u4EE5\u4E0B`:`${field.min} \u4EE5\u4E0A`;throw new UsageError(`${field.flag} \u306F ${range}\u306E\u6574\u6570\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044: ${raw}`,`${field.label}\u3092\u6574\u6570\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}return value}function fieldBody(input,fields){const body={};for(const field of fields){switch(field.kind){case"text":{const value=boundedText(input,field.flag,{maxChars:field.maxChars,label:field.label});if(value!==void 0)body[field.
|
|
6
6
|
key]=value;break}case"integer":{const raw=input.flags.get(field.flag);if(raw!==void 0)body[field.key]=integerValue(field,raw);break}case"boolean":{const raw=input.flags.get(field.flag);if(raw!==void 0)body[field.key]=booleanText(field.flag,raw);break}case"enum":{const raw=input.flags.get(field.flag);if(raw===void 0)break;const value=raw.trim().toLowerCase();if(!field.values.includes(value)){throw new UsageError(`${field.flag} \u306B\u300C${raw}\u300D\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093`,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{featureLicenseGuidance}from"./chunk-
|
|
3
|
+
import{featureLicenseGuidance}from"./chunk-XXVYGQ72.js";import{isExactNumericId}from"./chunk-D5FEOBB6.js";import{nonEmpty}from"./chunk-IOGMOXYF.js";import{UsageError}from"./chunk-UFND7FBC.js";var PDF_PATH="/api/v2/sales/pdf";var FEATURE_DENIED="\u3053\u306E\u6A5F\u80FD\u306B\u30A2\u30AF\u30BB\u30B9\u3059\u308B\u6A29\u9650\u304C\u3042\u308A\u307E\u305B\u3093\u3002";function salesFeatureDenied(body){return body?.error==="permission_denied"||body?.error==="forbidden"&&body.error_description===FEATURE_DENIED}function pdfForbidden(body){if(salesFeatureDenied(body))return featureLicenseGuidance("\u8CA9\u58F2\u7BA1\u7406");const reason=body?.error;if(typeof reason==="string"&&reason.endsWith(
|
|
4
4
|
"\u6A29\u9650\u304C\u3042\u308A\u307E\u305B\u3093")){return`${reason}\uFF08\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306B\u7D10\u3065\u304F\u66F8\u985E\u306F\u305D\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u30E1\u30F3\u30D0\u30FC\u3001\u7D10\u3065\u304B\u306A\u3044\u66F8\u985E\u306F\u4F5C\u6210\u8005\u30FB\u62C5\u5F53\u8005\u3068\u7BA1\u7406\u8005\u3060\u3051\u304C\u51FA\u529B\u3067\u304D\u307E\u3059\uFF09`}return void 0}var ESTIMATE={name:"estimate",label:"\u898B\u7A4D",noExample:"EST0000063",
|
|
5
5
|
defaultKind:"estimate",kinds:{estimate:{segment:"estimate",label:"\u898B\u7A4D\u66F8"},order:{segment:"order",label:"\u6CE8\u6587\u66F8"},"order-acceptance":{segment:"order-acceptance",label:"\u6CE8\u6587\u8ACB\u66F8"}}};var INVOICE={name:"invoice",label:"\u8ACB\u6C42",noExample:"INV0000170",defaultKind:"invoice",kinds:{invoice:{segment:"invoice",label:"\u8ACB\u6C42\u66F8"},delivery:{segment:"delivery",label:"\u7D0D\u54C1\u66F8"},inspection:{segment:"inspection",label:"\u691C\u53CE\u66F8"}}};var PURCHASE={
|
|
6
6
|
name:"purchase",label:"\u4ED5\u5165",defaultKind:"order",kinds:{order:{segment:"purchase-order",label:"\u6CE8\u6587\u66F8"},"order-acceptance":{segment:"purchase-order-acceptance",label:"\u6CE8\u6587\u8ACB\u66F8"}}};var OUT_FLAG={name:"--out",summary:"\u66F8\u304D\u51FA\u3057\u5148\u306E\u30D5\u30A1\u30A4\u30EB\u30D1\u30B9\uFF08\u5FC5\u9808\uFF09",takesValue:true,placeholder:"<\u30D1\u30B9.pdf>"};var FORCE_FLAG={name:"--force",summary:"\u65E2\u5B58\u306E\u30D5\u30A1\u30A4\u30EB\u3092\u4E0A\u66F8\u304D\u3059\u308B",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{salesFeatureDenied}from"./chunk-
|
|
3
|
+
import{salesFeatureDenied}from"./chunk-NAAMNYX3.js";import{featureLicenseGuidance}from"./chunk-XXVYGQ72.js";import{charCount,readBody}from"./chunk-ORUDW52G.js";import{isExactNumericId}from"./chunk-D5FEOBB6.js";import{repeatedValues}from"./chunk-F7K37QG6.js";import{ApiError}from"./chunk-IF2K4PM5.js";import{NotLoggedInError,SessionExpiredError}from"./chunk-XNLIEUAW.js";import{LIST_PAGING_HELP,PAGE_NUMBER_LIST_FLAGS,envelopePaging,nonEmpty,positiveInteger}from"./chunk-IOGMOXYF.js";
|
|
4
4
|
import{requireResolved,withResolved}from"./chunk-LXIAOCUW.js";import{isRecord,pick}from"./chunk-VTQAI52S.js";import{ApiRejectedError,ApiResponseError,NetworkError,UsageError}from"./chunk-UFND7FBC.js";var SALES_PATH="/api/v2/sales";var REASONS_PATH=`${SALES_PATH}/ai-review-reasons`;function documentForbidden(body){if(salesFeatureDenied(body))return featureLicenseGuidance("\u8CA9\u58F2\u7BA1\u7406");const reason=body?.error;if(typeof reason==="string"&&reason.endsWith("\u6A29\u9650\u304C\u3042\u308A\u307E\u305B\u3093")){return`${reason}\uFF08\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306B\u7D10\u3065\u304F\u66F8\u985E\u306F\u305D\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u30E1\u30F3\u30D0\u30FC\u3001\u7D10\u3065\u304B\u306A\u3044\u66F8\u985E\u306F\u4F5C\u6210\u8005\u30FB\u62C5\u5F53\u8005\u3068\u7BA1\u7406\u8005\u3060\u3051\u304C\u6271\u3048\u307E\u3059\uFF09`}
|
|
5
5
|
return void 0}function reasonsForbidden(body){if(body?.error==="permission_denied")return featureLicenseGuidance("\u8CA9\u58F2\u7BA1\u7406");return"\u7406\u7531\u306E\u6A2A\u65AD\u4E00\u89A7\u30FB\u6587\u6848\u751F\u6210\u30FBPR \u4F5C\u6210\u306F\u8CA9\u58F2\u7BA1\u7406\u306E\u7BA1\u7406\u8005\u3060\u3051\u304C\u4F7F\u3048\u307E\u3059\uFF08\u66F8\u985E\u3092\u8DE8\u3044\u3067\u7406\u7531\u3092\u8AAD\u3080\u305F\u3081\uFF09\u3002\u30C6\u30CA\u30F3\u30C8\u304C\u8CA9\u58F2\u7BA1\u7406\u3092\u5951\u7D04\u3057\u3066\u3044\u308B\u304B\u30FB\u3042\u306A\u305F\u306E\u8CA9\u58F2\u7BA1\u7406\u306E\u6A29\u9650\u304C\u300C\u7BA1\u7406\u8005\u300D\u304B\u3092\u30C6\u30CA\u30F3\u30C8\u7BA1\u7406\u8005\u306B\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002"}
|
|
6
6
|
var ESTIMATE={name:"estimate",label:"\u898B\u7A4D",segment:"estimates"};var INVOICE={name:"invoice",label:"\u8ACB\u6C42",segment:"invoices"};var CONTRACT={name:"contract",label:"\u53D6\u5F15\u5951\u7D04",segment:"contracts"};var JUDGMENTS={no_issue:"\u78BA\u8A8D\u3057\u305F\u304C\u554F\u984C\u306A\u3044\u3068\u5224\u65AD\u3057\u305F",corrected:"\u6307\u6458\u3092\u53D7\u3051\u3066\u66F8\u985E\u3092\u4FEE\u6B63\u3057\u305F",not_applicable:"\u3053\u306E\u6848\u4EF6\u306B\u306F\u5F53\u3066\u306F\u307E\u3089\u306A\u3044\u6307\u6458\u3060\u3068\u5224\u65AD\u3057\u305F"};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
|
+
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
+
var JsonBodyWithView=class{constructor(value,view){this.value=value;this.view=view}value;view;toJSON(){return this.value}dryRunView(){return this.view}};export{JsonBodyWithView};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{salesAdminForbidden}from"./chunk-
|
|
3
|
+
import{salesAdminForbidden}from"./chunk-YPMT453N.js";import{featureLicenseGuidance,licenseForbidden}from"./chunk-XXVYGQ72.js";import{booleanText,boundedText}from"./chunk-XDHLO54T.js";import{SALES_ESTIMATE_FORMATS_PATH,SALES_ESTIMATE_NO_RULES_PATH,SALES_INVOICE_NO_RULES_PATH,SALES_PURCHASE_NO_RULES_PATH,SALES_ROUNDING_SETTING_PATH,isExactNumericId}from"./chunk-D5FEOBB6.js";import{repeatedValues}from"./chunk-F7K37QG6.js";import{LIST_PAGING_HELP,PAGE_NUMBER_LIST_FLAGS,
|
|
4
4
|
nonEmpty,pageNumberPaging,pageNumberQuery,pageRangeNotes}from"./chunk-IOGMOXYF.js";import{requireResolved,withResolved}from"./chunk-LXIAOCUW.js";import{acknowledgement,isRecord,pick}from"./chunk-VTQAI52S.js";import{ApiResponseError,UsageError}from"./chunk-UFND7FBC.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["\
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
|
+
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
+
import{USER_REF_FLAG,USER_REF_HELP,userPath}from"./chunk-IXFMXUNT.js";import{MANHOUR_DESCRIPTION,MANHOUR_FROM_FLAG,MANHOUR_TO_FLAG,manhourNotes,manhourQuery,manhourRows,workloadDistributionNotes,workloadDistributionRows}from"./chunk-E7MUDY4P.js";import{boundedText,isoDate}from"./chunk-XDHLO54T.js";import{readBody}from"./chunk-ORUDW52G.js";import{PROJECT_MEMBERS_LIMIT,resolveNamed}from"./chunk-D5FEOBB6.js";import{collapsesInUrlPath,safeProjectIdPolicy}from"./chunk-GMBJTG6A.js";
|
|
4
|
+
import{LIST_FLAGS,LIST_PAGING_HELP,envelopePaging,nonEmpty,positiveInteger}from"./chunk-IOGMOXYF.js";import{requireResolved,singleRef,withResolved}from"./chunk-LXIAOCUW.js";import{isRecord,pick}from"./chunk-VTQAI52S.js";import{ApiResponseError,UsageError}from"./chunk-UFND7FBC.js";var PROJECT_FLAG={name:"--project",summary:"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u30B3\u30FC\u30C9\u307E\u305F\u306F ID\uFF08\u7701\u7565\u6642\u306F TWP_PROJECT / .twp/config.json / ~/.twp/config.json\uFF09",takesValue:true,placeholder:"<\u30B3\u30FC\u30C9|ID>"};var ROLE_FLAG={name:"--role",summary:"\u5F79\u5272\uFF08member / manager \u306A\u3069\u30FB\u5024\u306F\u30B5\u30FC\u30D0\u304C\u691C\u67FB\u3059\u308B\uFF09",takesValue:true,placeholder:"<\u5F79\u5272>"};var START_DATE_FLAG={name:"\
|
|
5
|
+
--start-date",summary:"\u53C2\u753B\u958B\u59CB\u65E5\uFF08YYYY-MM-DD\uFF09",takesValue:true,placeholder:"<YYYY-MM-DD>"};var END_DATE_FLAG={name:"--end-date",summary:"\u53C2\u753B\u7D42\u4E86\u65E5\uFF08YYYY-MM-DD\uFF09",takesValue:true,placeholder:"<YYYY-MM-DD>"};var PERIOD_FILE_FLAG={name:"--period-file",summary:"\u7A3C\u50CD\u671F\u9593\uFF08assignment_periods\uFF09\u306E JSON \u914D\u5217\u30D5\u30A1\u30A4\u30EB\uFF08- \u3067\u6A19\u6E96\u5165\u529B\uFF09",takesValue:true,placeholder:"<\u30D1\u30B9>"};
|
|
6
|
+
var MEMO_FLAG={name:"--memo",summary:"\u30E1\u30E2\uFF0810,000 \u6587\u5B57\u307E\u3067\uFF09",takesValue:true,placeholder:"<\u6587\u5B57\u5217>"};var CLEAR_FLAG={name:"--clear",summary:"\u5225\u540D\u3092\u6D88\u3059",takesValue:false};var MEMO_MAX_CHARS=1e4;var PERIOD_FILE_MAX_CHARS=2e5;var ALIAS_MAX_CHARS=255;var PERIOD_KEYS=["id","start_date","end_date","daily_hours","total_hours","input_mode"];var PERIOD_REQUIRED=["start_date","end_date","daily_hours"];var ROLE_HELP="--role \u306E\u5024\u306F\u30B5\u30FC\u30D0\u304C\u691C\u67FB\u3057\u307E\u3059\uFF08CLI\
|
|
7
|
+
\u306F\u691C\u67FB\u3057\u307E\u305B\u3093\uFF09\u30022026-10-01 \u6642\u70B9\u306E\u5024\u306F\n member\uFF08\u30E1\u30F3\u30D0\u30FC\uFF09/ manager\uFF08\u7BA1\u7406\u8005\uFF09/ approver\uFF08\u7BA1\u7406\u8005\uFF08\u627F\u8A8D\u8005\uFF09\uFF09/ manager_no_punch\uFF08\u7BA1\u7406\u8005\uFF08\u6253\u523B\u7121\uFF09\uFF09\u3067\u3059\u3002\n \u5024\u306F\u5897\u3048\u308B\u3053\u3068\u304C\u3042\u308A\u307E\u3059\u3002\u4ECA\u306E\u30E1\u30F3\u30D0\u30FC\u306E\u5024\u306F twp project members \u306E role \u5217\u3067\u78BA\u304B\u3081\u3089\u308C\u307E\u3059\u3002";
|
|
8
|
+
var PERIOD_HELP='--period-file \u306F\u7A3C\u50CD\u671F\u9593\uFF08assignment_periods\uFF09\u306E JSON \u914D\u5217\u3067\u3059\u30021\u4EF6\u306F\u6B21\u306E\u30AD\u30FC\u3092\u6301\u3064\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3067\u3059:\n start_date / end_date\uFF08YYYY-MM-DD\u30FB\u5FC5\u9808\uFF09\u30FBdaily_hours\uFF081\u65E5\u3042\u305F\u308A\u306E\u6642\u9593\u30FB\u5FC5\u9808\uFF09\u30FB\n total_hours\u30FBinput_mode\uFF08hours / percentage / person_days / total_hours\uFF09\u30FBid\uFF08\u65E2\u5B58\u306E\u671F\u9593\u3092\u6B8B\u3059\u3068\u304D\uFF09\n \u4F8B: [{"start_date":"2026-10-01","end_date":"2026-12-31","daily_hours":8,"input_mode":"hours"}]\n \u671F\u9593\u30921\u4EF6\u4EE5\u4E0A\u9001\u308B\u3068\u3001\u53C2\u753B\u958B\u59CB\u65E5\u30FB\u7D42\u4E86\u65E5\u306F\u30B5\u30FC\u30D0\u304C\u671F\u9593\u306E\u6700\u5C0F\u30FB\u6700\u5927\u304B\u3089\u6C7A\u3081\u307E\u3059\n \uFF08\u305D\u306E\u305F\u3081 --start-date / --end-date \u3068\u306F\u540C\u6642\u306B\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\uFF09\u3002--period-file - \u3067\u6A19\u6E96\u5165\u529B\u304B\u3089\u8AAD\u3081\u307E\u3059\u3002';
|
|
9
|
+
var MEMBER_REF_HELP="<\u30E1\u30F3\u30D0\u30FC> \u306F\u305D\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u30E1\u30F3\u30D0\u30FC\u3092\u6C0F\u540D\u30FB\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\u30FBID\u30FBme\uFF08\u81EA\u5206\uFF09\u3067\u6307\u5B9A\u3057\u307E\u3059\uFF08\u5225\u540D\u3067\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\uFF09\u3002\n\u540C\u59D3\u540C\u540D\u306A\u3089\u5019\u88DC\u3092\u51FA\u3057\u3066\u6B62\u307E\u308B\u306E\u3067\u3001\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\u3067\u6307\u5B9A\u3057\u76F4\u3057\u3066\u304F\u3060\u3055\u3044\u3002";
|
|
10
|
+
var FORBIDDEN="\u3053\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u30E1\u30F3\u30D0\u30FC\u3092\u7BA1\u7406\u3059\u308B\u6A29\u9650\u304C\u5FC5\u8981\u3067\u3059\uFF08\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u7BA1\u7406\u8005\u304B\u3001\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u6A5F\u80FD\u306E\u7BA1\u7406\u8005\u30FB\u7D44\u7E54\u7BA1\u7406\u8005\uFF09\u3002\u30E1\u30F3\u30D0\u30FC\u306E\u8FFD\u52A0\u30FB\u5909\u66F4\u30FB\u524A\u9664\u306F\u3053\u308C\u3089\u306E\u6A29\u9650\u3092\u6301\u3064\u4EBA\u3060\u3051\u304C\u884C\u3048\u307E\u3059";
|
|
11
|
+
function roleRejected(server){return/role/i.test(server)?"\u5F79\u5272\u306E\u5024\u306F twp project member create help \u306E --role \u306E\u8AAC\u660E\u304B\u3001twp project members \u306E role \u5217\u3067\u78BA\u304B\u3081\u3066\u304F\u3060\u3055\u3044\u3002":void 0}var PERIODS_KEY="assignment_periods";var MEMBER_ROW_KEY="member_row";function parsePeriods(text2,source){let parsed;try{parsed=JSON.parse(text2)}catch{throw new UsageError(`\u7A3C\u50CD\u671F\u9593\u304C JSON \u3068\u3057\u3066\u8AAD\u3081\u307E\u305B\u3093\uFF08${source}\
|
|
12
|
+
\uFF09`,PERIOD_HELP)}if(!Array.isArray(parsed))throw new UsageError(`\u7A3C\u50CD\u671F\u9593\u306F JSON \u914D\u5217\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08${source}\uFF09`,PERIOD_HELP);const problems=[];parsed.forEach((period,index)=>{const at=`${index+1} \u4EF6\u76EE`;if(!isRecord(period)){problems.push(`${at}: \u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3067\u306F\u3042\u308A\u307E\u305B\u3093`);return}const unknownKeys=Object.keys(period).filter(key=>!PERIOD_KEYS.includes(key));
|
|
13
|
+
if(unknownKeys.length>0)problems.push(`${at}: \u9001\u308C\u306A\u3044\u9805\u76EE\u304C\u3042\u308A\u307E\u3059: ${unknownKeys.join(", ")}`);const missing=PERIOD_REQUIRED.filter(key=>period[key]===void 0||period[key]===null||period[key]==="");if(missing.length>0)problems.push(`${at}: \u5FC5\u9808\u306E\u9805\u76EE\u304C\u3042\u308A\u307E\u305B\u3093: ${missing.join(", ")}`)});if(problems.length>0){throw new UsageError(`\u7A3C\u50CD\u671F\u9593\u306B\u8AA4\u308A\u304C\u3042\u308A\u307E\u3059\uFF08${source}\
|
|
14
|
+
\uFF09:
|
|
15
|
+
${problems.join("\n ")}`,PERIOD_HELP)}return parsed}async function readPeriods(input,usage){const text2=await readBody(input,{flag:"--periods",fileFlag:PERIOD_FILE_FLAG.name,label:"\u7A3C\u50CD\u671F\u9593",maxChars:PERIOD_FILE_MAX_CHARS,usage});if(text2===void 0)return void 0;return parsePeriods(text2,`${PERIOD_FILE_FLAG.name} ${input.flags.get(PERIOD_FILE_FLAG.name)??""}`)}async function checkFields(input,usage){isoDate(input,START_DATE_FLAG.name);isoDate(input,END_DATE_FLAG.name);boundedText(
|
|
16
|
+
input,MEMO_FLAG.name,{maxChars:MEMO_MAX_CHARS,label:"\u30E1\u30E2"});if(input.flags.has(ROLE_FLAG.name)&&nonEmpty(input.flags,ROLE_FLAG.name)===void 0){throw new UsageError(`${ROLE_FLAG.name} \u306B\u7A7A\u306E\u5024\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093`,ROLE_HELP)}const periods=await readPeriods(input,usage);if(periods===void 0)return input;if(periods.length>0&&(input.flags.has(START_DATE_FLAG.name)||input.flags.has(END_DATE_FLAG.name))){throw new UsageError(`${PERIOD_FILE_FLAG.name}\
|
|
17
|
+
\u306B\u671F\u9593\u304C\u3042\u308B\u3068\u304D\u306F ${START_DATE_FLAG.name} / ${END_DATE_FLAG.name} \u3092\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093`,"\u30B5\u30FC\u30D0\u304C\u53C2\u753B\u958B\u59CB\u65E5\u30FB\u7D42\u4E86\u65E5\u3092\u671F\u9593\u306E\u6700\u5C0F\u30FB\u6700\u5927\u3067\u4E0A\u66F8\u304D\u3059\u308B\u305F\u3081\u3001\u6307\u5B9A\u3057\u3066\u3082\u52B9\u304D\u307E\u305B\u3093\u3002")}return withResolved(input,{[PERIODS_KEY]:JSON.stringify(periods)})}function memberBody(input){
|
|
18
|
+
const body={};const role=nonEmpty(input.flags,ROLE_FLAG.name);if(role!==void 0)body["role"]=role;const startDate=isoDate(input,START_DATE_FLAG.name);if(startDate!==void 0)body["start_date"]=startDate;const endDate=isoDate(input,END_DATE_FLAG.name);if(endDate!==void 0)body["end_date"]=endDate;const periods=input.resolved?.[PERIODS_KEY];if(periods!==void 0)body["assignment_periods"]=JSON.parse(periods);const memo=boundedText(input,MEMO_FLAG.name,{maxChars:MEMO_MAX_CHARS,label:"\u30E1\u30E2"});if(memo!==
|
|
19
|
+
void 0)body["memo"]=memo;return body}function membersPath(input,suffix=""){return`/api/v2/projects/${encodeURIComponent(requireResolved(input,"projectId"))}/members${suffix}`}function text(value){return typeof value==="string"&&value.trim()!==""?value:null}async function prepareMember(input,ctx,usage){const ref=singleRef(input,{flag:USER_REF_FLAG.name,label:"\u30E1\u30F3\u30D0\u30FC",usage});const projectId=await ctx.projectId(nonEmpty(input.flags,PROJECT_FLAG.name));const rows=await ctx.resolver.
|
|
20
|
+
memberRows(projectId);let userId;if(ref.toLowerCase()==="me"){userId=(await ctx.resolver.currentUser()).id}else{const refs=rows.flatMap(row2=>{const id=text(row2["user_id"]);if(id===null)return[];const email=text(row2["user_email"]);return[{id,name:text(row2["user_name"])??id,code:null,...email!==null?{aliases:[email]}:{}}]});userId=(await resolveNamed(ref,refs,{flag:"<\u30E1\u30F3\u30D0\u30FC>",label:"\u30E1\u30F3\u30D0\u30FC"})).id}const row=rows.find(member=>member["user_id"]===userId);if(row===
|
|
21
|
+
void 0){throw new UsageError("\u81EA\u5206\u306F\u3053\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u30E1\u30F3\u30D0\u30FC\u3067\u306F\u3042\u308A\u307E\u305B\u3093","\u30E1\u30F3\u30D0\u30FC\u306F twp project members \u3067\u78BA\u304B\u3081\u3089\u308C\u307E\u3059\u3002")}return withResolved(input,{projectId,userId,memberName:`${text(row["user_name"])??userId}\uFF08${text(row["user_email"])??userId}\u30FB\u5F79\u5272 ${text(row["role"])??"\u4E0D\u660E"}\uFF09`,[MEMBER_ROW_KEY]:JSON.stringify(
|
|
22
|
+
row)})}var targetNote=verb=>input=>[`${verb}\u30E1\u30F3\u30D0\u30FC: ${requireResolved(input,"memberName")}`];var invalidates=(input,ctx)=>{const projectId=input.resolved?.["projectId"];if(projectId!==void 0)ctx.resolver.invalidateMembers(projectId)};var MEMBER_COLUMNS=["user_id","user_name","user_email","role","alias","start_date","end_date"];function memberResult(body,label){if(!isRecord(body)||body["result"]!==true||!isRecord(body["member"])){throw new ApiResponseError(`${label}\u306E\u5FDC\u7B54\u304C\u60F3\u5B9A\u306E\u5F62\u3067\u306F\u3042\u308A\u307E\
|
|
23
|
+
\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}const rest={...body};delete rest["result"];return rest}function memberSummary(body,label){const result=memberResult(body,label);const member=result["member"];const periods=member["assignment_periods"];return{message:result["message"]??null,...pick(member,MEMBER_COLUMNS),periods:Array.isArray(periods)?periods.length:0}}function removeAck(body){if(!isRecord(body)||body["result"]!==true){throw new ApiResponseError(
|
|
24
|
+
"\u30E1\u30F3\u30D0\u30FC\u524A\u9664\u306E\u5FDC\u7B54\u304C\u60F3\u5B9A\u306E\u5F62\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002")}return{result:true,message:body["message"]??null}}function describePeriod(period){const mode=period["input_mode"]===void 0||period["input_mode"]===null?"":`\u30FB${String(period["input_mode"])}`;return`${String(period["start_date"]??"?")}\u301C${String(period["end_date"]??"?")}\uFF081\u65E5 ${String(
|
|
25
|
+
period["daily_hours"]??"?")} \u6642\u9593${mode}\u30FBid ${String(period["id"]??"?")}\uFF09`}function droppedPeriods(current,next){const keep=new Set(next.map(period=>period["id"]).filter(id=>typeof id==="string"&&id!==""));return current.filter(isRecord).filter(period=>!(typeof period["id"]==="string"&&keep.has(period["id"])))}function periodNotes(input){const sent=input.resolved?.[PERIODS_KEY];if(sent===void 0)return[];const row=JSON.parse(requireResolved(input,MEMBER_ROW_KEY));const current=Array.
|
|
26
|
+
isArray(row["assignment_periods"])?row["assignment_periods"]:[];const next=JSON.parse(sent);const dropped=droppedPeriods(current,next);const head=`\u7A3C\u50CD\u671F\u9593\uFF08assignment_periods\uFF09\u306F\u4E38\u3054\u3068\u7F6E\u304D\u63DB\u308F\u308A\u307E\u3059\uFF08\u9001\u308B ${next.length} \u4EF6\u3060\u3051\u304C\u6B8B\u308A\u307E\u3059\uFF09\u3002`;if(current.length===0)return[`${head}\u4ECA\u306E\u671F\u9593\u306F\u3042\u308A\u307E\u305B\u3093\u3002`];if(dropped.length===0)return[`${head}\
|
|
27
|
+
\u4ECA\u306E\u671F\u9593\u306F\u3059\u3079\u3066\u540C\u3058 id \u3067\u9001\u3089\u308C\u307E\u3059\u3002`];return[`${head}\u4ECA\u306E\u671F\u9593\u306E\u3046\u3061\u3001\u9001\u308B\u5185\u5BB9\u306B\u540C\u3058 id \u304C\u7121\u3044 ${dropped.length} \u4EF6\u306F\u6D88\u3048\u307E\u3059\uFF08\u540C\u3058\u65E5\u4ED8\u3067\u3082 id \u304C\u7121\u3051\u308C\u3070\u65B0\u3057\u3044 id \u3067\u4F5C\u308A\u76F4\u3055\u308C\u307E\u3059\uFF09:`,...dropped.map(period=>` - ${describePeriod(period)}`)]}
|
|
28
|
+
var WRITE_FLAGS=[ROLE_FLAG,START_DATE_FLAG,END_DATE_FLAG,PERIOD_FILE_FLAG,MEMO_FLAG,PROJECT_FLAG,USER_REF_FLAG];var createOperation={name:"create",summary:"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306B\u30E1\u30F3\u30D0\u30FC\u3092\u8FFD\u52A0\u3059\u308B\uFF08\u7A3C\u50CD\u671F\u9593\u3064\u304D\u30FB\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u7BA1\u7406\u8005\uFF09",usage:"twp project member create <\u30E6\u30FC\u30B6\u30FC> --role <\u5F79\u5272> [--project <\u30B3\u30FC\u30C9|ID>] [--start-date <YYYY-MM-DD>] [--end-date <YYYY-MM-DD>] [--period-f\
|
|
29
|
+
ile <\u30D1\u30B9>] [--memo <\u6587\u5B57\u5217>]",description:`--role \u306F\u5FC5\u9808\u3067\u3059\u3002\u7A3C\u50CD\u671F\u9593\u3092\u5FC5\u9808\u306B\u3057\u3066\u3044\u308B\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3067\u306F --period-file \u3082\u8981\u308A\u307E\u3059\uFF08\u30B5\u30FC\u30D0\u304C\u65AD\u308A\u307E\u3059\uFF09\u3002
|
|
30
|
+
\u8FFD\u52A0\u306F\u691C\u7D22\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u306E\u6A29\u9650\u66F4\u65B0\u3092\u4F34\u3044\u307E\u3059\u304C\u3001\u30B5\u30FC\u30D0\u306F\u975E\u540C\u671F\u3067\u884C\u3044\u307E\u3059\uFF08\u5FDC\u7B54\u306F\u5F85\u305F\u305A\u306B\u8FD4\u308A\u307E\u3059\uFF09\u3002
|
|
31
|
+
|
|
32
|
+
${ROLE_HELP}
|
|
33
|
+
|
|
34
|
+
${PERIOD_HELP}
|
|
35
|
+
|
|
36
|
+
${USER_REF_HELP}`,forbidden:FORBIDDEN,rejected:roleRejected,flags:WRITE_FLAGS,async prepare(input,ctx){const usage="twp project member create help";if(!input.flags.has(ROLE_FLAG.name))throw new UsageError(`${ROLE_FLAG.name} \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044`,ROLE_HELP);const checked=await checkFields(input,usage);const ref=singleRef(input,{flag:USER_REF_FLAG.name,label:"\u30E6\u30FC\u30B6\u30FC",usage});const projectId=await ctx.projectId(nonEmpty(input.flags,PROJECT_FLAG.name));
|
|
37
|
+
const user=await ctx.resolver.user(ref);return withResolved(checked,{projectId,userId:user.id})},plan:input=>({method:"POST",path:membersPath(input),body:{user_id:requireResolved(input,"userId"),...memberBody(input)}}),invalidates,summarize:body=>memberSummary(body,"\u30E1\u30F3\u30D0\u30FC\u8FFD\u52A0"),raw:body=>memberResult(body,"\u30E1\u30F3\u30D0\u30FC\u8FFD\u52A0")};var updateOperation={name:"update",summary:"\u30E1\u30F3\u30D0\u30FC\u306E\u5F79\u5272\u30FB\u53C2\u753B\u671F\u9593\u30FB\u7A3C\u50CD\u671F\u9593\u30FB\u30E1\u30E2\u3092\u5909\u3048\u308B\uFF08\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u7BA1\u7406\u8005\uFF09",
|
|
38
|
+
usage:"twp project member update <\u30E1\u30F3\u30D0\u30FC> [--project <\u30B3\u30FC\u30C9|ID>] [--role <\u5F79\u5272>] [--start-date <YYYY-MM-DD>] [--end-date <YYYY-MM-DD>] [--period-file <\u30D1\u30B9>] [--memo <\u6587\u5B57\u5217>]",description:`\u6307\u5B9A\u3057\u305F\u9805\u76EE\u3060\u3051\u3092\u9001\u308A\u307E\u3059\uFF08\u6307\u5B9A\u3057\u306A\u304B\u3063\u305F\u9805\u76EE\u306F\u5909\u308F\u308A\u307E\u305B\u3093\uFF09\u3002\u5909\u66F4\u3059\u308B\u9805\u76EE\u30921\u3064\u3082\u6307\u5B9A\u3057\u306A\u3044\u3068\u30A8\u30E9\u30FC\u306B\u306A\u308A\u307E\u3059\u3002
|
|
39
|
+
\u26A0\uFE0F --period-file \u3092\u6307\u5B9A\u3059\u308B\u3068\u3001\u7A3C\u50CD\u671F\u9593\u306F\u9001\u3063\u305F\u5185\u5BB9\u3067\u4E38\u3054\u3068\u7F6E\u304D\u63DB\u308F\u308A\u307E\u3059\uFF08\u5DEE\u5206\u3067\u306F\u3042\u308A\u307E\u305B\u3093\uFF09\u3002
|
|
40
|
+
\u9001\u308B\u524D\u306B\u4ECA\u306E\u671F\u9593\u3092\u8AAD\u307F\u3001\u6D88\u3048\u308B\u671F\u9593\u3092 stderr \u306B\u51FA\u3057\u307E\u3059\uFF08--dry-run \u3067\u3082\u51FA\u307E\u3059\uFF09\u3002
|
|
41
|
+
\u6B8B\u3057\u305F\u3044\u671F\u9593\u306F id \u3092\u4ED8\u3051\u305F\u307E\u307E\u9001\u3063\u3066\u304F\u3060\u3055\u3044\uFF08twp project members --output json \u306E assignment_periods\uFF09\u3002
|
|
42
|
+
[] \u3092\u9001\u308B\u3068\u7A3C\u50CD\u671F\u9593\u3092\u3059\u3079\u3066\u6D88\u3057\u307E\u3059\uFF08\u7A3C\u50CD\u671F\u9593\u3092\u5FC5\u9808\u306B\u3057\u3066\u3044\u308B\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3067\u306F\u30B5\u30FC\u30D0\u304C\u65AD\u308A\u307E\u3059\uFF09\u3002
|
|
43
|
+
|
|
44
|
+
${ROLE_HELP}
|
|
45
|
+
|
|
46
|
+
${PERIOD_HELP}
|
|
47
|
+
|
|
48
|
+
${MEMBER_REF_HELP}`,forbidden:FORBIDDEN,rejected:roleRejected,flags:WRITE_FLAGS,async prepare(input,ctx){const usage="twp project member update help";const changed=[ROLE_FLAG,START_DATE_FLAG,END_DATE_FLAG,PERIOD_FILE_FLAG,MEMO_FLAG].some(flag=>input.flags.has(flag.name));if(!changed)throw new UsageError("\u5909\u66F4\u3059\u308B\u9805\u76EE\u30921\u3064\u4EE5\u4E0A\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",usage);return prepareMember(await checkFields(input,usage),ctx,usage)},plan:input=>({
|
|
49
|
+
method:"PUT",path:membersPath(input,`/${userPath(input)}`),body:memberBody(input)}),plannedNotes:input=>[...targetNote("\u5909\u66F4\u3059\u308B")(input),...periodNotes(input)],invalidates,summarize:body=>memberSummary(body,"\u30E1\u30F3\u30D0\u30FC\u66F4\u65B0"),raw:body=>memberResult(body,"\u30E1\u30F3\u30D0\u30FC\u66F4\u65B0")};var deleteOperation={name:"delete",summary:"\u30E1\u30F3\u30D0\u30FC\u3092\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u304B\u3089\u5916\u3059\uFF08\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u7BA1\u7406\u8005\u30FB--yes \u304C\u8981\u308B\uFF09",
|
|
50
|
+
usage:"twp project member delete <\u30E1\u30F3\u30D0\u30FC> [--project <\u30B3\u30FC\u30C9|ID>] --yes",description:"\u30E1\u30F3\u30D0\u30FC\u306E\u884C\u3092\u6D88\u3057\u307E\u3059\uFF08\u7A3C\u50CD\u671F\u9593\u30FB\u30E1\u30E2\u30FB\u5225\u540D\u3082\u6D88\u3048\u307E\u3059\u3002\u5143\u306B\u623B\u3059\u64CD\u4F5C\u306F\u3042\u308A\u307E\u305B\u3093\uFF09\u3002\n\u305D\u306E\u30E1\u30F3\u30D0\u30FC\u304C\u62C5\u5F53\u3057\u3066\u3044\u308B\u30BF\u30B9\u30AF\u306E\u62C5\u5F53\u8005\u306F\u5909\u308F\u308A\u307E\u305B\u3093\uFF08\u30B5\u30FC\u30D0\u306F\u30BF\u30B9\u30AF\u306B\u89E6\u308C\u307E\u305B\u3093\uFF09\u3002\n\u53C2\u753B\u3092\u7D42\u3048\u308B\u3060\u3051\u306A\u3089\u3001\u5C65\u6B74\u304C\u6B8B\u308B twp project member update <\u30E1\u30F3\u30D0\u30FC> --end-date <YYYY-MM-DD> \u3092\u4F7F\u3063\u3066\u304F\u3060\u3055\u3044\u3002\n\n"+
|
|
51
|
+
MEMBER_REF_HELP,destructive:true,forbidden:FORBIDDEN,flags:[PROJECT_FLAG,USER_REF_FLAG],prepare:(input,ctx)=>prepareMember(input,ctx,"twp project member delete help"),plan:input=>({method:"DELETE",path:membersPath(input,`/${userPath(input)}`)}),plannedNotes:input=>[`\u5916\u3059\u30E1\u30F3\u30D0\u30FC: ${requireResolved(input,"memberName")}\u3002\u62C5\u5F53\u4E2D\u306E\u30BF\u30B9\u30AF\u306E\u62C5\u5F53\u8005\u306F\u5909\u308F\u308A\u307E\u305B\u3093\u3002`],invalidates,summarize:removeAck,raw:removeAck};
|
|
52
|
+
function roleChange(name){const promote=name==="promote";const label=promote?"\u7BA1\u7406\u8005\u3078\u306E\u6607\u683C":"\u30E1\u30F3\u30D0\u30FC\u3078\u306E\u964D\u683C";return{name,summary:promote?"\u30E1\u30F3\u30D0\u30FC\u3092\u7BA1\u7406\u8005\uFF08manager\uFF09\u306B\u6607\u683C\u3059\u308B\uFF08\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u7BA1\u7406\u8005\uFF09":"\u7BA1\u7406\u8005\uFF08manager\uFF09\u3092\u30E1\u30F3\u30D0\u30FC\u306B\u964D\u683C\u3059\u308B\uFF08\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u7BA1\u7406\u8005\uFF09",
|
|
53
|
+
usage:`twp project member ${name} <\u30E1\u30F3\u30D0\u30FC> [--project <\u30B3\u30FC\u30C9|ID>]`,description:(promote?"\u5F79\u5272\u3092 manager \u306B\u3057\u307E\u3059\u3002\u65E2\u306B manager \u306A\u3089\u30B5\u30FC\u30D0\u304C\u65AD\u308A\u307E\u3059\u3002\n":"\u5F79\u5272\u304C manager \u306E\u30E1\u30F3\u30D0\u30FC\u3060\u3051\u3092 member \u306B\u3057\u307E\u3059\u3002approver / manager_no_punch \u306F\u30B5\u30FC\u30D0\u304C\u65AD\u308A\u307E\u3059\n\uFF08\u305D\u306E\u5834\u5408\u306F twp project member update <\u30E1\u30F3\u30D0\u30FC> --role member \u3092\u4F7F\u3063\u3066\u304F\u3060\u3055\u3044\uFF09\u3002\n")+
|
|
54
|
+
`
|
|
55
|
+
${MEMBER_REF_HELP}`,forbidden:FORBIDDEN,...promote?{}:{rejected:server=>server.includes("\u7BA1\u7406\u8005\u3067\u306F\u3042\u308A\u307E\u305B\u3093")?"\u5F79\u5272\u304C manager \u4EE5\u5916\u306E\u30E1\u30F3\u30D0\u30FC\u306F twp project member update <\u30E1\u30F3\u30D0\u30FC> --role member \u3067\u5909\u3048\u3066\u304F\u3060\u3055\u3044\u3002":void 0},flags:[PROJECT_FLAG,USER_REF_FLAG],prepare:(input,ctx)=>prepareMember(input,ctx,`twp project member ${name} help`),plan:input=>({method:"POS\
|
|
56
|
+
T",path:membersPath(input,`/${userPath(input,`/${name}`)}`)}),plannedNotes:targetNote(promote?"\u6607\u683C\u3059\u308B":"\u964D\u683C\u3059\u308B"),invalidates,summarize:body=>memberSummary(body,label),raw:body=>memberResult(body,label)}}var aliasOperation={name:"alias",summary:"\u3053\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3067\u306E\u81EA\u5206\u306E\u5225\u540D\u3092\u8A2D\u5B9A\u3059\u308B\uFF08--clear \u3067\u6D88\u3059\uFF09",usage:"twp project member alias (<\u5225\u540D> | --clear) [--project\
|
|
57
|
+
<\u30B3\u30FC\u30C9|ID>]",description:"\u81EA\u5206\uFF08\u30ED\u30B0\u30A4\u30F3\u4E2D\u306E\u30E6\u30FC\u30B6\u30FC\uFF09\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u5185\u306E\u5225\u540D\u3092\u8A2D\u5B9A\u3057\u307E\u3059\u3002\u30E1\u30F3\u30D0\u30FC\u306A\u3089\u8AB0\u3067\u3082\u4F7F\u3048\u307E\u3059\u3002\n\u5225\u540D\u306F twp task \u306E --assignee \u3067\u30E1\u30F3\u30D0\u30FC\u3092\u6307\u5B9A\u3059\u308B\u3068\u304D\u306B\u4F7F\u3048\u307E\u3059\uFF08twp project member \u306E\u5BFE\u8C61\u6307\u5B9A\u306B\u306F\u4F7F\u3048\u307E\u305B\u3093\uFF09\u3002",
|
|
58
|
+
flags:[CLEAR_FLAG,PROJECT_FLAG],async prepare(input,ctx){const usage="twp project member alias help";if(input.args.length>1)throw new UsageError(`\u53D7\u3051\u53D6\u308C\u308B\u5225\u540D\u306F1\u3064\u3060\u3051\u3067\u3059: ${input.args.slice(1).join(" ")}`,usage);const alias=input.args[0];if(input.flags.has(CLEAR_FLAG.name)&&alias!==void 0)throw new UsageError(`\u5225\u540D\u3068 ${CLEAR_FLAG.name} \u306F\u540C\u6642\u306B\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093`,usage);if(!input.flags.has(
|
|
59
|
+
CLEAR_FLAG.name)){if(alias===void 0||alias.trim()==="")throw new UsageError(`\u5225\u540D\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u6D88\u3059\u306A\u3089 ${CLEAR_FLAG.name}\uFF09`,usage);if([...alias].length>ALIAS_MAX_CHARS)throw new UsageError(`\u5225\u540D\u304C\u9577\u3059\u304E\u307E\u3059\uFF08${[...alias].length} \u6587\u5B57\u30FB\u4E0A\u9650 ${ALIAS_MAX_CHARS} \u6587\u5B57\uFF09`,usage)}return withResolved(input,{projectId:await ctx.projectId(nonEmpty(input.flags,PROJECT_FLAG.
|
|
60
|
+
name))})},plan:input=>({method:"PATCH",path:membersPath(input,"/me/alias"),body:{alias:input.flags.has(CLEAR_FLAG.name)?null:input.args[0]}}),invalidates,summarize:body=>memberSummary(body,"\u5225\u540D\u306E\u66F4\u65B0"),raw:body=>memberResult(body,"\u5225\u540D\u306E\u66F4\u65B0")};var projectMemberResource={name:"member",summary:"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u30E1\u30F3\u30D0\u30FC\u306E\u30A2\u30B5\u30A4\u30F3\uFF08\u8FFD\u52A0\u30FB\u5F79\u5272\u3068\u7A3C\u50CD\u671F\u9593\u306E\u5909\u66F4\u30FB\u524A\u9664\u30FB\u6607\u683C\u30FB\u964D\u683C\u30FB\u81EA\u5206\u306E\u5225\u540D\uFF09",
|
|
61
|
+
operations:[createOperation,updateOperation,deleteOperation,roleChange("promote"),roleChange("demote"),aliasOperation]};var LIST_COLUMNS=["id","code","name","status","effective_status"];var GET_COLUMNS=["id","code","name","status","effective_status","display_flg","closed_flg","task_enabled_flg","start_date","end_date","created_at","updated_at"];var MEMBER_COLUMNS2=["user_id","user_name","user_email","role","alias","department_name"];function memberItems(body){const list=isRecord(body)?body["list"]:void 0;if(!Array.isArray(list)){throw new ApiResponseError("\u30E1\u30F3\u30D0\u30FC\u4E00\u89A7\u306E\u5FDC\u7B54\u306B list \u914D\u5217\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002")}
|
|
62
|
+
return list}var listPaging=envelopePaging({label:"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u4E00\u89A7"});function listItems(body){return listPaging.items(body)}function projectObject(body){const project=isRecord(body)?body["project"]:void 0;if(!isRecord(project)){throw new ApiResponseError("\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u8A73\u7D30\u306E\u5FDC\u7B54\u306B project \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002")}return project}
|
|
63
|
+
var MANHOURS_USAGE="twp project manhours [<ID|\u30B3\u30FC\u30C9>] [--from <YYYY-MM-DD>] [--to <YYYY-MM-DD>]";var projectDomain={name:"project",summary:"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u4E00\u89A7\u30FB\u8A73\u7D30\u30FB\u30E1\u30F3\u30D0\u30FC\u306E\u30A2\u30B5\u30A4\u30F3",operations:[{name:"list",summary:"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3092\u4E00\u89A7\u3059\u308B",usage:"twp project list [--all] [--limit <\u4EF6\u6570>] [--cursor <\u30AB\u30FC\u30BD\u30EB>] [--keyword <\u8A9E>] [--status <\u72B6\u614B>]",
|
|
64
|
+
description:"--output json \u306F API \u304C\u8FD4\u3059\u5168\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u51FA\u3057\u307E\u3059\u3002\n--output table / text / tsv \u306F\u8981\u7D04\u5217\uFF08id / code / name / status / effective_status\uFF09\u3067\u3059\u3002\n\u6B32\u3057\u3044\u5217\u3060\u3051\u3092\u6A5F\u68B0\u51E6\u7406\u3057\u305F\u3044\u3068\u304D\u306F --query \u3067\u9078\u3093\u3067\u304F\u3060\u3055\u3044\uFF08--query \u306F\u751F\u30C7\u30FC\u30BF\u306B\u5BFE\u3057\u3066\u8A55\u4FA1\u3055\u308C\u307E\u3059\uFF09\u3002\n\n"+
|
|
65
|
+
LIST_PAGING_HELP,flags:[...LIST_FLAGS,{name:"--keyword",summary:"\u30B3\u30FC\u30C9\u30FB\u540D\u79F0\u306E\u90E8\u5206\u4E00\u81F4\u3067\u7D5E\u308A\u8FBC\u3080",takesValue:true,placeholder:"<\u8A9E>"},{name:"--status",summary:"\u30B9\u30C6\u30FC\u30BF\u30B9\u3067\u7D5E\u308A\u8FBC\u3080\uFF08\u4F8B: active\uFF09",takesValue:true,placeholder:"<\u72B6\u614B>"}],paging:listPaging,plan(input){if(input.args.length>0){throw new UsageError(`list \u306F\u4F4D\u7F6E\u5F15\u6570\u3092\u53D6\u308A\u307E\u305B\u3093: ${input.
|
|
66
|
+
args.join(" ")}`,"twp project list help")}return{method:"GET",path:"/api/v2/projects",query:{limit:positiveInteger(input.flags,"--limit"),cursor:nonEmpty(input.flags,"--cursor"),keyword:nonEmpty(input.flags,"--keyword"),status:nonEmpty(input.flags,"--status")}}},summarize:body=>listItems(body).map(row=>pick(row,LIST_COLUMNS)),raw:body=>listItems(body)},{name:"get",summary:"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C81\u4EF6\u306E\u8A73\u7D30\u3092\u8868\u793A\u3059\u308B",usage:"twp project get <ID|\u30B3\u30FC\u30C9>",
|
|
67
|
+
description:'ID\uFF08UUID / ULID\uFF09\u306A\u3089\u305D\u306E\u307E\u307E\u3001\u305D\u308C\u4EE5\u5916\u306F\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u30B3\u30FC\u30C9\u3068\u3057\u3066\u89E3\u6C7A\u3057\u307E\u3059\uFF081\u5F80\u5FA9\uFF09\u3002\n\u30B3\u30FC\u30C9\u304C\u898B\u3064\u304B\u3089\u306A\u3044\u5834\u5408\u3001\u30B5\u30FC\u30D0\u306F\u300C\u5B58\u5728\u3057\u306A\u3044\u300D\u3068\u300C\u95B2\u89A7\u6A29\u9650\u304C\u7121\u3044\u300D\u3092\u610F\u56F3\u7684\u306B\u533A\u5225\u3057\u307E\u305B\u3093\u3002\n\u30B3\u30FC\u30C9\u304C literally "help" \u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3092\u5F15\u304F\u3068\u304D\u3060\u3051 `twp project get -- help` \u3068\u66F8\u304D\u307E\u3059\n\uFF08\u5148\u982D\u306E help \u306F\u30D8\u30EB\u30D7\u8981\u6C42\u3068\u3057\u3066\u89E3\u91C8\u3055\u308C\u308B\u305F\u3081\uFF09\u3002',
|
|
68
|
+
flags:[],plan(input){const[rawRef,...rest]=input.args;const ref=rawRef?.trim()??"";if(ref===""){throw new UsageError("\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E UUID \u304B\u30B3\u30FC\u30C9\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044","twp project get help")}if(rest.length>0){throw new UsageError(`get \u304C\u53D7\u3051\u53D6\u308C\u308B\u5F15\u6570\u306F1\u3064\u3060\u3051\u3067\u3059: ${rest.join(" ")}`,"twp project get help")}if(collapsesInUrlPath(ref)){throw new UsageError(`\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\
|
|
69
|
+
\u306E UUID \u304B\u30B3\u30FC\u30C9\u3068\u3057\u3066\u4F7F\u3048\u306A\u3044\u5024\u3067\u3059: ${ref}`,"\u30C9\u30C3\u30C8\u3060\u3051\u306E\u5024\u306F URL \u306E\u30D1\u30B9\u8981\u7D20\u3068\u3057\u3066\u6D88\u3048\u3066\u3057\u307E\u3046\u305F\u3081\u53D7\u3051\u4ED8\u3051\u307E\u305B\u3093\u3002")}return safeProjectIdPolicy.isDirectId(ref)?{method:"GET",path:`/api/v2/projects/${encodeURIComponent(ref)}`}:{method:"GET",path:`/api/v2/projects/by-code/${encodeURIComponent(ref)}`}},summarize:body=>pick(
|
|
70
|
+
projectObject(body),GET_COLUMNS),raw:body=>projectObject(body)},{name:"members",summary:"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u30E1\u30F3\u30D0\u30FC\u3092\u4E00\u89A7\u3059\u308B",usage:"twp project members [<ID|\u30B3\u30FC\u30C9>]",description:"\u7701\u7565\u3059\u308B\u3068\u65E2\u5B9A\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\uFF08TWP_PROJECT / .twp/config.json / ~/.twp/config.json\uFF09\u3092\u4F7F\u3044\u307E\u3059\u3002\n\u3053\u306E API \u306F\u30DA\u30FC\u30B8\u30F3\u30B0\u3092\u6301\u305F\u306A\u3044\u306E\u3067\u3001\u4EF6\u6570\uFF0810,000 \u4EF6\uFF09\u3092\u660E\u793A\u3057\u30661\u56DE\u3067\u5F15\u304D\u307E\u3059\uFF08--all / --limit \u306F\u3042\u308A\u307E\u305B\u3093\uFF09\u3002\n\u3053\u3053\u306B\u51FA\u308B user_id / user_email \u306F twp task list --assignee \u306B\u305D\u306E\u307E\u307E\u6E21\u305B\u307E\u3059\u3002",
|
|
71
|
+
flags:[],async prepare(input,ctx){const[ref,...rest]=input.args;if(rest.length>0){throw new UsageError(`members \u304C\u53D7\u3051\u53D6\u308C\u308B\u5F15\u6570\u306F1\u3064\u3060\u3051\u3067\u3059: ${rest.join(" ")}`,"twp project members help")}return withResolved(input,{projectId:await ctx.projectId(ref)})},plan(input){const projectId=requireResolved(input,"projectId");return{method:"GET",path:`/api/v2/projects/${encodeURIComponent(projectId)}/members`,query:{limit:PROJECT_MEMBERS_LIMIT}}},summarize:body=>memberItems(
|
|
72
|
+
body).map(row=>pick(row,MEMBER_COLUMNS2)),raw:body=>memberItems(body),notes:body=>memberItems(body).length>=PROJECT_MEMBERS_LIMIT?[`${PROJECT_MEMBERS_LIMIT} \u4EF6\u3067\u6253\u3061\u5207\u3089\u308C\u3066\u3044\u308B\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\uFF08\u30B5\u30FC\u30D0\u306F\u53C2\u753B\u65E5\u6642\u306E\u65B0\u3057\u3044\u9806\u306B\u8FD4\u3057\u307E\u3059\uFF09\u3002`]:[]},{name:"mine",summary:"\u81EA\u5206\u304C\u30E1\u30F3\u30D0\u30FC\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3092\u4E00\u89A7\u3059\u308B\uFF08\u5F79\u5272\u30FB\u53C2\u753B\u671F\u9593\u3064\u304D\uFF09",
|
|
73
|
+
usage:"twp project mine",description:"GET /api/v2/me/projects\u3002\u3053\u306E API \u306F\u30DA\u30FC\u30B8\u30F3\u30B0\u3092\u6301\u305F\u305A\u3001\u5E38\u306B\u5168\u4EF6\u3092\u8FD4\u3057\u307E\u3059\u3002\nmember_start_date / member_end_date \u306F\u81EA\u5206\u306E\u53C2\u753B\u671F\u9593\u3067\u3059\uFF08start_date / end_date \u306F\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u671F\u9593\uFF09\u3002\n\u7A3C\u50CD\u671F\u9593\uFF08assignment_periods\uFF09\u306F --output json \u304B --query \u3067\u8AAD\u3081\u307E\u3059\u3002",
|
|
74
|
+
flags:[],plan(input){if(input.args.length>0){throw new UsageError(`mine \u306F\u4F4D\u7F6E\u5F15\u6570\u3092\u53D6\u308A\u307E\u305B\u3093: ${input.args.join(" ")}`,"twp project mine help")}return{method:"GET",path:"/api/v2/me/projects"}},summarize:body=>assignedProjectItems(body).map(row=>pick(row,ASSIGNED_PROJECT_COLUMNS)),raw:body=>assignedProjectItems(body)},{name:"manhours",summary:"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u5DE5\u6570\uFF08\u671F\u9593\u5185\u306E\u4F5C\u696D\u6642\u9593\uFF09\u3092\u30E6\u30FC\u30B6\u30FC\u3054\u3068\u306B\u8868\u793A\u3059\u308B\uFF08\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u7BA1\u7406\u8005\uFF09",
|
|
75
|
+
usage:MANHOURS_USAGE,description:"GET /api/v2/projects/{id}/manhours\u3002\u7701\u7565\u3059\u308B\u3068\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306F\u65E2\u5B9A\uFF08TWP_PROJECT / .twp/config.json / ~/.twp/config.json\uFF09\u3067\u3059\u3002\n\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u7BA1\u7406\u8005\uFF08manager\uFF09\u3068\u30C6\u30CA\u30F3\u30C8\u7BA1\u7406\u8005\u3060\u3051\u304C\u8AAD\u3081\u307E\u3059\u3002\u671F\u9593\u306F\u6700\u5927366\u65E5\u3067\u3059\uFF08\u30B5\u30FC\u30D0\u304C\u691C\u67FB\u3057\u307E\u3059\uFF09\u3002\n"+
|
|
76
|
+
MANHOUR_DESCRIPTION,flags:[MANHOUR_FROM_FLAG,MANHOUR_TO_FLAG],forbidden:body=>body?.error==="permission_denied"&&(body.error_description??"").includes("\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u7BA1\u7406\u8005")?"\u3053\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u5DE5\u6570\u3092\u8AAD\u3080\u6A29\u9650\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u7BA1\u7406\u8005\uFF08manager\uFF09\u304B\u30C6\u30CA\u30F3\u30C8\u7BA1\u7406\u8005\u3060\u3051\u304C\u8AAD\u3081\u307E\u3059\u3002":
|
|
77
|
+
void 0,prepare:(input,ctx)=>projectRefInput(input,ctx,"manhours"),plan(input){const projectId=requireResolved(input,"projectId");return{method:"GET",path:`/api/v2/projects/${encodeURIComponent(projectId)}/manhours`,query:manhourQuery(input,MANHOURS_USAGE)}},summarize:body=>manhourRows(body,"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u5DE5\u6570"),raw:body=>{manhourRows(body,"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u5DE5\u6570");return body},notes:body=>manhourNotes(body)},{name:"workload",summary:"\
|
|
78
|
+
\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u30E1\u30F3\u30D0\u30FC\u3054\u3068\u306E\u30BF\u30B9\u30AF\u4EF6\u6570\u30FB\u898B\u7A4D\u6642\u9593\u3092\u8868\u793A\u3059\u308B",usage:"twp project workload [<ID|\u30B3\u30FC\u30C9>]",description:"GET /api/v2/projects/{id}/analytics/workload\uFF08\u753B\u9762\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u5206\u6790\u306E\u300C\u30E1\u30F3\u30D0\u30FC\u5225\u8CA0\u8377\u300D\uFF09\u3002\n\u7701\u7565\u3059\u308B\u3068\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306F\u65E2\u5B9A\u3067\u3059\u3002\u672A\u5B8C\u4E86\u306E\u30BF\u30B9\u30AF\u304C\u5BFE\u8C61\u3067\u3001\u62C5\u5F53\u8005\u306E\u7121\u3044\u30BF\u30B9\u30AF\u306F\u300C\uFF08\u672A\u5272\u308A\u5F53\u3066\uFF09\u300D\u306E\u884C\u306B\u5165\u308A\u307E\u3059\u3002\n--output table / text / tsv \u306E by_status \u306F\u300C\u30B9\u30C6\u30FC\u30BF\u30B9\u540D:\u4EF6\u6570\u300D\u3092\u7A7A\u767D\u533A\u5207\u308A\u3067\u4E26\u3079\u305F\u3082\u306E\u3067\u3059\uFF08\u5185\u8A33\u306F --output json\uFF09\u3002",
|
|
79
|
+
flags:[],prepare:(input,ctx)=>projectRefInput(input,ctx,"workload"),plan(input){const projectId=requireResolved(input,"projectId");return{method:"GET",path:`/api/v2/projects/${encodeURIComponent(projectId)}/analytics/workload`}},summarize:body=>workloadDistributionRows(body),raw:body=>{workloadDistributionRows(body);return body},notes:body=>workloadDistributionNotes(body)}],subresources:[projectMemberResource]};var ASSIGNED_PROJECT_COLUMNS=["id","code","name","status","role","member_start_date",
|
|
80
|
+
"member_end_date"];function assignedProjectItems(body){const list=isRecord(body)?body["list"]:void 0;if(!Array.isArray(list)){throw new ApiResponseError("\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u4E00\u89A7\u306E\u5FDC\u7B54\u306B list \u914D\u5217\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002")}return list}async function projectRefInput(input,ctx,operation){const[ref,...rest]=input.args;if(rest.length>0){throw new UsageError(
|
|
81
|
+
`${operation} \u304C\u53D7\u3051\u53D6\u308C\u308B\u5F15\u6570\u306F1\u3064\u3060\u3051\u3067\u3059: ${rest.join(" ")}`,`twp project ${operation} help`)}return withResolved(input,{projectId:await ctx.projectId(ref)})}export{projectDomain,ASSIGNED_PROJECT_COLUMNS,assignedProjectItems};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{salesAdminForbidden}from"./chunk-
|
|
3
|
+
import{salesAdminForbidden}from"./chunk-YPMT453N.js";import{nonEmpty,positiveInteger}from"./chunk-IOGMOXYF.js";import{withResolved}from"./chunk-LXIAOCUW.js";import{isRecord,pick}from"./chunk-VTQAI52S.js";import{ApiResponseError,UsageError}from"./chunk-UFND7FBC.js";var PATH="/api/v2/sales/receivables";var FORBIDDEN=salesAdminForbidden("\u58F2\u639B\u91D1\u6B8B\u9AD8\u3068\u7DE0\u3081");var CLOSING_LIST_MAX=36;var SUMMARY_LABELS=[["previous_balance","\u524D\u6708\u6B8B\u9AD8"],["current_debit","\u5F53\u6708\u501F\u65B9\uFF08\u5F53\u6708\u8ACB\u6C42\u984D\uFF09"],["current_credit","\u5F53\u6708\u8CB8\u65B9\uFF08\u5F53\u6708\u5165\u91D1\u5F15\u5F53\u984D\uFF09"],["current_balance","\u5F53\u6708\u6B8B\u9AD8"],["current_month_uncollected","\u2460 \u5F53\u6708\u8ACB\u6C42 \u672A\u56DE\u53CE"],
|
|
4
4
|
["previous_uncollected","\u2461 \u524D\u6708\u4EE5\u524D \u672A\u5165\u91D1\u58F2\u639B\u91D1"],["advance_received","\u524D\u53D7\u91D1\uFF08\u7FCC\u6708\u4EE5\u964D\u8ACB\u6C42\u3078\u306E\u5165\u91D1\uFF09"],["future_invoice_total","\u2462 \u7FCC\u6708\u4EE5\u964D \u58F2\u639B\u91D1\uFF08\u8ACB\u6C42\u7DCF\u984D\u30FB\u53C2\u8003\uFF09"]];var ITEM_COLUMNS=["invoice_id","invoice_no","company_name","title","invoice_date","due_date","total","collected","uncollected"];var CLOSING_COLUMNS=["year_mo\
|
|
5
5
|
nth","basis_date","closed_at","closed_by_name","has_variance"];function usageOf(op){return`twp receivable ${op} help`}function yen(value){return typeof value==="number"?`${value.toLocaleString("ja-JP")} \u5186`:"\uFF08\u4E0D\u660E\uFF09"}function text(value){return typeof value==="string"||typeof value==="number"?String(value):""}function yearMonthValue(raw,label){const value=raw.trim();if(!/^\d{4}-(0[1-9]|1[0-2])$/.test(value))throw new UsageError(`${label} \u306F YYYY-MM \u306E\u5F62\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044: ${raw}`,
|
|
6
6
|
"\u4F8B: 2026-09");return value}function previousYearMonth(yearMonth){const[y,m]=yearMonth.split("-").map(Number);return m===1?`${y-1}-12`:`${y}-${String(m-1).padStart(2,"0")}`}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 withoutResult(body){return Object.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{
|
|
3
|
+
import{isoDate}from"./chunk-XDHLO54T.js";import{SALES_ESTIMATES_PATH,SALES_INVOICES_PATH,isExactNumericId,resolveNamed}from"./chunk-D5FEOBB6.js";import{repeatedValues}from"./chunk-F7K37QG6.js";import{LIST_PAGING_HELP,PAGE_NUMBER_LIST_FLAGS,PAGE_NUMBER_PAGING_HELP,STABLE_PAGE_ORDER,nonEmpty,pageNumberPaging,pageNumberQuery,pageRangeNotes}from"./chunk-IOGMOXYF.js";import{withResolved}from"./chunk-LXIAOCUW.js";import{isRecord,pick}from"./chunk-VTQAI52S.js";import{
|
|
4
4
|
ApiResponseError,UsageError}from"./chunk-UFND7FBC.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`}
|