@tocca-systems/twp-cli 0.64.0 → 0.66.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.public.md +24 -0
- package/README.md +116 -8
- package/command-model/wiki.json +2 -2
- package/dist/agent-SFX3ZVOB.js +160 -0
- package/dist/{agent-loop-GPPUR2WD.js → agent-loop-6JO4PJRG.js} +23 -20
- package/dist/{ai-dispatch-FZDFJ4TN.js → ai-dispatch-YICIA4NI.js} +3 -3
- package/dist/analysis-HMOECNWG.js +5 -0
- package/dist/{announcement-ASKS53LL.js → announcement-Q642UMYK.js} +1 -1
- package/dist/{api-command-N2OJNJBC.js → api-command-4CUGQQI3.js} +4 -4
- package/dist/{app-QA2HKG6E.js → app-BBPK653N.js} +4 -4
- package/dist/{attendance-correct-KBNPGFGR.js → attendance-correct-DWVFYL2Y.js} +2 -2
- package/dist/{attendance-lists-C7TO3GQ2.js → attendance-lists-772Y3ZWA.js} +2 -2
- package/dist/{backlog-AWOTTGPB.js → backlog-FG3Y5JTE.js} +38 -28
- package/dist/{budget-Z6ILL7AU.js → budget-5WUQAAAZ.js} +2 -2
- package/dist/capacity-report-command-PBE73I43.js +15 -0
- package/dist/chunk-2OG4LAGD.js +41 -0
- package/dist/{chunk-T4QZO6RQ.js → chunk-5SONMN6K.js} +1 -1
- package/dist/chunk-6CS5L24D.js +4 -0
- package/dist/chunk-6OLZMQBK.js +11 -0
- package/dist/chunk-6PAZUW73.js +16 -0
- package/dist/{chunk-YKI7NYBD.js → chunk-7EJOKJLV.js} +57 -18
- package/dist/{chunk-3WFZOOXZ.js → chunk-AGI5KT4C.js} +1 -1
- package/dist/{chunk-LAAKI3GS.js → chunk-APPYZQNC.js} +1 -1
- package/dist/{chunk-4CR64SNH.js → chunk-CCBNU5Y3.js} +2 -2
- package/dist/{chunk-RWR7OHVP.js → chunk-DAOC7VRM.js} +1 -1
- package/dist/{chunk-JYCJ4N6T.js → chunk-F4PGPJOI.js} +1 -1
- package/dist/{chunk-AEJHDFXB.js → chunk-FABDZBDZ.js} +5 -5
- package/dist/{chunk-PIB6MGG5.js → chunk-FAHDBWW2.js} +1 -1
- package/dist/{chunk-234WHKGS.js → chunk-FDVWV3AY.js} +2 -2
- package/dist/chunk-G4TZFGNN.js +41 -0
- package/dist/{chunk-NQWTPHUO.js → chunk-GLKZ4ZZY.js} +1 -1
- package/dist/{worker-agent-XCJGZHMT.js → chunk-HBEOI456.js} +3 -3
- package/dist/{chunk-ITRTFBV3.js → chunk-HNG6MF26.js} +52 -49
- package/dist/{chunk-QSXS5SB2.js → chunk-HPPIVCK3.js} +3 -2
- package/dist/chunk-KDH3KWPO.js +4 -0
- package/dist/chunk-LJVAOWZI.js +65 -0
- package/dist/{chunk-UIHNYBME.js → chunk-NVMJXFBT.js} +1 -1
- package/dist/{chunk-FITASHOM.js → chunk-OMWCSE4P.js} +2 -2
- package/dist/{chunk-XPPT3MUY.js → chunk-P2DSHLHD.js} +2 -2
- package/dist/chunk-P6M2MCZJ.js +97 -0
- package/dist/{chunk-RROCQRRY.js → chunk-QJAZLPA3.js} +1 -1
- package/dist/chunk-SPZ3GBYC.js +16 -0
- package/dist/chunk-VIWQMDGG.js +91 -0
- package/dist/{chunk-S5DEP2HA.js → chunk-W2AIT5FJ.js} +5 -5
- package/dist/{chunk-FDRXS6ZU.js → chunk-WBUYPDJH.js} +1 -1
- package/dist/{chunk-5LPELULJ.js → chunk-WMEGP2BT.js} +1 -1
- package/dist/{chunk-NXWXTUU6.js → chunk-X6L5LUC4.js} +1 -1
- package/dist/{chunk-6PQO3AYP.js → chunk-XCPZ4R65.js} +1 -1
- package/dist/{chunk-VV4GTQ2L.js → chunk-XGYOJHZC.js} +16 -13
- package/dist/cli.js +100 -11
- package/dist/{commands-WIQVCMQE.js → commands-4C6TJ4WG.js} +1 -1
- package/dist/{commands-HK7DUMUJ.js → commands-62NWF7GA.js} +105 -155
- package/dist/{company-YPDJZ3SE.js → company-4DHVAW25.js} +2 -2
- package/dist/{completion-7RHQKR5U.js → completion-WR2GXZE7.js} +5 -4
- package/dist/{contract-2Y5VN3TR.js → contract-PT7VW4IE.js} +2 -2
- package/dist/{department-K4EFC6NW.js → department-C6WIZPBS.js} +1 -1
- package/dist/{deposit-NTLHIMJL.js → deposit-OEYFPEZG.js} +1 -1
- package/dist/{estimate-C5LUNIWR.js → estimate-4BUJQ3TP.js} +3 -3
- package/dist/{evaluation-ZWUHSENB.js → evaluation-GLXQ54F6.js} +1 -1
- package/dist/{expense-BXJ7QYMP.js → expense-QE3WIJTN.js} +1 -1
- package/dist/fiscal-year-YJWFQN4P.js +17 -0
- package/dist/{inquiry-KHPPTYN6.js → inquiry-ORB3ROAJ.js} +1 -1
- package/dist/{invoice-VV2NT4A3.js → invoice-XLX5KS2T.js} +3 -3
- package/dist/{job-title-RCSL5Y2Z.js → job-title-UDF6I3BP.js} +1 -1
- package/dist/{knowledge-BLU6RHS5.js → knowledge-4QPIGJEE.js} +32 -27
- package/dist/{leave-RJBCHZCQ.js → leave-3BJMXI7Q.js} +3 -3
- package/dist/license-OMIZUUTW.js +56 -0
- package/dist/{logout-guard-GQBF3GQH.js → logout-guard-2Y7HPIKN.js} +2 -1
- package/dist/{media-OIAOW546.js → media-77LTBOQX.js} +3 -3
- package/dist/{notification-KPMGELOR.js → notification-2IESSY5E.js} +1 -1
- package/dist/{oneshot-OWEBFX5O.js → oneshot-4XO5HIJR.js} +1 -1
- package/dist/{outlook-AAS5DXYQ.js → outlook-KYTXHDAV.js} +1 -1
- package/dist/plan-submit-T5KHXNGH.js +4 -0
- package/dist/{position-NY5LRELH.js → position-CR6P4WC5.js} +1 -1
- package/dist/{project-4MEGZ326.js → project-JJEMEO2W.js} +1 -1
- package/dist/{prospect-7D2WK56K.js → prospect-QG6X7ALK.js} +2 -2
- package/dist/{purchase-S7W67LJP.js → purchase-Z6ENEOZM.js} +3 -3
- package/dist/{receivable-GFJTEELC.js → receivable-ZBDXXMHX.js} +1 -1
- package/dist/{redmine-P3EMFFHY.js → redmine-EIFHMLNE.js} +1 -1
- package/dist/{registry-GRRRT3I6.js → registry-BIJNO3HE.js} +1 -1
- package/dist/{report-FUIVLC7B.js → report-TTXGXSR3.js} +1 -1
- package/dist/revision-command-PM7FQUVF.js +31 -0
- package/dist/{run-LSWFO4IY.js → run-TYKHDD6N.js} +2 -2
- package/dist/{sales-ai-review-P36TTQRO.js → sales-ai-review-6TDJFHDL.js} +1 -1
- package/dist/{sales-master-3CGHEFKF.js → sales-master-H5HMVBJV.js} +3 -3
- package/dist/{sales-numbering-3M2C2MAI.js → sales-numbering-Q5KRM63Y.js} +1 -1
- package/dist/{schedule-command-R5KTFAVZ.js → schedule-command-2HCOGYJW.js} +1 -1
- package/dist/{search-U3QNPR4D.js → search-GRAWP2LX.js} +1 -1
- package/dist/segment-YOUY4PZC.js +6 -0
- package/dist/server-settings-LJBDUOTV.js +4 -0
- package/dist/{server-skills-IFTDV3IQ.js → server-skills-KX236POI.js} +1 -1
- package/dist/{setup-MUPUY2AX.js → setup-HHPKB6N4.js} +3 -3
- package/dist/{skill-C4TGG7SH.js → skill-RH5MBRXZ.js} +1 -1
- package/dist/{supplier-payment-KG57PNWJ.js → supplier-payment-EJTFKAKY.js} +2 -2
- package/dist/{support-BRVAJ7IH.js → support-FR3KY63E.js} +1 -1
- package/dist/{task-RYBYPM4N.js → task-O7K6725Y.js} +3 -3
- package/dist/{teams-GPJ6HMIX.js → teams-QRVCFJS4.js} +1 -1
- package/dist/{user-3DE46776.js → user-PRGHG3HM.js} +15 -103
- package/dist/user-contract-type-K7CLKCEE.js +32 -0
- package/dist/worker-agent-WDYZTQ5C.js +4 -0
- package/dist/{workflow-MMEOWZJC.js → workflow-S25JXGWN.js} +1 -1
- package/package.json +1 -1
- package/dist/agent-UAOZYMQM.js +0 -100
- package/dist/analysis-RKWGO7UY.js +0 -4
- package/dist/chunk-2B7A3OY7.js +0 -102
- package/dist/chunk-4P7EYEL5.js +0 -4
- package/dist/chunk-AT432SCP.js +0 -15
- package/dist/chunk-QEWCTKPV.js +0 -15
- package/dist/chunk-QHX5YFMM.js +0 -23
- package/dist/chunk-RZ2NZE4U.js +0 -36
- package/dist/chunk-THOBFX2S.js +0 -10
- package/dist/plan-submit-AWMD7XOY.js +0 -3
- package/dist/server-settings-3YD7RR3A.js +0 -3
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{hoursMinutes}from"./chunk-
|
|
4
|
-
import"./chunk-RZVI6PMW.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var MONTH_FLAG={name:"--month",summary:"\u5BFE\u8C61\u306E\u5E74\u6708\uFF08YYYY-MM\uFF09",takesValue:true,placeholder:"<YYYY-MM>"};var ME_FLAG={name:"--me",summary:"\u81EA\u5206\u306E\u5206\u3060\u3051\u3092\u8868\u793A\u3059\u308B\uFF08\u7121\u3051\u308C\u3070\u5168\u54E1\u5206\u30FB\u7BA1\u7406\u8005\uFF09",takesValue:false};var FORBIDDEN_ADMIN="\u6A29\u9650\u304C\u8DB3\u308A\u307E\u305B\u3093\u3002\u5168\u54E1\u5206\uFF08--me \u306A\u3057\uFF09\u306F\u52E4\u6020\u306E\u7BA1\u7406\u8005\u6A29\u9650\uFF08\u52E4\u6020: \u7BA1\u7406\u8005\uFF09\u3001\u81EA\u5206\u306E\u5206\uFF08--me\uFF09\u306F\u52E4\u6020\u306E\u5229\u7528\u6A29\u9650\u304C\u8981\u308A\u307E\u3059\u3002\u30C6\u30CA\u30F3\u30C8\u306E\u7BA1\u7406\u8005\u306B\u6A29\u9650\u306E\u4ED8\u4E0E\u3092\u4F9D\u983C\u3057\u3066\u304F\u3060\u3055\u3044";
|
|
3
|
+
import{hoursMinutes}from"./chunk-7EJOKJLV.js";import{monthFlag}from"./chunk-EXT4AIDF.js";import"./chunk-XGYOJHZC.js";import"./chunk-JJSBBWJ5.js";import"./chunk-MI6HVYR2.js";import"./chunk-RX5HWI4L.js";import"./chunk-6LSQCOCJ.js";import"./chunk-HNG6MF26.js";import"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";import"./chunk-PS5QFKHB.js";import"./chunk-II5RVJQN.js";import{isRecord,pick}from"./chunk-3ZRMMBP5.js";
|
|
4
|
+
import{ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";import"./chunk-J7QYPKVK.js";import"./chunk-4VZKNEVN.js";import"./chunk-RZVI6PMW.js";import"./chunk-QQRJLH6B.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var MONTH_FLAG={name:"--month",summary:"\u5BFE\u8C61\u306E\u5E74\u6708\uFF08YYYY-MM\uFF09",takesValue:true,placeholder:"<YYYY-MM>"};var ME_FLAG={name:"--me",summary:"\u81EA\u5206\u306E\u5206\u3060\u3051\u3092\u8868\u793A\u3059\u308B\uFF08\u7121\u3051\u308C\u3070\u5168\u54E1\u5206\u30FB\u7BA1\u7406\u8005\uFF09",takesValue:false};var FORBIDDEN_ADMIN="\u6A29\u9650\u304C\u8DB3\u308A\u307E\u305B\u3093\u3002\u5168\u54E1\u5206\uFF08--me \u306A\u3057\uFF09\u306F\u52E4\u6020\u306E\u7BA1\u7406\u8005\u6A29\u9650\uFF08\u52E4\u6020: \u7BA1\u7406\u8005\uFF09\u3001\u81EA\u5206\u306E\u5206\uFF08--me\uFF09\u306F\u52E4\u6020\u306E\u5229\u7528\u6A29\u9650\u304C\u8981\u308A\u307E\u3059\u3002\u30C6\u30CA\u30F3\u30C8\u306E\u7BA1\u7406\u8005\u306B\u6A29\u9650\u306E\u4ED8\u4E0E\u3092\u4F9D\u983C\u3057\u3066\u304F\u3060\u3055\u3044";
|
|
5
5
|
function listBody(spec,body){if(!isRecord(body)||!Array.isArray(body[spec.key])){throw new ApiResponseError(`${spec.label}\u306E\u5FDC\u7B54\u306B ${spec.key} \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}return body}function monthListOperation(spec){const usage=`twp ${spec.domain} list [--month <YYYY-MM>] [--me]`;return{name:"list",summary:`\u6708\u306E${spec.label}\u3092\u4E00\u89A7\u3059\u308B\uFF08--me \u3067\u81EA\u5206\u306E\u5206\u30FB\u7121\u3051\u308C\u3070\u5168\u54E1\u5206\uFF1D\u7BA1\u7406\u8005\uFF09`,
|
|
6
6
|
usage,description:`GET ${spec.path} \u3092\u8868\u793A\u3057\u307E\u3059\uFF08\u5168\u54E1\u5206\u30FB\u52E4\u6020\u306E\u7BA1\u7406\u8005\u6A29\u9650\u304C\u5FC5\u8981\uFF09\u3002--me \u3092\u4ED8\u3051\u308B\u3068 GET ${spec.path}/me\uFF08\u81EA\u5206\u306E\u5206\uFF09\u3067\u3059\u3002
|
|
7
7
|
--month \u304C\u7121\u3051\u308C\u3070\u4ECA\u6708\u3067\u3059\uFF08\u30C6\u30CA\u30F3\u30C8\u306E\u696D\u52D9\u65E5\u306E\u533A\u5207\u308A\u3067\u30B5\u30FC\u30D0\u304C\u6C7A\u3081\u307E\u3059\uFF09\u3002
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{readBody}from"./chunk-6LSQCOCJ.js";import{BACKLOG_BASE_PATH,BACKLOG_PROJECT_SCOPE_LABEL,BACKLOG_SCOPE_LABEL,backlogSpacePath,isExactNumericId,resolveNamed}from"./chunk-
|
|
4
|
-
import"./chunk-J7QYPKVK.js";import"./chunk-4VZKNEVN.js";import"./chunk-RZVI6PMW.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var DEFAULT_COUNT=20;var MAX_COUNT=100;var NUMERIC=/^[0-9]+$/;var ISSUE_REF=/^(?:[A-Za-z0-9_]+-[0-9]+|[0-9]+)$/;var DATE=/^[0-9]{4}-[0-9]{2}-[0-9]{2}$/;var SPACE_COLUMNS=["id","space_url"];var PROJECT_COLUMNS=["id","projectKey","name"];var ISSUE_LIST_COLUMNS=["issueKey","summary","status","assignee","priority","dueDate","updated","descriptionTruncated"];var ISSUE_GET_COLUMNS=["id","issueKey","projectId","summary","description","descriptionTruncated","status","issueType","priority","assignee","cr\
|
|
3
|
+
import{repeatedValues}from"./chunk-RX5HWI4L.js";import{readBody}from"./chunk-6LSQCOCJ.js";import{BACKLOG_BASE_PATH,BACKLOG_PROJECT_SCOPE_LABEL,BACKLOG_SCOPE_LABEL,backlogSpacePath,isExactNumericId,resolveNamed}from"./chunk-HNG6MF26.js";import"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";import{requireResolved,singleRef,withResolved}from"./chunk-PS5QFKHB.js";import"./chunk-II5RVJQN.js";import{isRecord,pick}from"./chunk-3ZRMMBP5.js";
|
|
4
|
+
import{ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";import"./chunk-J7QYPKVK.js";import"./chunk-4VZKNEVN.js";import"./chunk-RZVI6PMW.js";import"./chunk-QQRJLH6B.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var DEFAULT_COUNT=20;var MAX_COUNT=100;var NUMERIC=/^[0-9]+$/;var ISSUE_REF=/^(?:[A-Za-z0-9_]+-[0-9]+|[0-9]+)$/;var DATE=/^[0-9]{4}-[0-9]{2}-[0-9]{2}$/;var SPACE_COLUMNS=["id","space_url"];var PROJECT_COLUMNS=["id","projectKey","name"];var ISSUE_LIST_COLUMNS=["issueKey","summary","status","assignee","priority","dueDate","updated","descriptionTruncated"];var ISSUE_GET_COLUMNS=["id","issueKey","projectId","summary","description","descriptionTruncated","status","issueType","priority","assignee","cr\
|
|
5
5
|
eatedUser","parentIssueId","startDate","dueDate","estimatedHours","actualHours","created","updated"];var ISSUE_JSON_SHAPE_HELP='--output json \u306E\u5F62\uFF08Backlog API \u306E\u5F62\u3067\u306F\u3042\u308A\u307E\u305B\u3093\uFF09:\n TWP \u30B5\u30FC\u30D0\u304C\u6574\u3048\u305F\u5F62\u3067\u8FD4\u308A\u307E\u3059\u3002Backlog API \u306E\u8AB2\u984C\u3092\u305D\u306E\u307E\u307E\u8AAD\u3080\u524D\u63D0\u3067\u66F8\u304F\u3068\u58CA\u308C\u307E\u3059\u3002\n - status / priority / resolution / issueType / assignee / createdUser / updatedUser \u306F\n \u540D\u524D\u306E\u6587\u5B57\u5217\u3067\u3059\uFF08{id, name} \u3067\u306F\u3042\u308A\u307E\u305B\u3093\uFF09\u3002ID \u306F statusId / issueTypeId /\n assigneeId \u2026 \u306E\u3088\u3046\u306B\u672B\u5C3E Id \u306E\u5225\u30AD\u30FC\u306B\u3042\u308A\u307E\u3059\u3002\u672A\u8A2D\u5B9A\u306A\u3089\u4E21\u65B9 null \u3067\u3059\u3002\n - category / versions / milestone \u306F {id, name} \u306E\u914D\u5217\u306E\u307E\u307E\u3067\u3059\uFF08\u8907\u6570\u4ED8\u3051\u3089\u308C\u308B\u305F\u3081\u3001\n \
|
|
6
6
|
\u540D\u524D\u3068 ID \u3092\u5225\u30AD\u30FC\u3078\u5206\u3051\u308B\u3068\u5BFE\u5FDC\u304C\u5D29\u308C\u307E\u3059\uFF09\u3002customFields \u3082\u914D\u5217\u3067\u3059\u3002\n \u4F8B\uFF081\u4EF6\u30FB\u629C\u7C8B\uFF09:\n {"id": 1234, "issueKey": "PRJ-12", "summary": "\u2026",\n "statusId": 1, "status": "\u672A\u5BFE\u5FDC", "issueTypeId": 56, "issueType": "\u30BF\u30B9\u30AF",\n "assigneeId": 91, "assignee": "\u8C37 \u6A39",\n "category": [{"id": 7, "name": "\u8A2D\u8A08"}], "milestone": [], ...}\n --query \u3082\u3053\u306E\u5F62\u306B\u5F53\u305F\u308A\u307E\u3059\uFF08issue list \u306E\u4F8B: --query "[].{key: issueKey, type: issueType}"\uFF09\u3002';
|
|
7
7
|
var COMMENT_COLUMNS=["id","created","createdUserId","createdUser","content","changeLog"];function commentRow(row){const source=isRecord(row)?row:{};const user=isRecord(source["createdUser"])?source["createdUser"]:{};return pick({...source,createdUserId:user["id"]??null,createdUser:user["name"]??null},COMMENT_COLUMNS)}var ATTACHMENT_COLUMNS=["id","name","size","contentType","createdUserId","createdUser","created"];var STATUS_COLUMNS=["id","name","color"];var USER_COLUMNS=["id","userId","name","ma\
|
|
@@ -27,20 +27,23 @@ throw new UsageError(`${name} \u306F yyyy-MM-dd \u306E\u5F62\u3067\u6307\u5B9A\u
|
|
|
27
27
|
void 0){const space=await ctx.resolver.backlogDefaultSpace();return{id:space.id,defaulted:space.name}}if(ref.trim()===""){throw new UsageError("--space \u306B\u7A7A\u306E\u5024\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093","--space <ID|\u30B9\u30DA\u30FC\u30B9URL> \u3092\u6307\u5B9A\u3059\u308B\u304B\u3001--space \u3054\u3068\u5916\u3057\u3066\u304F\u3060\u3055\u3044\u3002")}return{id:(await ctx.resolver.backlogSpace(ref)).id,defaulted:null}}function withSpace(input,space){return withResolved(
|
|
28
28
|
input,{spaceId:space.id,...space.defaulted!==null?{spaceDefaulted:space.defaulted}:{}})}async function resolveNumericRefs(refs,flag,label,scope,load){if(refs.every(ref=>NUMERIC.test(ref)))return[...refs];const candidates=await load();const resolved=[];for(const ref of refs){resolved.push(NUMERIC.test(ref)?ref:(await resolveNamed(ref,candidates,{flag,label,scope})).id)}return resolved}function requireProjectForNames(refs,flag,projectIds){if(projectIds.length===1)return projectIds[0];throw new UsageError(
|
|
29
29
|
projectIds.length===0?`${flag} \u3092\u540D\u524D\u3067\u6307\u5B9A\u3059\u308B\u306B\u306F --project \u304C\u5FC5\u8981\u3067\u3059`:`${flag} \u3092\u540D\u524D\u3067\u6307\u5B9A\u3067\u304D\u308B\u306E\u306F --project \u304C1\u3064\u306E\u3068\u304D\u3060\u3051\u3067\u3059\uFF08\u3044\u307E\u306F ${projectIds.length} \u4EF6\uFF09`,`${flag} \u306E\u5019\u88DC\uFF08${refs.join(" / ")}\uFF09\u306F Backlog \u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u914D\u4E0B\u306B\u3057\u304B\u3042\u308A\u307E\u305B\u3093\u3002\u6570\u5024\u306E ID \u3092\u76F4\u63A5\u6E21\u305B\u3070 --project \u306F\u8981\u308A\u307E\u305B\u3093\u3002`)}
|
|
30
|
-
function issueRef(input,usage){const ref=singleRef(input,{flag:"--issue",label:"\u8AB2\u984C\u30AD\u30FC",usage});if(!ISSUE_REF.test(ref)){throw new UsageError(`\u8AB2\u984C\u30AD\u30FC\u306E\u5F62\u5F0F\u304C\u9055\u3044\u307E\u3059: ${ref}`,"Backlog \u306E\u8AB2\u984C\u30AD\u30FC\uFF08HC_FM_ID-19171\uFF09\u304B\u8AB2\u984CID\uFF08\u6570\u5024\uFF09\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002")}return ref}var UPDATE_PROJECT_FLAG={name:"--project",summary:"--status / --assignee
|
|
31
|
-
\u540D\u524D\u3067\u6307\u5B9A\u3059\u308B\u3068\u304D\u306B\u8981\u308B Backlog \u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\uFF08\u30AD\u30FC / \u540D\u79F0 / \u6570\u5024ID\uFF09",takesValue:true,placeholder:"<\u30AD\u30FC|ID>"};function requireUpdateProject(input,flag,value){const ref=input.flags.get("--project")?.trim();if(ref===void 0||ref===""){throw new UsageError(`${flag} \u3092\u540D\u524D\uFF08${value}\uFF09\u3067\u6307\u5B9A\u3059\u308B\u306B\u306F --project \u304C\u5FC5\u8981\u3067\u3059
|
|
32
|
-
\u306E\u5019\u88DC\u306F Backlog \u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u914D\u4E0B\u306B\u3057\u304B\u306A\u304F\u3001\u8AB2\u984C\u30AD\u30FC\u304B\u3089\u306F\u5F15\u3051\u307E\u305B\u3093\u3002twp backlog status list --project <\u30AD\u30FC> / twp backlog user list --project <\u30AD\u30FC> \u306E id \u3092 ${flag} \u306B\u76F4\u63A5\u6E21\u305B\u3070 --project \u306F\u8981\u308A\u307E\u305B\u3093\u3002`)}return ref}function readUpdateRef(input,flag,label){const raw=input.flags.get(flag);
|
|
33
|
-
void 0
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
{
|
|
38
|
-
\
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
30
|
+
function issueRef(input,usage){const ref=singleRef(input,{flag:"--issue",label:"\u8AB2\u984C\u30AD\u30FC",usage});if(!ISSUE_REF.test(ref)){throw new UsageError(`\u8AB2\u984C\u30AD\u30FC\u306E\u5F62\u5F0F\u304C\u9055\u3044\u307E\u3059: ${ref}`,"Backlog \u306E\u8AB2\u984C\u30AD\u30FC\uFF08HC_FM_ID-19171\uFF09\u304B\u8AB2\u984CID\uFF08\u6570\u5024\uFF09\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002")}return ref}var UPDATE_PROJECT_FLAG={name:"--project",summary:"--status / --assignee /\
|
|
31
|
+
--notify \u3092\u540D\u524D\u3067\u6307\u5B9A\u3059\u308B\u3068\u304D\u306B\u8981\u308B Backlog \u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\uFF08\u30AD\u30FC / \u540D\u79F0 / \u6570\u5024ID\uFF09",takesValue:true,placeholder:"<\u30AD\u30FC|ID>"};function requireUpdateProject(input,flag,value){const ref=input.flags.get("--project")?.trim();if(ref===void 0||ref===""){throw new UsageError(`${flag} \u3092\u540D\u524D\uFF08${value}\uFF09\u3067\u6307\u5B9A\u3059\u308B\u306B\u306F --project \u304C\u5FC5\u8981\u3067\u3059`,
|
|
32
|
+
`${flag} \u306E\u5019\u88DC\u306F Backlog \u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u914D\u4E0B\u306B\u3057\u304B\u306A\u304F\u3001\u8AB2\u984C\u30AD\u30FC\u304B\u3089\u306F\u5F15\u3051\u307E\u305B\u3093\u3002twp backlog status list --project <\u30AD\u30FC> / twp backlog user list --project <\u30AD\u30FC> \u306E id \u3092 ${flag} \u306B\u76F4\u63A5\u6E21\u305B\u3070 --project \u306F\u8981\u308A\u307E\u305B\u3093\u3002`)}return ref}function readUpdateRef(input,flag,label){const raw=input.flags.get(flag);
|
|
33
|
+
return raw===void 0?void 0:updateRefOf(input,flag,label,raw)}function updateRefOf(input,flag,label,raw){const value=raw.trim();if(value===""){throw new UsageError(`${flag} \u306B\u7A7A\u306E\u5024\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093`,flag===NOTIFY_FLAG.name?`${flag} \u3054\u3068\u5916\u305B\u3070\u3001\u901A\u77E5\u5148\u3092\u6307\u5B9A\u305B\u305A\u306B\u9001\u308A\u307E\u3059\u3002`:`${flag} \u3054\u3068\u5916\u305B\u3070\u3001\u305D\u306E\u9805\u76EE\u306F\u5909\u66F4\u3057\u307E\u305B\u3093\u3002`)}
|
|
34
|
+
if(value.includes(",")){throw new UsageError(`${flag} \u306B\u8907\u6570\u306E\u5024\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\uFF08\u53D7\u3051\u53D6\u3063\u305F\u5024: ${value}\uFF09`,flag===NOTIFY_FLAG.name?`\u8907\u6570\u4EBA\u306B\u901A\u77E5\u3059\u308B\u3068\u304D\u306F ${flag} \u3092\u91CD\u306D\u3066\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08${flag} 91 ${flag} 92\uFF09\u3002`:`\u66F4\u65B0\u306F1\u3064\u306E\u5024\u3060\u3051\u3092\u53D7\u3051\u307E\u3059\uFF08\u7D5E\u308A\u8FBC\u307F\u306E twp backlog issue list \u3068\u306F\u9055\u3044\u307E\u3059\uFF09\u3002`)}
|
|
35
|
+
if(NUMERIC.test(value)&&!isExactNumericId(value)){throw new UsageError(`${flag} \u306E ID \u304C\u6570\u5024\u3068\u3057\u3066\u6271\u3048\u308B\u7BC4\u56F2\u3092\u8D85\u3048\u3066\u3044\u307E\u3059: ${value}`,`Backlog \u306E ID \u3092\u305D\u306E\u307E\u307E\u6E21\u3057\u3066\u304F\u3060\u3055\u3044\uFF08twp backlog status list / user list \u306E id \u5217\uFF09\u3002`)}return{flag,label,value,projectRef:NUMERIC.test(value)?null:requireUpdateProject(input,flag,value)}}async function resolveUpdateProject(ref,load){
|
|
36
|
+
if(isExactNumericId(ref))return ref;const resolved=await resolveNamed(ref,await load(),{flag:"--project",label:"Backlog \u30D7\u30ED\u30B8\u30A7\u30AF\u30C8",scope:BACKLOG_SCOPE_LABEL});if(!isExactNumericId(resolved.id)){throw new ApiResponseError(`Backlog \u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u300C${ref}\u300D\u306E ID \u3092\u6570\u5024\u3068\u3057\u3066\u9001\u308C\u307E\u305B\u3093: ${JSON.stringify(resolved.id)}\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}
|
|
37
|
+
return resolved.id}async function resolveUpdateRef(ref,projectId,load){if(ref.projectRef===null)return ref.value;if(projectId===void 0){throw new ApiResponseError(`${ref.flag} \u306E\u89E3\u6C7A\u5148\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u304C\u89E3\u6C7A\u3055\u308C\u3066\u3044\u307E\u305B\u3093\uFF08\u5185\u90E8\u30A8\u30E9\u30FC\uFF09\u3002`)}const resolved=await resolveNamed(ref.value,await load(projectId),{flag:ref.flag,label:ref.label,scope:BACKLOG_PROJECT_SCOPE_LABEL});if(!isExactNumericId(
|
|
38
|
+
resolved.id)){throw new ApiResponseError(`${ref.label}\u300C${ref.value}\u300D\u306E ID \u3092\u6570\u5024\u3068\u3057\u3066\u9001\u308C\u307E\u305B\u3093: ${JSON.stringify(resolved.id)}\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}return resolved.id}var NOTIFY_FLAG={name:"--notify",summary:"\u30B3\u30E1\u30F3\u30C8\u306E\u901A\u77E5\u5148\uFF08Backlog \u306E\u300C\u304A\u77E5\u3089\u305B\u3057\u305F\u3044\u30E6\u30FC\u30B6\u30FC\u300D\uFF09\u3002\u8907\u6570\u306A\u3089\u91CD\u306D\u3066\u6307\u5B9A\u3002\u6570\u5B57\u3060\u3051\u306E\u5024\u306F ID \u3068\u3057\u3066\u9001\u308A\u307E\u3059\uFF08\u540D\u524D\u306A\u3089 --project \u304C\u8981\u308B\uFF09",
|
|
39
|
+
takesValue:true,repeatable:true,placeholder:"<\u540D\u524D|ID>"};var NOTIFY_HELP="--notify <\u540D\u524D|ID> \u3067\u3001\u30B3\u30E1\u30F3\u30C8\u306E\u901A\u77E5\u5148\uFF08Backlog \u306E\u300C\u304A\u77E5\u3089\u305B\u3057\u305F\u3044\u30E6\u30FC\u30B6\u30FC\u300D\uFF09\u3092\u6307\u5B9A\u3067\u304D\u307E\u3059\u3002\n \u26A0 \u6307\u5B9A\u3057\u306A\u3044\u3068\u3001\u62C5\u5F53\u8005\u4EE5\u5916\u3078\u306F\u901A\u77E5\u304C\u5C4A\u304B\u306A\u3044\u3053\u3068\u304C\u3042\u308A\u307E\u3059\u3002\u62C5\u5F53\u3092\u5909\u3048\u305A\u306B\u76F8\u624B\u3078\u805E\u304D\u305F\u3044\u3068\u304D\u306F\n \u62C5\u5F53\u5909\u66F4\u3067\u4EE3\u7528\u305B\u305A --notify \u3092\u4F7F\u3063\u3066\u304F\u3060\u3055\u3044\u3002\u8907\u6570\u4EBA\u306A\u3089 --notify \u3092\u91CD\u306D\u3066\u6307\u5B9A\u3057\u307E\u3059\u3002\n \u6570\u5B57\u3060\u3051\u306E\u5024\u306F ID \u3068\u3057\u3066\u9001\u308A\u307E\u3059\u3002\u540D\u524D\u30FB\u30ED\u30B0\u30A4\u30F3ID\u30FB\u30E1\u30FC\u30EB\u3067\u6307\u3059\u306B\u306F --project \u304C\u5FC5\u8981\u3067\u3001\n \u7167\u5408\u306F\u5B8C\u5168\u4E00\u81F4\u3060\u3051\u3067\u3059\uFF08\u4E00\u81F4\u3057\u306A\u3051\u308C\u3070\u5019\u88DC\u3092\u51FA\u3057\u3066\u7D42\u4E86\u30B3\u30FC\u30C9 2 \u3067\u6B62\u307E\u308A\u3001\u4F55\u3082\u9001\u308A\u307E\u305B\u3093\uFF09\u3002";
|
|
40
|
+
function readNotifyRefs(input){return repeatedValues(input,NOTIFY_FLAG.name).map(raw=>updateRefOf(input,NOTIFY_FLAG.name,"Backlog \u30E6\u30FC\u30B6\u30FC",raw))}async function resolveNotifyRefs(refs,projectId,load){if(refs.length===0)return void 0;const ids=[];for(const ref of refs){const id=await resolveUpdateRef(ref,projectId,load);if(!ids.includes(id))ids.push(id)}return ids.join(",")}function notifyBody(input,body){const ids=resolvedList(input,"notifiedUserId");if(ids!==void 0)body["notifie\
|
|
41
|
+
dUserId"]=ids.map(Number)}function spaceNotes(input){const defaulted=input.resolved?.["spaceDefaulted"];return defaulted===void 0?[]:[`--space \u3092\u7701\u7565\u3057\u305F\u305F\u3081\u3001\u767B\u9332\u3055\u308C\u3066\u3044\u308B\u552F\u4E00\u306E Backlog \u30B9\u30DA\u30FC\u30B9 ${defaulted} \u3092\u4F7F\u3044\u307E\u3057\u305F\u3002`]}function updateNotes(input){const notes=[...spaceNotes(input)];const usedForName=input.resolved?.["projectUsed"]!==void 0;if(input.flags.get("--project")!==void 0&&
|
|
42
|
+
!usedForName){notes.push("--project \u306F\u4F7F\u3044\u307E\u305B\u3093\u3067\u3057\u305F\uFF08\u540D\u524D\u3067\u6307\u5B9A\u3057\u305F\u5024\u304C\u7121\u304F\u3001\u3059\u3079\u3066\u6570\u5024 ID \u3060\u3063\u305F\u305F\u3081\u3001\u540D\u524D\u306E\u89E3\u6C7A\u304C\u8981\u308A\u307E\u305B\u3093\uFF09\u3002")}return notes}function offsetNotes(input,received,offsetFlag="--offset"){const count=integerFlag(input.flags,"--count",{min:1,max:MAX_COUNT})??DEFAULT_COUNT;if(received<count)return[];
|
|
43
|
+
const offset=integerFlag(input.flags,offsetFlag,{min:0})??0;return[`${received} \u4EF6\uFF08--count \u306E\u4E0A\u9650\u3061\u3087\u3046\u3069\uFF09\u3092\u53D6\u5F97\u3057\u307E\u3057\u305F\u3002\u7D9A\u304D\u304C\u3042\u308B\u304B\u3082\u3057\u308C\u307E\u305B\u3093: ${offsetFlag} ${offset+received} \u3092\u4ED8\u3051\u3066\u7D9A\u304D\u3092\u53D6\u5F97\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u3053\u306E API \u306F\u30AB\u30FC\u30BD\u30EB\u3092\u8FD4\u3055\u306A\u3044\u305F\u3081 --all \u306F\u3042\u308A\u307E\u305B\u3093\uFF09\u3002`]}
|
|
44
|
+
var spaceResource={name:"space",summary:"\u9023\u643A\u6E08\u307F Backlog \u30B9\u30DA\u30FC\u30B9",operations:[{name:"list",summary:"\u9023\u643A\u6E08\u307F\u306E Backlog \u30B9\u30DA\u30FC\u30B9\u3092\u4E00\u89A7\u3059\u308B",usage:"twp backlog space list",description:"TWP \u306E\u5916\u90E8\u9023\u643A\u8A2D\u5B9A\u306B\u767B\u9332\u3055\u308C\u3066\u3044\u308B Backlog \u30B9\u30DA\u30FC\u30B9\u3092\u4E00\u89A7\u3057\u307E\u3059\u3002\n\u30B9\u30DA\u30FC\u30B9\u306F**\u30ED\u30B0\u30A4\u30F3\u3057\u3066\u3044\u308B\u30E6\u30FC\u30B6\u30FC\u3054\u3068**\u306E\u8A2D\u5B9A\u3067\u3059\uFF08\u30C6\u30CA\u30F3\u30C8\u5171\u901A\u3067\u306F\u3042\u308A\u307E\u305B\u3093\uFF09\u3002\n\u3053\u3053\u306B\u51FA\u308B id / space_url \u306F\u3001\u4ED6\u306E backlog \u30B3\u30DE\u30F3\u30C9\u306E --space \u306B\u305D\u306E\u307E\u307E\u6E21\u305B\u307E\u3059\u3002\nAPI \u30AD\u30FC\u306F\u8FD4\u308A\u307E\u305B\u3093\uFF08\u30B5\u30FC\u30D0\u5074\u3067\u30DE\u30B9\u30AF\u3055\u308C\u3066\u3044\u307E\u3059\uFF09\u3002",
|
|
45
|
+
flags:[],plan(input){if(input.args.length>0){throw new UsageError(`list \u306F\u4F4D\u7F6E\u5F15\u6570\u3092\u53D6\u308A\u307E\u305B\u3093: ${input.args.join(" ")}`,"twp backlog space list help")}return{method:"GET",path:`${BACKLOG_BASE_PATH}/spaces`}},summarize:body=>listOf(body,"spaces","Backlog \u30B9\u30DA\u30FC\u30B9\u4E00\u89A7").map(row=>pick(row,SPACE_COLUMNS)),raw:body=>listOf(body,"spaces","Backlog \u30B9\u30DA\u30FC\u30B9\u4E00\u89A7")}]};var projectResource={name:"project",summary:"B\
|
|
46
|
+
acklog \u30D7\u30ED\u30B8\u30A7\u30AF\u30C8",operations:[{name:"list",summary:"Backlog \u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3092\u4E00\u89A7\u3059\u308B",usage:"twp backlog project list [--space <ID|URL>]",description:"\u3053\u3053\u306B\u51FA\u308B id\uFF08\u6570\u5024\uFF09\u306F backlog issue list --project \u306B\u3001projectKey \u306F\nbacklog status list / backlog user list \u306E --project \u306B\u6E21\u305B\u307E\u3059\u3002\n\u3053\u306E API \u306F\u30DA\u30FC\u30B8\u30F3\u30B0\u3092\u6301\u305F\u305A\u3001\u5E38\u306B\u5168\u4EF6\u3092\u8FD4\u3057\u307E\u3059\u3002",
|
|
44
47
|
flags:[SPACE_FLAG],async prepare(input,ctx){if(input.args.length>0){throw new UsageError(`list \u306F\u4F4D\u7F6E\u5F15\u6570\u3092\u53D6\u308A\u307E\u305B\u3093: ${input.args.join(" ")}`,"twp backlog project list help")}return withSpace(input,await resolveSpace(input,ctx))},plan(input){return{method:"GET",path:backlogSpacePath(requireSpace(input),"/projects")}},plannedNotes:spaceNotes,summarize:body=>listOf(body,"projects","Backlog \u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u4E00\u89A7").map(row=>pick(
|
|
45
48
|
row,PROJECT_COLUMNS)),raw:body=>listOf(body,"projects","Backlog \u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u4E00\u89A7")}]};var issueResource={name:"issue",summary:"Backlog \u8AB2\u984C",operations:[{name:"list",summary:"Backlog \u8AB2\u984C\u3092\u4E00\u89A7\u30FB\u691C\u7D22\u3059\u308B",usage:"twp backlog issue list [--space <ID|URL>] [--project <\u30AD\u30FC|ID>] [--status <\u540D\u524D|ID>] [--assignee <\u540D\u524D|ID>] [--updated-since <yyyy-MM-dd>] [--count <\u4EF6\u6570>] [--offset <\u4EF6\u6570>]",
|
|
46
49
|
description:"\u26A0 \u3053\u306E\u4E00\u89A7\u306E description\uFF08\u672C\u6587\uFF09\u306F\u65E2\u5B9A\u3067 1000 \u6587\u5B57\u306B\u5207\u3089\u308C\u307E\u3059\u3002\n \u5207\u3089\u308C\u305F\u8AB2\u984C\u306B\u306F descriptionTruncated: true \u304C\u4ED8\u304D\u307E\u3059\uFF08\u9ED9\u3063\u3066\u5207\u308A\u307E\u305B\u3093\uFF09\u3002\n \u5168\u6587\u304C\u8981\u308B\u306A\u3089 --description-max 0 \u3092\u4ED8\u3051\u308B\u304B\u3001twp backlog issue get \u3092\u4F7F\u3063\u3066\u304F\u3060\u3055\u3044\n \uFF08get \u306F\u5E38\u306B\u5168\u6587\u3092\u8FD4\u3057\u307E\u3059\uFF09\u3002\n\n\u7D5E\u308A\u8FBC\u307F\u306E\u8907\u6570\u6307\u5B9A\u306F\u30AB\u30F3\u30DE\u533A\u5207\u308A\u3067\u3059\uFF08--status \u672A\u5BFE\u5FDC,\u51E6\u7406\u4E2D\uFF09\u3002\n--project / --status / --assignee / --created-user \u306F\u540D\u524D\u3067\u3082\u6570\u5024 ID \u3067\u3082\u6307\u5B9A\u3067\u304D\u307E\u3059\u3002\n \u540D\u524D\u3067\u6307\u5B9A\u3059\u308B\u5834\u5408\u3001--status / --assignee / --created-user \u306B\u306F --project \u304C\u5FC5\u8981\u3067\u3059\n \uFF08\u5019\u88DC\u304C Backlog \u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u914D\u4E0B\u306B\u3057\u304B\u306A\u3044\u305F\u3081\uFF09\u3002\u6570\u5024 ID \u306A\u3089 --project \u306F\u8981\u308A\u307E\u305B\u3093\u3002\n\n\u30DA\u30FC\u30B8\u30F3\u30B0:\n \u3053\u306E API \u306F\u30AA\u30D5\u30BB\u30C3\u30C8\u65B9\u5F0F\u3067\u3059\uFF08\u30AB\u30FC\u30BD\u30EB\u3092\u8FD4\u3055\u306A\u3044\u305F\u3081 --all / --cursor \u306F\u3042\u308A\u307E\u305B\
|
|
@@ -58,8 +61,8 @@ word");query["updatedSince"]=dateFlag(input.flags,"--updated-since");query["coun
|
|
|
58
61
|
"issues","\u8AB2\u984C\u4E00\u89A7").map(row=>pick(row,ISSUE_LIST_COLUMNS)),raw:body=>listOf(body,"issues","\u8AB2\u984C\u4E00\u89A7"),notes(body,input){const issues=listOf(body,"issues","\u8AB2\u984C\u4E00\u89A7");const truncated=issues.filter(row=>isRecord(row)&&row["descriptionTruncated"]===true).length;const notes=[...offsetNotes(input,issues.length)];if(truncated>0){notes.push(`${truncated} \u4EF6\u306E\u672C\u6587\u304C\u9014\u4E2D\u3067\u5207\u3089\u308C\u3066\u3044\u307E\u3059\uFF08descriptionTruncated: true\uFF09\u3002\u5168\u6587\u304C\u8981\u308B\u306A\u3089 --description-max 0 \u304B twp backlog issue get \u3092\u4F7F\u3063\u3066\u304F\
|
|
59
62
|
\u3060\u3055\u3044\u3002`)}return notes}},{name:"get",summary:"Backlog \u8AB2\u984C1\u4EF6\u306E\u8A73\u7D30\u3092\u8868\u793A\u3059\u308B\uFF08\u672C\u6587\u306F\u5168\u6587\uFF09",usage:"twp backlog issue get <\u8AB2\u984C\u30AD\u30FC|\u8AB2\u984CID> [--space <ID|URL>]",description:"\u672C\u6587\uFF08description\uFF09\u306F\u5E38\u306B\u5168\u6587\u304C\u8FD4\u308A\u307E\u3059\uFF08descriptionTruncated \u306F\u5FC5\u305A false\uFF09\u3002\n\u4E00\u89A7\uFF08twp backlog issue list\uFF09\u306F\u65E2\u5B9A\u3067 1000 \u6587\u5B57\u306B\u5207\u308B\u306E\u3067\u3001\u305D\u3053\u304C\u9055\u3044\u307E\u3059\u3002\n\u8AB2\u984C\u30AD\u30FC\uFF08HC_FM_ID-19171\uFF09\u3067\u3082\u8AB2\u984CID\uFF08\u6570\u5024\uFF09\u3067\u3082\u5F15\u3051\u307E\u3059\u3002\n\n"+
|
|
60
63
|
ISSUE_JSON_SHAPE_HELP,flags:[SPACE_FLAG,{name:"--issue",summary:"\u8AB2\u984C\u30AD\u30FC\uFF08\u4F4D\u7F6E\u5F15\u6570\u3068\u540C\u3058\u610F\u5473\uFF09",takesValue:true,placeholder:"<\u30AD\u30FC|ID>"}],async prepare(input,ctx){const ref=issueRef(input,"twp backlog issue get help");return withResolved(withSpace(input,await resolveSpace(input,ctx)),{issueRef:ref})},plan(input){const ref=requireResolved(input,"issueRef");return{method:"GET",path:backlogSpacePath(requireSpace(input),`/issues/${encodeURIComponent(
|
|
61
|
-
ref)}`)}},plannedNotes:spaceNotes,summarize:body=>pick(issueObject(body),ISSUE_GET_COLUMNS),raw:body=>issueObject(body)},{name:"update",summary:"Backlog \u8AB2\u984C\u306E\u62C5\u5F53\u30FB\u30B9\u30C6\u30FC\u30BF\u30B9\u3092\u5909\u66F4\u3059\u308B\uFF08--yes \u304C\u5FC5\u8981\uFF09",usage:"twp backlog issue update <\u8AB2\u984C\u30AD\u30FC|\u8AB2\u984CID> [--assignee <\u540D\u524D|ID>] [--status <\u540D\u524D|ID>] [--comment-file <\u30D1\u30B9>] [--project <\u30AD\u30FC|ID>] --yes",
|
|
62
|
-
|
|
64
|
+
ref)}`)}},plannedNotes:spaceNotes,summarize:body=>pick(issueObject(body),ISSUE_GET_COLUMNS),raw:body=>issueObject(body)},{name:"update",summary:"Backlog \u8AB2\u984C\u306E\u62C5\u5F53\u30FB\u30B9\u30C6\u30FC\u30BF\u30B9\u3092\u5909\u66F4\u3059\u308B\uFF08--yes \u304C\u5FC5\u8981\uFF09",usage:"twp backlog issue update <\u8AB2\u984C\u30AD\u30FC|\u8AB2\u984CID> [--assignee <\u540D\u524D|ID>] [--status <\u540D\u524D|ID>] [--comment-file <\u30D1\u30B9>] [--notify <\u540D\u524D|ID>]... [--project <\u30AD\u30FC|ID>] --yes",
|
|
65
|
+
description:`${EXTERNAL_WRITE_HELP}
|
|
63
66
|
|
|
64
67
|
--assignee / --status / --comment-file\uFF08--comment\uFF09\u306E\u3046\u3061\u3001\u5C11\u306A\u304F\u3068\u30821\u3064\u304C\u5FC5\u8981\u3067\u3059\u3002
|
|
65
68
|
\u6307\u5B9A\u3057\u305F\u9805\u76EE\u3060\u3051\u3092\u9001\u308A\u307E\u3059\uFF08\u6307\u5B9A\u3057\u306A\u304B\u3063\u305F\u9805\u76EE\u306F\u5909\u66F4\u3057\u307E\u305B\u3093\uFF09\u3002
|
|
@@ -81,14 +84,17 @@ ref)}`)}},plannedNotes:spaceNotes,summarize:body=>pick(issueObject(body),ISSUE_G
|
|
|
81
84
|
--comment-file \u3067\u6E21\u3057\u305F\u672C\u6587\u306F\u3001\u3053\u306E\u5909\u66F4\u306E\u7406\u7531\u3068\u3057\u3066\u540C\u3058\u30EA\u30AF\u30A8\u30B9\u30C8\u3067\u6295\u7A3F\u3055\u308C\u307E\u3059\u3002
|
|
82
85
|
${bodyHelp("--comment-file","--comment")}
|
|
83
86
|
|
|
87
|
+
${NOTIFY_HELP}
|
|
88
|
+
|
|
84
89
|
${ORDER_HELP}`,destructive:true,flags:[SPACE_FLAG,{name:"--issue",summary:"\u8AB2\u984C\u30AD\u30FC\uFF08\u4F4D\u7F6E\u5F15\u6570\u3068\u540C\u3058\u610F\u5473\uFF09",takesValue:true,placeholder:"<\u30AD\u30FC|ID>"},UPDATE_PROJECT_FLAG,{name:"--assignee",summary:"\u62C5\u5F53\u8005\u3002\u6570\u5B57\u3060\u3051\u306E\u5024\u306F ID \u3068\u3057\u3066\u9001\u308A\u307E\u3059\uFF08\u540D\u524D\u30FB\u30ED\u30B0\u30A4\u30F3ID\u30FB\u30E1\u30FC\u30EB\u306A\u3089 --project \u304C\u8981\u308B\uFF09",takesValue:true,
|
|
85
90
|
placeholder:"<\u540D\u524D|ID>"},{name:"--status",summary:"\u30B9\u30C6\u30FC\u30BF\u30B9\uFF08\u6570\u5024ID\u3001\u307E\u305F\u306F\u540D\u524D\u3002\u540D\u524D\u306A\u3089 --project \u304C\u8981\u308B\uFF09",takesValue:true,placeholder:"<\u540D\u524D|ID>"},{name:"--comment-file",summary:"\u5909\u66F4\u306E\u7406\u7531\u3092\u672C\u6587\u3068\u3057\u3066\u30D5\u30A1\u30A4\u30EB\u304B\u3089\u8AAD\u307F\u3001\u540C\u3058\u30EA\u30AF\u30A8\u30B9\u30C8\u3067\u6295\u7A3F\u3059\u308B\uFF08- \u3067\u6A19\u6E96\u5165\u529B\uFF09",
|
|
86
|
-
takesValue:true,placeholder:"<\u30D1\u30B9|->"},{name:"--comment",summary:"\u5909\u66F4\u306E\u7406\u7531\u3092\u76F4\u63A5\u6307\u5B9A\u3059\u308B\uFF08\u4E00\u884C\u5411\u3051\u3002--comment-file \u3068\u306E\u4F75\u7528\u306F\u30A8\u30E9\u30FC\uFF09",takesValue:true,placeholder:"<\u6587\u5B57\u5217>"}],async prepare(input,ctx){const ref=issueRef(input,"twp backlog issue update help");const assigneeRef=readUpdateRef(input,"--assignee","Backlog \u30E6\u30FC\u30B6\u30FC");const statusRef=readUpdateRef(
|
|
87
|
-
input,"--status","Backlog \u30B9\u30C6\u30FC\u30BF\u30B9");const comment=await readBody(input,{flag:"--comment",fileFlag:"--comment-file",label:"\u5909\u66F4\u30B3\u30E1\u30F3\u30C8",maxChars:BODY_MAX_CHARS,usage:"twp backlog issue update help"});if(comment===void 0&&assigneeRef===void 0&&statusRef===void 0){throw new UsageError("\u5909\u66F4\u3059\u308B\u9805\u76EE\u304C\u3042\u308A\u307E\u305B\u3093","--assignee <\u540D\u524D|ID> / --status <\u540D\u524D|ID> / --comment-file
|
|
88
|
-
const space=await resolveSpace(input,ctx);const resolved={issueRef:ref};const projectRef=assigneeRef?.projectRef??statusRef?.projectRef??
|
|
89
|
-
await
|
|
90
|
-
|
|
91
|
-
|
|
91
|
+
takesValue:true,placeholder:"<\u30D1\u30B9|->"},{name:"--comment",summary:"\u5909\u66F4\u306E\u7406\u7531\u3092\u76F4\u63A5\u6307\u5B9A\u3059\u308B\uFF08\u4E00\u884C\u5411\u3051\u3002--comment-file \u3068\u306E\u4F75\u7528\u306F\u30A8\u30E9\u30FC\uFF09",takesValue:true,placeholder:"<\u6587\u5B57\u5217>"},NOTIFY_FLAG],async prepare(input,ctx){const ref=issueRef(input,"twp backlog issue update help");const assigneeRef=readUpdateRef(input,"--assignee","Backlog \u30E6\u30FC\u30B6\u30FC");const statusRef=readUpdateRef(
|
|
92
|
+
input,"--status","Backlog \u30B9\u30C6\u30FC\u30BF\u30B9");const notifyRefs=readNotifyRefs(input);const comment=await readBody(input,{flag:"--comment",fileFlag:"--comment-file",label:"\u5909\u66F4\u30B3\u30E1\u30F3\u30C8",maxChars:BODY_MAX_CHARS,usage:"twp backlog issue update help"});if(comment===void 0&&assigneeRef===void 0&&statusRef===void 0){throw new UsageError("\u5909\u66F4\u3059\u308B\u9805\u76EE\u304C\u3042\u308A\u307E\u305B\u3093","--assignee <\u540D\u524D|ID> / --status <\u540D\u524D|ID> / --comment-file\
|
|
93
|
+
<\u30D1\u30B9> \u306E\u3046\u3061\u3001\u5C11\u306A\u304F\u3068\u30821\u3064\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08--notify \u306F\u901A\u77E5\u5148\u306E\u6307\u5B9A\u3067\u3001\u305D\u308C\u3060\u3051\u3067\u306F\u5909\u66F4\u306B\u306A\u308A\u307E\u305B\u3093\uFF09\u3002")}const space=await resolveSpace(input,ctx);const resolved={issueRef:ref};const projectRef=assigneeRef?.projectRef??statusRef?.projectRef??notifyRefs.find(ref2=>ref2.projectRef!==null)?.projectRef??null;
|
|
94
|
+
const projectId=projectRef===null?void 0:await resolveUpdateProject(projectRef,()=>ctx.resolver.backlogProjects(space.id));if(projectId!==void 0)resolved["projectUsed"]=projectId;if(assigneeRef!==void 0){resolved["assigneeId"]=await resolveUpdateRef(assigneeRef,projectId,id=>ctx.resolver.backlogUsers(space.id,id))}if(statusRef!==void 0){resolved["statusId"]=await resolveUpdateRef(statusRef,projectId,id=>ctx.resolver.backlogStatuses(space.id,id))}const notified=await resolveNotifyRefs(notifyRefs,
|
|
95
|
+
projectId,id=>ctx.resolver.backlogUsers(space.id,id));if(notified!==void 0)resolved["notifiedUserId"]=notified;if(comment!==void 0)resolved["comment"]=comment;return withSpace(withResolved(input,resolved),space)},plan(input){const body={};for(const key of["assigneeId","statusId"]){const value=input.resolved?.[key];if(value!==void 0)body[key]=Number(value)}const comment=input.resolved?.["comment"];if(comment!==void 0)body["comment"]=comment;notifyBody(input,body);return{method:"PATCH",path:backlogSpacePath(
|
|
96
|
+
requireSpace(input),`/issues/${encodeURIComponent(requireResolved(input,"issueRef"))}`),body}},plannedNotes:updateNotes,summarize:body=>pick(issueObject(body),ISSUE_GET_COLUMNS),raw:body=>issueObject(body)}]};var commentResource={name:"comment",summary:"Backlog \u8AB2\u984C\u306E\u30B3\u30E1\u30F3\u30C8\uFF08\u4E00\u89A7\u30FB\u6295\u7A3F\uFF09",operations:[{name:"list",summary:"Backlog \u8AB2\u984C\u306E\u30B3\u30E1\u30F3\u30C8\u3092\u4E00\u89A7\u3059\u308B",usage:"twp backlog comment list <\u8AB2\u984C\u30AD\
|
|
97
|
+
\u30FC|\u8AB2\u984CID> [--space <ID|URL>] [--count <\u4EF6\u6570>] [--order <\u9806\u5E8F>]",description:`\u5404\u30B3\u30E1\u30F3\u30C8\u306B\u306F changeLog\uFF08\u30B9\u30C6\u30FC\u30BF\u30B9\u30FB\u62C5\u5F53\u306E\u5909\u66F4\u5C65\u6B74\uFF09\u304C\u5FC5\u305A\u542B\u307E\u308C\u307E\u3059\u3002
|
|
92
98
|
\u300C\u3044\u3064\u30FB\u8AB0\u304C\u30FB\u8AB0\u306B\u632F\u3063\u305F\u304B\u300D\u306F Backlog \u3067\u306F\u3053\u3053\u306B\u3057\u304B\u7121\u3044\u306E\u3067\u3001\u8981\u7D04\u5217\u304B\u3089\u3082\u843D\u3068\u3057\u307E\u305B\u3093\u3002
|
|
93
99
|
|
|
94
100
|
\u30DA\u30FC\u30B8\u30F3\u30B0:
|
|
@@ -98,13 +104,17 @@ placeholder:"<\u4EF6\u6570>"},{name:"--order",summary:"\u4E26\u3073\u9806\uFF08a
|
|
|
98
104
|
placeholder:"<ID>"}],async prepare(input,ctx){const ref=issueRef(input,"twp backlog comment list help");return withResolved(withSpace(input,await resolveSpace(input,ctx)),{issueRef:ref})},plan(input){const ref=requireResolved(input,"issueRef");return{method:"GET",path:backlogSpacePath(requireSpace(input),`/issues/${encodeURIComponent(ref)}/comments`),query:{count:integerFlag(input.flags,"--count",{min:1,max:MAX_COUNT}),order:order(input.flags.get("--order")),minId:integerFlag(input.flags,"--min-\
|
|
99
105
|
id",{min:0}),maxId:integerFlag(input.flags,"--max-id",{min:0})}}},plannedNotes:spaceNotes,summarize:body=>listOf(body,"comments","\u30B3\u30E1\u30F3\u30C8\u4E00\u89A7").map(commentRow),raw:body=>listOf(body,"comments","\u30B3\u30E1\u30F3\u30C8\u4E00\u89A7"),notes(body,input){const received=listOf(body,"comments","\u30B3\u30E1\u30F3\u30C8\u4E00\u89A7").length;const count=integerFlag(input.flags,"--count",{min:1,max:MAX_COUNT})??DEFAULT_COUNT;return received<count?[]:[`${received} \u4EF6\uFF08--count \u306E\u4E0A\u9650\u3061\u3087\u3046\
|
|
100
106
|
\u3069\uFF09\u3092\u53D6\u5F97\u3057\u307E\u3057\u305F\u3002\u7D9A\u304D\u304C\u3042\u308B\u304B\u3082\u3057\u308C\u307E\u305B\u3093: --min-id / --max-id \u3067\u7D9A\u304D\u3092\u53D6\u5F97\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u3053\u306E API \u306F\u30AB\u30FC\u30BD\u30EB\u3092\u8FD4\u3055\u306A\u3044\u305F\u3081 --all \u306F\u3042\u308A\u307E\u305B\u3093\uFF09\u3002`]}},{name:"create",summary:"Backlog \u8AB2\u984C\u306B\u30B3\u30E1\u30F3\u30C8\u3092\u6295\u7A3F\u3059\u308B\uFF08--yes \u304C\u5FC5\u8981\uFF09",
|
|
101
|
-
usage:"twp backlog comment create <\u8AB2\u984C\u30AD\u30FC|\u8AB2\u984CID> --body-file <\u30D1\u30B9> [--space <ID|URL>] --yes",description:`${EXTERNAL_WRITE_HELP}
|
|
107
|
+
usage:"twp backlog comment create <\u8AB2\u984C\u30AD\u30FC|\u8AB2\u984CID> --body-file <\u30D1\u30B9> [--notify <\u540D\u524D|ID>]... [--project <\u30AD\u30FC|ID>] [--space <ID|URL>] --yes",description:`${EXTERNAL_WRITE_HELP}
|
|
102
108
|
|
|
103
109
|
${bodyHelp("--body-file","--body")}
|
|
104
110
|
|
|
105
|
-
${
|
|
106
|
-
|
|
107
|
-
|
|
111
|
+
${NOTIFY_HELP}
|
|
112
|
+
|
|
113
|
+
${ORDER_HELP}`,destructive:true,flags:[...BODY_FLAGS,SPACE_FLAG,{name:"--issue",summary:"\u8AB2\u984C\u30AD\u30FC\uFF08\u4F4D\u7F6E\u5F15\u6570\u3068\u540C\u3058\u610F\u5473\uFF09",takesValue:true,placeholder:"<\u30AD\u30FC|ID>"},NOTIFY_FLAG,{...UPDATE_PROJECT_FLAG,summary:"--notify \u3092\u540D\u524D\u3067\u6307\u5B9A\u3059\u308B\u3068\u304D\u306B\u8981\u308B Backlog \u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\uFF08\u30AD\u30FC / \u540D\u79F0 / \u6570\u5024ID\uFF09"}],async prepare(input,ctx){const ref=issueRef(
|
|
114
|
+
input,"twp backlog comment create help");const notifyRefs=readNotifyRefs(input);const content=await readBody(input,{flag:"--body",fileFlag:"--body-file",label:"\u30B3\u30E1\u30F3\u30C8\u672C\u6587",maxChars:BODY_MAX_CHARS,usage:"twp backlog comment create help"});if(content===void 0){throw new UsageError("\u30B3\u30E1\u30F3\u30C8\u672C\u6587\u3092 --body-file <\u30D1\u30B9> \u304B --body <\u6587\u5B57\u5217> \u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044","twp backlog comment create help")}
|
|
115
|
+
const space=await resolveSpace(input,ctx);const resolved={issueRef:ref,content};const projectRef=notifyRefs.find(notify=>notify.projectRef!==null)?.projectRef??null;const projectId=projectRef===null?void 0:await resolveUpdateProject(projectRef,()=>ctx.resolver.backlogProjects(space.id));if(projectId!==void 0)resolved["projectUsed"]=projectId;const notified=await resolveNotifyRefs(notifyRefs,projectId,id=>ctx.resolver.backlogUsers(space.id,id));if(notified!==void 0)resolved["notifiedUserId"]=notified;
|
|
116
|
+
return withSpace(withResolved(input,resolved),space)},plan(input){const body={content:requireResolved(input,"content")};notifyBody(input,body);return{method:"POST",path:backlogSpacePath(requireSpace(input),`/issues/${encodeURIComponent(requireResolved(input,"issueRef"))}/comments`),body}},plannedNotes:updateNotes,summarize:body=>commentRow(commentObject(body)),raw:commentObject}]};function projectMasterResource(spec){return{name:spec.name,summary:spec.summary,operations:[{name:"list",summary:spec.
|
|
117
|
+
operationSummary,usage:`twp backlog ${spec.name} list --project <\u30AD\u30FC|ID> [--space <ID|URL>]`,description:`${spec.description}
|
|
108
118
|
\u3053\u306E API \u306F\u30DA\u30FC\u30B8\u30F3\u30B0\u3092\u6301\u305F\u305A\u3001\u5E38\u306B\u5168\u4EF6\u3092\u8FD4\u3057\u307E\u3059\u3002`,flags:[SPACE_FLAG,{name:"--project",summary:"Backlog \u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u30AD\u30FC\uFF08HC_FM_ID\uFF09\u304B\u6570\u5024ID\u3002\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u540D\u3067\u306F\u5F15\u3051\u307E\u305B\u3093",takesValue:true,placeholder:"<\u30AD\u30FC|ID>"}],async prepare(input,ctx){if(input.args.length>0){throw new UsageError(`l\
|
|
109
119
|
ist \u306F\u4F4D\u7F6E\u5F15\u6570\u3092\u53D6\u308A\u307E\u305B\u3093: ${input.args.join(" ")}`,`twp backlog ${spec.name} list help`)}const space=await resolveSpace(input,ctx);const refs=commaList(input.flags,"--project");if(refs===void 0){throw new UsageError("--project \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",`twp backlog ${spec.name} list help`)}if(refs.length>1){throw new UsageError(`--project \u306B\u8907\u6570\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\uFF08\u53D7\u3051\u53D6\u3063\u305F\u5024: ${refs.
|
|
110
120
|
join(" / ")}\uFF09`,"\u3053\u306E\u4E00\u89A7\u306F1\u3064\u306E Backlog \u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306B\u5C5E\u3057\u307E\u3059\u3002")}const ref=refs[0];return withResolved(withSpace(input,space),{projectRef:ref})},plan(input){const ref=requireResolved(input,"projectRef");if(!/^[A-Za-z0-9_]+$/.test(ref)){throw new UsageError(`--project \u306E\u5F62\u5F0F\u304C\u9055\u3044\u307E\u3059: ${ref}`,"Backlog \u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u30AD\u30FC\uFF08HC_FM_ID\uFF09\u304B\u6570\u5024 ID \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u540D\u3067\u306F\u5F15\u3051\u307E\u305B\u3093\uFF08twp backlog project list \u3067 proj\
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{analysisForbidden}from"./chunk-
|
|
4
|
-
import{isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiRejectedError,ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";import"./chunk-J7QYPKVK.js";import"./chunk-4VZKNEVN.js";import"./chunk-RZVI6PMW.js";import"./chunk-QQRJLH6B.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";import fs from"fs";import path from"path";var PATH="/api/v2/budget";var ANALYSIS_FORBIDDEN=analysisForbidden("");function budgetForbidden(body){if(body?.error==="forbidden")return"\u3053\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3092\u95B2\u89A7\u3067\u304D\u307E\u305B\u3093\uFF08\u30E1\u30F3\u30D0\u30FC\u3067\u306A\u3044\u304B\u3001\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u6A29\u9650\u304C\u8DB3\u308A\u307E\u305B\u3093\uFF09\u3002\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u7BA1\u7406\u8005\u306B\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002";
|
|
3
|
+
import{analysisForbidden}from"./chunk-APPYZQNC.js";import"./chunk-7EJOKJLV.js";import"./chunk-EXT4AIDF.js";import"./chunk-XGYOJHZC.js";import"./chunk-JJSBBWJ5.js";import{nonEmpty}from"./chunk-MI6HVYR2.js";import{repeatedValues}from"./chunk-RX5HWI4L.js";import"./chunk-6LSQCOCJ.js";import"./chunk-HNG6MF26.js";import"./chunk-HVZUXLQ4.js";import{ApiError,MultipartBody}from"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";import{
|
|
4
|
+
requireResolved,withResolved}from"./chunk-PS5QFKHB.js";import"./chunk-II5RVJQN.js";import{isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiRejectedError,ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";import"./chunk-J7QYPKVK.js";import"./chunk-4VZKNEVN.js";import"./chunk-RZVI6PMW.js";import"./chunk-QQRJLH6B.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";import fs from"fs";import path from"path";var PATH="/api/v2/budget";var ANALYSIS_FORBIDDEN=analysisForbidden("");function budgetForbidden(body){if(body?.error==="forbidden")return"\u3053\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3092\u95B2\u89A7\u3067\u304D\u307E\u305B\u3093\uFF08\u30E1\u30F3\u30D0\u30FC\u3067\u306A\u3044\u304B\u3001\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u6A29\u9650\u304C\u8DB3\u308A\u307E\u305B\u3093\uFF09\u3002\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u7BA1\u7406\u8005\u306B\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002";
|
|
5
5
|
return ANALYSIS_FORBIDDEN(body)}var FORBIDDEN=budgetForbidden;var EDIT_HINT="\u76EE\u6A19\u306E\u8A2D\u5B9A\u30FB\u30B3\u30D4\u30FC\u30FB\u53D6\u308A\u8FBC\u307F\u306F\u3001\u5168\u4F53\u7BA1\u7406\u8005\u304B\u5206\u6790\u306E\u6A29\u9650\u304C\u300C\u7BA1\u7406\u8005\u300D\u306E\u4EBA\u3060\u3051\u304C\u3067\u304D\u307E\u3059\u3002\u6309\u5206\u306F\u305D\u308C\u306B\u52A0\u3048\u3066\u3001\u305D\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u7BA1\u7406\u8005\u3082\u3067\u304D\u307E\u3059\n\uFF08\u3069\u3061\u3089\u3082\u5206\u6790\u306E\u6A29\u9650\u304C\u300C\u306A\u3057\u300D\u3067\u306F\u4F7F\u3048\u307E\u305B\u3093\uFF09\u3002";
|
|
6
6
|
var YEAR_MIN=2e3;var YEAR_MAX=2100;var IMPORT_MAX_BYTES=2048*1024;var SET_FILE_MAX_BYTES=4*1024*1024;var AMOUNT_MAX=999999999999;var SHOWN_OVERWRITES=24;var BOM=new RegExp(`^${String.fromCharCode(65279)}`);function usageOf(op){return`twp budget ${op} help`}function text(value){return typeof value==="string"||typeof value==="number"?String(value):""}function yen(value){return typeof value==="number"?`${value.toLocaleString("ja-JP")} \u5186`:"\uFF08\u306A\u3057\uFF09"}function noArgs(input,op){if(input.
|
|
7
7
|
args.length>0)throw new UsageError(`${op} \u306F\u4F4D\u7F6E\u5F15\u6570\u3092\u53D6\u308A\u307E\u305B\u3093: ${input.args.join(" ")}`,usageOf(op))}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 dataRecord(body,what){const data=envelope(body,what)["data"];
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
|
+
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
+
import{pick}from"./chunk-SPZ3GBYC.js";import{REUSE_LAST_SUCCESS_MS,capacityError,probeCapacityOutcome}from"./chunk-G4TZFGNN.js";import"./chunk-N2UVRM3Z.js";import{projectFileKey}from"./chunk-GY7KI5E5.js";import"./chunk-PMOUHEJQ.js";import"./chunk-J7QYPKVK.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";import fs from"fs";import os from"os";import path from"path";function lastSuccessPath(stateDir,projectId){return path.join(stateDir,`capacity-report-${projectFileKey(projectId)}.json`)}function readLastSuccess(file){try{const v=JSON.parse(fs.readFileSync(file,"utf8"));if(typeof v!=="object"||v===null)return null;const{payload,at}=v;if(typeof payload!=="string"||typeof at!=="number"||!Number.isFinite(at))return null;return{payload,at}}catch{return null}}function writeLastSuccess(file,value,stderr){try{fs.mkdirSync(path.dirname(file),{recursive:true,mode:448});
|
|
4
|
+
fs.writeFileSync(file,JSON.stringify(value),{mode:384})}catch(err){stderr(`\u26A0\uFE0F \u76F4\u524D\u306E\u6210\u529F\u5024\u3092 ${file} \u3078\u4FDD\u5B58\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08${err.message}\uFF09
|
|
5
|
+
`)}}async function registeredAsLoop(api,runnerId){const res=await api.runners();if(!res.ok)return false;const runners=pick(res.json,"runners");if(!Array.isArray(runners))return false;return runners.some(r=>{if(typeof r!=="object"||r===null)return false;const row=r;return row["runner_id"]===runnerId&&(row["kind"]??"loop")==="loop"})}function loopRegisteredMessage(runnerId){return`\u3053\u306E\u30DE\u30B7\u30F3\uFF08runner_id: ${runnerId}\uFF09\u306F\u540C\u3058\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3067\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u30EB\u30FC\u30D7\u3068\u3057\u3066\u767B\u9332\u3055\u308C\u3066\u3044\u308B\u305F\u3081\u3001\u9001\u308A\u307E\u305B\u3093\u3067\u3057\u305F\u3002
|
|
6
|
+
\u30EB\u30FC\u30D7\u304C\u52D5\u3044\u3066\u3044\u308B\u9593\u306F\u3001\u67A0\u60C5\u5831\u306F\u30EB\u30FC\u30D7\u306E heartbeat \u3067\u9001\u3089\u308C\u307E\u3059\uFF08capacity_probe \u306E\u8A2D\u5B9A\u306F\u30EB\u30FC\u30D7\u3068\u5171\u901A\u3067\u3059\uFF09
|
|
7
|
+
`}async function runCapacityReport(input){const{api,runnerId,stdout,stderr}=input;const now=input.now??(()=>Date.now());if(input.probe===null){stdout(`capacity_probe \u304C\u672A\u8A2D\u5B9A\u306E\u305F\u3081\u3001\u4F55\u3082\u9001\u308A\u307E\u305B\u3093\u3067\u3057\u305F\uFF08\u8A2D\u5B9A\u5148: ~/.twp/loops/${input.projectId}.json\uFF09
|
|
8
|
+
`);return 0}if(!input.runnerIdPersisted){stderr(`\u274C runner_id \u3092\u72B6\u614B\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\uFF08${input.stateDir}\uFF09\u3078\u4FDD\u5B58\u3067\u304D\u306A\u3044\u305F\u3081\u3001\u9001\u308A\u307E\u305B\u3093\u3067\u3057\u305F\u3002
|
|
9
|
+
\u3053\u306E\u307E\u307E\u9001\u308B\u3068\u5B9F\u884C\u306E\u305F\u3073\u306B\u5225\u306E\u5B9F\u884C\u6A5F\u3068\u3057\u3066\u767B\u9332\u3055\u308C\u307E\u3059\u3002\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306E\u6A29\u9650\u3092\u76F4\u3059\u304B\u3001RUNNER_ID \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044
|
|
10
|
+
`);return 1}if(await registeredAsLoop(api,runnerId)){stdout(loopRegisteredMessage(runnerId));return 0}const log=message=>stderr(`${message.trimStart()}
|
|
11
|
+
`);const runProbe=input.runProbe??probeCapacityOutcome;let outcome;try{outcome=await runProbe(input.probe,input.cwd,log,input.env??process.env)}catch{outcome={payload:capacityError("exit_status"),ok:false}}const file=lastSuccessPath(input.stateDir,input.projectId);let capacity=outcome.payload;let reused=false;if(!outcome.ok){const last=readLastSuccess(file);if(last!==null&&now()-last.at<REUSE_LAST_SUCCESS_MS&&now()>=last.at){capacity=last.payload;reused=true;stderr("\u76F4\u524D\u306B\u53D6\u5F97\u3067\u304D\u305F\u67A0\u60C5\u5831\u3092\u9001\u308A\u307E\u3059\uFF08\u4E00\u6642\u7684\u306A\u5931\u6557\u3068\u3057\u3066\u6271\u3044\u307E\
|
|
12
|
+
\u3059\uFF09\n")}}const payload={runner_id:runnerId,capacity};const host=input.hostname??os.hostname();if(host)payload.hostname=host;if(input.platform!==null)payload.platform=input.platform;if(input.version)payload.version=input.version;const res=await api.capacityReport(payload);if(res.ok){if(outcome.ok)writeLastSuccess(file,{payload:outcome.payload,at:now()},stderr);const what=outcome.ok?"\u67A0\u60C5\u5831":reused?"\u76F4\u524D\u306E\u67A0\u60C5\u5831":"\u53D6\u5F97\u5931\u6557\uFF08error\uFF09";
|
|
13
|
+
stdout(`${what}\u3092\u9001\u308A\u307E\u3057\u305F\uFF08runner_id: ${runnerId}\uFF09
|
|
14
|
+
`);return 0}if(res.status===409&&pick(res.json,"reason")==="kind_mismatch"){stdout(loopRegisteredMessage(runnerId));return 0}const detail=res.transportError!==null?res.transportError:`HTTP ${res.status??"?"}${typeof pick(res.json,"message")==="string"?`: ${String(pick(res.json,"message")).slice(0,200)}`:""}`;stderr(`\u274C \u67A0\u60C5\u5831\u3092\u9001\u308C\u307E\u305B\u3093\u3067\u3057\u305F\uFF08${detail}\uFF09
|
|
15
|
+
`);return 1}export{lastSuccessPath,runCapacityReport};
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
|
+
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
+
import{isModeId,isPermissionModeId}from"./chunk-2LOT54OO.js";import{API_TOKEN,HELP_TOKEN,isDomainName}from"./chunk-KDH3KWPO.js";import{splitFlagToken}from"./chunk-QQRJLH6B.js";var BUILTIN_COMMANDS=["login","logout","whoami","update","task-loop"];var TASK_LOOP_ACTIONS=["run","status","stop","schedule","setup","charter","skill","plan","capacity"];var VALUE_FLAGS=new Set(["-p","--print","--profile","--tenant","--mode","--permission-mode","--model","--allowed-tools","--disallowed-tools","--project","--engine","--interval","--max-cycles","--ai","--workspace","--ai-config-file","--now","--counts","--gate","--file","--out","--revision","--dir","--from","--to","--output","--q\
|
|
4
|
+
uery"]);var BOOLEAN_FLAGS=new Set(["-h","--help","-v","--version","--no-tui","--doctor","--password","--token","--no-browser","--safe","--daemon","--force-runner","--force","--drain","--yes","-y","--no-ai-config-file","--verbose","--all","--empty","--check","--dry-run","--debug","--refresh"]);function dispatch(argv,limit=2){const tokens=[];const indexes=[];let truncated=false;for(let i=0;i<argv.length;i++){const arg=argv[i];if(arg===void 0)continue;if(arg.startsWith("-")&&arg!=="-"){const{name,value:inline}=splitFlagToken(
|
|
5
|
+
arg);if(BOOLEAN_FLAGS.has(name)){if(inline!==void 0){truncated=true;break}continue}if(VALUE_FLAGS.has(name)){if(inline!==void 0)continue;const next=argv[i+1];if(next!==void 0&&(!next.startsWith("-")||next==="-"))i++;continue}truncated=true;break}if(arg===""||arg==="-")continue;if(tokens.length>=limit)break;tokens.push(arg);indexes.push(i)}return{tokens,indexes,truncated}}function isBuiltin(token){return token!==void 0&&BUILTIN_COMMANDS.includes(token)}function isTaskLoopAction(token){return token!==
|
|
6
|
+
void 0&&TASK_LOOP_ACTIONS.includes(token)}function resolveRoute(result){const{tokens,indexes}=result;const[first,second]=tokens;const firstIndex=indexes[0];if(first===void 0||firstIndex===void 0)return{kind:"none",consumed:[]};const consumed=[firstIndex];const secondIndex=indexes[1];if(isBuiltin(first)){if(first==="task-loop"&&isTaskLoopAction(second)){if(secondIndex!==void 0)consumed.push(secondIndex);return{kind:"builtin",command:first,action:second,consumed}}return{kind:"builtin",command:first,
|
|
7
|
+
...first==="task-loop"?{action:"run"}:{},consumed}}if(second!==void 0&&secondIndex!==void 0)consumed.push(secondIndex);return{kind:"domain",domain:first,...second!==void 0?{operation:second}:{},consumed}}var GLOBAL_FLAGS=new Set(["-h","--help","-v","--version","--profile","--output","--query","--dry-run","--debug","--yes","-y","--refresh"]);function parseArgv(argv){const out={command:"tui",safe:false,daemon:false,forceRunner:false,stopForce:false,logoutForce:false,stopDrain:false,noTui:false,doctor:false,yes:false,skillAll:false,planEmpty:false,planCheck:false,noAiConfigFile:false,verbose:false,loginMethod:"browser",loginNoBrowser:false,promptFromStdin:false,domainArgv:[],domainHelp:false,dryRun:false,
|
|
8
|
+
debug:false,refresh:false,unknown:[],allowedTools:[],disallowedTools:[]};const route=resolveRoute(dispatch(argv));const consumed=new Set;const[firstIndex,secondIndex]=route.consumed;if(route.kind==="builtin"){out.command=route.command;if(route.action!==void 0)out.taskLoopAction=route.action;for(const index of route.consumed)consumed.add(index)}else if(route.kind==="domain"){if(route.domain===HELP_TOKEN){if(route.operation===void 0){out.command="help";if(firstIndex!==void 0)consumed.add(firstIndex)}else if(isDomainName(
|
|
9
|
+
route.operation)){out.command="domain";out.domain=route.operation;out.domainHelp=true;if(firstIndex!==void 0)consumed.add(firstIndex);if(secondIndex!==void 0)consumed.add(secondIndex)}else if(route.operation===API_TOKEN){out.command="api";out.domainHelp=true;if(firstIndex!==void 0)consumed.add(firstIndex);if(secondIndex!==void 0)consumed.add(secondIndex)}}else if(route.domain===API_TOKEN){out.command="api";if(firstIndex!==void 0)consumed.add(firstIndex)}else if(isDomainName(route.domain)){out.command=
|
|
10
|
+
"domain";out.domain=route.domain;if(route.operation!==void 0)out.operation=route.operation;for(const index of route.consumed)consumed.add(index)}}const hasSubcommandToken=route.kind==="builtin"||route.kind==="domain"&&(route.domain===HELP_TOKEN||route.domain===API_TOKEN||isDomainName(route.domain));const isDomainRoute=out.command==="domain"||out.command==="api";const takeValue=(i,flag,inline)=>{const value=inline??argv[i+1];if(value===void 0||inline===void 0&&value.startsWith("-")){out.unknown.push(
|
|
11
|
+
flag);return{step:0}}if(value.trim()===""){out.unknown.push(inline===void 0?`${flag} `:`${flag}=${inline}`);return{step:0}}return{value,step:inline===void 0?1:0}};let optionsClosed=false;for(let i=0;i<argv.length;i++){if(consumed.has(i))continue;const raw=argv[i];if(raw===void 0)continue;if(isDomainRoute&&raw==="--")optionsClosed=true;const{name:arg,value:inline}=splitFlagToken(raw);if(isDomainRoute&&(optionsClosed||!GLOBAL_FLAGS.has(arg))){out.domainArgv.push(raw);continue}if(inline!==void 0&&BOOLEAN_FLAGS.
|
|
12
|
+
has(arg)){out.unknown.push(raw);continue}switch(arg){case"-h":case"--help":if(isDomainRoute)out.domainHelp=true;else out.command="help";break;case"-v":case"--version":out.command="version";break;case"--no-tui":out.noTui=true;break;case"--doctor":out.doctor=true;break;case"--password":out.loginMethod="password";break;case"--token":out.loginMethod="token";break;case"--no-browser":out.loginNoBrowser=true;break;case"--profile":{const{value,step}=takeValue(i,"--profile",inline);if(value!==void 0){out.
|
|
13
|
+
profile=value;i+=step}break}case"-p":case"--print":{const next=inline??argv[i+1];const step=inline===void 0?1:0;if(hasSubcommandToken){out.unknown.push(raw)}else if(next==="-"){out.command="print";out.promptFromStdin=true;out.prompt="";i+=step}else if(next!==void 0&&(inline!==void 0||!next.startsWith("-"))){out.command="print";out.prompt=next;i+=step}else{out.unknown.push(raw)}break}case"--output":{const{value,step}=takeValue(i,"--output",inline);if(value!==void 0){out.output=value;i+=step}break}case"\
|
|
14
|
+
--query":{const{value,step}=takeValue(i,"--query",inline);if(value!==void 0){out.query=value;i+=step}break}case"--dry-run":out.dryRun=true;break;case"--debug":out.debug=true;break;case"--refresh":out.refresh=true;break;case"--tenant":{const{value,step}=takeValue(i,"--tenant",inline);if(value!==void 0){out.tenant=value;i+=step}break}case"--mode":{const next=inline??argv[i+1];const step=inline===void 0?1:0;if(isModeId(next)){out.mode=next;i+=step}else if(next!==void 0&&(inline!==void 0||!next.startsWith(
|
|
15
|
+
"-"))){out.unknown.push(inline!==void 0?raw:`--mode ${next}`);i+=step}else{out.unknown.push("--mode")}break}case"--permission-mode":{const next=inline??argv[i+1];const step=inline===void 0?1:0;if(isPermissionModeId(next)){out.permissionMode=next;i+=step}else if(next!==void 0&&(inline!==void 0||!next.startsWith("-"))){out.unknown.push(inline!==void 0?raw:`--permission-mode ${next}`);i+=step}else{out.unknown.push("--permission-mode")}break}case"--allowed-tools":case"--disallowed-tools":{const{value,
|
|
16
|
+
step}=takeValue(i,arg,inline);if(value!==void 0){(arg==="--allowed-tools"?out.allowedTools:out.disallowedTools).push(value);i+=step}break}case"--model":{const{value,step}=takeValue(i,"--model",inline);if(value!==void 0){out.model=value;i+=step}break}case"--safe":out.safe=true;break;case"--daemon":out.daemon=true;break;case"--force-runner":out.forceRunner=true;break;case"--force":out.stopForce=true;break;case"--drain":out.stopDrain=true;break;case"--project":{const{value,step}=takeValue(i,"--proj\
|
|
17
|
+
ect",inline);if(value!==void 0){out.project=value;i+=step}break}case"--engine":{const{value,step}=takeValue(i,"--engine",inline);if(value!==void 0){out.engine=value;i+=step}break}case"--interval":case"--max-cycles":{const{value,step}=takeValue(i,arg,inline);if(value!==void 0){const n=Number.parseInt(value,10);if(Number.isInteger(n)&&n>0){if(arg==="--interval")out.interval=n;else out.maxCycles=n}else{out.unknown.push(inline!==void 0?raw:`${arg} ${value}`)}i+=step}break}case"--yes":case"-y":out.yes=
|
|
18
|
+
true;break;case"--ai":{const{value:v,step}=takeValue(i,"--ai",inline);if(v!==void 0){out.ais=[...out.ais??[],v];i+=step}break}case"--no-ai-config-file":out.noAiConfigFile=true;break;case"--workspace":{const{value:v,step}=takeValue(i,"--workspace",inline);if(v!==void 0){out.workspace=v;i+=step}break}case"--ai-config-file":{const{value:v,step}=takeValue(i,"--ai-config-file",inline);if(v!==void 0){out.aiConfigFile=v;i+=step}break}case"--verbose":out.verbose=true;break;case"--now":{const{value:v,step}=takeValue(
|
|
19
|
+
i,"--now",inline);if(v!==void 0){out.scheduleNow=v;i+=step}break}case"--counts":{const{value:v,step}=takeValue(i,"--counts",inline);if(v!==void 0){out.scheduleCounts=v;i+=step}break}case"--gate":{const{value:v,step}=takeValue(i,"--gate",inline);if(v!==void 0){out.scheduleGate=v;i+=step}break}case"--file":{if(inline===void 0&&argv[i+1]==="-"){out.charterFile="-";i+=1;break}const{value:v,step}=takeValue(i,"--file",inline);if(v!==void 0){out.charterFile=v;i+=step}break}case"--out":{const{value:v,step}=takeValue(
|
|
20
|
+
i,"--out",inline);if(v!==void 0){out.charterOut=v;i+=step}break}case"--revision":{const{value:v,step}=takeValue(i,"--revision",inline);if(v!==void 0){out.charterRevision=v;i+=step}break}case"--from":{const{value:v,step}=takeValue(i,"--from",inline);if(v!==void 0){out.revisionFrom=v;i+=step}break}case"--to":{const{value:v,step}=takeValue(i,"--to",inline);if(v!==void 0){out.revisionTo=v;i+=step}break}case"--dir":{const{value:v,step}=takeValue(i,"--dir",inline);if(v!==void 0){out.skillDir=v;i+=step}
|
|
21
|
+
break}case"--all":out.skillAll=true;break;case"--empty":out.planEmpty=true;break;case"--check":out.planCheck=true;break;default:if(out.command==="task-loop"&&out.taskLoopAction==="charter"&&out.charterOp===void 0&&isRevisionAwareOp(raw)){out.charterOp=raw;break}if(out.command==="task-loop"&&out.taskLoopAction==="plan"&&out.planOp===void 0&&raw==="submit"){out.planOp="submit";break}if(out.command==="task-loop"&&out.taskLoopAction==="capacity"&&out.capacityOp===void 0&&raw==="report"){out.capacityOp=
|
|
22
|
+
"report";break}if(out.command==="task-loop"&&out.taskLoopAction==="skill"){if(out.skillOp===void 0&&isRevisionAwareOp(raw)){out.skillOp=raw;break}if(out.skillOp!==void 0&&out.skillName===void 0&&!raw.startsWith("-")){out.skillName=raw;break}}out.unknown.push(raw)}}if(out.command!=="login"&&out.loginMethod!=="browser"){out.unknown.push(out.loginMethod==="password"?"--password":"--token");out.loginMethod="browser"}if(out.permissionMode!==void 0&&out.command!=="tui"&&out.command!=="print"){out.unknown.
|
|
23
|
+
push("--permission-mode");delete out.permissionMode}if(out.command!=="tui"&&out.command!=="print"){if(out.allowedTools.length>0)out.unknown.push("--allowed-tools");if(out.disallowedTools.length>0)out.unknown.push("--disallowed-tools");out.allowedTools=[];out.disallowedTools=[]}if(out.loginNoBrowser&&!(out.command==="login"&&out.loginMethod==="browser")){out.unknown.push("--no-browser");out.loginNoBrowser=false}if(out.command==="logout"&&out.stopForce){out.logoutForce=true;out.stopForce=false}if(out.
|
|
24
|
+
command!=="task-loop"){if(out.safe)out.unknown.push("--safe");if(out.daemon)out.unknown.push("--daemon");if(out.forceRunner)out.unknown.push("--force-runner");if(out.stopForce)out.unknown.push("--force");if(out.stopDrain)out.unknown.push("--drain");if(out.engine!==void 0)out.unknown.push("--engine");if(out.interval!==void 0)out.unknown.push("--interval");if(out.maxCycles!==void 0)out.unknown.push("--max-cycles");if(out.project!==void 0)out.unknown.push("--project");if(out.verbose)out.unknown.push(
|
|
25
|
+
"--verbose");if(out.scheduleNow!==void 0)out.unknown.push("--now");if(out.scheduleCounts!==void 0)out.unknown.push("--counts");if(out.scheduleGate!==void 0)out.unknown.push("--gate");if(out.ais!==void 0)out.unknown.push("--ai");if(out.workspace!==void 0)out.unknown.push("--workspace");if(out.aiConfigFile!==void 0)out.unknown.push("--ai-config-file");if(out.noAiConfigFile)out.unknown.push("--no-ai-config-file");if(out.charterFile!==void 0)out.unknown.push("--file");if(out.charterOut!==void 0)out.
|
|
26
|
+
unknown.push("--out");if(out.charterRevision!==void 0)out.unknown.push("--revision");if(out.skillDir!==void 0)out.unknown.push("--dir");if(out.skillAll)out.unknown.push("--all");if(out.revisionFrom!==void 0)out.unknown.push("--from");if(out.revisionTo!==void 0)out.unknown.push("--to");if(out.planEmpty)out.unknown.push("--empty");if(out.planCheck)out.unknown.push("--check")}if(out.yes&&out.command!=="task-loop"&&!isDomainRoute)out.unknown.push("--yes");const acceptsOutput=isDomainRoute||out.command===
|
|
27
|
+
"whoami";if(!acceptsOutput){if(out.output!==void 0)out.unknown.push("--output");if(out.query!==void 0)out.unknown.push("--query")}if(!isDomainRoute){if(out.dryRun)out.unknown.push("--dry-run");if(out.debug)out.unknown.push("--debug");if(out.refresh)out.unknown.push("--refresh")}if(out.command==="api"&&out.refresh){out.unknown.push("--refresh");out.refresh=false}if(out.command==="task-loop"&&out.taskLoopAction!=="schedule"){if(out.verbose)out.unknown.push("--verbose");if(out.scheduleNow!==void 0)
|
|
28
|
+
out.unknown.push("--now");if(out.scheduleCounts!==void 0)out.unknown.push("--counts");if(out.scheduleGate!==void 0)out.unknown.push("--gate")}if(out.command==="task-loop"&&out.taskLoopAction!=="stop"&&out.stopForce){out.unknown.push("--force")}if(out.command==="task-loop"&&out.taskLoopAction!=="stop"&&out.stopDrain){out.unknown.push("--drain")}if(out.command==="task-loop"&&out.taskLoopAction==="stop"&&out.stopForce&&out.stopDrain){out.unknown.push("--force \u3068 --drain \u306F\u540C\u6642\u306B\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093");
|
|
29
|
+
out.stopForce=false;out.stopDrain=false}if(out.command==="task-loop"&&out.taskLoopAction!=="setup"){if(out.yes&&out.taskLoopAction!=="charter"&&out.taskLoopAction!=="skill")out.unknown.push("--yes");if(out.ais!==void 0)out.unknown.push("--ai");if(out.workspace!==void 0)out.unknown.push("--workspace");if(out.aiConfigFile!==void 0)out.unknown.push("--ai-config-file");if(out.noAiConfigFile)out.unknown.push("--no-ai-config-file")}if(out.command==="task-loop"&&(out.taskLoopAction==="stop"||out.taskLoopAction===
|
|
30
|
+
"status")){if(out.safe)out.unknown.push("--safe");if(out.daemon)out.unknown.push("--daemon");if(out.forceRunner)out.unknown.push("--force-runner");if(out.engine!==void 0)out.unknown.push("--engine");if(out.interval!==void 0)out.unknown.push("--interval");if(out.maxCycles!==void 0)out.unknown.push("--max-cycles")}if(out.command==="task-loop"&&out.taskLoopAction==="setup"){if(out.engine!==void 0)out.unknown.push("--engine");if(out.safe)out.unknown.push("--safe");if(out.daemon)out.unknown.push("--d\
|
|
31
|
+
aemon");if(out.forceRunner)out.unknown.push("--force-runner");if(out.interval!==void 0)out.unknown.push("--interval");if(out.maxCycles!==void 0)out.unknown.push("--max-cycles")}if(out.command==="task-loop"&&out.taskLoopAction==="charter"){if(out.charterOp===void 0){out.unknown.push("charter \u306B\u306F push / pull / history / diff / revert \u306E\u3044\u305A\u308C\u304B\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044")}if(out.charterOp!=="push"&&out.charterFile!==void 0)out.unknown.push("\
|
|
32
|
+
--file");if(out.charterOp!=="push"&&out.charterOp!=="revert"&&out.charterRevision!==void 0){out.unknown.push("--revision")}pushRevisionFlagErrors(out,out.charterOp);if((out.charterOp==="history"||out.charterOp==="diff")&&out.yes)out.unknown.push("--yes");if(out.charterOp!=="pull"&&out.charterOut!==void 0)out.unknown.push("--out");if(out.safe)out.unknown.push("--safe");if(out.daemon)out.unknown.push("--daemon");if(out.forceRunner)out.unknown.push("--force-runner");if(out.engine!==void 0)out.unknown.
|
|
33
|
+
push("--engine");if(out.interval!==void 0)out.unknown.push("--interval");if(out.maxCycles!==void 0)out.unknown.push("--max-cycles")}else if(out.command==="task-loop"&&out.taskLoopAction==="skill"){if(out.skillOp===void 0){out.unknown.push("skill \u306B\u306F push / pull / history / diff / revert \u306E\u3044\u305A\u308C\u304B\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044")}else if(out.skillOp!=="push"&&out.skillOp!=="pull"&&out.skillAll){out.unknown.push(`skill ${out.skillOp} \u306F --all \u3092\u53D7\u3051\
|
|
34
|
+
\u4ED8\u3051\u307E\u305B\u3093\uFF08\u30B9\u30AD\u30EB\u540D\u30921\u3064\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF09`)}else if(out.skillName===void 0&&!out.skillAll){out.unknown.push(out.skillOp==="push"||out.skillOp==="pull"?`skill ${out.skillOp} \u306B\u306F\u30B9\u30AD\u30EB\u540D\u304B --all \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044`:`skill ${out.skillOp} \u306B\u306F\u30B9\u30AD\u30EB\u540D\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044`)}else if(out.skillName!==
|
|
35
|
+
void 0&&out.skillAll){out.unknown.push("\u30B9\u30AD\u30EB\u540D\u3068 --all \u306F\u540C\u6642\u306B\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093")}if(out.skillOp!=="push"&&out.skillOp!=="revert"&&out.charterRevision!==void 0){out.unknown.push("--revision")}pushRevisionFlagErrors(out,out.skillOp);if((out.skillOp==="history"||out.skillOp==="diff")&&out.yes)out.unknown.push("--yes");if(out.skillOp!=="push"&&out.skillOp!=="pull"&&out.skillDir!==void 0)out.unknown.push("--dir");if(out.charterFile!==void 0)
|
|
36
|
+
out.unknown.push("--file");if(out.charterOut!==void 0)out.unknown.push("--out");if(out.safe)out.unknown.push("--safe");if(out.daemon)out.unknown.push("--daemon");if(out.forceRunner)out.unknown.push("--force-runner");if(out.engine!==void 0)out.unknown.push("--engine");if(out.interval!==void 0)out.unknown.push("--interval");if(out.maxCycles!==void 0)out.unknown.push("--max-cycles")}else if(out.command==="task-loop"&&out.taskLoopAction==="plan"){if(out.planOp===void 0)out.unknown.push("plan \u306B\u306F subm\
|
|
37
|
+
it \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044");if(out.charterOut!==void 0)out.unknown.push("--out");if(out.charterRevision!==void 0)out.unknown.push("--revision");if(out.safe)out.unknown.push("--safe");if(out.daemon)out.unknown.push("--daemon");if(out.forceRunner)out.unknown.push("--force-runner");if(out.engine!==void 0)out.unknown.push("--engine");if(out.interval!==void 0)out.unknown.push("--interval");if(out.maxCycles!==void 0)out.unknown.push("--max-cycles")}else if(out.command===
|
|
38
|
+
"task-loop"&&out.taskLoopAction==="capacity"){if(out.capacityOp===void 0)out.unknown.push("capacity \u306B\u306F report \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044");if(out.charterFile!==void 0)out.unknown.push("--file");if(out.charterOut!==void 0)out.unknown.push("--out");if(out.charterRevision!==void 0)out.unknown.push("--revision");if(out.safe)out.unknown.push("--safe");if(out.daemon)out.unknown.push("--daemon");if(out.forceRunner)out.unknown.push("--force-runner");if(out.engine!==
|
|
39
|
+
void 0)out.unknown.push("--engine");if(out.interval!==void 0)out.unknown.push("--interval");if(out.maxCycles!==void 0)out.unknown.push("--max-cycles")}else if(out.command==="task-loop"){if(out.charterFile!==void 0)out.unknown.push("--file");if(out.charterOut!==void 0)out.unknown.push("--out");if(out.charterRevision!==void 0)out.unknown.push("--revision")}if(out.command==="task-loop"&&out.taskLoopAction!=="skill"){if(out.skillDir!==void 0)out.unknown.push("--dir");if(out.skillAll)out.unknown.push(
|
|
40
|
+
"--all")}if(out.command==="task-loop"&&out.taskLoopAction!=="skill"&&out.taskLoopAction!=="charter"){if(out.revisionFrom!==void 0)out.unknown.push("--from");if(out.revisionTo!==void 0)out.unknown.push("--to")}if(out.command==="task-loop"&&out.taskLoopAction!=="plan"){if(out.planEmpty)out.unknown.push("--empty");if(out.planCheck)out.unknown.push("--check")}return out}function isRevisionAwareOp(raw){return raw==="push"||raw==="pull"||raw==="history"||raw==="diff"||raw==="revert"}function pushRevisionFlagErrors(out,op){
|
|
41
|
+
if(op!=="diff"&&out.revisionFrom!==void 0)out.unknown.push("--from");if(op!=="diff"&&op!=="revert"&&out.revisionTo!==void 0)out.unknown.push("--to")}export{BUILTIN_COMMANDS,TASK_LOOP_ACTIONS,VALUE_FLAGS,GLOBAL_FLAGS,parseArgv};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{DEFAULT_CLAUDE_LAUNCHER,activeSlotPath,detectClaudeAutoSwitch,spawnSyncResolved}from"./chunk-
|
|
3
|
+
import{DEFAULT_CLAUDE_LAUNCHER,activeSlotPath,detectClaudeAutoSwitch,spawnSyncResolved}from"./chunk-FABDZBDZ.js";import{defaultIsExecutableFile,findOnPath,joinFor}from"./chunk-PMOUHEJQ.js";import{isBoolishTrue}from"./chunk-5WGOHFAS.js";import{spawnSync}from"child_process";import{createHash}from"crypto";import fs from"fs";import os from"os";import path from"path";var DETECTABLE_AIS=["claude","codex","gemini","copilot"];function isDetectableAi(value){return DETECTABLE_AIS.includes(value)}function isSelectable(d){return d.installed&&d.blockedReason===null&&d.auth!=="unauthenticated"}function resolveDetectDeps(deps={}){return resolve(deps)}function resolve(deps){const platform=deps.platform??process.platform;return{run:deps.run??spawnSync,env:deps.env??process.env,homedir:deps.homedir??os.homedir,isExecutableFile:deps.isExecutableFile??(p=>defaultIsExecutableFile(p,platform)),existsSync:deps.existsSync??fs.existsSync,readFileSync:deps.readFileSync??(p=>fs.readFileSync(p,"utf8")),platform,
|
|
4
4
|
now:deps.now??Date.now,launcherBin:nonEmptyBin(deps.launcherBin)??DEFAULT_CLAUDE_LAUNCHER.bin}}function nonEmptyBin(value){const t=value?.trim();return t===void 0||t===""?void 0:t}var PROBE_TIMEOUT_MS=1e4;function oneLine(text){return text.replace(/\s+/g," ").trim()}function claudeConfigDir(d){const lookup={env:d.env,platform:d.platform};const bin=nonEmptyBin(d.launcherBin)??DEFAULT_CLAUDE_LAUNCHER.bin;const cas=detectClaudeAutoSwitch(bin,d.run,lookup);if(cas!==null){const active=activeSlotPath(
|
|
5
5
|
cas,d.run,lookup);if(active!==null){return{dir:active,via:`${bin} ${DEFAULT_CLAUDE_LAUNCHER.activeArgs.join(" ")}`}}}const explicit=d.env.CLAUDE_CONFIG_DIR?.trim();if(explicit!==void 0&&explicit!=="")return{dir:explicit,via:"CLAUDE_CONFIG_DIR"};return{dir:joinFor(d.platform)(d.homedir(),".claude"),via:"\u65E2\u5B9A\uFF08~/.claude\uFF09"}}var CLAUDE_AUTH_ENV=[{key:"ANTHROPIC_API_KEY",label:"ANTHROPIC_API_KEY",boolish:false},{key:"ANTHROPIC_AUTH_TOKEN",label:"ANTHROPIC_AUTH_TOKEN",boolish:false},{
|
|
6
6
|
key:"CLAUDE_CODE_OAUTH_TOKEN",label:"CLAUDE_CODE_OAUTH_TOKEN",boolish:false},{key:"AWS_BEARER_TOKEN_BEDROCK",label:"AWS_BEARER_TOKEN_BEDROCK",boolish:false},{key:"CLAUDE_CODE_USE_BEDROCK",label:"CLAUDE_CODE_USE_BEDROCK\uFF08AWS \u8CC7\u683C\u60C5\u5831\u3067\u52D5\u304D\u307E\u3059\uFF09",boolish:true},{key:"CLAUDE_CODE_USE_VERTEX",label:"CLAUDE_CODE_USE_VERTEX\uFF08GCP \u8CC7\u683C\u60C5\u5831\u3067\u52D5\u304D\u307E\u3059\uFF09",boolish:true}];function envEnabled(raw,boolish){if(boolish)return isBoolishTrue(
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
|
+
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
+
var DEFAULT_SKILL_PREFIX="twp-";var SKILL_PREFIX_RE=/^[a-z0-9-]*$/;var current=DEFAULT_SKILL_PREFIX;function skillPrefix(){return current}function setSkillPrefix(prefix){if(!SKILL_PREFIX_RE.test(prefix)){throw new Error(`\u30B9\u30AD\u30EB\u63A5\u982D\u8F9E\u306B\u4F7F\u3048\u306A\u3044\u6587\u5B57\u304C\u3042\u308A\u307E\u3059: '${prefix}'\uFF08\u82F1\u5C0F\u6587\u5B57\u30FB\u6570\u5B57\u30FB\u30CF\u30A4\u30D5\u30F3\u306E\u307F\uFF09`)}current=prefix}function skillCommand(skill,args="",prefix=current){return`/${prefix}${skill}${args?` ${args}`:""}`}function stripSkillPrefix(skill,prefix=current){return prefix!==""&&skill.startsWith(prefix)?skill.slice(prefix.length):skill}function escapeRe(s){return s.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function skillFromPrompt(prompt,prefix=current){const p=escapeRe(prefix);const head=new RegExp(`^\\s*\\/${p}([a-z0-9][a-z0-9-]*)(?=\\s|$)`).exec(prompt);if(head)return head[1]??null;if(prefix==="")return null;
|
|
4
|
+
return new RegExp(`\\/${p}([a-z0-9][a-z0-9-]*)`).exec(prompt)?.[1]??null}function stripSkillCommand(prompt,prefix=current){return prompt.replace(new RegExp(`^\\s*\\/${escapeRe(prefix)}[a-z0-9-]*\\s*`),"")}export{DEFAULT_SKILL_PREFIX,SKILL_PREFIX_RE,skillPrefix,setSkillPrefix,skillCommand,stripSkillPrefix,skillFromPrompt,stripSkillCommand};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
|
+
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
+
var LOADERS={agent:async()=>(await import("./agent-SFX3ZVOB.js")).agentDomain,"agent-loop":async()=>(await import("./agent-loop-6JO4PJRG.js")).agentLoopDomain,"ai-review-reason":async()=>(await import("./sales-ai-review-6TDJFHDL.js")).aiReviewReasonDomain,analysis:async()=>(await import("./analysis-HMOECNWG.js")).analysisDomain,announcement:async()=>(await import("./announcement-Q642UMYK.js")).announcementDomain,attendance:async()=>(await import("./attendance-correct-DWVFYL2Y.js")).attendanceDomainWithRecords,
|
|
4
|
+
backlog:async()=>(await import("./backlog-FG3Y5JTE.js")).backlogDomain,budget:async()=>(await import("./budget-5WUQAAAZ.js")).budgetDomain,"business-place":async()=>(await import("./sales-master-H5HMVBJV.js")).businessPlaceDomain,company:async()=>(await import("./company-4DHVAW25.js")).companyDomain,contract:async()=>(await import("./contract-PT7VW4IE.js")).contractDomain,customer:async()=>(await import("./company-4DHVAW25.js")).customerDomain,department:async()=>(await import("./department-C6WIZPBS.js")).
|
|
5
|
+
departmentDomain,deposit:async()=>(await import("./deposit-OEYFPEZG.js")).depositDomain,estimate:async()=>(await import("./estimate-4BUJQ3TP.js")).estimateDomain,evaluation:async()=>(await import("./evaluation-GLXQ54F6.js")).evaluationDomain,expense:async()=>(await import("./expense-QE3WIJTN.js")).expenseDomain,"fiscal-year":async()=>(await import("./fiscal-year-YJWFQN4P.js")).fiscalYearDomain,"goal-sheet":async()=>(await import("./evaluation-GLXQ54F6.js")).goalSheetDomain,inquiry:async()=>(await import("./inquiry-ORB3ROAJ.js")).
|
|
6
|
+
inquiryDomain,invoice:async()=>(await import("./invoice-XLX5KS2T.js")).invoiceDomain,"job-title":async()=>(await import("./job-title-UDF6I3BP.js")).jobTitleDomain,leave:async()=>(await import("./leave-3BJMXI7Q.js")).leaveDomain,license:async()=>(await import("./license-OMIZUUTW.js")).licenseDomain,media:async()=>(await import("./media-77LTBOQX.js")).mediaDomain,meeting:async()=>(await import("./knowledge-4QPIGJEE.js")).meetingDomain,note:async()=>(await import("./knowledge-4QPIGJEE.js")).
|
|
7
|
+
noteDomain,notification:async()=>(await import("./notification-2IESSY5E.js")).notificationDomain,onedrive:async()=>(await import("./onedrive-ZY3GTU26.js")).onedriveDomain,outlook:async()=>(await import("./outlook-KYTXHDAV.js")).outlookDomain,payee:async()=>(await import("./sales-master-H5HMVBJV.js")).payeeDomain,position:async()=>(await import("./position-CR6P4WC5.js")).positionDomain,project:async()=>(await import("./project-JJEMEO2W.js")).projectDomain,prospect:async()=>(await import("./prospect-QG6X7ALK.js")).
|
|
8
|
+
prospectDomain,purchase:async()=>(await import("./purchase-Z6ENEOZM.js")).purchaseDomain,qualification:async()=>(await import("./skill-RH5MBRXZ.js")).qualificationDomain,receivable:async()=>(await import("./receivable-ZBDXXMHX.js")).receivableDomain,redmine:async()=>(await import("./redmine-EIFHMLNE.js")).redmineDomain,report:async()=>(await import("./report-TTXGXSR3.js")).reportDomain,"rounding-setting":async()=>(await import("./sales-numbering-Q5KRM63Y.js")).roundingSettingDomain,
|
|
9
|
+
"seal-impression":async()=>(await import("./sales-master-H5HMVBJV.js")).sealImpressionDomain,search:async()=>(await import("./search-GRAWP2LX.js")).searchDomain,segment:async()=>(await import("./segment-YOUY4PZC.js")).segmentDomain,shift:async()=>(await import("./attendance-lists-772Y3ZWA.js")).shiftDomain,skill:async()=>(await import("./skill-RH5MBRXZ.js")).skillDomain,storage:async()=>(await import("./storage-AQDCEBDJ.js")).storageDomain,"supplier-payment":async()=>(await import("./supplier-payment-EJTFKAKY.js")).
|
|
10
|
+
supplierPaymentDomain,support:async()=>(await import("./support-FR3KY63E.js")).supportDomain,task:async()=>(await import("./task-O7K6725Y.js")).taskDomain,teams:async()=>(await import("./teams-QRVCFJS4.js")).teamsDomain,user:async()=>(await import("./user-PRGHG3HM.js")).userDomain,"user-contract-type":async()=>(await import("./user-contract-type-K7CLKCEE.js")).userContractTypeDomain,wiki:async()=>(await import("./knowledge-4QPIGJEE.js")).wikiDomain,workchange:async()=>(await import("./attendance-lists-772Y3ZWA.js")).
|
|
11
|
+
workchangeDomain,"worker-agent":async()=>(await import("./worker-agent-WDYZTQ5C.js")).workerAgentDomain,workflow:async()=>(await import("./workflow-S25JXGWN.js")).workflowDomain};async function loadDomain(name){return LOADERS[name]()}export{loadDomain};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
|
+
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
+
import{FINAL_REPORT_BEGIN,FINAL_REPORT_END}from"./chunk-DXUFECE7.js";import{normalizeRequiredPlatforms}from"./chunk-SPZ3GBYC.js";import{skillCommand,skillPrefix}from"./chunk-6CS5L24D.js";import{extractLeadingTaskKey}from"./chunk-II5RVJQN.js";var LEDGER_TASK_KEY_MAX=50;var CONTROL_CHAR_RE=/[\u0000-\u001f\u007f]/;var FLAG_TOKEN_RE=/(?:^|\s)-/;function loosen(source){let t=source.replace(/^[ \t]*\/\/[^\n]*$/gm,"");t=t.replace(/\/\*[\s\S]*?\*\//g,"");t=t.replace(/,(\s*[}\]])/g,"$1");return t===source?null:t}function tryParsePlan(source){for(const candidate of[source,loosen(source)]){if(candidate===null)continue;try{const obj=JSON.parse(candidate);if(obj!==null&&typeof obj==="object"&&Array.isArray(obj.steps)){return obj}}catch{}}return null}
|
|
4
|
+
function fencedBlocks(text,tag){const re=new RegExp("```"+tag+"\\s*\\n([\\s\\S]*?)\\n```","g");const out=[];for(const m of text.matchAll(re)){if(m[1]!==void 0)out.push(m[1])}return out}function extractGeminiEnvelope(text){const anchor=/\{[^{}]*"session_id"[^{}]*"response"\s*:\s*"/g;for(const m of text.matchAll(anchor)){const start=m.index;if(start===void 0)continue;let depth=0;let inStr=false;let escape=false;for(let i=start;i<text.length;i++){const c=text[i];if(escape){escape=false;continue}if(c===
|
|
5
|
+
"\\"){escape=true;continue}if(c==='"'){inStr=!inStr;continue}if(inStr)continue;if(c==="{")depth++;else if(c==="}"){depth--;if(depth===0){try{const obj=JSON.parse(text.slice(start,i+1));if(obj!==null&&typeof obj==="object"&&typeof obj.response==="string"){return obj.response}}catch{}break}}}}return null}function matchingBrace(text,start){let depth=0;let inStr=false;let escape=false;for(let i=start;i<text.length;i++){const c=text[i];if(escape){escape=false;continue}if(inStr){if(c==="\\")escape=true;else if(c===
|
|
6
|
+
'"')inStr=false;continue}if(c==='"')inStr=true;else if(c==="{")depth++;else if(c==="}"){depth--;if(depth===0)return i}}return-1}var MAX_STEPS_ANCHORS=20;var MAX_OPEN_CANDIDATES=8;function lastStepsObject(text){const anchors=[...text.matchAll(/"steps"\s*:/g)].map(m=>m.index).filter(i=>i!==void 0);for(const at of anchors.reverse().slice(0,MAX_STEPS_ANCHORS)){let tried=0;for(let open=text.lastIndexOf("{",at);open>=0&&tried<MAX_OPEN_CANDIDATES;open=text.lastIndexOf("{",open-1)){tried++;const close=matchingBrace(
|
|
7
|
+
text,open);if(close>at){const plan=tryParsePlan(text.slice(open,close+1));if(plan)return plan}if(open===0)break}}return null}function finalReports(text){const re=new RegExp(`${FINAL_REPORT_BEGIN}\\n?([\\s\\S]*?)${FINAL_REPORT_END}`,"g");const out=[];for(const m of text.matchAll(re)){if(m[1]!==void 0)out.push(m[1])}return out.reverse()}function extractFrom(text){for(const tag of["json:execution-plan","json"]){for(const block of fencedBlocks(text,tag).reverse()){const plan=tryParsePlan(block);if(plan)
|
|
8
|
+
return plan}}const resp=extractGeminiEnvelope(text);if(resp!==null){for(const block of[...fencedBlocks(resp,"json:execution-plan"),...fencedBlocks(resp,"json")].reverse()){const plan2=tryParsePlan(block);if(plan2)return plan2}const plan=tryParsePlan(resp);if(plan)return plan}const whole=tryParsePlan(text.trim());if(whole)return whole;return lastStepsObject(text)}function extractPlanJson(rawText){const text=rawText.replace(/^\s*\[\d{2}:\d{2}:\d{2}\][ \t]*(?:💬 ?)?/gmu,"");for(const report of finalReports(
|
|
9
|
+
text)){const plan=extractFrom(report);if(plan)return plan}return extractFrom(text)}function ledgerTaskKey(args){const key=extractLeadingTaskKey(args);if(key.length>LEDGER_TASK_KEY_MAX)return"";if(CONTROL_CHAR_RE.test(key))return"";if(FLAG_TOKEN_RE.test(key))return"";return key}function placeholderTaskKey(args){for(const token of args.split(/\s+/)){if(token==="")continue;if(token.startsWith("-"))continue;const m=/^[A-Z]{2,}[A-Z0-9]*-([A-Za-z0-9_<>{}]*)$/.exec(token);if(!m)return null;if(/^\d+$/.test(
|
|
10
|
+
m[1]??""))return null;return token}return null}function stepToItem(step,assign,prefix=skillPrefix()){const skill=typeof step.skill==="string"?step.skill.trim():"";if(!skill)return null;const args=(step.args??"").trim();const priority=step.priority??"P2";const prompt=skillCommand(skill,args,prefix);let label=(step.label??"").trim();const own=skillCommand(skill,"",prefix);const promptLike=prefix===""?label===own||label.startsWith(`${own} `):label.startsWith(`/${prefix}`);if(!label||promptLike||label.
|
|
11
|
+
startsWith("[P"))label=prompt;const taskKey=ledgerTaskKey(args);const category=assign?.categoryForSkill(skill)??step.ai_category??"complex";const display=taskKey&&!label.includes(taskKey)?`[${priority}] ${taskKey} ${label} #ai:${category}`:`[${priority}] ${label} #ai:${category}`;const item={label:display.slice(0,200),prompt,task_key:taskKey};const platforms=normalizeRequiredPlatforms(step.required_platforms);if(platforms.length>0)item.required_platforms=platforms;if(assign!==void 0){const ai=assign.
|
|
12
|
+
selectPrimary(category,skill,priority,display);if(ai!=="")item.ai_type=ai}return item}function parsePlanExcludeKeys(prefetchSection){const m=/OPS_PLAN_EXCLUDE_KEYS\s+([^\s]*)\s+-->/.exec(prefetchSection);const keys=new Set;if(!m||!m[1])return keys;for(const raw of m[1].split(",")){const key=raw.trim();if(key!=="")keys.add(key)}return keys}function excludedKeyInArgs(args,excluded){if(excluded.size===0)return null;for(const key of[...excluded].sort()){const re=new RegExp(`(?<![A-Za-z0-9-])${key.replace(
|
|
13
|
+
/[.*+?^${}()|[\]\\]/g,"\\$&")}(?![0-9])`);if(re.test(args))return key}return null}function parseOpsCount(prefetchSection,field){const marker=/OPS_COUNTS\s+([^>]*?)-->/.exec(prefetchSection);if(!marker||!marker[1])return null;const escaped=field.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");const hit=new RegExp(`(?:^|\\s)${escaped}=(-?\\d+)(?:\\s|$)`).exec(marker[1]);if(!hit||hit[1]===void 0)return null;const n=Number.parseInt(hit[1],10);if(!Number.isFinite(n)||n<0)return null;return n}function releaseDeployDropReason(verifyBacklog,devVerifyPlanned){
|
|
14
|
+
if(verifyBacklog===null){return"\u52D5\u4F5C\u78BA\u8A8D\u306E\u4EF6\u6570\u3092\u53D6\u5F97\u3067\u304D\u306A\u304B\u3063\u305F\uFF08\u5224\u5B9A\u4E0D\u80FD\u306E\u305F\u3081\u30EA\u30EA\u30FC\u30B9\u306F\u898B\u9001\u308B\uFF09"}if(verifyBacklog>devVerifyPlanned){return`\u52D5\u4F5C\u78BA\u8A8D${verifyBacklog}\u4EF6 > \u8A08\u753B\u5185dev-verify${devVerifyPlanned}\u4EF6\uFF08Phase 1\u306E0\u4EF6\u898B\u8FBC\u307F\u304C\u7ACB\u305F\u306A\u3044\uFF09`}return null}function duplicateTaskKeyDropReason(enqueuedKeys,taskKey){
|
|
15
|
+
if(!taskKey)return null;if(!enqueuedKeys.has(taskKey))return null;return`${taskKey} \u306F\u672C\u8A08\u753B\u3067\u65E2\u306B\u6295\u5165\u6E08\u307F\uFF08\u540C\u4E00\u30AD\u30FC\u306F1\u8A08\u753B1\u4EF6\uFF09`}var NO_ZERO_TARGET_GATES={};function zeroTargetDropReasons(prefetchSection,gates=NO_ZERO_TARGET_GATES){const reasons=new Map;for(const[skill,gate]of Object.entries(gates)){const n=parseOpsCount(prefetchSection,gate.field);if(n===null)reasons.set(skill,`${gate.label}\u4EF6\u6570\u304C\u5224\u5B9A\u4E0D\u80FD\u306E\u305F\u3081\u898B\u9001\u308A`);else if(n===
|
|
16
|
+
0)reasons.set(skill,`${gate.label}0\u4EF6\u306E\u305F\u3081\u5BFE\u8C61\u306A\u3057`)}return reasons}export{extractPlanJson,placeholderTaskKey,stepToItem,parsePlanExcludeKeys,excludedKeyInArgs,parseOpsCount,releaseDeployDropReason,duplicateTaskKeyDropReason,zeroTargetDropReasons};
|