@tocca-systems/twp-cli 0.88.0 → 0.89.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 +12 -0
- package/README.md +41 -3
- package/dist/{agent-SFDNPV24.js → agent-76ZH3E67.js} +1 -1
- package/dist/analysis-CUXB6NQF.js +5 -0
- package/dist/{announcement-XAIC4CNE.js → announcement-4YNKKG5V.js} +1 -1
- package/dist/{api-command-XFQUUFDV.js → api-command-QS6VCLTX.js} +3 -3
- package/dist/{app-M56CCOE7.js → app-GWNEJ24L.js} +4 -4
- package/dist/{attendance-correct-CJ3FJSVI.js → attendance-correct-KOTYM2DS.js} +2 -2
- package/dist/{attendance-lists-RRGFCDZR.js → attendance-lists-QUSNJQV2.js} +2 -2
- package/dist/{backlog-L5VRYZGM.js → backlog-CNTVVRZ6.js} +22 -20
- package/dist/budget-X3OMSO3F.js +4 -0
- package/dist/{chunk-LGJPXLMC.js → chunk-2L2EGIWR.js} +1 -1
- package/dist/{chunk-2AVQILQQ.js → chunk-2T23XGJF.js} +2 -2
- package/dist/chunk-34TCAKT5.js +88 -0
- package/dist/{chunk-QLDKF6GK.js → chunk-5PBNMFNO.js} +1 -1
- package/dist/{chunk-NMYHFVDR.js → chunk-6FGQNFUV.js} +1 -1
- package/dist/{chunk-FJEGS55N.js → chunk-733XATRJ.js} +1 -1
- package/dist/{chunk-FBVSHQST.js → chunk-7KD24ABA.js} +1 -1
- package/dist/{chunk-QUMDKN3U.js → chunk-7KD5RWFY.js} +1 -1
- package/dist/{chunk-WWDNWWPJ.js → chunk-DADDMUI5.js} +1 -1
- package/dist/chunk-DG7JPFYK.js +12 -0
- package/dist/{chunk-AV7L2IEN.js → chunk-E3UET43F.js} +1 -1
- package/dist/{chunk-E4FUHYC6.js → chunk-EGFVST6P.js} +1 -1
- package/dist/{chunk-RMU72S3D.js → chunk-FM3RHTEQ.js} +1 -1
- package/dist/{chunk-TJNM7PHZ.js → chunk-JA7DLMKJ.js} +4 -4
- package/dist/{chunk-MLRBDF44.js → chunk-JF2GCXNQ.js} +1 -1
- package/dist/{chunk-WDQMYRPE.js → chunk-KW37N7IO.js} +1 -1
- package/dist/{chunk-RTYJWZRA.js → chunk-LS7DFMG6.js} +1 -1
- package/dist/{chunk-OW23MAVO.js → chunk-M37IYSEG.js} +1 -1
- package/dist/{chunk-H4CDX4TX.js → chunk-MMVXE2CJ.js} +4 -3
- package/dist/{chunk-M7UEPYUQ.js → chunk-NLDVB4PZ.js} +1 -1
- package/dist/{chunk-XJ5EKWQY.js → chunk-OP5WINVG.js} +1 -1
- package/dist/{chunk-Y7QW7MHQ.js → chunk-PWKWXZDZ.js} +1 -1
- package/dist/chunk-RACLI3FA.js +8 -0
- package/dist/{chunk-VRJF6JLR.js → chunk-RIEBWMKF.js} +1 -1
- package/dist/{chunk-GO4KFSBE.js → chunk-TVISFCQN.js} +5 -4
- package/dist/chunk-UVCJXHWN.js +5 -0
- package/dist/{chunk-4VBSSXGA.js → chunk-WGAEYNZQ.js} +1 -1
- package/dist/{chunk-KPCVSILY.js → chunk-WJJW7VX7.js} +1 -1
- package/dist/{chunk-MUIN7OUW.js → chunk-Y7GYWZLW.js} +3 -5
- package/dist/cli.js +49 -12
- package/dist/{commands-2GRO356U.js → commands-3B5GGPY7.js} +32 -32
- package/dist/{commands-V7ZBTH7I.js → commands-RBN5WGWJ.js} +1 -1
- package/dist/{company-TF76Z3U5.js → company-3227PJ3Q.js} +2 -2
- package/dist/{completion-G54M3EFF.js → completion-32FJZVQR.js} +1 -1
- package/dist/{configure-3JID6MQ5.js → configure-DONZ3M6N.js} +3 -3
- package/dist/{contract-CFLPFV4I.js → contract-H5QWWRB3.js} +2 -2
- package/dist/{department-T22PBYMP.js → department-NIUPNDHH.js} +1 -1
- package/dist/{deposit-PLQ7WHOX.js → deposit-HUFSDRRK.js} +1 -1
- package/dist/{domain-knowledge-YFY5H6UB.js → domain-knowledge-M4Y7744J.js} +1 -1
- package/dist/{estimate-DYPQ27KU.js → estimate-BIGMD2NU.js} +3 -3
- package/dist/evaluation-L4L23IY2.js +122 -0
- package/dist/{expense-EA77QGLW.js → expense-JKENK2W2.js} +1 -1
- package/dist/{fiscal-year-YSFASZEW.js → fiscal-year-G45WHCZC.js} +1 -1
- package/dist/{holiday-E5WEZU6J.js → holiday-EW62DVPW.js} +3 -3
- package/dist/{inquiry-LEYPOQWZ.js → inquiry-QGUOVO77.js} +1 -1
- package/dist/{invoice-CAYBEW65.js → invoice-ZWUU3FSZ.js} +2 -2
- package/dist/{job-title-RSDAHHVJ.js → job-title-CXCW7BAP.js} +1 -1
- package/dist/{knowledge-GYLFDEXS.js → knowledge-PBFDM5WJ.js} +2 -2
- package/dist/{leave-IG7SWPPB.js → leave-CXTBZFIC.js} +3 -3
- package/dist/{license-I2SL53UI.js → license-7WE7UPVX.js} +1 -1
- package/dist/{media-TKP7ONY4.js → media-FM53QOC2.js} +3 -3
- package/dist/{notification-IEANIYPD.js → notification-Z2VMBWO3.js} +1 -1
- package/dist/{onedrive-KWVOUGG6.js → onedrive-Z43D26SJ.js} +1 -1
- package/dist/{oneshot-3N2W247J.js → oneshot-YDTQT2T3.js} +1 -1
- package/dist/{outlook-FQYNTXOB.js → outlook-ILJN562M.js} +1 -1
- package/dist/{position-CRVEGXPL.js → position-CLQVRA7Y.js} +1 -1
- package/dist/project-OTJCVFOW.js +4 -0
- package/dist/{prospect-A2YNQ4DE.js → prospect-3EHNELGI.js} +2 -2
- package/dist/{purchase-F3HUNCJE.js → purchase-MMUXAEER.js} +3 -3
- package/dist/{receivable-K4UKS46G.js → receivable-E52RNQTW.js} +1 -1
- package/dist/{redmine-MC3RIB7W.js → redmine-CKXEOH7Q.js} +1 -1
- package/dist/{registry-FAISFFZY.js → registry-A7OXOQPI.js} +1 -1
- package/dist/{report-HUP2TXTK.js → report-UTVGNCLP.js} +1 -1
- package/dist/{run-UH7QKMO3.js → run-VNV2AVDI.js} +2 -2
- package/dist/{sales-ai-review-5BJ3HNP5.js → sales-ai-review-XFMAKAOH.js} +2 -2
- package/dist/{sales-master-DUTB2DUX.js → sales-master-I6X4WFV3.js} +2 -2
- package/dist/{sales-numbering-WTEFGPOV.js → sales-numbering-P3JG4UPD.js} +1 -1
- package/dist/{search-3ZPF7X5S.js → search-KFMYAVLM.js} +1 -1
- package/dist/{segment-ZKJYMOKV.js → segment-LCZFL6QE.js} +1 -1
- package/dist/{setup-2KAICJYN.js → setup-ICJPTYKW.js} +1 -1
- package/dist/{skill-5NCDQFDN.js → skill-GK2WADKA.js} +2 -2
- package/dist/{staffing-board-NWZLXYXJ.js → staffing-board-5YHU7V6Z.js} +3 -3
- package/dist/{supplier-payment-QKWONHRH.js → supplier-payment-V4KRH7VA.js} +2 -2
- package/dist/{support-MLNODDQT.js → support-FU5M5LM3.js} +2 -2
- package/dist/{task-7RLVDTK2.js → task-PFSBL4A3.js} +4 -4
- package/dist/{teams-X5WBB5YH.js → teams-43CJTQHL.js} +1 -1
- package/dist/{user-FA2FIC47.js → user-5KHSDIVN.js} +4 -4
- package/dist/{user-contract-type-RELV4BV7.js → user-contract-type-4JXN7B7J.js} +1 -1
- package/dist/{worker-agent-IPOLSJEA.js → worker-agent-4TVU6AES.js} +1 -1
- package/dist/{workflow-VJL4FV3U.js → workflow-U5YJ2I6L.js} +1 -1
- package/package.json +1 -1
- package/dist/analysis-DPQN4BFG.js +0 -5
- package/dist/budget-T5YJTALN.js +0 -4
- package/dist/chunk-GYB2R6BV.js +0 -11
- package/dist/chunk-L37NS5L2.js +0 -8
- package/dist/evaluation-NG4DIIJM.js +0 -61
- package/dist/project-JICUCXI5.js +0 -4
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{FROM_FLAG,MANHOUR_DESCRIPTION,MANHOUR_FROM_FLAG,MANHOUR_TO_FLAG,MONTH_FLAG,TO_FLAG,dataOf,listIn,manhourNotes,manhourQuery,manhourRows,monthRange,rangeNotes,recordOf,workloadDistributionNotes,workloadDistributionRows}from"./chunk-
|
|
4
|
-
readBody}from"./chunk-IWYJSQ5I.js";import{PROJECT_MEMBERS_LIMIT,resolveNamed}from"./chunk-
|
|
3
|
+
import{projectEvaluationResource}from"./chunk-34TCAKT5.js";import{FROM_FLAG,MANHOUR_DESCRIPTION,MANHOUR_FROM_FLAG,MANHOUR_TO_FLAG,MONTH_FLAG,TO_FLAG,dataOf,listIn,manhourNotes,manhourQuery,manhourRows,monthRange,rangeNotes,recordOf,workloadDistributionNotes,workloadDistributionRows}from"./chunk-NLDVB4PZ.js";import{USER_REF_FLAG,USER_REF_HELP,userPath}from"./chunk-UVCJXHWN.js";import{createFlags,fieldBody,hasAnyField,resolveRefFields,updateFlags}from"./chunk-KW37N7IO.js";import{
|
|
4
|
+
boundedText,isoDate}from"./chunk-JJSBBWJ5.js";import{readBody}from"./chunk-IWYJSQ5I.js";import{PROJECT_MEMBERS_LIMIT,resolveNamed}from"./chunk-2T23XGJF.js";import{collapsesInUrlPath,safeProjectIdPolicy}from"./chunk-HVZUXLQ4.js";import{LIST_FLAGS,LIST_PAGING_HELP,envelopePaging,nonEmpty,positiveInteger}from"./chunk-MI6HVYR2.js";import{requireResolved,singleRef,withResolved}from"./chunk-PS5QFKHB.js";import{isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiResponseError,
|
|
5
|
+
UsageError}from"./chunk-VFPY2A23.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
6
|
--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
7
|
var WIKI_ROLE_FLAG={name:"--wiki-role",summary:"\u3053\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E Wiki \u6A29\u9650\uFF08admin\uFF1DWiki \u7BA1\u7406\u8005 / member\uFF1D\u4E00\u822C\uFF09",takesValue:true,placeholder:"<admin|member>"};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 WIKI_ROLES=["admin",
|
|
7
8
|
"member"];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 \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";
|
|
@@ -160,6 +161,6 @@ usage:MANHOURS_USAGE,description:"GET /api/v2/projects/{id}/manhours\u3002\u7701
|
|
|
160
161
|
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":
|
|
161
162
|
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:"\
|
|
162
163
|
\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",
|
|
163
|
-
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)},...projectAnalysisOperations],subresources:[projectMemberResource,projectProcessResource]};var ASSIGNED_PROJECT_COLUMNS=[
|
|
164
|
-
"code","name","status","role","member_start_date","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.
|
|
164
|
+
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)},...projectAnalysisOperations],subresources:[projectMemberResource,projectProcessResource,projectEvaluationResource]};var ASSIGNED_PROJECT_COLUMNS=[
|
|
165
|
+
"id","code","name","status","role","member_start_date","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.
|
|
165
166
|
args;if(rest.length>0){throw new UsageError(`${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};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
|
+
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
+
import{isSafePathSegment}from"./chunk-HVZUXLQ4.js";import{requireResolved,singleRef,withResolved}from"./chunk-PS5QFKHB.js";import{ApiResponseError}from"./chunk-VFPY2A23.js";var USER_REF_HELP="<\u30E6\u30FC\u30B6\u30FC> \u306F ID\u30FB\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\u30FB\u793E\u54E1\u756A\u53F7\u30FB\u6C0F\u540D\u30FBme\uFF08\u81EA\u5206\uFF09\u306E\u3069\u308C\u3067\u3082\u6307\u5B9A\u3067\u304D\u307E\u3059\u3002\n\u6C0F\u540D\u306F\u5B8C\u5168\u4E00\u81F4\u30671\u4EBA\u306B\u7D5E\u308C\u305F\u3068\u304D\u3060\u3051\u53D7\u3051\u4ED8\u3051\u307E\u3059\uFF08\u540C\u59D3\u540C\u540D\u306A\u3089\u5019\u88DC\u3092\u51FA\u3057\u3066\u6B62\u307E\u308B\u306E\u3067\u3001\n\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\u304B\u793E\u54E1\u756A\u53F7\u3067\u6307\u5B9A\u3057\u76F4\u3057\u3066\u304F\u3060\u3055\u3044\uFF09\u3002ID \u4EE5\u5916\u306F\u3001\u30C6\u30CA\u30F3\u30C8\u306E\u30E6\u30FC\u30B6\u30FC\u4E00\u89A7\n\uFF08\u65E2\u5B9A10\u5206\u30AD\u30E3\u30C3\u30B7\u30E5\u30FB--refresh \u3067\u53D6\u308A\u76F4\u3057\uFF09\u3068\u7167\u5408\u3057\u307E\u3059\u3002\n\u8868\u793A\u30D5\u30E9\u30B0\u3092\u5916\u3057\u305F\u30E6\u30FC\u30B6\u30FC\u306F\u793E\u54E1\u756A\u53F7\u3067\u306F\u5F15\u3051\u307E\u305B\u3093\u3002\u7D44\u7E54\u7BA1\u7406\u8005\u3067\u306A\u3044\u5834\u5408\u306F ID \u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002";
|
|
4
|
+
function userPath(input,suffix=""){const userId=requireResolved(input,"userId");if(!isSafePathSegment(userId)){throw new ApiResponseError(`\u30B5\u30FC\u30D0\u304C\u8FD4\u3057\u305F\u30E6\u30FC\u30B6\u30FC ID \u3092\u30D1\u30B9\u306B\u4F7F\u3048\u307E\u305B\u3093: ${userId}\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}return`${encodeURIComponent(userId)}${suffix}`}var USER_REF_FLAG={name:"--user",summary:"\u5BFE\u8C61\u306E\u30E6\u30FC\u30B6\u30FC\uFF08\u4F4D\u7F6E\u5F15\u6570\u306E\u4EE3\u308F\u308A\u306B\u4F7F\u3048\u308B\uFF09",
|
|
5
|
+
takesValue:true,placeholder:"<\u30E6\u30FC\u30B6\u30FC>"};async function prepareUser(input,ctx,usage){const ref=singleRef(input,{flag:"--user",label:"\u30E6\u30FC\u30B6\u30FC",usage});const user=await ctx.resolver.user(ref);return withResolved(input,{userId:user.id})}export{USER_REF_HELP,userPath,USER_REF_FLAG,prepareUser};
|
|
@@ -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-6FGQNFUV.js";import{featureLicenseGuidance,licenseForbidden}from"./chunk-7KD5RWFY.js";import{repeatedValues}from"./chunk-RX5HWI4L.js";import{booleanText,boundedText}from"./chunk-JJSBBWJ5.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-2T23XGJF.js";import{LIST_PAGING_HELP,PAGE_NUMBER_LIST_FLAGS,
|
|
4
4
|
nonEmpty,pageNumberPaging,pageNumberQuery,pageRangeNotes}from"./chunk-MI6HVYR2.js";import{requireResolved,withResolved}from"./chunk-PS5QFKHB.js";import{acknowledgement,isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";var INT_MAX=2147483647;var MEMBER_FORBIDDEN=licenseForbidden(featureLicenseGuidance("\u8CA9\u58F2\u7BA1\u7406"));function envelope(body,what){if(!isRecord(body)||body["result"]!==true)throw new ApiResponseError(`${what}\u306E\u5FDC\u7B54\u306E\u5F62\u304C\u60F3\u5B9A\u3068\u9055\u3044\u307E\u3059\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`);return body}function recordOf(body,what){const data=envelope(body,what)["data"];if(!isRecord(data)||typeof data["id"]!==
|
|
5
5
|
"string")throw new ApiResponseError(`${what}\u306E\u5FDC\u7B54\u306B data.id \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`);return data}function serverMessage(body){const message=isRecord(body)?body["message"]:void 0;return typeof message==="string"&&message!==""?[message]:[]}function text(value){return typeof value==="string"||typeof value==="number"?String(value):""}function integerValue(flag,raw,min,max=INT_MAX){const trimmed=raw.
|
|
6
6
|
trim();const value=/^\d+$/.test(trimmed)?Number(trimmed):Number.NaN;if(!Number.isSafeInteger(value)||value<min||value>max)throw new UsageError(`${flag} \u306F ${min} \u4EE5\u4E0A ${max} \u4EE5\u4E0B\u306E\u6574\u6570\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044: ${raw}`);return value}var RULE_COLUMNS=["id","rule_name","prefix","digit_count","current_number","count_up_num","next_number","sort_order"];function nextNumber(rule,purchaseFormat){const current=rule["current_number"];const step=rule["\
|
|
@@ -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-6FGQNFUV.js";import{nonEmpty,positiveInteger}from"./chunk-MI6HVYR2.js";import{withResolved}from"./chunk-PS5QFKHB.js";import{isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiResponseError,UsageError}from"./chunk-VFPY2A23.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,9 +1,7 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{dateFlag,monthFlag}from"./chunk-EXT4AIDF.js";import{STATUS_VALUES,createFlags,fieldBody,hasAnyField,idSegment,masterItem,masterRows,targetId,truncationNotes,updateFlags}from"./chunk-
|
|
4
|
-
import{ApiError}from"./chunk-JA5A6UJ2.js";import{nonEmpty,positiveInteger}from"./chunk-MI6HVYR2.js";import{requireResolved,
|
|
5
|
-
function userPath(input,suffix=""){const userId=requireResolved(input,"userId");if(!isSafePathSegment(userId)){throw new ApiResponseError(`\u30B5\u30FC\u30D0\u304C\u8FD4\u3057\u305F\u30E6\u30FC\u30B6\u30FC ID \u3092\u30D1\u30B9\u306B\u4F7F\u3048\u307E\u305B\u3093: ${userId}\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}return`${encodeURIComponent(userId)}${suffix}`}var USER_REF_FLAG={name:"--user",summary:"\u5BFE\u8C61\u306E\u30E6\u30FC\u30B6\u30FC\uFF08\u4F4D\u7F6E\u5F15\u6570\u306E\u4EE3\u308F\u308A\u306B\u4F7F\u3048\u308B\uFF09",
|
|
6
|
-
takesValue:true,placeholder:"<\u30E6\u30FC\u30B6\u30FC>"};async function prepareUser(input,ctx,usage){const ref=singleRef(input,{flag:"--user",label:"\u30E6\u30FC\u30B6\u30FC",usage});const user=await ctx.resolver.user(ref);return withResolved(input,{userId:user.id})}var COMMAND="twp attendance";function label(kind){return ATTENDANCE_REPORT_MASTER_LABELS[kind]}function commonFields(name){return[{kind:"text",flag:"--code",key:"code",label:`${name}\u30B3\u30FC\u30C9`,maxChars:50,summary:`${name}\u30B3\u30FC\u30C9\uFF08\u30C6\u30CA\u30F3\u30C8\u5185\u3067\u4E00\u610F\uFF09`},{kind:"text",flag:"--name",key:"name",label:`${name}\u540D`,maxChars:255,summary:`${name}\u540D`}]}function tailFields(){return[{kind:"integer",flag:"--sort",key:"sort",label:"\u8868\u793A\u9806",
|
|
3
|
+
import{USER_REF_HELP}from"./chunk-UVCJXHWN.js";import{dateFlag,monthFlag}from"./chunk-EXT4AIDF.js";import{STATUS_VALUES,createFlags,fieldBody,hasAnyField,idSegment,masterItem,masterRows,targetId,truncationNotes,updateFlags}from"./chunk-KW37N7IO.js";import{repeatedValues}from"./chunk-RX5HWI4L.js";import{readBody}from"./chunk-IWYJSQ5I.js";import{ATTENDANCE_REPORTS_PATH,ATTENDANCE_REPORT_MASTER_LABELS,ATTENDANCE_REPORT_MASTER_PATHS,ORG_MASTER_LIMIT,resolveNamed}from"./chunk-2T23XGJF.js";
|
|
4
|
+
import{isSafePathSegment}from"./chunk-HVZUXLQ4.js";import{ApiError}from"./chunk-JA5A6UJ2.js";import{nonEmpty,positiveInteger}from"./chunk-MI6HVYR2.js";import{requireResolved,withResolved}from"./chunk-PS5QFKHB.js";import{acknowledgement,isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiRejectedError,ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";var COMMAND="twp attendance";function label(kind){return ATTENDANCE_REPORT_MASTER_LABELS[kind]}function commonFields(name){return[{kind:"text",flag:"--code",key:"code",label:`${name}\u30B3\u30FC\u30C9`,maxChars:50,summary:`${name}\u30B3\u30FC\u30C9\uFF08\u30C6\u30CA\u30F3\u30C8\u5185\u3067\u4E00\u610F\uFF09`},{kind:"text",flag:"--name",key:"name",label:`${name}\u540D`,maxChars:255,summary:`${name}\u540D`}]}function tailFields(){return[{kind:"integer",flag:"--sort",key:"sort",label:"\u8868\u793A\u9806",
|
|
7
5
|
min:0,max:9999,summary:"\u8868\u793A\u9806\uFF080\u301C9999\u3002\u5C0F\u3055\u3044\u307B\u3069\u4E0A\uFF09"},{kind:"enum",flag:"--status",key:"status",values:STATUS_VALUES,summary:"\u72B6\u614B\uFF08active: \u6709\u52B9 / inactive: \u7121\u52B9\uFF1D\u52E4\u6020\u9023\u7D61\u306E\u9078\u629E\u80A2\u306B\u51FA\u306A\u3044\uFF09"},{kind:"boolean",flag:"--admin-only",key:"is_admin_only",summary:"\u7BA1\u7406\u8005\u3060\u3051\u304C\u9078\u3079\u308B\u304B\uFF08true / false\uFF09"},{kind:"text",flag:"\
|
|
8
6
|
--description",key:"description",label:"\u8AAC\u660E",maxChars:1e3,summary:"\u8AAC\u660E"}]}function parentFlag(parent,mode){const parentLabel=label(parent.kind);const summary=mode==="create"?`\u7D10\u3065\u3051\u308B${parentLabel}\uFF08\u540D\u524D\u30FB\u30B3\u30FC\u30C9\u30FBID\u3002\u8907\u6570\u306A\u3089\u7E70\u308A\u8FD4\u3059\u3002\u7701\u304F\u3068\u6709\u52B9\u306A${parentLabel}\u3059\u3079\u3066\u306B\u7D10\u3065\u304F\uFF09`:`\u7D10\u3065\u3051\u308B${parentLabel}\uFF08\u540D\u524D\u30FB\u30B3\u30FC\u30C9\u30FBID\u3002\u8907\u6570\u306A\u3089\u7E70\u308A\u8FD4\u3059\u3002\
|
|
9
7
|
\u6307\u5B9A\u3057\u305F\u3082\u306E\u3067\u7F6E\u304D\u63DB\u3048\u308B\uFF09`;return{name:parent.flag,summary,takesValue:true,placeholder:`<${parentLabel}>`,repeatable:true}}async function resolveParents(input,ctx,parent){const refs=repeatedValues(input,parent.flag);if(refs.length===0)return void 0;const ids=[];for(const ref of refs){if(ref.trim()==="")throw new UsageError(`${parent.flag} \u306B\u7A7A\u306E\u5024\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093`);const id=(await ctx.resolver.attendanceReportMaster(
|
|
@@ -177,4 +175,4 @@ flags:[{name:"--month",summary:"\u5BFE\u8C61\u306E\u5E74\u6708\uFF08YYYY-MM\uFF0
|
|
|
177
175
|
usage:PUNCH_USAGE,description:"POST /api/v1/attendance/punch \u3092\u9001\u308A\u307E\u3059\uFF08\u30ED\u30B0\u30A4\u30F3\u3057\u3066\u3044\u308B\u672C\u4EBA\u306E\u5206\uFF09\u3002\u6253\u523B\u6642\u523B\u306F\u30B5\u30FC\u30D0\u306E\u6642\u523B\u3067\u3059\u3002\n\u7A2E\u985E: clock-in\uFF08\u51FA\u52E4\uFF09/ clock-out\uFF08\u9000\u52E4\uFF09/ break-start\uFF08\u4F11\u61A9\u958B\u59CB\uFF09/ break-end\uFF08\u4F11\u61A9\u7D42\u4E86\uFF09/ switch\uFF08\u4F5C\u696D\u306E\u5207\u308A\u66FF\u3048\uFF09\u3002\n\u3044\u307E\u6253\u3066\u308B\u7A2E\u985E\u306F twp attendance status \u306E available_actions \u3067\u5206\u304B\u308A\u307E\u3059\u3002\n--project \u306F\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u30B3\u30FC\u30C9\u304B ID\u3001--task \u306F\u30BF\u30B9\u30AF\u306E ID\uFF08UUID\uFF09\u3067\u3059\u3002\n\u9001\u308B\u524D\u306B\u4ECA\u6708\u306E\u52E4\u6020\u8868\uFF08GET /api/v1/attendance/timesheet\uFF09\u3092\u898B\u3066\u3001\u7DE0\u3081\u6E08\u307F\u306A\u3089\u6253\u523B\u3092\u9001\u3089\u305A\u306B\u6B62\u3081\u307E\u3059\uFF08\u7D42\u4E86\u30B3\u30FC\u30C9 3\uFF09\u3002\n--dry-run \u306F\u6253\u523B\u306E\u30EA\u30AF\u30A8\u30B9\u30C8\u3060\u3051\u3092\u8868\u793A\u3057\u307E\u3059\uFF08\u7DE0\u3081\u306E\u78BA\u8A8D\u306F\u9001\u308A\u307E\u305B\u3093\uFF09\u3002\n\u904E\u53BB\u306E\u6642\u523B\u3067\u306E\u6253\u523B\u306F twp attendance record create\u3001\u30E1\u30E2\u306E\u5909\u66F4\u30FB\u53D6\u308A\u6D88\u3057\u30FB\u4ED8\u3051\u66FF\u3048\u306F twp attendance record update / de\
|
|
178
176
|
lete / move \u3067\u3059\u3002",flags:[{name:"--project",summary:"\u4F5C\u696D\u3059\u308B\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\uFF08\u30B3\u30FC\u30C9\u307E\u305F\u306F ID\uFF09",takesValue:true,placeholder:"<\u30B3\u30FC\u30C9|ID>"},{name:"--task",summary:"\u4F5C\u696D\u3059\u308B\u30BF\u30B9\u30AF\u306E ID\uFF08UUID\uFF09",takesValue:true,placeholder:"<\u30BF\u30B9\u30AFID>"},{name:"--memo",summary:`\u30E1\u30E2\uFF08${MEMO_MAX} \u6587\u5B57\u4EE5\u5185\uFF09`,takesValue:true,placeholder:"<\u30E1\u30E2>"}],
|
|
179
177
|
async prepare(input,ctx){punchType(input);const explicit=input.flags.get("--project");if(explicit===void 0)return input;return withResolved(input,{projectId:await ctx.projectId(explicit)})},plan:punchPlan,plannedNotes:()=>["\u5B9F\u884C\u6642\u306F\u3001\u3053\u306E\u524D\u306B\u4ECA\u6708\u306E\u7DE0\u3081\u306E\u78BA\u8A8D\uFF08GET /api/v1/attendance/timesheet\uFF09\u3092\u9001\u308A\u3001\u7DE0\u3081\u6E08\u307F\u306A\u3089\u6253\u523B\u3092\u9001\u308A\u307E\u305B\u3093\u3002"],execute:punch,
|
|
180
|
-
summarize:body=>{const status=isRecord(body)&&isRecord(body["status"])?body["status"]:{};return{...pick(punchRecord(body),PUNCH_COLUMNS),status:status["status"]??null,status_label:status["status_label"]??null}},raw:body=>(punchRecord(body),body)},teamOperation,flexSettlementOperation,overtimeOperation],subresources:[reportResource,reportCategoryResource,reportReasonResource,reportReasonDetailResource,closingsResource]};export{
|
|
178
|
+
summarize:body=>{const status=isRecord(body)&&isRecord(body["status"])?body["status"]:{};return{...pick(punchRecord(body),PUNCH_COLUMNS),status:status["status"]??null,status_label:status["status_label"]??null}},raw:body=>(punchRecord(body),body)},teamOperation,flexSettlementOperation,overtimeOperation],subresources:[reportResource,reportCategoryResource,reportReasonResource,reportReasonDetailResource,closingsResource]};export{PUNCH_TYPES,hoursMinutes,assertMonthOpen,assertMonthsOpen,attendanceDomain};
|
package/dist/cli.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
3
3
|
const require = __twpCreateRequire(import.meta.url);
|
|
4
|
-
import{GLOBAL_OPTIONS_HELP}from"./chunk-PECIBNFD.js";import{parseArgv}from"./chunk-
|
|
4
|
+
import{GLOBAL_OPTIONS_HELP}from"./chunk-PECIBNFD.js";import{parseArgv}from"./chunk-5PBNMFNO.js";import"./chunk-2LOT54OO.js";import"./chunk-JF2GCXNQ.js";import"./chunk-EOXTDZTA.js";import"./chunk-QQRJLH6B.js";import"./chunk-VSJBJXZO.js";var VERSION=true?"0.89.0":"0.0.0-dev";var HELP=`twp ${VERSION} \u2014 TWP CLI
|
|
5
5
|
|
|
6
6
|
\u4F7F\u3044\u65B9:
|
|
7
7
|
twp \u5BFE\u8A71 TUI \u3092\u8D77\u52D5
|
|
@@ -18,7 +18,7 @@ import{GLOBAL_OPTIONS_HELP}from"./chunk-PECIBNFD.js";import{parseArgv}from"./chu
|
|
|
18
18
|
twp whoami \u30ED\u30B0\u30A4\u30F3\u4E2D\u306E\u30E6\u30FC\u30B6\u30FC\u30FBID\u30FB\u30C6\u30CA\u30F3\u30C8\u3092\u8868\u793A
|
|
19
19
|
--output json / --query id \u3067\u6A5F\u68B0\u53EF\u8AAD\u306B\uFF08\u30C8\u30FC\u30AF\u30F3\u306F\u51FA\u3055\u306A\u3044\uFF09
|
|
20
20
|
twp configure [--profile <\u540D\u524D>]
|
|
21
|
-
\u65E2\u5B9A\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u30FB\u51FA\u529B\u5F62\u5F0F\u30FB\u65E2\u5B9A\u30D7\u30ED\u30D5\u30A1\u30A4\u30EB\u3092\u5BFE\u8A71\u3067\u8A2D\u5B9A
|
|
21
|
+
\u65E2\u5B9A\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u30FB\u51FA\u529B\u5F62\u5F0F\u30FBBacklog \u30B9\u30DA\u30FC\u30B9\u30FB\u65E2\u5B9A\u30D7\u30ED\u30D5\u30A1\u30A4\u30EB\u3092\u5BFE\u8A71\u3067\u8A2D\u5B9A
|
|
22
22
|
\uFF08~/.twp/config.json \u306B\u4FDD\u5B58\u3002\u8A8D\u8A3C\u60C5\u5831\u306B\u306F\u89E6\u3089\u306A\u3044\uFF09
|
|
23
23
|
twp completion <bash|zsh|fish|powershell>
|
|
24
24
|
\u30B7\u30A7\u30EB\u88DC\u5B8C\u306E\u30B9\u30AF\u30EA\u30D7\u30C8\u3092\u51FA\u529B\uFF08\u4F8B: eval "$(twp completion bash)"\uFF09
|
|
@@ -229,6 +229,8 @@ import{GLOBAL_OPTIONS_HELP}from"./chunk-PECIBNFD.js";import{parseArgv}from"./chu
|
|
|
229
229
|
\u30E1\u30F3\u30D0\u30FC\u306B\u964D\u683C\u3059\u308B
|
|
230
230
|
twp project member alias <\u5225\u540D>
|
|
231
231
|
\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
|
|
232
|
+
twp project evaluation create <\u30B3\u30FC\u30C9|ID>
|
|
233
|
+
\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3067\u306E\u8981\u54E1\u8A55\u4FA1\u3092\u4F5C\u308B\uFF08--user\u30FB--period \u304C\u8981\u308B\u30FB\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u7BA1\u7406\u8005\uFF09
|
|
232
234
|
twp task list \u30BF\u30B9\u30AF\u3092\u4E00\u89A7\u3059\u308B\uFF08--status / --assignee \u306F\u540D\u524D\u3067\u6307\u5B9A\u3067\u304D\u308B\uFF09
|
|
233
235
|
twp task get <\u30AD\u30FC> \u30BF\u30B9\u30AF1\u4EF6\u306E\u8A73\u7D30\u3092\u8868\u793A\u3059\u308B\uFF08--project \u4E0D\u8981\uFF09
|
|
234
236
|
twp task subtasks <\u30AD\u30FC>
|
|
@@ -617,7 +619,7 @@ import{GLOBAL_OPTIONS_HELP}from"./chunk-PECIBNFD.js";import{parseArgv}from"./chu
|
|
|
617
619
|
\u6307\u6458\u306B\u627F\u8A8D\u8005\u30B3\u30E1\u30F3\u30C8\u3092\u66F8\u304F\uFF08--text / --text-file\uFF09
|
|
618
620
|
twp workflow ai-review-comment delete <\u6307\u6458ID> --instance <\u7533\u8ACBID>
|
|
619
621
|
\u627F\u8A8D\u8005\u30B3\u30E1\u30F3\u30C8\u3092\u53D6\u308A\u6D88\u3059\uFF08--yes \u304C\u8981\u308B\uFF09
|
|
620
|
-
twp backlog space list \u9023\u643A\u6E08\u307F\u306E Backlog \u30B9\u30DA\u30FC\u30B9\u3092\u4E00\u89A7\u3059\u308B
|
|
622
|
+
twp backlog space list \u9023\u643A\u6E08\u307F\u306E Backlog \u30B9\u30DA\u30FC\u30B9\u3092\u4E00\u89A7\u3059\u308B\uFF08--space \u306E\u65E2\u5B9A\u306F twp configure \u3067\u8A2D\u5B9A\u3067\u304D\u308B\uFF09
|
|
621
623
|
twp backlog project list
|
|
622
624
|
Backlog \u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3092\u4E00\u89A7\u3059\u308B
|
|
623
625
|
twp backlog issue list Backlog \u8AB2\u984C\u3092\u4E00\u89A7\u30FB\u691C\u7D22\u3059\u308B\uFF08--project / --status \u306F\u540D\u524D\u3067\u6307\u5B9A\u3067\u304D\u308B\uFF09
|
|
@@ -626,7 +628,7 @@ import{GLOBAL_OPTIONS_HELP}from"./chunk-PECIBNFD.js";import{parseArgv}from"./chu
|
|
|
626
628
|
twp backlog issue update <\u8AB2\u984C\u30AD\u30FC>
|
|
627
629
|
Backlog \u8AB2\u984C\u306E\u62C5\u5F53\u30FB\u30B9\u30C6\u30FC\u30BF\u30B9\u3092\u5909\u66F4\u3059\u308B\uFF08\u5916\u90E8\u3078\u51FA\u308B\u30FB--yes \u304C\u8981\u308B\uFF09
|
|
628
630
|
twp backlog comment list <\u8AB2\u984C\u30AD\u30FC>
|
|
629
|
-
Backlog \u8AB2\u984C\u306E\u30B3\u30E1\u30F3\u30C8\u3092\u4E00\u89A7\u3059\u308B\uFF08changeLog \u4ED8\u304D\uFF09
|
|
631
|
+
Backlog \u8AB2\u984C\u306E\u30B3\u30E1\u30F3\u30C8\u3092\u4E00\u89A7\u3059\u308B\uFF08changeLog \u4ED8\u304D\u30FB--all \u3067\u5168\u4EF6\uFF09
|
|
630
632
|
twp backlog comment create <\u8AB2\u984C\u30AD\u30FC>
|
|
631
633
|
Backlog \u8AB2\u984C\u306B\u30B3\u30E1\u30F3\u30C8\u3092\u6295\u7A3F\u3059\u308B\uFF08\u5916\u90E8\u3078\u51FA\u308B\u30FB--yes \u304C\u8981\u308B\uFF09
|
|
632
634
|
twp backlog attachment list <\u8AB2\u984C\u30AD\u30FC>
|
|
@@ -864,12 +866,47 @@ import{GLOBAL_OPTIONS_HELP}from"./chunk-PECIBNFD.js";import{parseArgv}from"./chu
|
|
|
864
866
|
\u8A55\u4FA1\u671F\u9593\u3092\u4E00\u89A7\u3059\u308B
|
|
865
867
|
twp evaluation period current
|
|
866
868
|
\u4ECA\u65E5\u3092\u542B\u3080\u8A55\u4FA1\u671F\u9593\u3092\u8868\u793A\u3059\u308B
|
|
869
|
+
twp evaluation period get <\u8A55\u4FA1\u671F\u9593ID>
|
|
870
|
+
\u8A55\u4FA1\u671F\u95931\u4EF6\u306E\u8A73\u7D30\u3092\u8868\u793A\u3059\u308B
|
|
871
|
+
twp evaluation period create
|
|
872
|
+
\u8A55\u4FA1\u671F\u9593\u3092\u4F5C\u6210\u3059\u308B\uFF08--name\u30FB--start\u30FB--end\u30FB\u7BA1\u7406\u8005\u306E\u307F\uFF09
|
|
873
|
+
twp evaluation period update <\u8A55\u4FA1\u671F\u9593ID>
|
|
874
|
+
\u8A55\u4FA1\u671F\u9593\u3092\u5909\u66F4\u3059\u308B\uFF08\u7DE0\u3081\u6E08\u307F\u306F\u5909\u3048\u3089\u308C\u306A\u3044\u30FB\u7BA1\u7406\u8005\u306E\u307F\uFF09
|
|
875
|
+
twp evaluation period delete <\u8A55\u4FA1\u671F\u9593ID>
|
|
876
|
+
\u8A55\u4FA1\u671F\u9593\u3092\u524A\u9664\u3059\u308B\uFF08--yes \u304C\u8981\u308B\u30FB\u7BA1\u7406\u8005\u306E\u307F\uFF09
|
|
877
|
+
twp evaluation period close <\u8A55\u4FA1\u671F\u9593ID>
|
|
878
|
+
\u8A55\u4FA1\u671F\u9593\u3092\u7DE0\u3081\u308B\uFF08--yes \u304C\u8981\u308B\u30FB--dry-run \u3067\u5BFE\u8C61\u30FB\u7BA1\u7406\u8005\u306E\u307F\uFF09
|
|
879
|
+
twp evaluation period reopen <\u8A55\u4FA1\u671F\u9593ID>
|
|
880
|
+
\u8A55\u4FA1\u671F\u9593\u306E\u7DE0\u3081\u3092\u89E3\u9664\u3059\u308B\uFF08--yes \u304C\u8981\u308B\u30FB\u7BA1\u7406\u8005\u306E\u307F\uFF09
|
|
881
|
+
twp evaluation criteria get
|
|
882
|
+
\u8A55\u4FA1\u57FA\u6E96\uFF08\u8A55\u4FA1\u9805\u76EE\u3054\u3068\u306E A\u301CE \u306E\u8AAC\u660E\uFF09\u3092\u8868\u793A\u3059\u308B
|
|
883
|
+
twp evaluation criteria set --file <JSON>
|
|
884
|
+
\u8A55\u4FA1\u57FA\u6E96\u3092\u7F6E\u304D\u63DB\u3048\u308B\uFF08--yes \u304C\u8981\u308B\u30FB--dry-run \u3067\u5DEE\u5206\u30FB\u7BA1\u7406\u8005\u306E\u307F\uFF09
|
|
867
885
|
twp evaluation feedback mine
|
|
868
886
|
\u81EA\u5206\u304C\u53D7\u3051\u53D6\u3063\u305F\u8A55\u4FA1\u306E\u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF\u3092\u4E00\u89A7\u3059\u308B
|
|
887
|
+
twp evaluation feedback save <\u8A55\u4FA1ID>
|
|
888
|
+
\u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF\u3092\u4E0B\u66F8\u304D\u4FDD\u5B58\u3059\u308B\uFF08--body-file\u30FB\u672C\u4EBA\u306B\u306F\u5C4A\u304B\u306A\u3044\uFF09
|
|
889
|
+
twp evaluation feedback send <\u8A55\u4FA1ID>
|
|
890
|
+
\u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF\u3092\u4FDD\u5B58\u3057\u3066\u672C\u4EBA\u3078\u516C\u958B\u3059\u308B\uFF08--yes \u304C\u8981\u308B\u30FB\u53D6\u308A\u6D88\u305B\u306A\u3044\uFF09
|
|
891
|
+
twp evaluation feedback publish <\u8A55\u4FA1ID>
|
|
892
|
+
\u4FDD\u5B58\u6E08\u307F\u306E\u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF\u3092\u672C\u4EBA\u3078\u516C\u958B\u3059\u308B\uFF08--yes \u304C\u8981\u308B\u30FB\u53D6\u308A\u6D88\u305B\u306A\u3044\uFF09
|
|
893
|
+
twp evaluation step update <\u8A55\u4FA1ID>
|
|
894
|
+
\u8A55\u4FA1\u6BB5\u3092\u5165\u529B\u3059\u308B\uFF08--step\u30FB--content-file\u3002--draft \u3067\u4E00\u6642\u4FDD\u5B58\uFF09
|
|
869
895
|
twp goal-sheet list \u898B\u3066\u3088\u3044\u7BC4\u56F2\u306E\u76EE\u6A19\u30B7\u30FC\u30C8\u3092\u4E00\u89A7\u3059\u308B\uFF08--period\u30FB--status\uFF09
|
|
870
896
|
twp goal-sheet mine \u81EA\u5206\u306E\u76EE\u6A19\u30B7\u30FC\u30C8\u3092\u4E00\u89A7\u3059\u308B
|
|
871
897
|
twp goal-sheet get <\u76EE\u6A19\u30B7\u30FC\u30C8ID>
|
|
872
898
|
\u76EE\u6A19\u30B7\u30FC\u30C81\u4EF6\u306E\u8A73\u7D30\u3092\u8868\u793A\u3059\u308B
|
|
899
|
+
twp goal-sheet update <\u76EE\u6A19\u30B7\u30FC\u30C8ID>
|
|
900
|
+
\u76EE\u6A19\u3092\u66F8\u304D\u63DB\u3048\u308B\uFF08--content-file\u30FBsections \u306F\u4E38\u3054\u3068\u7F6E\u304D\u63DB\u3048\uFF09
|
|
901
|
+
twp goal-sheet submit <\u76EE\u6A19\u30B7\u30FC\u30C8ID>
|
|
902
|
+
\u76EE\u6A19\u30B7\u30FC\u30C8\u3092\u4E0A\u9577\u3078\u63D0\u51FA\u3059\u308B\uFF08--yes \u304C\u8981\u308B\uFF09
|
|
903
|
+
twp role-template list \u5F79\u5272\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u3092\u4E00\u89A7\u3059\u308B\uFF08--active\u30FB--keyword\uFF09
|
|
904
|
+
twp role-template create
|
|
905
|
+
\u5F79\u5272\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u3092\u4F5C\u6210\u3059\u308B\uFF08--name\u30FB--required-skill\u30FB\u7BA1\u7406\u8005\u306E\u307F\uFF09
|
|
906
|
+
twp role-template update <ID>
|
|
907
|
+
\u5F79\u5272\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u3092\u5909\u66F4\u3059\u308B\uFF08\u30B9\u30AD\u30EB\u306F\u4E38\u3054\u3068\u7F6E\u304D\u63DB\u3048\u30FB\u7BA1\u7406\u8005\u306E\u307F\uFF09
|
|
908
|
+
twp role-template delete <ID>
|
|
909
|
+
\u5F79\u5272\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u3092\u524A\u9664\u3059\u308B\uFF08--yes \u304C\u8981\u308B\u30FB\u7BA1\u7406\u8005\u306E\u307F\uFF09
|
|
873
910
|
twp inquiry category list
|
|
874
911
|
\u554F\u3044\u5408\u308F\u305B\u30AB\u30C6\u30B4\u30EA\u3092\u4E00\u89A7\u3059\u308B
|
|
875
912
|
twp inquiry category get <\u30AB\u30C6\u30B4\u30EA>
|
|
@@ -1403,16 +1440,16 @@ TUI \u5185:
|
|
|
1403
1440
|
TWP API \u3092\u547C\u3079\u307E\u3059\u3002TWP API \u306E\u30C4\u30FC\u30EB\u306F\u65E2\u5B9A\u3067\u78BA\u8A8D\u304C\u51FA\u307E\u3059\uFF08-p \u3067\u306F\u62D2\u5426\u3002--allowed-tools \u3067\u540D\u524D\u3092\u8A31\u53EF\uFF09\u3002
|
|
1404
1441
|
\u4F1A\u8A71\u30FB\u30ED\u30FC\u30AB\u30EB\u30C4\u30FC\u30EB\uFF08\u30D5\u30A1\u30A4\u30EB\u30FB\u30B3\u30DE\u30F3\u30C9\u30FBgit\uFF09\u306F\u30C6\u30CA\u30F3\u30C8\u306E\u30AF\u30EC\u30B8\u30C3\u30C8\u3067\u5B9F\u969B\u306B\u52D5\u304D\u307E\u3059\u3002
|
|
1405
1442
|
`;function ignoreEpipe(stream){stream.on("error",err=>{if(err.code==="EPIPE")process.exit(0);throw err})}async function main(){const nodeMajor=Number(process.versions.node.split(".")[0]);if(nodeMajor<22){process.stderr.write(`twp-cli \u306B\u306F Node.js 22 \u4EE5\u4E0A\u304C\u5FC5\u8981\u3067\u3059\uFF08\u73FE\u5728: ${process.versions.node}\uFF09
|
|
1406
|
-
`);process.exit(1)}ignoreEpipe(process.stdout);ignoreEpipe(process.stderr);if(process.env["TWP_AUTO_UPDATE_WORKER"]==="1"){const{runAutoUpdateWorker}=await import("./auto-update-worker-XT4VB4LJ.js");await runAutoUpdateWorker().catch(()=>void 0);return}const[first,...rest]=process.argv.slice(2);if(first==="__complete"||first==="completion"){const completion=await import("./completion-
|
|
1407
|
-
const[{loadDomain},{loadUserConfig}]=await Promise.all([import("./registry-
|
|
1443
|
+
`);process.exit(1)}ignoreEpipe(process.stdout);ignoreEpipe(process.stderr);if(process.env["TWP_AUTO_UPDATE_WORKER"]==="1"){const{runAutoUpdateWorker}=await import("./auto-update-worker-XT4VB4LJ.js");await runAutoUpdateWorker().catch(()=>void 0);return}const[first,...rest]=process.argv.slice(2);if(first==="__complete"||first==="completion"){const completion=await import("./completion-32FJZVQR.js");if(first==="completion"){process.exitCode=completion.runCompletion(rest,process.stdout,process.stderr);return}
|
|
1444
|
+
const[{loadDomain},{loadUserConfig}]=await Promise.all([import("./registry-A7OXOQPI.js"),import("./config-XYWRBIC6.js")]);process.exitCode=await completion.runComplete(rest,process.stdout,{loadDomain,profileNames:()=>Object.keys(loadUserConfig().profiles??{})});return}if(first==="configure"){const autoUpdate2=await import("./auto-update-FXXQHBV5.js");autoUpdate2.registerRunning();autoUpdate2.onStartup(VERSION);const{runConfigure}=await import("./configure-DONZ3M6N.js");process.exitCode=
|
|
1408
1445
|
await runConfigure(rest);return}const args=parseArgv(process.argv.slice(2));if(args.command==="version"){process.stdout.write(`${VERSION}
|
|
1409
1446
|
`);return}if(args.command==="help"){process.stdout.write(HELP);return}if(args.movedCommand!==void 0){const{MOVED_QUEUE_COMMAND_MESSAGE}=await import("./dispatch-GSBMRWQ4.js");process.stderr.write(MOVED_QUEUE_COMMAND_MESSAGE);process.exitCode=2;return}if(args.unknown.length>0){process.stderr.write(`\u4E0D\u660E\u306A\u5F15\u6570: ${args.unknown.join(" ")}
|
|
1410
1447
|
|
|
1411
|
-
${HELP}`);process.exitCode=2;return}const autoUpdate=await import("./auto-update-FXXQHBV5.js");autoUpdate.registerRunning();if(args.command==="task-loop"&&args.taskLoopAction!=="capacity"){process.env[autoUpdate.DISABLE_ENV]="1"}else if(args.command!=="update"){autoUpdate.onStartup(VERSION)}if(args.command==="domain"&&args.domain!==void 0){const{runDomain}=await import("./run-
|
|
1412
|
-
{},argv:args.domainArgv,help:args.domainHelp,globals:{...args.profile!==void 0?{profile:args.profile}:{},...args.output!==void 0?{output:args.output}:{},...args.query!==void 0?{query:args.query}:{},dryRun:args.dryRun,debug:args.debug,yes:args.yes,refresh:args.refresh},version:VERSION});return}if(args.command==="api"){const{runApiCommand}=await import("./api-command-
|
|
1413
|
-
profile}:{},...args.output!==void 0?{output:args.output}:{},...args.query!==void 0?{query:args.query}:{},dryRun:args.dryRun,debug:args.debug,yes:args.yes},version:VERSION});return}if(args.command==="update"){const{runUpdate}=await import("./update-5NJSC26F.js");process.exitCode=await runUpdate({...args.profile!==void 0?{profile:args.profile}:{},version:VERSION});return}if(args.command==="login"||args.command==="logout"||args.command==="whoami"){const{runLogin,runLogout,runWhoami}=await import("./commands-
|
|
1414
|
-
const options={profile:args.profile,method:args.loginMethod,tenant:args.tenant,noBrowser:args.loginNoBrowser,cliVersion:VERSION,force:args.logoutForce,...args.output!==void 0?{output:args.output}:{},...args.query!==void 0?{query:args.query}:{}};const runner=args.command==="login"?runLogin:args.command==="logout"?runLogout:runWhoami;process.exitCode=await runner(options);return}if(args.command==="task-loop"){const{runTaskLoop}=await import("./commands-
|
|
1448
|
+
${HELP}`);process.exitCode=2;return}const autoUpdate=await import("./auto-update-FXXQHBV5.js");autoUpdate.registerRunning();if(args.command==="task-loop"&&args.taskLoopAction!=="capacity"){process.env[autoUpdate.DISABLE_ENV]="1"}else if(args.command!=="update"){autoUpdate.onStartup(VERSION)}if(args.command==="domain"&&args.domain!==void 0){const{runDomain}=await import("./run-VNV2AVDI.js");process.exitCode=await runDomain({domain:args.domain,...args.operation!==void 0?{operation:args.operation}:
|
|
1449
|
+
{},argv:args.domainArgv,help:args.domainHelp,globals:{...args.profile!==void 0?{profile:args.profile}:{},...args.output!==void 0?{output:args.output}:{},...args.query!==void 0?{query:args.query}:{},dryRun:args.dryRun,debug:args.debug,yes:args.yes,refresh:args.refresh},version:VERSION});return}if(args.command==="api"){const{runApiCommand}=await import("./api-command-QS6VCLTX.js");process.exitCode=await runApiCommand({argv:args.domainArgv,help:args.domainHelp,globals:{...args.profile!==void 0?{profile:args.
|
|
1450
|
+
profile}:{},...args.output!==void 0?{output:args.output}:{},...args.query!==void 0?{query:args.query}:{},dryRun:args.dryRun,debug:args.debug,yes:args.yes},version:VERSION});return}if(args.command==="update"){const{runUpdate}=await import("./update-5NJSC26F.js");process.exitCode=await runUpdate({...args.profile!==void 0?{profile:args.profile}:{},version:VERSION});return}if(args.command==="login"||args.command==="logout"||args.command==="whoami"){const{runLogin,runLogout,runWhoami}=await import("./commands-RBN5WGWJ.js");
|
|
1451
|
+
const options={profile:args.profile,method:args.loginMethod,tenant:args.tenant,noBrowser:args.loginNoBrowser,cliVersion:VERSION,force:args.logoutForce,...args.output!==void 0?{output:args.output}:{},...args.query!==void 0?{query:args.query}:{}};const runner=args.command==="login"?runLogin:args.command==="logout"?runLogout:runWhoami;process.exitCode=await runner(options);return}if(args.command==="task-loop"){const{runTaskLoop}=await import("./commands-3B5GGPY7.js");process.exitCode=await runTaskLoop(
|
|
1415
1452
|
{action:args.taskLoopAction??"run",project:args.project,profile:args.profile,safe:args.safe,daemon:args.daemon,interval:args.interval,maxCycles:args.maxCycles,forceRunner:args.forceRunner,force:args.stopForce,drain:args.stopDrain,engine:args.engine,version:VERSION,verbose:args.verbose,scheduleNow:args.scheduleNow,scheduleCounts:args.scheduleCounts,scheduleGate:args.scheduleGate,scheduleOp:args.scheduleOp,scheduleConfigOp:args.scheduleConfigOp,scheduleId:args.scheduleId,charterOp:args.charterOp,charterInput:args.
|
|
1416
1453
|
charterFile,charterOutput:args.charterOut,charterRevision:args.charterRevision,settingsOp:args.settingsOp,skillOp:args.skillOp,skillName:args.skillName,skillAll:args.skillAll,skillDir:args.skillDir,skillConfig:args.skillConfig,output:args.output,query:args.query,revisionFrom:args.revisionFrom,revisionTo:args.revisionTo,planOp:args.planOp,capacityOp:args.capacityOp,includeStopped:args.includeStopped,runnerOp:args.runnerOp,runnerId:args.runnerTargetId,planEmpty:args.planEmpty,planCheck:args.planCheck,
|
|
1417
|
-
yes:args.yes,ais:args.ais,workspace:args.workspace,aiConfigFile:args.aiConfigFile,noAiConfigFile:args.noAiConfigFile});return}if(args.command==="print"){const{runOneShot}=await import("./oneshot-
|
|
1418
|
-
{},...args.profile!==void 0?{profile:args.profile}:{},version:VERSION});return}const{startTui}=await import("./app-
|
|
1454
|
+
yes:args.yes,ais:args.ais,workspace:args.workspace,aiConfigFile:args.aiConfigFile,noAiConfigFile:args.noAiConfigFile});return}if(args.command==="print"){const{runOneShot}=await import("./oneshot-YDTQT2T3.js");process.exitCode=await runOneShot({prompt:args.prompt??"",fromStdin:args.promptFromStdin,mode:args.mode??"dev",...args.permissionMode!==void 0?{permissionMode:args.permissionMode}:{},allowedTools:args.allowedTools,disallowedTools:args.disallowedTools,...args.model!==void 0?{model:args.model}:
|
|
1455
|
+
{},...args.profile!==void 0?{profile:args.profile}:{},version:VERSION});return}const{startTui}=await import("./app-GWNEJ24L.js");await startTui({mode:args.mode,permissionMode:args.permissionMode,allowedTools:args.allowedTools,disallowedTools:args.disallowedTools,model:args.model,profile:args.profile,noTui:args.noTui||!process.stdout.isTTY,doctor:args.doctor,version:VERSION})}await main();
|
|
@@ -36,29 +36,29 @@ note:null}}if(r.state==="trusted"){const waited2=this.since===null?null:this.now
|
|
|
36
36
|
6e4)}\u5206\uFF09\u3002\u672A\u30C8\u30E9\u30B9\u30C8\u306E\u307E\u307E\u5B9F\u884C\u3059\u308B\u3068 permissions.allow \u304C\u7121\u8996\u3055\u308C\u3001\u6210\u679C\u3092\u51FA\u3057\u3066\u3082 untrusted \u3067\u8A18\u9332\u3055\u308C\u307E\u3059`],note:null}}const waited=now-this.since;if(waited>=this.timeoutMs){this.expired=true;return{wait:false,logs:[this.expiredLog()],note:expiredNote()}}return{wait:true,logs:[` \u23F8 ${r.detail}\uFF08\u5F85\u6A5F ${Math.round(waited/1e3)}\u79D2\uFF09`],
|
|
37
37
|
note:null}}expiredLog(){return` \u26D4 ${Math.round(this.timeoutMs/6e4)}\u5206\u5F85\u3063\u3066\u3082\u30EF\u30FC\u30AF\u30B9\u30DA\u30FC\u30B9\u306E\u30C8\u30E9\u30B9\u30C8\u304C\u5C0E\u51FA\u3055\u308C\u307E\u305B\u3093\u3067\u3057\u305F\u3002\u7121\u8A00\u306E\u7121\u7A3C\u50CD\u3092\u907F\u3051\u308B\u305F\u3081\u901A\u5E38\u52D5\u4F5C\u3078\u843D\u3068\u3057\u307E\u3059\uFF08untrusted \u3067\u5931\u6557\u8A18\u9332\u304C\u6B8B\u308B\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\uFF09\u3002\u78BA\u8A8D: runner-state status \uFF0F \u67A0\u306E .claude.json \u306E projects[<workspace>].hasTrustDialogAccepted`}};
|
|
38
38
|
function expiredNote(){return["\u3010\u8B66\u544A: \u30EF\u30FC\u30AF\u30B9\u30DA\u30FC\u30B9\u304C\u672A\u30C8\u30E9\u30B9\u30C8\u3067\u3059\u3011","\u3053\u306E\u30DE\u30B7\u30F3\u306E claude \u306F\u30EF\u30FC\u30AF\u30B9\u30DA\u30FC\u30B9\u3092\u672A\u30C8\u30E9\u30B9\u30C8\u306E\u72B6\u614B\u3067\u8D77\u52D5\u3057\u3066\u3044\u307E\u3059\u3002","permissions.allow \u304C\u7121\u8996\u3055\u308C\u3001\u6210\u679C\u3092\u51FA\u3057\u5207\u3063\u3066\u3082\u5B9F\u884C\u7D50\u679C\u304C untrusted \u3068\u3057\u3066\u8A18\u9332\u3055\u308C\u308B\u3053\u3068\u304C\u3042\u308A\u307E\u3059\u3002",
|
|
39
|
-
"\u30C8\u30E9\u30B9\u30C8\u306E\u5C0E\u51FA\uFF08runner-state \u306E2\u5206\u3054\u3068\u306E\u6CBB\u7652\uFF09\u304C30\u5206\u4EE5\u4E0A\u6210\u7ACB\u3057\u3066\u3044\u306A\u3044\u305F\u3081\u3001\u3053\u306E\u72B6\u614B\u306E\u307E\u307E\u5B9F\u884C\u3057\u3066\u3044\u307E\u3059\u3002"].join("\n")}import os from"os";function runnerPlatform(platform=process.platform){switch(platform){case"darwin":return"mac";case"win32":return"windows";case"linux":return"linux";default:return null}}var RunnerRegistrationError=class extends Error{};var RunnerSession=class{constructor(api,config,log,now=()=>Date.now()){this.api=api;this.config=config;this.log=log;this.now=now;this.forcePending=config.forceRunner;this.capacity=config.capacityProbe===null?null:new CapacityReporter(config.capacityProbe,
|
|
40
|
-
log(m),process.env,this.now)}api;config;log;now;registered=false;heartbeatTimeoutServer=null;forcePending;hooksPayloadWarningLogged=false;timer=null;phase="idle";currentItemId="";lastTickAt=0;lastOkAt=0;failures=0;sending=false;silenceWarned=false;capacity;capacityRefresh(force){const reporter=this.capacity;if(reporter===null)return null;return(force?reporter.refresh():reporter.refreshIfDue()).catch(err=>{this.log.log(` \u26A0\uFE0F capacity_probe \u3067\u4F8B\u5916\u304C\u767A\u751F\u3057\u307E\
|
|
41
|
-
message}\uFF09\u3002\u67A0\u60C5\u5831\u306A\u3057\u3067\u7D9A\u884C\u3057\u307E\u3059`)})}payload(phase,itemId="",force=false){const p={runner_id:this.config.runnerId,run_id:this.config.runId,phase,pid:process.pid,safe_mode:this.config.safeMode};const host=os.hostname();if(host)p.hostname=host;if(this.config.configHash)p.config_hash=this.config.configHash;const hooks=formatHookIds(this.config.prefetch,this.config.preflight);if(hooks.length<=512){p.hooks=hooks}else if(!this.
|
|
42
|
-
this.log.log(` \u26A0\uFE0F \u30D5\u30C3\u30AF\u914D\u7DDA\u306E\u5831\u544A\u5024\u304C512\u6587\u5B57\u3092\u8D85\u3048\u305F\u305F\u3081\u53F0\u5E33\u3078\u306E\u5831\u544A\u3060\u3051\u3092\u7701\u7565\u3057\u307E\u3059\uFF08prefetch=${this.config.prefetch.length}\u4EF6 / preflight=${this.config.preflight.length}\u4EF6\uFF09`);this.hooksPayloadWarningLogged=true}const capacity=this.capacity?.take()??null;if(capacity!==null)p.capacity=capacity;if(this.config.version)
|
|
43
|
-
const platform=runnerPlatform();if(platform!==null)p.platform=platform;if(itemId)p.current_item_id=itemId;if(force)p.force=true;return p}
|
|
44
|
-
\u79D2 \u4EE5\u4E0A\u3067\u3059`);this.log.log(" \u3053\u306E\u307E\u307E\u3067\u306F\u81EA\u5206\u304C\u300C\u5FDC\u7B54\u306A\u3057\u300D\u3068\u5224\u5B9A\u3055\u308C\u3001\u5B9F\u884C\u4E2D\u306E\u30A2\u30A4\u30C6\u30E0\u3092\u4ED6\u6A5F\u306B\u56DE\u53CE\u3055\u308C\u3001\u8A08\u753B\u30ED\u30C3\u30AF\u306E\u5EF6\u9577\u3082
|
|
45
|
-
let lastBody;let lastDetail;const registering=this.capacityRefresh(true);if(registering!==null)await registering;for(let attempt=1;;attempt++){const res=await this.api.registerRunner(this.payload("idle","",this.forcePending));this.forcePending=false;lastStatus=res.status;lastBody=res.json;lastDetail=describeError(res);if(res.
|
|
46
|
-
null&&res.status>=400&&res.status<500;if(!permanent&&attempt<3){this.log.log(` \u26A0\uFE0F \u30E9\u30F3\u30CA\u30FC\u767B\u9332\u306B\u5931\u6557\uFF08${lastDetail}\uFF09\u3002${attempt}\u56DE\u76EE\u30FB5\u79D2\u5F8C\u306B\u518D\u8A66\u884C\u3057\u307E\u3059`);this.capacity?.rearm();await sleep(5e3);continue}break}
|
|
47
|
-
this.log.log("
|
|
48
|
-
|
|
49
|
-
this.log.log(` \
|
|
50
|
-
|
|
51
|
-
this.log.log(" \
|
|
52
|
-
throw new RunnerRegistrationError(`\u30E9\u30F3\u30CA\u30FC\u767B\u9332\u306B\u5931\u6557\u3057\u307E\u3057\u305F\uFF08http=${lastStatus??"\u306A\u3057"}\uFF09`)}async beat(phase,itemId=""){this.phase=phase;this.currentItemId=itemId;
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
\
|
|
61
|
-
resolve,ms))}var PlanLock=class{constructor(deps){this.deps=deps;this.renewIntervalSec=deps.config.planLockRenewIntervalSec}deps;held=false;startedAt="";failStreak=0;permanentFail=false;ownLastFinish="";lostReason=null;renewTimer=null;renewStopped=true;renewIntervalSec;renewInFlight=null;now(){return this.deps.now?.()??Date.now()}sleep(ms){return(this.deps.sleepFn??sleep)(ms)}async acquire(){const{api,config,log,runner}=this.deps;if(await this.alreadyPlannedByOther())return"not-needed";const deadline=this.now()+
|
|
39
|
+
"\u30C8\u30E9\u30B9\u30C8\u306E\u5C0E\u51FA\uFF08runner-state \u306E2\u5206\u3054\u3068\u306E\u6CBB\u7652\uFF09\u304C30\u5206\u4EE5\u4E0A\u6210\u7ACB\u3057\u3066\u3044\u306A\u3044\u305F\u3081\u3001\u3053\u306E\u72B6\u614B\u306E\u307E\u307E\u5B9F\u884C\u3057\u3066\u3044\u307E\u3059\u3002"].join("\n")}import os from"os";function runnerPlatform(platform=process.platform){switch(platform){case"darwin":return"mac";case"win32":return"windows";case"linux":return"linux";default:return null}}var AI_UNAVAILABLE_MAX_LENGTH=512;var RunnerRegistrationError=class extends Error{};var RunnerSession=class{constructor(api,config,log,now=()=>Date.now()){this.api=api;this.config=config;this.log=log;this.now=now;this.forcePending=config.forceRunner;this.capacity=config.capacityProbe===null?null:new CapacityReporter(config.capacityProbe,
|
|
40
|
+
config.workspace,m=>this.log.log(m),process.env,this.now)}api;config;log;now;registered=false;heartbeatTimeoutServer=null;forcePending;hooksPayloadWarningLogged=false;timer=null;phase="idle";currentItemId="";aiUnavailable=null;lastTickAt=0;lastOkAt=0;failures=0;sending=false;silenceWarned=false;capacity;capacityRefresh(force){const reporter=this.capacity;if(reporter===null)return null;return(force?reporter.refresh():reporter.refreshIfDue()).catch(err=>{this.log.log(` \u26A0\uFE0F capacity_probe \u3067\u4F8B\u5916\u304C\u767A\u751F\u3057\u307E\
|
|
41
|
+
\u3057\u305F\uFF08${err.message}\uFF09\u3002\u67A0\u60C5\u5831\u306A\u3057\u3067\u7D9A\u884C\u3057\u307E\u3059`)})}payload(phase,itemId="",force=false){const p={runner_id:this.config.runnerId,run_id:this.config.runId,phase,pid:process.pid,safe_mode:this.config.safeMode};const host=os.hostname();if(host)p.hostname=host;if(this.config.configHash)p.config_hash=this.config.configHash;const hooks=formatHookIds(this.config.prefetch,this.config.preflight);if(hooks.length<=512){p.hooks=hooks}else if(!this.
|
|
42
|
+
hooksPayloadWarningLogged){this.log.log(` \u26A0\uFE0F \u30D5\u30C3\u30AF\u914D\u7DDA\u306E\u5831\u544A\u5024\u304C512\u6587\u5B57\u3092\u8D85\u3048\u305F\u305F\u3081\u53F0\u5E33\u3078\u306E\u5831\u544A\u3060\u3051\u3092\u7701\u7565\u3057\u307E\u3059\uFF08prefetch=${this.config.prefetch.length}\u4EF6 / preflight=${this.config.preflight.length}\u4EF6\uFF09`);this.hooksPayloadWarningLogged=true}const capacity=this.capacity?.take()??null;if(capacity!==null)p.capacity=capacity;if(this.config.version)
|
|
43
|
+
p.version=this.config.version;const platform=runnerPlatform();if(platform!==null)p.platform=platform;if(itemId)p.current_item_id=itemId;if(this.aiUnavailable!==null)p.ai_unavailable=this.aiUnavailable;if(force)p.force=true;return p}setAiUnavailable(reasons){if(reasons===null){this.aiUnavailable=null;return}const v=reasons.trim()===""?"unknown":reasons.trim();this.aiUnavailable=v.length<=AI_UNAVAILABLE_MAX_LENGTH?v:v.slice(0,AI_UNAVAILABLE_MAX_LENGTH)}get aiUnavailableReport(){return this.aiUnavailable}async checkHeartbeatInterval(){
|
|
44
|
+
const res=await this.api.runners();if(!res.ok)return;const timeout=pick(res.json,"heartbeat_timeout");if(typeof timeout!=="number")return;this.heartbeatTimeoutServer=timeout;if(this.config.heartbeatIntervalSec>=timeout){this.log.log(` \u26A0\uFE0F AGENT_LOOP_HEARTBEAT_INTERVAL=${this.config.heartbeatIntervalSec}\u79D2 \u304C\u30B5\u30FC\u30D0\u306E\u6B7B\u6D3B\u3057\u304D\u3044\u5024 ${timeout}\u79D2 \u4EE5\u4E0A\u3067\u3059`);this.log.log(" \u3053\u306E\u307E\u307E\u3067\u306F\u81EA\u5206\u304C\u300C\u5FDC\u7B54\u306A\u3057\u300D\u3068\u5224\u5B9A\u3055\u308C\u3001\u5B9F\u884C\u4E2D\u306E\u30A2\u30A4\u30C6\u30E0\u3092\u4ED6\u6A5F\u306B\u56DE\u53CE\u3055\u308C\u3001\u8A08\u753B\u30ED\u30C3\u30AF\u306E\u5EF6\u9577\u3082 \
|
|
45
|
+
409 \u3067\u901A\u3089\u306A\u304F\u306A\u308A\u307E\u3059\uFF08\u3057\u304D\u3044\u5024\u306E 1/3 \u4EE5\u4E0B\u3092\u63A8\u5968\uFF09")}}async registerOrThrow(){let lastStatus;let lastBody;let lastDetail;const registering=this.capacityRefresh(true);if(registering!==null)await registering;for(let attempt=1;;attempt++){const res=await this.api.registerRunner(this.payload("idle","",this.forcePending));this.forcePending=false;lastStatus=res.status;lastBody=res.json;lastDetail=describeError(res);if(res.
|
|
46
|
+
ok){this.registered=true;this.log.log(` \u30E9\u30F3\u30CA\u30FC\u767B\u9332: ${this.config.runnerId}\uFF08run_id: ${this.config.runId}\uFF09`);return}const permanent=res.status!==null&&res.status>=400&&res.status<500;if(!permanent&&attempt<3){this.log.log(` \u26A0\uFE0F \u30E9\u30F3\u30CA\u30FC\u767B\u9332\u306B\u5931\u6557\uFF08${lastDetail}\uFF09\u3002${attempt}\u56DE\u76EE\u30FB5\u79D2\u5F8C\u306B\u518D\u8A66\u884C\u3057\u307E\u3059`);this.capacity?.rearm();await sleep(5e3);continue}break}
|
|
47
|
+
if(lastStatus===409&&pickString(lastBody,"reason")==="kind_mismatch"){this.log.log("\u274C \u3053\u306E\u30E9\u30F3\u30CA\u30FCID\u306F\u67A0\u5831\u544A\u5C02\u7528\u6A5F\uFF08capacity report\uFF09\u3068\u3057\u3066\u767B\u9332\u3055\u308C\u3066\u3044\u307E\u3059\uFF08HTTP 409\u30FBkind_mismatch\uFF09");this.log.log(" \u30EB\u30FC\u30D7\u306B\u306F\u5225\u306E runner_id \u3092\u4F7F\u3063\u3066\u304F\u3060\u3055\u3044\uFF08RUNNER_ID \u304B TWP_OPS_STATE_DIR \u3092\u5206\u3051\u308B\uFF09");this.
|
|
48
|
+
log.log(" **--force-runner \u3067\u306F\u901A\u308A\u307E\u305B\u3093**\uFF08\u7A2E\u5225\u304C\u9055\u3046\u305F\u3081\uFF09")}else if(lastStatus===409){this.log.log("\u274C \u3053\u306E\u30E9\u30F3\u30CA\u30FCID\u306F\u5225\u30D7\u30ED\u30BB\u30B9\u304C\u7A3C\u50CD\u4E2D\u3068\u3057\u3066\u767B\u9332\u3055\u308C\u3066\u3044\u307E\u3059\uFF08HTTP 409\uFF09");this.log.log(" \u524D\u306E\u30D7\u30ED\u30BB\u30B9\u304C\u7570\u5E38\u7D42\u4E86\u3057\u3066\u3044\u308B\u5834\u5408\u306F\u767B\u9332\u3092\u596A\u3063\u3066\u8D77\u52D5\u3057\u3066\u304F\u3060\u3055\u3044:");
|
|
49
|
+
this.log.log(` twp task-loop run --project ${this.config.projectRef} --force-runner`);this.log.log(" \u26A0\uFE0F \u305F\u3060\u3057**\u524D\u306E\u30D7\u30ED\u30BB\u30B9\u304C\u751F\u304D\u3066\u3044\u308B\u5834\u5408\u306F\u4F7F\u308F\u306A\u3044\u3053\u3068**\uFF08\u5B9F\u884C\u4E2D\u30A2\u30A4\u30C6\u30E0\u304C\u4E8C\u91CD\u306B\u8D70\u308A\u307E\u3059\uFF09");this.log.log(` \uFF08\u30B5\u30FC\u30D0\u306E\u767B\u9332\u306F\u6B7B\u6D3B\u3057\u304D\u3044\u5024 ${this.heartbeatTimeoutServer??
|
|
50
|
+
600}\u79D2 \u307E\u3067 live \u6271\u3044\u306E\u305F\u3081\u3001\u5F85\u3063\u3066\u3082\u6570\u5206\u304B\u304B\u308A\u307E\u3059\uFF09`)}else if(lastStatus===403){if(pickString(lastBody,"reason")==="max_runners_exceeded"){this.log.log("\u274C \u7A3C\u50CD\u30E9\u30F3\u30CA\u30FC\u304C\u4E0A\u9650\u306B\u9054\u3057\u3066\u3044\u307E\u3059\uFF08HTTP 403\u30FBmax_runners_exceeded\uFF09");this.log.log(" \u53F0\u6570\u8A2D\u5B9A\uFF08\u30B5\u30FC\u30D0\u5074 AGENT_LOOP_MAX_RUNNERS\uFF09\u3092\u898B\u76F4\u3059\u304B\u3001\u4E0D\u8981\u306A\u30E9\u30F3\u30CA\u30FC\u3092\u505C\u6B62\u3057\u3066\u304F\u3060\u3055\u3044");
|
|
51
|
+
this.log.log(" **--force-runner \u3067\u306F\u901A\u308A\u307E\u305B\u3093**\uFF08\u8A2D\u5B9A\u3092\u76F4\u3059\u307E\u3067\u540C\u3058\u7D50\u679C\u306B\u306A\u308A\u307E\u3059\uFF09")}else{this.log.log(`\u274C \u30E9\u30F3\u30CA\u30FC\u767B\u9332\u304C 403 \u3067\u62D2\u5426\u3055\u308C\u307E\u3057\u305F: ${lastDetail}`);this.log.log(" \u53F0\u6570\u4E0A\u9650\u3068\u306F\u5225\u306E\u7406\u7531\u3067\u3059\u3002\u78BA\u8A8D: \u30ED\u30B0\u30A4\u30F3\u4E2D\u30E6\u30FC\u30B6\u30FC\u306E\u6A29\u9650\uFF0F\u30C6\u30CA\u30F3\u30C8\u306E\u30AF\u30EC\u30B8\u30C3\u30C8\u72B6\u614B")}}else{
|
|
52
|
+
this.log.log(`\u274C \u30E9\u30F3\u30CA\u30FC\u767B\u9332\u306B\u5931\u6557\u3057\u307E\u3057\u305F\uFF08${lastDetail}\uFF09\u3002\u767B\u9332\u3067\u304D\u306A\u3044\u72B6\u614B\u3067\u306F claim \u304C\u901A\u3089\u306A\u3044\u305F\u3081\u7D42\u4E86\u3057\u307E\u3059`)}throw new RunnerRegistrationError(`\u30E9\u30F3\u30CA\u30FC\u767B\u9332\u306B\u5931\u6557\u3057\u307E\u3057\u305F\uFF08http=${lastStatus??"\u306A\u3057"}\uFF09`)}async beat(phase,itemId=""){this.phase=phase;this.currentItemId=itemId;
|
|
53
|
+
if(!this.registered)return;const refreshing=this.capacityRefresh(false);if(refreshing!==null)await refreshing;const res=await this.api.heartbeatRunner(this.payload(phase,itemId));if(res.ok){this.markSent();return}if(res.status===409){this.log.log(" \u26A0\uFE0F heartbeat \u304C 409\uFF08\u767B\u9332\u304C\u5225\u30D7\u30ED\u30BB\u30B9\u306B\u596A\u308F\u308C\u305F\u53EF\u80FD\u6027\uFF09\u3002\u6B21\u306E\u30A2\u30A4\u30C6\u30E0\u53D6\u5F97\u6642\u306B\u767B\u9332\u3057\u76F4\u3057\u307E\u3059");
|
|
54
|
+
this.registered=false;this.failures+=1;return}this.failures+=1;this.log.log(` \u26A0\uFE0F heartbeat \u306E\u9001\u4FE1\u306B\u5931\u6557\u3057\u307E\u3057\u305F\uFF08${describeError(res)}\u30FBphase=${phase}\uFF09\u3002\u7D9A\u304F\u3068\u4ED6\u6A5F\u304B\u3089\u5FDC\u7B54\u306A\u3057\u3068\u898B\u306A\u3055\u308C\u307E\u3059`)}markSent(){if(this.failures>0){const silentSec=this.lastOkAt===0?0:Math.round((this.now()-this.lastOkAt)/1e3);this.log.log(` \u2705 heartbeat \u306E\u9001\u4FE1\u304C\u5FA9\u5E30\u3057\u307E\u3057\u305F\uFF08\u9023\u7D9A\u5931\u6557 ${this.
|
|
55
|
+
failures}\u56DE\u30FB\u6C88\u9ED9 ${silentSec}\u79D2\uFF09`)}this.failures=0;this.silenceWarned=false;this.lastOkAt=this.now()}startHeartbeatWorker(){if(!this.registered){this.log.log(" \u26A0\uFE0F \u30E9\u30F3\u30CA\u30FC\u672A\u767B\u9332\u306E\u305F\u3081 heartbeat \u306E\u5468\u671F\u9001\u4FE1\u3092\u958B\u59CB\u3057\u307E\u305B\u3093\uFF08\u5B9F\u884C\u4E2D\u306B dead \u5224\u5B9A\u3055\u308C\u307E\u3059\uFF09");return}if(this.timer)return;this.lastTickAt=this.now();if(this.lastOkAt===0)
|
|
56
|
+
this.lastOkAt=this.now();this.timer=setInterval(()=>{void this.heartbeatTick()},this.config.heartbeatIntervalSec*1e3);this.timer.unref?.()}async heartbeatTick(){const intervalMs=this.config.heartbeatIntervalSec*1e3;const at=this.now();const sinceTick=this.lastTickAt===0?0:at-this.lastTickAt;this.lastTickAt=at;if(sinceTick>intervalMs*2){this.log.log(` \u26A0\uFE0F heartbeat \u306E\u5468\u671F\u9001\u4FE1\u304C ${Math.round(sinceTick/1e3)}\u79D2\u3076\u308A\u306B\u767A\u706B\u3057\u307E\u3057\u305F\uFF08\u9593\u9694\u306F ${this.
|
|
57
|
+
config.heartbeatIntervalSec}\u79D2\uFF09\u3002\u30D7\u30ED\u30BB\u30B9\u304C\u6B62\u307E\u3063\u3066\u3044\u305F\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059`)}if(this.sending){this.log.log(" \u26A0\uFE0F \u524D\u56DE\u306E heartbeat \u304C\u672A\u5B8C\u4E86\u306E\u305F\u3081\u4ECA\u56DE\u306E\u9001\u4FE1\u3092\u98DB\u3070\u3057\u307E\u3057\u305F\uFF08\u5FDC\u7B54\u304C\u9045\u5EF6\u3057\u3066\u3044\u307E\u3059\uFF09");return}this.sending=true;try{const refreshing=this.capacityRefresh(false);
|
|
58
|
+
if(refreshing!==null)await refreshing;const res=await this.api.heartbeatRunner(this.payload(this.phase,this.currentItemId));if(res.ok){this.markSent();return}this.failures+=1;if(res.status===409){this.registered=false;if(this.failures<=3||this.failures%5===0){this.log.log(` \u26A0\uFE0F heartbeat\uFF08\u5468\u671F\u9001\u4FE1\uFF09\u304C 409\u3002\u767B\u9332\u304C\u5225\u30D7\u30ED\u30BB\u30B9\u306B\u596A\u308F\u308C\u305F\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\uFF08${this.failures}\u56DE\
|
|
59
|
+
\u9023\u7D9A\u30FB\u6B21\u306E\u30A2\u30A4\u30C6\u30E0\u53D6\u5F97\u6642\u306B\u767B\u9332\u3057\u76F4\u3057\u307E\u3059\uFF09`)}}else if(this.failures<=3||this.failures%5===0){this.log.log(` \u26A0\uFE0F heartbeat \u306E\u5468\u671F\u9001\u4FE1\u306B\u5931\u6557\u3057\u307E\u3057\u305F\uFF08${describeError(res)}\u30FB${this.failures}\u56DE\u9023\u7D9A\u30FBphase=${this.phase}\uFF09`)}}catch(err){this.failures+=1;if(this.failures<=3||this.failures%5===0){this.log.log(` \u26A0\uFE0F heartbeat \u306E\u5468\u671F\u9001\u4FE1\u3067\u4F8B\u5916\u304C\
|
|
60
|
+
\u767A\u751F\u3057\u307E\u3057\u305F\uFF08${err.message}\u30FB${this.failures}\u56DE\u9023\u7D9A\uFF09`)}}finally{this.sending=false;this.warnIfSilent()}}warnIfSilent(){if(this.silenceWarned||this.lastOkAt===0)return;const timeout=this.heartbeatTimeoutServer??600;const silentSec=Math.round((this.now()-this.lastOkAt)/1e3);if(silentSec<timeout)return;this.silenceWarned=true;this.log.log(` \u26D4 heartbeat \u3092 ${silentSec}\u79D2 \u9001\u308C\u3066\u3044\u307E\u305B\u3093\uFF08\u30B5\u30FC\u30D0\u306E\u6B7B\u6D3B\u3057\u304D\u3044\u5024 ${timeout}\
|
|
61
|
+
\u79D2\uFF09\u3002\u5B9F\u884C\u4E2D\u306E\u30A2\u30A4\u30C6\u30E0\u304C\u4ED6\u6A5F\u306B\u56DE\u53CE\u3055\u308C\u3046\u308B\u72B6\u614B\u3067\u3059`)}stopHeartbeatWorker(){if(!this.timer)return;clearInterval(this.timer);this.timer=null}async deregister(){this.stopHeartbeatWorker();if(!this.registered)return;this.registered=false;await this.api.deregisterRunner(this.payload("idle"))}};function sleep(ms){return new Promise(resolve=>setTimeout(resolve,ms))}var PlanLock=class{constructor(deps){this.deps=deps;this.renewIntervalSec=deps.config.planLockRenewIntervalSec}deps;held=false;startedAt="";failStreak=0;permanentFail=false;ownLastFinish="";lostReason=null;renewTimer=null;renewStopped=true;renewIntervalSec;renewInFlight=null;now(){return this.deps.now?.()??Date.now()}sleep(ms){return(this.deps.sleepFn??sleep)(ms)}async acquire(){const{api,config,log,runner}=this.deps;if(await this.alreadyPlannedByOther())return"not-needed";const deadline=this.now()+
|
|
62
62
|
config.planLockWaitMaxSec*1e3;let waited=false;let firstFinished="";let retriedRegister=false;let stealAttempts=0;for(;;){const res=await api.planStart(config.runnerId,config.runId);if(!res.ok&&res.status===409&&!retriedRegister){log.log(" \u26A0\uFE0F plan/start \u304C 409\uFF08\u30E9\u30F3\u30CA\u30FC\u672A\u767B\u9332\u6271\u3044\uFF09\u3002register \u304B\u3089\u3084\u308A\u76F4\u3057\u307E\u3059");retriedRegister=true;await this.deps.reregister();continue}if(!res.ok){this.failStreak+=1;if(isPermanent(
|
|
63
63
|
res)){log.log(` \u26D4 \u8A08\u753B\u30ED\u30C3\u30AF\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\uFF08HTTP ${res.status}\u30FB${this.failStreak}\u30B5\u30A4\u30AF\u30EB\u9023\u7D9A\uFF09\u3002**\u518D\u8A66\u884C\u3067\u306F\u89E3\u6D88\u3057\u307E\u305B\u3093**`);log.log(` \u30B5\u30FC\u30D0\u304C\u8FD4\u3057\u305F\u7406\u7531: ${describeError(res)}`);log.log(" \u78BA\u8A8D: \u30ED\u30B0\u30A4\u30F3\u4E2D\u30E6\u30FC\u30B6\u30FC\u306E\u6A29\u9650\uFF0F--project \u306E\u6307\u5B9A\uFF0FAPI \u306E\u63A5\u7D9A\u5148");
|
|
64
64
|
this.permanentFail=true}else{log.log(` \u26D4 \u8A08\u753B\u30ED\u30C3\u30AF\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08${describeError(res)}\u30FB${this.failStreak}\u30B5\u30A4\u30AF\u30EB\u9023\u7D9A\uFF09\u3002\u6B21\u30B5\u30A4\u30AF\u30EB\u3067\u518D\u8A66\u884C\u3057\u307E\u3059`);this.permanentFail=false}log.log(" **\u3053\u306E\u30B5\u30A4\u30AF\u30EB\u306E\u8A08\u753B\u3092\u30B9\u30AD\u30C3\u30D7\u3057\u307E\u3059**\uFF08\u6392\u4ED6\u304C\u53D6\u308C\u306A\u3044\u72B6\u614B\u3067\u8A08\u753B\u3059\u308B\u3068\u3001\u8907\u6570\u53F0\u304C\u540C\u3058\u8A08\u753B\u3092\u7A4D\u307F\u307E\u3059\uFF09");
|
|
@@ -122,12 +122,12 @@ log.log(` \u5B9A\u671F\u30B9\u30B1\u30B8\u30E5\u30FC\u30EB\u5C65\u6B74\u3092\u6
|
|
|
122
122
|
\u3093\u3067\u3057\u305F\uFF08\u7406\u7531: ${why}\uFF09\u3002\u30EA\u30FC\u30B9\u671F\u9650\u307E\u3067\u518D\u8A66\u884C\u3067\u304D\u307E\u305B\u3093`)}}async promptSection(enqueuedFile){const cfg=await this.loadConfig();if("error"in cfg){this.deps.log.log(` \u26A0\uFE0F \u8A08\u753B\u30D7\u30ED\u30F3\u30D7\u30C8\u7528\u306E\u5B9A\u671F\u30BB\u30AF\u30B7\u30E7\u30F3\u3092\u751F\u6210\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F: ${cfg.error}`);this.deps.log.log(" \u8A08\u753BAI\u306B\u300C\u6295\u5165\u6E08\u307F\u306E\u5B9A\u671F\u30BF\u30B9\u30AF\u300D\u3092\u4F1D\u3048\
|
|
123
123
|
\u3089\u308C\u306A\u3044\u305F\u3081\u3001\u91CD\u8907\u6295\u5165\u306E\u6291\u6B62\u304C\u5F31\u307E\u308A\u307E\u3059");return""}const hist=await this.loadHistory();if("error"in hist){this.deps.log.log(` \u26A0\uFE0F \u5B9A\u671F\u30BB\u30AF\u30B7\u30E7\u30F3\u306E\u300C\u6B21\u56DE\u767A\u706B\u4E88\u5B9A\u300D\u3092\u7701\u7565\u3057\u307E\u3059\uFF08\u5C65\u6B74\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093: ${hist.error}\uFF09`)}const lines=readEnqueuedLines(enqueuedFile);return promptSection(
|
|
124
124
|
cfg.config,this.now(),"error"in hist?[]:hist.rows,lines,!("error"in hist))}};function readEnqueuedLines(file){if(!file)return[];let text;try{text=fs5.readFileSync(file,"utf8")}catch{return[]}return text.split("\n").filter(l=>l.trim()!=="").map(l=>l.replace(/\n$/,""))}async function refineCount(key,raw,hooks,cwd,run2=(hook,dir)=>runHook(hook,dir)){const hook=hooks.get(key);if(!hook||raw===null||raw===0)return{total:raw,note:null};const r=await run2(hook,cwd);const out=r.stdout.trim();if(!r.ok||!/^\d+$/.test(out)){return{total:raw,note:`${key}: \u6570\u3048\u76F4\u3057\u306B\u5931\u6557\u3057\u305F\u305F\u3081\u7D20\u306E\u4EF6\u6570 ${raw} \u3092\u4F7F\u3044\u307E\u3059\uFF08${r.ok?"\u51FA\u529B\u304C\u6574\u65701\u884C\u3067\u306F\u306A\u3044":r.reason}\uFF09`}}
|
|
125
|
-
const n=Number.parseInt(out,10);if(n>raw){return{total:raw,note:`${key}: \u6570\u3048\u76F4\u3057\u306E\u7D50\u679C ${n} \u304C\u7D20\u306E\u4EF6\u6570 ${raw} \u3092\u8D85\u3048\u308B\u305F\u3081\u7D20\u306E\u4EF6\u6570\u3092\u4F7F\u3044\u307E\u3059`}}return{total:n,note:`${key}: ${raw}\u4EF6\u306E\u3046\u3061\u30B2\u30FC\u30C8\u306B\u52B9\u304F\u3082\u306E ${n}\u4EF6\uFF08${hook.id}\uFF09`}}function exitReasonFor(outcome){if(outcome==="ok")return"ok";if(outcome==="timeout")return"timeout";if(outcome==="rate-limited")return"rate_limited";if(outcome==="aborted")return"interrupted";if(outcome==="max-turns")return"max_turns";return"error"}function withFailureHint(base,output){const hint=failureHint(redactLoopOutput(output));return hint===""?base:`${base} | ${hint}`}function
|
|
126
|
-
| ai: ${result.aiReasons}`}var STOP_WAIT_MAX_SEC=3600;var AI_RECOVERY_HINT="\u78BA\u8A8D: claude-auto-switch status \uFF0F \u5404AI CLI\u306E\u30ED\u30B0\u30A4\u30F3\u72B6\u614B\uFF08twp task-loop setup \u3067\u691C\u51FA\u7D50\u679C\u304C\u51FA\u307E\u3059\uFF09";
|
|
127
|
-
""}var TaskLoop=class{constructor(deps){this.deps=deps;this.writeback=new Writeback(deps.api,deps.config,deps.log);this.schedule=new ScheduleBridge({config:deps.config,log:deps.log,api:new ScheduleApi(deps.api),fetchCount:async(key,statusId)=>{const{total,error}=await deps.
|
|
128
|
-
\u3002\u3053\u306E\u67A0\u306F\u767A\u706B\u3057\u307E\u305B\u3093\uFF08fail-closed\uFF09`)}const refined=await refineCount(key,total,deps.config.operations.countHooks,deps.config.workspace);if(refined.note)deps.log.log(` ${refined.note}`);return refined.total}});this.
|
|
129
|
-
nothingClaimableBacklog,reregister:async()=>{deps.runner.registered=false;await deps.runner.registerOrThrow()},...deps.sleepFn?{sleepFn:deps.sleepFn}:{}});this.trustGate=deps.trustGate??new TrustGate({enabled:()=>deps.config.ai.usesAi("claude"),check:()=>checkWorkspaceTrust(
|
|
130
|
-
config,log:m=>deps.log.log(m)});this.skills=deps.skills??new ServerSkillCatalog({api:deps.api,config:deps.config,log:m=>deps.log.log(m)})}deps;planGateFingerprint=null;lastPlanWasEmpty=false;writeback;schedule;planLock;planRunScheduled=[];planRunRecord=null;engine;postDeps;timestamp;deferredIds=new Set;midcycleEnqueued=0;aborting=false;draining=false;nothingClaimableBacklog=false;drainExitCode=0;drainWaiters=new Set;itemInFlight=null;ownershipLostItemId=null;abortDrained=null;cyclePreflightSection="";trustGate;settings;skills;sleep(ms){
|
|
125
|
+
const n=Number.parseInt(out,10);if(n>raw){return{total:raw,note:`${key}: \u6570\u3048\u76F4\u3057\u306E\u7D50\u679C ${n} \u304C\u7D20\u306E\u4EF6\u6570 ${raw} \u3092\u8D85\u3048\u308B\u305F\u3081\u7D20\u306E\u4EF6\u6570\u3092\u4F7F\u3044\u307E\u3059`}}return{total:n,note:`${key}: ${raw}\u4EF6\u306E\u3046\u3061\u30B2\u30FC\u30C8\u306B\u52B9\u304F\u3082\u306E ${n}\u4EF6\uFF08${hook.id}\uFF09`}}function exitReasonFor(outcome){if(outcome==="ok")return"ok";if(outcome==="timeout")return"timeout";if(outcome==="rate-limited")return"rate_limited";if(outcome==="aborted")return"interrupted";if(outcome==="max-turns")return"max_turns";return"error"}function withFailureHint(base,output){const hint=failureHint(redactLoopOutput(output));return hint===""?base:`${base} | ${hint}`}function aiUnavailableReport(result){if(needsHumanToRestoreAi(result.outcome))return result.aiReasons??"unknown";if(result.
|
|
126
|
+
outcome==="aborted"||result.outcome==="network-down")return void 0;return null}function noteAiAvailability(runner,result){const report=aiUnavailableReport(result);if(report!==void 0)runner.setAiUnavailable(report)}function unexecutedMessage(result){const base=`not executed: ${result.outcome}`;return result.aiReasons===void 0?base:`${base} | ai: ${result.aiReasons}`}var STOP_WAIT_MAX_SEC=3600;var AI_RECOVERY_HINT="\u78BA\u8A8D: claude-auto-switch status \uFF0F \u5404AI CLI\u306E\u30ED\u30B0\u30A4\u30F3\u72B6\u614B\uFF08twp task-loop setup \u3067\u691C\u51FA\u7D50\u679C\u304C\u51FA\u307E\u3059\uFF09";
|
|
127
|
+
var ABORT_DRAIN_TIMEOUT_MS=15e3;function lastContractLine(logText,line){const prefix=line!==null&&/^[A-Z][A-Z0-9_]*$/.test(line)?line:"[A-Z][A-Z0-9_]*_RESULT";return[...logText.matchAll(new RegExp(`^(?:${prefix}):[^\\n]*`,"gm"))].at(-1)?.[0]??""}var TaskLoop=class{constructor(deps){this.deps=deps;this.writeback=new Writeback(deps.api,deps.config,deps.log);this.schedule=new ScheduleBridge({config:deps.config,log:deps.log,api:new ScheduleApi(deps.api),fetchCount:async(key,statusId)=>{const{total,error}=await deps.
|
|
128
|
+
projectApi.countByStatus(deps.config.projectId,statusId);if(error){deps.log.log(` \u26A0\uFE0F require_zero\u300C${key}\u300D\u306E\u4EF6\u6570\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08${error}\uFF09\u3002\u3053\u306E\u67A0\u306F\u767A\u706B\u3057\u307E\u305B\u3093\uFF08fail-closed\uFF09`)}const refined=await refineCount(key,total,deps.config.operations.countHooks,deps.config.workspace);if(refined.note)deps.log.log(` ${refined.note}`);return refined.total}});this.
|
|
129
|
+
engine=deps.engine;this.postDeps={api:deps.api,config:deps.config,log:deps.log};this.planLock=new PlanLock({api:deps.api,config:deps.config,log:deps.log,runner:deps.runner,hasPendingItems:async()=>await this.hasPendingItems()&&!this.nothingClaimableBacklog,reregister:async()=>{deps.runner.registered=false;await deps.runner.registerOrThrow()},...deps.sleepFn?{sleepFn:deps.sleepFn}:{}});this.trustGate=deps.trustGate??new TrustGate({enabled:()=>deps.config.ai.usesAi("claude"),check:()=>checkWorkspaceTrust(
|
|
130
|
+
deps.config.workspace,{launcherBin:deps.config.claudeLauncher.bin})});this.timestamp=new Date().toISOString().replace(/[-:]/g,"").replace(/\..*$/,"");this.settings=deps.settings??new LoopSettingsApplier({api:deps.api,config:deps.config,log:m=>deps.log.log(m)});this.skills=deps.skills??new ServerSkillCatalog({api:deps.api,config:deps.config,log:m=>deps.log.log(m)})}deps;planGateFingerprint=null;lastPlanWasEmpty=false;writeback;schedule;planLock;planRunScheduled=[];planRunRecord=null;engine;postDeps;timestamp;deferredIds=new Set;midcycleEnqueued=0;aborting=false;draining=false;nothingClaimableBacklog=false;drainExitCode=0;drainWaiters=new Set;itemInFlight=null;ownershipLostItemId=null;abortDrained=null;cyclePreflightSection="";trustGate;settings;skills;sleep(ms){
|
|
131
131
|
return(this.deps.sleepFn??sleep)(ms)}sleepUnlessDraining(ms){if(this.draining)return Promise.resolve();return new Promise(resolve=>{let timer=null;let settled=false;const wake=()=>{if(settled)return;settled=true;if(timer!==null)clearTimeout(timer);this.drainWaiters.delete(wake);resolve()};this.drainWaiters.add(wake);const injected=this.deps.sleepFn;if(injected)void injected(ms).then(wake);else timer=setTimeout(wake,ms)})}requestDrain(reason,exitCode=0){if(this.draining)return;this.draining=true;
|
|
132
132
|
this.drainExitCode=exitCode;const running=this.itemInFlight;const why=reason.trim()===""?"\u7406\u7531\u4E0D\u660E":reason;this.deps.log.log(running===null?`\u30C9\u30EC\u30A4\u30F3\u8981\u6C42\u3092\u53D7\u3051\u53D6\u308A\u307E\u3057\u305F\uFF08${why}\uFF09\u3002\u5B9F\u884C\u4E2D\u306E\u30A2\u30A4\u30C6\u30E0\u306F\u3042\u308A\u307E\u305B\u3093\u3002\u65B0\u3057\u3044\u30A2\u30A4\u30C6\u30E0\u3092\u53D6\u3089\u305A\u306B\u7D42\u4E86\u3057\u307E\u3059\u3002`:`\u30C9\u30EC\u30A4\u30F3\u8981\u6C42\u3092\u53D7\u3051\u53D6\u308A\u307E\u3057\u305F\uFF08${why}\
|
|
133
133
|
\uFF09\u3002\u5B9F\u884C\u4E2D\u306E\u30A2\u30A4\u30C6\u30E0\uFF08${running}\uFF09\u3092\u5B8C\u8D70\u3055\u305B\u3066\u304B\u3089\u7D42\u4E86\u3057\u307E\u3059\u3002`);const waiters=[...this.drainWaiters];this.drainWaiters.clear();for(const w of waiters)w()}cooldownNote(outcome){if(outcome!=="rate-limited")return"";const remaining=this.deps.config.ai.minCooldownRemainingSec();return remaining===null?"":`\uFF08\u6700\u77ED\u306E\u89E3\u9664\u307E\u3067\u7D04${remaining}\u79D2\uFF09`}startOwnershipWatch(itemId){
|
|
@@ -191,7 +191,7 @@ m));const excludeKeys=parsePlanExcludeKeys(prefetchSection);if(excludeKeys.size>
|
|
|
191
191
|
const outcomeReports=await fetchOutcomeReports(this.deps.api,config.outcomeSkills??[]);for(const w of outcomeStreakWarnings(outcomeReports))log.log(` \u26A0\uFE0F ${w}`);const outcomeSection=renderOutcomeSection(outcomeReports);const blocks=await this.snapshotDynamicBlocks(taskStatusSnapshot);let planSession;try{planSession=openPlanSession(path4.join(config.stateDir,"plan-submit"),[...fileSkillNames([path4.join(config.workspace,".claude","commands"),...process.env.CLAUDE_CONFIG_DIR?[path4.join(
|
|
192
192
|
process.env.CLAUDE_CONFIG_DIR,"commands")]:[],path4.join(os2.homedir(),".claude","commands")]),...this.skills.names()],blocks)}catch(err){log.log(` \u26A0\uFE0F \u8A08\u753B\u306E\u63D0\u51FA\u53E3\u3092\u6E96\u5099\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08${err.message}\uFF09\u3002\u3053\u306E\u30B5\u30A4\u30AF\u30EB\u306F\u5FDC\u7B54\u306E\u6587\u7AE0\u304B\u3089\u8A08\u753B\u3092\u53D6\u308A\u51FA\u3057\u307E\u3059`);planSession=NO_PLAN_SESSION}let result;let submitted;let rejectedSubmissions=[];
|
|
193
193
|
try{result=await this.engine.run({prompt:buildPlanPrompt(config,planSkill,scheduleSection,prefetchSection,outcomeSection),promptPrefix:this.cyclePreflightSection,logFile:planLogFile,timeoutSec:config.planTimeoutSec,cwd:config.workspace,skill:normalizeSkillName(planSkill.replace(/^\//,"")),...Object.keys(planSession.env).length>0?{extraEnv:planSession.env}:{},validate:output=>planSession.submission()!==null||extractPlanJson(output)!==null});submitted=planSession.submission();rejectedSubmissions=planSession.
|
|
194
|
-
rejections()}finally{planSession.close()}writeLogFile(planLogFile,result.output);engineResult=result;setRecord(result.outcome==="ok"?"error":"ai_failed",null);if(result.outcome==="aborted"){log.log(" \u23F9 \u4E2D\u65AD\u30B7\u30B0\u30CA\u30EB\u306B\u3088\u308A\u8A08\u753B\u3092\u6253\u3061\u5207\u308A\u307E\u3057\u305F");return"aborted"}if(result.outcome!=="ok"){if(isAiUnavailable(result.outcome)){log.log(` \u23ED AI \u3092\u8D77\u52D5\u3067\u304D\u306A\u3044\u305F\u3081\u8A08\u753B\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08outcome=${result.
|
|
194
|
+
rejections()}finally{planSession.close()}writeLogFile(planLogFile,result.output);engineResult=result;noteAiAvailability(this.deps.runner,result);setRecord(result.outcome==="ok"?"error":"ai_failed",null);if(result.outcome==="aborted"){log.log(" \u23F9 \u4E2D\u65AD\u30B7\u30B0\u30CA\u30EB\u306B\u3088\u308A\u8A08\u753B\u3092\u6253\u3061\u5207\u308A\u307E\u3057\u305F");return"aborted"}if(result.outcome!=="ok"){if(isAiUnavailable(result.outcome)){log.log(` \u23ED AI \u3092\u8D77\u52D5\u3067\u304D\u306A\u3044\u305F\u3081\u8A08\u753B\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08outcome=${result.
|
|
195
195
|
outcome}${result.aiReasons===void 0?"":` / ${result.aiReasons}`}\uFF09`);return result.outcome}log.log(` \u26D4 \u8A08\u753B\u306E\u5B9F\u884C\u306B\u5931\u6557\u3057\u307E\u3057\u305F\uFF08outcome=${result.outcome}\uFF09`);return"failed"}if(this.planLock.isLost()){log.log(` \u26D4 \u8A08\u753B\u4E2D\u306B\u8A08\u753B\u30ED\u30C3\u30AF\u3092\u5931\u3044\u307E\u3057\u305F\uFF08reason=${this.planLock.lostReasonText()}\uFF09`);log.log(" **\u30A8\u30F3\u30AD\u30E5\u30FC\u3092\u4E2D\u6B62\u3057\u307E\u3059**\u3002\u8A08\u753B\u7D50\u679C\u306F\u7834\u68C4\u3057\u3001\u6B21\u30B5\u30A4\u30AF\u30EB\u3067\u53D6\u308A\u76F4\u3057\u307E\u3059");
|
|
196
196
|
setRecord("error",null);return"ok"}const unchecked=unavailableChecks(blocks);const recordResult=summary2=>{const line=formatPlanResultLine(rejectedSubmissions.length>0?{...summary2,rejected_submissions:rejectedSubmissions}:summary2);log.log(line);try{fs6.appendFileSync(planLogFile,`
|
|
197
197
|
${line}
|
|
@@ -244,7 +244,7 @@ break}const res=await api.update(itemId,{status:"pending"},config.runId);if(res.
|
|
|
244
244
|
continue}if(res.ok){this.deferredIds.add(itemId);log.log(` \u23F8 \u6642\u9593\u5E2F\u30B2\u30FC\u30C8\u306B\u3088\u308A\u5F8C\u56DE\u3057: ${skillName} \u2014 ${gate.reason}`);continue}log.log(" \u26A0\uFE0F pending\u3078\u623B\u305B\u306A\u304B\u3063\u305F\u305F\u3081\u3001\u6642\u9593\u5E2F\u30B2\u30FC\u30C8\u3092\u7121\u8996\u3057\u3066\u3053\u306E\u307E\u307E\u5B9F\u884C\u3057\u307E\u3059");stepNum+=1}}const stepLog=path4.join(config.logDir,`step-${this.timestamp}-${cycle}-${stepNum}.lo\
|
|
245
245
|
g`);const startedAt=Date.now();const taggedCategory=/#ai:([a-z]+)/.exec(label)?.[1];this.itemInFlight=itemId;const resolvedSkills=await this.skills.resolve(prompt);const skillOrigins=formatSkillOrigins(resolvedSkills.origins);if(skillOrigins!=="")log.log(` \u30B9\u30AD\u30EB: ${skillOrigins}`);const ownershipWatch=this.startOwnershipWatch(itemId);let result;try{result=await this.engine.run({serverSkills:resolvedSkills.bodies,prompt:buildStepPrompt(config,prompt),promptPrefix:this.cyclePreflightSection,
|
|
246
246
|
logFile:stepLog,aiType:item.ai_type??void 0,aiModel:item.ai_model??void 0,aiEffort:item.ai_effort??void 0,timeoutSec:config.aiTimeoutSec,cwd:config.workspace,skill:skillName,...skillName===""&&taggedCategory!==void 0?{category:taggedCategory}:{}})}finally{ownershipWatch.stop();this.itemInFlight=null}writeLogFile(stepLog,skillOrigins===""?result.output:`[skill] ${skillOrigins}
|
|
247
|
-
${result.output}`);const durationSec=Math.trunc((Date.now()-startedAt)/1e3);if(this.ownershipLostItemId===itemId){this.ownershipLostItemId=null;log.log(`[${stepNum}] ${label} \u2192 \u26A0\uFE0F \u6240\u6709\u6A29\u3092\u5931\u3063\u3066\u3044\u305F\u305F\u3081\u7D50\u679C\u3092\u7834\u68C4\u3057\u307E\u3057\u305F [ai=${result.usedAi||"-"}] (${durationSec}s)`);log.log(" \u3053\u306E\u30A2\u30A4\u30C6\u30E0\u306E\u5F8C\u51E6\u7406\uFF08\u5B9A\u671F\u67A0\u306E\u8A18\u9332\u30FB\u30EA\u30EA\u30FC\u30B9\u7D50\u679C\u306E\u8A18\u9332\u30FB\u5F8C\u7D9A\u6295\u5165\uFF09\u306F\u884C\u3044\u307E\u305B\u3093");
|
|
247
|
+
${result.output}`);noteAiAvailability(runner,result);const durationSec=Math.trunc((Date.now()-startedAt)/1e3);if(this.ownershipLostItemId===itemId){this.ownershipLostItemId=null;log.log(`[${stepNum}] ${label} \u2192 \u26A0\uFE0F \u6240\u6709\u6A29\u3092\u5931\u3063\u3066\u3044\u305F\u305F\u3081\u7D50\u679C\u3092\u7834\u68C4\u3057\u307E\u3057\u305F [ai=${result.usedAi||"-"}] (${durationSec}s)`);log.log(" \u3053\u306E\u30A2\u30A4\u30C6\u30E0\u306E\u5F8C\u51E6\u7406\uFF08\u5B9A\u671F\u67A0\u306E\u8A18\u9332\u30FB\u30EA\u30EA\u30FC\u30B9\u7D50\u679C\u306E\u8A18\u9332\u30FB\u5F8C\u7D9A\u6295\u5165\uFF09\u306F\u884C\u3044\u307E\u305B\u3093");
|
|
248
248
|
this.abortDrained?.();this.abortDrained=null;continue dequeue}if(result.outcome==="aborted"){log.log(`[${stepNum}] ${label} \u2192 \u4E2D\u65AD [ai=${result.usedAi||"-"}] (${durationSec}s)`);const res=await api.update(itemId,{status:"pending",result:serverResult(result.output),error_message:"aborted: \u4E2D\u65AD\u30B7\u30B0\u30CA\u30EB\u306B\u3088\u308A AI \u3092\u505C\u6B62\u3057\u307E\u3057\u305F\uFF08\u4F5C\u696D\u306F\u9014\u4E2D\u306E\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\uFF09"},
|
|
249
249
|
config.runId);if(res.status===409){log.log(` \u26A0\uFE0F \u30AD\u30E5\u30FC\u3078\u8FD4\u305D\u3046\u3068\u3057\u305F\u30A2\u30A4\u30C6\u30E0\u306F\u65E2\u306B\u5225\u306E\u30E9\u30F3\u30CA\u30FC\u304C\u4FDD\u6301\u3057\u3066\u3044\u307E\u3059\uFF08409\uFF09: item=${itemId}`)}else if(res.ok){log.log(" \u2192 \u30A2\u30A4\u30C6\u30E0\u3092 pending \u306B\u623B\u3057\u307E\u3057\u305F\uFF08\u6B21\u306E\u8D77\u52D5\u3067\u62FE\u3044\u76F4\u3057\u307E\u3059\uFF09")}else{log.log(` \u26A0\uFE0F pending \u3078\u623B\
|
|
250
250
|
\u305B\u307E\u305B\u3093\u3067\u3057\u305F\uFF08${describeError(res)}\uFF09\u3002\u30B5\u30FC\u30D0\u306E\u56DE\u53CE\u3092\u5F85\u3061\u307E\u3059: item=${itemId}`)}log.log(" \u2192 \u5B9A\u671F\u30B9\u30B1\u30B8\u30E5\u30FC\u30EB\u5C65\u6B74\u306B\u306F\u8A18\u9332\u3057\u307E\u305B\u3093\uFF08\u505C\u6B62\u64CD\u4F5C\u304C\u539F\u56E0\u306E\u305F\u3081\uFF09");this.abortDrained?.();this.abortDrained=null;stop=true;break}if(isAiUnavailable(result.outcome)){unexecuted+=1;if(needsHumanToRestoreAi(
|
|
@@ -304,7 +304,7 @@ const profile=resolveProfile(opts.profile);let creds;try{creds=new AuthSession(p
|
|
|
304
304
|
`);return 1}const apiUrl=effectiveApiUrl(profile,creds.api_url);const session=new AuthSession(profile.name,apiUrl);if(opts.action==="capacity"&&opts.capacityOp==="list"){let filterId;if(opts.project!==void 0&&opts.project!==""){try{filterId=(await new ProjectApi(apiUrl,session).resolve(opts.project)).id}catch(err){process.stderr.write(`${err.message}
|
|
305
305
|
`);return 1}}const api2=new AgentLoopApi({apiUrl,projectId:filterId??"",session});const{runCapacityList}=await import("./capacity-list-command-LKOVLAY4.js");return runCapacityList({get:()=>api2.runnersOverview()},{output:opts.output,query:opts.query,includeStopped:opts.includeStopped===true,projectId:filterId})}const projectRef=opts.project??process.env.TWP_PROJECT??"";if(projectRef===""){process.stderr.write("--project <\u30AD\u30FC|UUID> \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08TWP_PROJECT \u3067\u3082\u53EF\uFF09\n");
|
|
306
306
|
return 2}const projectApi=new ProjectApi(apiUrl,session);let project;try{project=await projectApi.resolve(projectRef)}catch(err){process.stderr.write(`${err.message}
|
|
307
|
-
`);return 1}const projectId=project.id;if(opts.action==="setup"){const{runSetup,parseAiList}=await import("./setup-
|
|
307
|
+
`);return 1}const projectId=project.id;if(opts.action==="setup"){const{runSetup,parseAiList}=await import("./setup-ICJPTYKW.js");let ais;if(opts.ais!==void 0&&opts.ais.length>0){const parsed=parseAiList(opts.ais.join(","));if(parsed.unknown.length>0){process.stderr.write(`--ai \u306B\u672A\u77E5\u306E\u5024\u304C\u3042\u308A\u307E\u3059: ${parsed.unknown.join(" / ")}
|
|
308
308
|
`);return 2}ais=parsed.ais}return runSetup({projectId,projectRef,projectName:project.name===project.id?projectRef:`${project.code} / ${project.name}`,apiUrl,yes:opts.yes===true,...ais!==void 0?{ais}:{},...opts.workspace!==void 0?{workspace:opts.workspace}:{},...opts.aiConfigFile!==void 0?{aiConfigFile:opts.aiConfigFile}:{},...opts.noAiConfigFile===true?{noAiConfigFile:true}:{},...opts.profile!==void 0?{profile:opts.profile}:{}})}if(opts.action==="charter"){if(opts.charterOp===void 0){process.stderr.
|
|
309
309
|
write("charter \u306B\u306F push / pull / history / diff / revert \u306E\u3044\u305A\u308C\u304B\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\n");return 2}if(isPrivateProjectId(projectId)){process.stderr.write("\u500B\u4EBA\u30BF\u30B9\u30AF\u306E\u30AD\u30E5\u30FC\uFF08--project __private__\uFF09\u306B\u306F\u61B2\u7AE0\u306E\u8A2D\u5B9A\u304C\u3042\u308A\u307E\u305B\u3093\n");return 2}if(opts.charterOp!=="push"&&opts.charterOp!=="pull"){const{runRevisionCommand}=await import("./revision-command-KT7NMRES.js");
|
|
310
310
|
return runRevisionCommand({api:new AgentLoopApi({apiUrl,projectId,session})},{target:"charter",op:opts.charterOp,from:opts.revisionFrom,to:opts.revisionTo,revision:opts.charterRevision,yes:opts.yes===true,projectRef,profile:opts.profile})}const{runCharterCommand}=await import("./charter-command-A4MFFBGE.js");return runCharterCommand({api:new AgentLoopApi({apiUrl,projectId,session})},{op:opts.charterOp,file:opts.charterInput,out:opts.charterOutput,revision:opts.charterRevision,yes:opts.yes===true,projectRef,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{PromptAbortedError,promptHidden,promptText}from"./chunk-
|
|
3
|
+
import{PromptAbortedError,promptHidden,promptText}from"./chunk-RACLI3FA.js";import{system32}from"./chunk-N2UVRM3Z.js";import{ApiError,TwpApiClient,errorListMessages}from"./chunk-JA5A6UJ2.js";import{EXIT_USAGE,UsageError}from"./chunk-VFPY2A23.js";import{isWindowsDriveAbsolute}from"./chunk-PMOUHEJQ.js";import{AuthSession,NotLoggedInError,SessionExpiredError,deleteCredentials,loadCredentials,maskToken,saveCredentials}from"./chunk-XNLIEUAW.js";import{httpFetch}from"./chunk-J7QYPKVK.js";
|
|
4
4
|
import{effectiveApiUrl,resolveProfile}from"./chunk-EDF4U5BT.js";import"./chunk-RZVI6PMW.js";import{stripTerminalControls}from"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";import os from"os";import{createHash,randomBytes}from"crypto";function generatePkcePair(){const verifier=randomBytes(32).toString("base64url");return{verifier,challenge:computeChallenge(verifier),method:"S256"}}function computeChallenge(verifier){return createHash("sha256").update(verifier,"ascii").digest("base64url")}function generateState(){return randomBytes(16).toString("base64url")}import http from"http";import crypto from"crypto";function safeEqual(a,b){const x=Buffer.from(a,"utf8");const y=Buffer.from(b,"utf8");const len=Math.max(x.length,y.length,1);const px=Buffer.alloc(len);const py=Buffer.alloc(len);x.copy(px);y.copy(py);return crypto.timingSafeEqual(px,py)&&x.length===y.length}var LoginTimeoutError=class extends Error{constructor(timeoutMs){super(`\u30D6\u30E9\u30A6\u30B6\u3067\u306E\u627F\u8A8D\u3092 ${Math.round(timeoutMs/1e3)} \u79D2\u5F85\u3061\u307E\u3057\u305F\u304C\u5B8C\u4E86\u3057\u307E\u305B\u3093\u3067\u3057\u305F\u3002twp login \u3092\u3084\u308A\u76F4\u3057\u3066\u304F\u3060\u3055\
|
|
5
5
|
\u3044\u3002`)}};var SUCCESS_HTML=`<!doctype html><html lang="ja"><head><meta charset="utf-8"><title>TWP CLI \u30ED\u30B0\u30A4\u30F3\u5B8C\u4E86</title></head>
|
|
6
6
|
<body style="font-family: sans-serif; text-align: center; padding-top: 4rem; background:#f7f9fc; color:#1b2559">
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{customerDocumentSubresources}from"./chunk-
|
|
4
|
-
import{repeatedValues}from"./chunk-RX5HWI4L.js";import"./chunk-JJSBBWJ5.js";import{CUSTOMERS_PATH,SALES_COMPANIES_PATH,isExactNumericId}from"./chunk-
|
|
3
|
+
import{customerDocumentSubresources}from"./chunk-733XATRJ.js";import{COMPANY_FIELDS,COMPANY_LICENSE,CUSTOMER_LICENSE,customerSubresources,customerWriteOperations,dataOf,levelForbidden}from"./chunk-FM3RHTEQ.js";import"./chunk-WTYIFLVB.js";import"./chunk-V64CGX7V.js";import"./chunk-QLENN5DD.js";import"./chunk-RMFLTSOV.js";import{featureLicenseGuidance,licenseForbidden}from"./chunk-7KD5RWFY.js";import{createFlags,fieldBody,hasAnyField,updateFlags}from"./chunk-KW37N7IO.js";
|
|
4
|
+
import{repeatedValues}from"./chunk-RX5HWI4L.js";import"./chunk-JJSBBWJ5.js";import{CUSTOMERS_PATH,SALES_COMPANIES_PATH,isExactNumericId}from"./chunk-2T23XGJF.js";import{isSafePathSegment}from"./chunk-HVZUXLQ4.js";import{ApiError}from"./chunk-JA5A6UJ2.js";import"./chunk-MMVXE2CJ.js";import{LIST_FLAGS,LIST_PAGING_HELP,PAGE_NUMBER_LIST_FLAGS,PAGE_NUMBER_PAGING_HELP,STABLE_PAGE_ORDER,envelopePaging,nonEmpty,pageNumberPaging,pageNumberQuery,pageRangeNotes,positiveInteger}from"./chunk-MI6HVYR2.js";
|
|
5
5
|
import"./chunk-II5RVJQN.js";import{requireResolved,singleRef,withResolved}from"./chunk-PS5QFKHB.js";import{acknowledgement,isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";import"./chunk-XNLIEUAW.js";import"./chunk-J7QYPKVK.js";import"./chunk-EDF4U5BT.js";import"./chunk-RZVI6PMW.js";import"./chunk-QQRJLH6B.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var CUSTOMER_FLAG_FIELD={kind:"boolean",flag:"--customer",key:"customer_flg",summary:"\u9867\u5BA2\u3068\u3057\u3066\u6271\u3046\u304B\uFF08true / false\uFF09"};var FIELDS=[...COMPANY_FIELDS,CUSTOMER_FLAG_FIELD];var COLUMNS=["id","company_name","company_name_kana","company_short_name","customer_flg","supplier_flg","tel","address1"];var WRITE_FORBIDDEN=levelForbidden(COMPANY_LICENSE,"\u53D6\u5F15\u5148\u306E\u4F5C\u6210\u30FB\u66F4\u65B0\u306B\u306F\u3001\u8CA9\u58F2\u7BA1\u7406\u306E\u6A29\u9650\u304C\u300C\u30E1\u30F3\u30D0\u30FC\u300D\u4EE5\u4E0A\u304B\u3001\u9867\u5BA2\u7BA1\u7406\u306E\u6A29\u9650\u304C\u300C\u7DE8\u96C6\u8005\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 DELETE_FORBIDDEN=levelForbidden(COMPANY_LICENSE,"\u53D6\u5F15\u5148\u306E\u524A\u9664\u306B\u306F\u3001\u8CA9\u58F2\u7BA1\u7406\u306E\u6A29\u9650\u304C\u300C\u30E1\u30F3\u30D0\u30FC\u300D\u4EE5\u4E0A\u304B\u3001\u9867\u5BA2\u7BA1\u7406\u306E\u6A29\u9650\u304C\u300C\u7BA1\u7406\u8005\u300D\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");var REF_HELP="<\u53D6\u5F15\u5148> \u306F\u4F01\u696D\u540D\u30FB\u7565\u79F0\u30FB\u30AB\u30CA\u306E\u5B8C\u5168\u4E00\u81F4\u304B\
|
|
7
7
|
ID\uFF08twp company list \u306E id \u5217\u306E\u6570\u5B57\uFF09\u3067\u6307\u5B9A\u3057\u307E\u3059\u3002\u9867\u5BA2\u30FB\u4ED5\u5165\u5148\u306E\u3069\u3061\u3089\u3082\u6307\u5B9A\u3067\u304D\u307E\u3059\u3002";function companyPath(input){const id=requireResolved(input,"companyId");if(!isExactNumericId(id))throw new UsageError(`\u53D6\u5F15\u5148 ID \u3092\u30D1\u30B9\u306B\u4F7F\u3048\u307E\u305B\u3093: ${id}`);return`${SALES_COMPANIES_PATH}/${id}`}async function resolveCompany(input,ctx,usage){
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{GLOBAL_FLAGS}from"./chunk-
|
|
3
|
+
import{GLOBAL_FLAGS}from"./chunk-5PBNMFNO.js";import"./chunk-2LOT54OO.js";import{API_TOKEN,DOMAIN_NAMES,HELP_TOKEN,isDomainName}from"./chunk-JF2GCXNQ.js";import{BUILTIN_COMMANDS,QUEUE_DOMAIN,TASK_LOOP_ACTIONS,TASK_LOOP_QUEUE_ACTIONS,VALUE_FLAGS,rewriteQueueCommand}from"./chunk-EOXTDZTA.js";import"./chunk-QQRJLH6B.js";import{OUTPUT_FORMATS}from"./chunk-74BPZOKU.js";import"./chunk-UREA4ZIG.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var EXTRA_TOP_LEVEL=[API_TOKEN,HELP_TOKEN,"completion","configure"];var COMPLETION_SHELLS=["bash","zsh","fish","powershell"];var TOP_LEVEL_FLAGS=["--help","--version","-p","--print","--profile","--mode","--permission-mode","--model","--allowed-tools","--disallowed-tools","--no-tui","--doctor"];var DOMAIN_GLOBAL_FLAGS=[...GLOBAL_FLAGS].filter(flag=>flag.startsWith("--"));function staticValues(flag,ctx){if(flag==="--output")return OUTPUT_FORMATS;if(flag==="--profile")return ctx.profileNames();return void 0}
|
|
4
4
|
function positionals(words,takesValue){const out=[];for(let i=0;i<words.length;i++){const word=words[i]??"";if(word==="--"){out.push(...words.slice(i+1));break}if(word.startsWith("-")){if(!word.includes("=")&&takesValue(word))i++;continue}out.push(word)}return out}function byPrefix(candidates,current){const seen=new Set;for(const candidate of candidates){if(candidate.startsWith(current))seen.add(candidate)}return[...seen]}function remainingFlags(flags,words){const used=new Set(words.filter(w=>w.
|
|
5
5
|
startsWith("--")).map(w=>w.split("=")[0]));return[...flags.filter(f=>f.repeatable===true||!used.has(f.name)).map(f=>f.name),...DOMAIN_GLOBAL_FLAGS.filter(f=>!used.has(f))]}async function complete(rawWords,current,ctx){const queue=rewriteQueueCommand(rawWords);if(queue.moved!==void 0)return[];const words=queue.argv;const previous=words[words.length-1];if(previous!==void 0&&previous.startsWith("--")&&!previous.includes("=")){const values=staticValues(previous,ctx);if(values!==void 0)return byPrefix(
|
|
6
6
|
values,current)}const eq=current.indexOf("=");if(current.startsWith("--")&&eq>0){const flag=current.slice(0,eq);const values=staticValues(flag,ctx);return values===void 0?[]:byPrefix(values.map(v=>`${flag}=${v}`),current)}const pos=positionals(words,flag=>VALUE_FLAGS.has(flag));const[first,second]=pos;if(first===void 0){if(current.startsWith("-"))return byPrefix([...TOP_LEVEL_FLAGS,...DOMAIN_GLOBAL_FLAGS],current);return byPrefix([...BUILTIN_COMMANDS,...DOMAIN_NAMES.filter(name=>name!==QUEUE_DOMAIN),
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{PromptAbortedError,promptText}from"./chunk-
|
|
3
|
+
import{PromptAbortedError,promptText}from"./chunk-RACLI3FA.js";import{writePrivateFileAtomic}from"./chunk-D233KKXW.js";import{loadUserConfig,resolveProfileName,userConfigPath}from"./chunk-EDF4U5BT.js";import{ensureTwpHome}from"./chunk-RZVI6PMW.js";import{splitFlagToken}from"./chunk-QQRJLH6B.js";import{OUTPUT_FORMATS,isOutputFormat}from"./chunk-74BPZOKU.js";import"./chunk-UREA4ZIG.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var CLEAR="-";var HELP=`\u4F7F\u3044\u65B9: twp configure [--profile <\u540D\u524D>]
|
|
4
4
|
|
|
5
5
|
\u30D7\u30ED\u30D5\u30A1\u30A4\u30EB\u306E\u65E2\u5B9A\u3092\u5BFE\u8A71\u3067\u8A2D\u5B9A\u3057\u3001~/.twp/config.json \u306B\u4FDD\u5B58\u3057\u307E\u3059
|
|
6
6
|
\uFF08\u8A8D\u8A3C\u60C5\u5831\u306B\u306F\u89E6\u308A\u307E\u305B\u3093\u3002\u30ED\u30B0\u30A4\u30F3\u306F twp login\uFF09\u3002
|
|
@@ -25,8 +25,8 @@ ${HELP}`);return 2}let config;try{config=loadUserConfig(full.env)}catch(err){ful
|
|
|
25
25
|
`);try{const project=answerToValue(await full.ask(`\u65E2\u5B9A\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8 [${shown(profile.project)}]: `),profile.project);const outputAnswer=await full.ask(`\u65E2\u5B9A\u306E\u51FA\u529B\u5F62\u5F0F\uFF08${OUTPUT_FORMATS.join(" / ")}\uFF09 [${shown(profile.output)}]: `);const output=answerToValue(outputAnswer,profile.output);if(output!==void 0&&output!==profile.output&&!isOutputFormat(output)){full.err.write(`\u51FA\u529B\u5F62\u5F0F\u306F ${OUTPUT_FORMATS.join(
|
|
26
26
|
" / ")} \u306E\u3044\u305A\u308C\u304B\u3067\u3059\uFF08\u6307\u5B9A: ${output}\uFF09\u3002\u4F55\u3082\u4FDD\u5B58\u3057\u3066\u3044\u307E\u305B\u3093\u3002
|
|
27
27
|
`);return 2}const currentDefault=config.default_profile??"default";let makeDefault=false;if(currentDefault!==profileName){const answer=await full.ask(`\u300C${profileName}\u300D\u3092\u65E2\u5B9A\u306E\u30D7\u30ED\u30D5\u30A1\u30A4\u30EB\u306B\u3057\u307E\u3059\u304B\uFF08\u73FE\u5728: ${currentDefault}\uFF09 [y/N]: `);makeDefault=/^y(es)?$/i.test(answer)}let backlogSpaceAnswer="";try{backlogSpaceAnswer=await full.ask(`\u65E2\u5B9A\u306E Backlog \u30B9\u30DA\u30FC\u30B9 [${shown(profile.backlog_space)}\
|
|
28
|
-
]: `)}catch(err){if(!(err instanceof PromptAbortedError))throw err}const backlogSpace=answerToValue(backlogSpaceAnswer,profile.backlog_space);if(project===void 0)delete profile.project;else profile.project=project;if(output===void 0)delete profile.output;else profile.output=output;if(backlogSpace===void 0)delete profile.backlog_space;else profile.backlog_space=backlogSpace;const next={...config,profiles:{...config.profiles??{},[profileName]:profile},...makeDefault?{default_profile:profileName}:
|
|
29
|
-
const file=full.write(next);full.out.write(`\u4FDD\u5B58\u3057\u307E\u3057\u305F: ${file}
|
|
28
|
+
]: `)}catch(err){if(!(err instanceof PromptAbortedError)||!err.endOfInput)throw err}const backlogSpace=answerToValue(backlogSpaceAnswer,profile.backlog_space);if(project===void 0)delete profile.project;else profile.project=project;if(output===void 0)delete profile.output;else profile.output=output;if(backlogSpace===void 0)delete profile.backlog_space;else profile.backlog_space=backlogSpace;const next={...config,profiles:{...config.profiles??{},[profileName]:profile},...makeDefault?{default_profile:profileName}:
|
|
29
|
+
{}};const file=full.write(next);full.out.write(`\u4FDD\u5B58\u3057\u307E\u3057\u305F: ${file}
|
|
30
30
|
\u30D7\u30ED\u30D5\u30A1\u30A4\u30EB ${profileName}${makeDefault||currentDefault===profileName?"\uFF08\u65E2\u5B9A\uFF09":""}
|
|
31
31
|
\u65E2\u5B9A\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8 ${shown(profile.project)}
|
|
32
32
|
\u65E2\u5B9A\u306E\u51FA\u529B\u5F62\u5F0F ${shown(profile.output)}
|