@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
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
|
+
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
+
import{SCHEDULE_HELP,parseSchedule}from"./chunk-HBEOI456.js";import"./chunk-WVCEKC7V.js";import{LIST_FLAGS,LIST_PAGING_HELP,envelopePaging,nonEmpty,positiveInteger}from"./chunk-MI6HVYR2.js";import"./chunk-RX5HWI4L.js";import{charCount,readBody}from"./chunk-6LSQCOCJ.js";import{AGENT_REPOSITORIES_PATH,AGENT_SCHEDULES_PATH,AGENT_SESSIONS_PATH}from"./chunk-HNG6MF26.js";import{isSafePathSegment}from"./chunk-HVZUXLQ4.js";import{ApiError}from"./chunk-JA5A6UJ2.js";
|
|
4
|
+
import"./chunk-H4CDX4TX.js";import{requireResolved,withResolved}from"./chunk-PS5QFKHB.js";import"./chunk-II5RVJQN.js";import{isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiRejectedError,ApiResponseError,NetworkError,UsageError,WaitTimeoutError}from"./chunk-VFPY2A23.js";import{NotLoggedInError,SessionExpiredError}from"./chunk-XNLIEUAW.js";import"./chunk-J7QYPKVK.js";import"./chunk-4VZKNEVN.js";import"./chunk-RZVI6PMW.js";import"./chunk-QQRJLH6B.js";
|
|
5
|
+
import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var LABEL="\u5B9A\u671F\u5B9F\u884C";var LIST_COLUMNS=["schedule_id","name","enabled","schedule","repository_full_name","next_run_at","last_run_at","disabled_reason","owner_user_id"];var GET_COLUMNS=["schedule_id","name","enabled","schedule","repository_full_name","base_branch","ai_provider","ai_model","next_run_at","last_run_at","last_session_id","consecutive_failures","disabled_reason","owner_user_id","can_edit","can_disable","created_at","updated_at"];var RUN_COLUMNS=["run_id","created_at","t\
|
|
6
|
+
rigger","result","skip_reason","session_id","pr_url","error_message"];var NAME_MAX_CHARS=100;var INSTRUCTION_MAX_CHARS=1e4;var RUNS_MAX_LIMIT=100;var FORBIDDEN="AI\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u6A5F\u80FD\u306E\u30E9\u30A4\u30BB\u30F3\u30B9\uFF08agent\uFF09\u304C\u3042\u306A\u305F\u306E\u30A2\u30AB\u30A6\u30F3\u30C8\u306B\u5272\u308A\u5F53\u3066\u3089\u308C\u3066\u3044\u306A\u3044\u304B\u3001\u4ED6\u30E6\u30FC\u30B6\u30FC\u306E\u5B9A\u671F\u5B9F\u884C\u3092\u5909\u66F4\u3057\u3088\u3046\u3068\u3057\u3066\u3044\u307E\u3059\u3002\u7DE8\u96C6\u30FB\u524A\u9664\u30FB\u6709\u52B9\u5316\u30FB\u4ECA\u3059\u3050\u5B9F\u884C\u306F\u30AA\u30FC\u30CA\u30FC\u672C\u4EBA\u3060\u3051\u3001\u7121\u52B9\u5316\u306F\u30AA\u30FC\u30CA\u30FC\u3068\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u7BA1\u7406\u8005\u304C\u3067\u304D\u307E\u3059\u3002";
|
|
7
|
+
var SCHEDULE_REF_HELP="<\u5B9A\u671F\u5B9F\u884C> \u306F\u5B9A\u671F\u5B9F\u884C ID\uFF08twp agent schedule list \u306E schedule_id \u5217\uFF09\u3067\u3059\u3002";var CREDIT_CONFIRMATION="AI \u30AF\u30EC\u30B8\u30C3\u30C8\u3092\u6D88\u8CBB\u3059\u308B\u64CD\u4F5C";function usageOf(op){return`twp agent schedule ${op} help`}function noArgs(input,op){if(input.args.length>0)throw new UsageError(`schedule ${op} \u306F\u4F4D\u7F6E\u5F15\u6570\u3092\u53D6\u308A\u307E\u305B\u3093: ${input.args.join(" ")}`,
|
|
8
|
+
usageOf(op))}function scheduleId(input,op){const values=input.args.map(arg=>arg.trim());if(values.length>1)throw new UsageError(`schedule ${op} \u304C\u53D7\u3051\u53D6\u308C\u308B\u5F15\u6570\u306F <\u5B9A\u671F\u5B9F\u884C> \u3060\u3051\u3067\u3059: ${values.slice(1).join(" ")}`,usageOf(op));const value=values[0]??"";if(value==="")throw new UsageError("<\u5B9A\u671F\u5B9F\u884C>\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",usageOf(op));if(!isSafePathSegment(value))throw new UsageError(
|
|
9
|
+
`\u5B9A\u671F\u5B9F\u884C ID \u3068\u3057\u3066\u4F7F\u3048\u306A\u3044\u5024\u3067\u3059: ${value}`,"\u5B9A\u671F\u5B9F\u884C ID \u306F twp agent schedule list \u306E schedule_id \u5217\u3067\u78BA\u8A8D\u3067\u304D\u307E\u3059\u3002");return value}function schedulePath(id,suffix=""){return`${AGENT_SCHEDULES_PATH}/${encodeURIComponent(id)}${suffix}`}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`);
|
|
10
|
+
return body}function dataOf(body,what,key){const data=envelope(body,what)["data"];if(!isRecord(data)||typeof data[key]!=="string")throw new ApiResponseError(`${what}\u306E\u5FDC\u7B54\u306B data.${key} \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`);return data}function scheduleOf(body){return dataOf(body,LABEL,"schedule_id")}function summary(row,columns){const out=pick(row,columns);if(isRecord(row)&&"schedule"in out){const schedule=row["\
|
|
11
|
+
schedule"];out["schedule"]=isRecord(schedule)?schedule["description"]??schedule["type"]??null:schedule??null}return out}function scheduleNotes(body){const data=scheduleOf(body);if(data["enabled"]!==true)return[`\u7121\u52B9\u3067\u3059\u3002\u5B9A\u671F\u5B9F\u884C\u3092\u59CB\u3081\u308B\u306B\u306F twp agent schedule enable ${String(data["schedule_id"])} \u3092\u6253\u3063\u3066\u304F\u3060\u3055\u3044\u3002`];return typeof data["next_run_at"]==="string"?[`\u6B21\u56DE\u306E\u5B9F\u884C\u4E88\u5B9A: ${data["\
|
|
12
|
+
next_run_at"]}`]:[]}function scheduleRows(body){const items=envelope(body,`${LABEL}\u4E00\u89A7`)["items"];if(!Array.isArray(items))throw new ApiResponseError(`${LABEL}\u4E00\u89A7\u306E\u5FDC\u7B54\u306B items \u914D\u5217\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`);return items}var OWNER_FLAG={name:"--owner",summary:"\u30AA\u30FC\u30CA\u30FC\u3067\u7D5E\u308A\u8FBC\u3080\uFF08\u30E6\u30FC\u30B6\u30FC\u306E ID\u30FB\u30E1\u30FC\u30EB\u30FB\u6C0F\u540D\u30FBme\uFF09",
|
|
13
|
+
takesValue:true,placeholder:"<\u30E6\u30FC\u30B6\u30FC>"};var listOperation={name:"list",summary:`${LABEL}\u306E\u5B9A\u7FA9\u3092\u4E00\u89A7\u3059\u308B\uFF08\u30C6\u30CA\u30F3\u30C8\u5185\u306E\u5168\u54E1\u5206\u30FB\u6709\u52B9/\u7121\u52B9\u30FB\u30B9\u30B1\u30B8\u30E5\u30FC\u30EB\u30FB\u6B21\u56DE\u5B9F\u884C\u4E88\u5B9A\uFF09`,usage:"twp agent schedule list [--owner <\u30E6\u30FC\u30B6\u30FC>]",description:`\u30C6\u30CA\u30F3\u30C8\u5185\u306E\u5168\u30E6\u30FC\u30B6\u30FC\u306E\u5B9A\u7FA9\u304C\u51FA\u307E\u3059\uFF08\u4ED6\u4EBA\u306E\u5B9A\u7FA9\u306F\u95B2\u89A7\u306E\u307F\uFF09\u3002\u3053\u306E API \u306F\u30DA\u30FC\u30B8\u30F3\u30B0\u3092\u6301\u305F\u305A\u3001\u5168\u4EF6\u3092\u8FD4\u3057\u307E\u3059\u3002
|
|
14
|
+
--output json \u306F\u5404\u5B9A\u7FA9\u306E\u5168\u30D5\u30A3\u30FC\u30EB\u30C9\uFF08\u6307\u793A\u6587\u30FBschedule \u306E\u5185\u8A33\u3092\u542B\u3080\uFF09\u3092\u51FA\u3057\u307E\u3059\u3002
|
|
15
|
+
--output table / text / tsv \u306F\u8981\u7D04\u5217\uFF08${LIST_COLUMNS.join(" / ")}\uFF09\u3067\u3059\u3002schedule \u5217\u306F\u30B9\u30B1\u30B8\u30E5\u30FC\u30EB\u306E\u8AAC\u660E\u6587\u3067\u3059\u3002`,flags:[OWNER_FLAG],async prepare(input,ctx){noArgs(input,"list");const owner=nonEmpty(input.flags,OWNER_FLAG.name);if(owner===void 0)return input;return withResolved(input,{ownerUserId:(await ctx.resolver.user(owner,OWNER_FLAG.name)).id})},plan:input=>({method:"GET",path:AGENT_SCHEDULES_PATH,
|
|
16
|
+
query:{owner_user_id:input.resolved?.["ownerUserId"]}}),summarize:body=>scheduleRows(body).map(row=>summary(row,LIST_COLUMNS)),raw:scheduleRows,forbidden:FORBIDDEN,notes(body){if(scheduleRows(body).length>0)return[];const limits=isRecord(body)&&isRecord(body["limits"])?body["limits"]:{};const perUser=limits["max_schedules_per_user"];return[`${LABEL}\u306F0\u4EF6\u3067\u3059\u3002${typeof perUser==="number"?`1\u4EBA ${perUser} \u4EF6\u307E\u3067\u4F5C\u308C\u307E\u3059\uFF08twp agent schedule create\uFF09\u3002`:
|
|
17
|
+
""}`]}};var getOperation={name:"get",summary:`${LABEL}1\u4EF6\u306E\u8A73\u7D30\u3092\u8868\u793A\u3059\u308B\uFF08\u6307\u793A\u6587\u30FB\u30B9\u30B1\u30B8\u30E5\u30FC\u30EB\u30FB\u6B21\u56DE\u5B9F\u884C\u4E88\u5B9A\u30FB\u76F4\u8FD1\u306E\u30BB\u30C3\u30B7\u30E7\u30F3\uFF09`,usage:"twp agent schedule get <\u5B9A\u671F\u5B9F\u884C>",description:`${SCHEDULE_REF_HELP}
|
|
18
|
+
--output json \u306F\u6307\u793A\u6587\uFF08instruction\uFF09\u3068\u30B9\u30B1\u30B8\u30E5\u30FC\u30EB\u306E\u5185\u8A33\u3092\u542B\u3080\u5168\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u51FA\u3057\u307E\u3059\u3002`,flags:[],plan:input=>({method:"GET",path:schedulePath(scheduleId(input,"get"))}),summarize:body=>summary(scheduleOf(body),GET_COLUMNS),raw:scheduleOf,forbidden:FORBIDDEN};var NAME_FLAG={name:"--name",summary:`\u540D\u524D\uFF08${NAME_MAX_CHARS}\u6587\u5B57\u307E\u3067\uFF09`,takesValue:true,
|
|
19
|
+
placeholder:"<\u540D\u524D>"};var REPOSITORY_FLAG={name:"--repository",summary:"\u30EA\u30DD\u30B8\u30C8\u30EA\uFF08owner/repo\u30FB\u540D\u524D\u30FBID\u3002twp agent repository list \u3067\u78BA\u8A8D\u3067\u304D\u308B\uFF09",takesValue:true,placeholder:"<owner/repo>"};var BASE_FLAG={name:"--base",summary:"\u4F5C\u696D\u306E\u8D77\u70B9\u306B\u3059\u308B\u30D6\u30E9\u30F3\u30C1\uFF08\u7701\u7565\u6642\u306F\u30EA\u30DD\u30B8\u30C8\u30EA\u306E\u65E2\u5B9A\u30D6\u30E9\u30F3\u30C1\uFF09",takesValue:true,
|
|
20
|
+
placeholder:"<\u30D6\u30E9\u30F3\u30C1>"};var INSTRUCTIONS_FILE_FLAG={name:"--instructions-file",summary:`\u6307\u793A\u6587\u3092\u30D5\u30A1\u30A4\u30EB\u304B\u3089\u8AAD\u3080\uFF08- \u3067\u6A19\u6E96\u5165\u529B\u30FB${INSTRUCTION_MAX_CHARS.toLocaleString()}\u6587\u5B57\u307E\u3067\uFF09`,takesValue:true,placeholder:"<\u30D1\u30B9|->"};var INSTRUCTIONS_FLAG={name:"--instructions",summary:"\u6307\u793A\u6587\u3092\u5F15\u6570\u3067\u6E21\u3059\uFF08\u6539\u884C\u3092\u542B\u3080\u306A\u3089 --instructions-file\uFF09",
|
|
21
|
+
takesValue:true,placeholder:"<\u6307\u793A\u6587>"};var SCHEDULE_FLAG={name:"--schedule",summary:"\u30B9\u30B1\u30B8\u30E5\u30FC\u30EB\uFF08interval:2h / daily:09:00 / weekly:mon,fri@09:00 / monthly:1,15@09:00\uFF09",takesValue:true,placeholder:"<\u30B9\u30B1\u30B8\u30E5\u30FC\u30EB>"};var MODEL_FLAG={name:"--model",summary:"AI \u30E2\u30C7\u30EB\uFF08\u7701\u7565\u6642\u306F\u30B5\u30FC\u30D0\u306E\u65E2\u5B9A\uFF09",takesValue:true,placeholder:"<\u30E2\u30C7\u30EB>"};var PROVIDER_FLAG={name:"-\
|
|
22
|
+
-provider",summary:"AI \u30D7\u30ED\u30D0\u30A4\u30C0\uFF08\u4F5C\u6210\u3067\u306F\u65E2\u5B9A claude\u3002update \u3067 --model \u3092\u5909\u3048\u308B\u306A\u3089\u5FC5\u9808\u30FB\u5358\u72EC\u3067\u5909\u3048\u308B\u3068\u30E2\u30C7\u30EB\u306F\u30B5\u30FC\u30D0\u306E\u65E2\u5B9A\u306B\u623B\u308B\uFF09",takesValue:true,placeholder:"<\u30D7\u30ED\u30D0\u30A4\u30C0>"};var ENABLE_FLAG={name:"--enable",summary:"\u4F5C\u6210\u3068\u540C\u6642\u306B\u6709\u52B9\u5316\u3059\u308B\uFF08\u65E2\u5B9A\u306F\u7121\u52B9\u3067\u4F5C\u6210\uFF09",
|
|
23
|
+
takesValue:false};var INTERVAL_NOTE="\u5B9A\u671F\u5B9F\u884C\u306E\u6700\u5C0F\u9593\u9694\u306F\u30B5\u30FC\u30D0\u306E\u8A2D\u5B9A\u3067\u6C7A\u307E\u308A\uFF082026-10 \u6642\u70B9\u3067 60 \u5206\uFF09\u3001\u4E0A\u306E interval \u306E\u7BC4\u56F2\u3088\u308A\u53B3\u3057\u3044\u3053\u3068\u304C\u3042\u308A\u307E\u3059\u3002\n\u77ED\u3059\u304E\u308B\u9593\u9694\u306F\u30B5\u30FC\u30D0\u304C 422 \u3067\u65AD\u308A\u307E\u3059\u3002";function checkedName(value,op){const name=value.trim();if(name===
|
|
24
|
+
"")throw new UsageError("\u540D\u524D\u304C\u7A7A\u3067\u3059",usageOf(op));const count=charCount(name);if(count>NAME_MAX_CHARS)throw new UsageError(`\u540D\u524D\u306F ${NAME_MAX_CHARS} \u6587\u5B57\u307E\u3067\u3067\u3059\uFF08${count} \u6587\u5B57\uFF09`,usageOf(op));return name}async function buildBody(input,op,repositoryRef){const body={};const name=input.flags.get(NAME_FLAG.name);if(name!==void 0)body["name"]=checkedName(name,op);if(repositoryRef!==void 0)body["repository_id"]=repositoryRef;
|
|
25
|
+
const base=input.flags.get(BASE_FLAG.name);if(base!==void 0)body["base_branch"]=base.trim()===""?null:base.trim();const instruction=await readBody(input,{flag:INSTRUCTIONS_FLAG.name,fileFlag:INSTRUCTIONS_FILE_FLAG.name,label:"\u6307\u793A\u6587",maxChars:INSTRUCTION_MAX_CHARS,usage:usageOf(op)});if(instruction!==void 0)body["instruction"]=instruction;const schedule=nonEmpty(input.flags,SCHEDULE_FLAG.name);if(schedule!==void 0)body["schedule"]=parseSchedule(schedule);const model=nonEmpty(input.flags,
|
|
26
|
+
MODEL_FLAG.name);const provider=nonEmpty(input.flags,PROVIDER_FLAG.name);if(model!==void 0&&provider===void 0&&op==="update"){throw new UsageError("update \u3067 --model \u3092\u5909\u3048\u308B\u3068\u304D\u306F --provider \u3082\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u4F8B: --provider claude\uFF09",usageOf(op))}if(provider!==void 0&&model===void 0&&op==="create")throw new UsageError("--provider \u306F --model \u3068\u4E00\u7DD2\u306B\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",
|
|
27
|
+
usageOf(op));if(model!==void 0)body["ai_model"]=model.trim();if(model!==void 0||provider!==void 0)body["ai_provider"]=(provider??"claude").trim();if(op==="create"){const missing=[["name","--name"],["repository_id","--repository"],["instruction","--instructions-file"],["schedule","--schedule"]].filter(([key])=>body[key]===void 0);if(missing.length>0)throw new UsageError(`\u4F5C\u6210\u306B\u306F ${missing.map(([,flag])=>flag).join(" / ")} \u304C\u5FC5\u8981\u3067\u3059`,usageOf(op));body["enabled"]=
|
|
28
|
+
input.flags.has(ENABLE_FLAG.name)}else if(Object.keys(body).length===0){throw new UsageError("\u5909\u66F4\u3059\u308B\u9805\u76EE\u30921\u3064\u4EE5\u4E0A\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",usageOf(op))}return body}function bodyOf(input){return JSON.parse(requireResolved(input,"body"))}async function bodyWithRepository(input,ctx,op){const ref=nonEmpty(input.flags,REPOSITORY_FLAG.name);const body=await buildBody(input,op,ref);if(ref===void 0)return body;const repo=await ctx.resolver.
|
|
29
|
+
agentRepository(ref,REPOSITORY_FLAG.name);if(!isSafePathSegment(repo.id))throw new UsageError(`\u30EA\u30DD\u30B8\u30C8\u30EA ID \u3068\u3057\u3066\u4F7F\u3048\u306A\u3044\u5024\u3067\u3059: ${repo.id}`);return{...body,repository_id:repo.id}}function limitGuidance(server){return server.includes("\u4E0A\u9650")?"\u4E0D\u8981\u306A\u5B9A\u7FA9\u3092 twp agent schedule delete <\u5B9A\u671F\u5B9F\u884C> --yes \u3067\u6D88\u3057\u3066\u304B\u3089\u4F5C\u308A\u76F4\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u4E00\u89A7\u306F twp agent schedule list\uFF09\u3002":
|
|
30
|
+
void 0}var createOperation={name:"create",summary:`${LABEL}\u3092\u4F5C\u6210\u3059\u308B\uFF08\u30EA\u30DD\u30B8\u30C8\u30EA\u30FB\u6307\u793A\u6587\u30FB\u30B9\u30B1\u30B8\u30E5\u30FC\u30EB\u3002\u65E2\u5B9A\u306F\u7121\u52B9\u3067\u4F5C\u6210\u30FB--enable \u306F --yes \u304C\u8981\u308B\uFF09`,usage:"twp agent schedule create --name <\u540D\u524D> --repository <owner/repo> --instructions-file <\u30D1\u30B9> --schedule <\u30B9\u30B1\u30B8\u30E5\u30FC\u30EB> [--base <\u30D6\u30E9\u30F3\u30C1>] [--model <\u30E2\u30C7\u30EB> [--provider <\u30D7\u30ED\u30D0\u30A4\u30C0>]] [--enable --yes]",
|
|
31
|
+
description:`\u5B9A\u671F\u5B9F\u884C\u306F\u3001\u30AA\u30FC\u30CA\u30FC\uFF08\u3042\u306A\u305F\uFF09\u306E\u540D\u7FA9\u30FB\u6A29\u9650\u30FBAI \u30AF\u30EC\u30B8\u30C3\u30C8\u3067\u3001\u30B9\u30B1\u30B8\u30E5\u30FC\u30EB\u3069\u304A\u308A\u306B\u7121\u4EBA\u3067\u30BB\u30C3\u30B7\u30E7\u30F3\u3092\u8D77\u52D5\u3057\u307E\u3059\uFF08\u6BCE\u56DE\u65B0\u3057\u3044\u30BB\u30C3\u30B7\u30E7\u30F3\uFF09\u3002
|
|
32
|
+
--enable \u3092\u4ED8\u3051\u306A\u3051\u308C\u3070\u7121\u52B9\u3067\u4F5C\u6210\u3057\u307E\u3059\uFF08\u4F5C\u6210\u5F8C\u306B twp agent schedule enable \u3067\u6709\u52B9\u5316\uFF09\u3002--enable \u3092\u4ED8\u3051\u308B\u306A\u3089 --yes \u304C\u8981\u308A\u307E\u3059\u3002
|
|
33
|
+
\u6307\u793A\u6587\u306F --instructions-file \u3067\u6E21\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u5F15\u6570\u3067\u306F\u6539\u884C\u30FB\u5F15\u7528\u7B26\u304C\u58CA\u308C\u307E\u3059\uFF09\u3002
|
|
34
|
+
|
|
35
|
+
${SCHEDULE_HELP}
|
|
36
|
+
${INTERVAL_NOTE}`,flags:[NAME_FLAG,REPOSITORY_FLAG,BASE_FLAG,INSTRUCTIONS_FILE_FLAG,INSTRUCTIONS_FLAG,SCHEDULE_FLAG,MODEL_FLAG,PROVIDER_FLAG,ENABLE_FLAG],async prepare(input,ctx){noArgs(input,"create");return withResolved(input,{body:JSON.stringify(await bodyWithRepository(input,ctx,"create"))})},plan:input=>({method:"POST",path:AGENT_SCHEDULES_PATH,body:bodyOf(input)}),preview:async input=>bodyOf(input)["enabled"]===true?{notes:[],warnings:["\u6709\u52B9\u3067\u4F5C\u6210\u3057\u307E\u3059\u3002\u30B9\u30B1\u30B8\u30E5\u30FC\u30EB\u3069\u304A\u308A\u306B\u3042\u306A\u305F\u306E\u540D\u7FA9\u3067\u30BB\u30C3\u30B7\u30E7\u30F3\u304C\u8D77\u52D5\u3057\u3001\u30C6\u30CA\u30F3\u30C8\u306E AI \u30AF\u30EC\u30B8\u30C3\u30C8\u3092\u6D88\u8CBB\
|
|
37
|
+
\u3057\u307E\u3059\u3002"]}:{notes:[],warnings:[]},summarize:body=>summary(scheduleOf(body),GET_COLUMNS),raw:scheduleOf,forbidden:FORBIDDEN,rejected:limitGuidance,notes:scheduleNotes};var updateOperation={name:"update",summary:`${LABEL}\u306E\u8A2D\u5B9A\u3092\u5909\u3048\u308B\uFF08\u6307\u5B9A\u3057\u305F\u9805\u76EE\u3060\u3051\u3002\u30AA\u30FC\u30CA\u30FC\u306E\u307F\uFF09`,usage:"twp agent schedule update <\u5B9A\u671F\u5B9F\u884C> [--name <\u540D\u524D>] [--repository <owner/repo>] [--base <\u30D6\u30E9\u30F3\u30C1>] [--instructions-file\
|
|
38
|
+
<\u30D1\u30B9>] [--schedule <\u30B9\u30B1\u30B8\u30E5\u30FC\u30EB>] [--model <\u30E2\u30C7\u30EB> --provider <\u30D7\u30ED\u30D0\u30A4\u30C0> | --provider <\u30D7\u30ED\u30D0\u30A4\u30C0>]",description:`${SCHEDULE_REF_HELP}
|
|
39
|
+
\u6307\u5B9A\u3057\u305F\u9805\u76EE\u3060\u3051\u3092\u9001\u308A\u307E\u3059\u3002--base "" \u3067\u65E2\u5B9A\u30D6\u30E9\u30F3\u30C1\u3078\u623B\u305B\u307E\u3059\u3002\u6709\u52B9/\u7121\u52B9\u306F enable / disable \u3067\u5207\u308A\u66FF\u3048\u307E\u3059\u3002
|
|
40
|
+
\u4ED6\u4EBA\u306E\u5B9A\u7FA9\u306F\u7BA1\u7406\u8005\u3067\u3082\u7DE8\u96C6\u3067\u304D\u307E\u305B\u3093\uFF08\u30B5\u30FC\u30D0\u304C 403 \u3092\u8FD4\u3057\u307E\u3059\uFF09\u3002
|
|
41
|
+
|
|
42
|
+
${SCHEDULE_HELP}
|
|
43
|
+
${INTERVAL_NOTE}`,flags:[NAME_FLAG,REPOSITORY_FLAG,BASE_FLAG,INSTRUCTIONS_FILE_FLAG,INSTRUCTIONS_FLAG,SCHEDULE_FLAG,MODEL_FLAG,PROVIDER_FLAG],async prepare(input,ctx){scheduleId(input,"update");return withResolved(input,{body:JSON.stringify(await bodyWithRepository(input,ctx,"update"))})},plan:input=>({method:"PATCH",path:schedulePath(scheduleId(input,"update")),body:bodyOf(input)}),summarize:body=>summary(scheduleOf(body),GET_COLUMNS),raw:scheduleOf,forbidden:FORBIDDEN,notes:scheduleNotes};function toggleOperation(enable){
|
|
44
|
+
const op=enable?"enable":"disable";return{name:op,summary:enable?`${LABEL}\u3092\u6709\u52B9\u306B\u3059\u308B\uFF08\u30B9\u30B1\u30B8\u30E5\u30FC\u30EB\u3069\u304A\u308A\u306E\u81EA\u52D5\u8D77\u52D5\u304C\u59CB\u307E\u308B\u30FBAI \u30AF\u30EC\u30B8\u30C3\u30C8\u3092\u6D88\u8CBB\u30FB--yes \u304C\u8981\u308B\u30FB\u30AA\u30FC\u30CA\u30FC\u306E\u307F\uFF09`:`${LABEL}\u3092\u7121\u52B9\u306B\u3059\u308B\uFF08\u81EA\u52D5\u8D77\u52D5\u3092\u6B62\u3081\u308B\u30FB\u30AA\u30FC\u30CA\u30FC\u304B\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u7BA1\u7406\u8005\uFF09`,
|
|
45
|
+
usage:`twp agent schedule ${op} <\u5B9A\u671F\u5B9F\u884C>${enable?" --yes":""}`,description:`${SCHEDULE_REF_HELP}
|
|
46
|
+
`+(enable?"\u6709\u52B9\u5316\u3059\u308B\u3068\u3001\u30AA\u30FC\u30CA\u30FC\uFF08\u3042\u306A\u305F\uFF09\u306E\u540D\u7FA9\u3067\u30B9\u30B1\u30B8\u30E5\u30FC\u30EB\u3069\u304A\u308A\u306B\u30BB\u30C3\u30B7\u30E7\u30F3\u304C\u8D77\u52D5\u3057\u3001\u30C6\u30CA\u30F3\u30C8\u306E AI \u30AF\u30EC\u30B8\u30C3\u30C8\u3092\u6D88\u8CBB\u3057\u307E\u3059\u3002":"\u30AA\u30FC\u30CA\u30FC\u304B\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u7BA1\u7406\u8005\u304C\u7121\u52B9\u5316\u3067\u304D\u307E\u3059\u3002\u52D5\u3044\u3066\u3044\u308B\u30BB\u30C3\u30B7\u30E7\u30F3\u306F\u6B62\u3081\u307E\u305B\u3093\uFF08\u6B62\u3081\u308B\u306E\u306F twp agent session cancel\uFF09\u3002"),
|
|
47
|
+
...enable?{destructive:true,confirmation:CREDIT_CONFIRMATION}:{},flags:[],plan:input=>({method:"POST",path:schedulePath(scheduleId(input,op),`/${op}`)}),summarize:body=>summary(scheduleOf(body),GET_COLUMNS),raw:scheduleOf,forbidden:FORBIDDEN,notes:enable?scheduleNotes:void 0}}function messageOf(body){const data=envelope(body,`${LABEL}\u306E\u524A\u9664`);return{message:typeof data["message"]==="string"?data["message"]:null}}var deleteOperation={name:"delete",summary:`${LABEL}\u3092\u524A\u9664\u3059\u308B\uFF08\u53D6\u308A\u6D88\u305B\u306A\u3044\u30FB--yes \u304C\
|
|
48
|
+
\u8981\u308B\u30FB\u30AA\u30FC\u30CA\u30FC\u306E\u307F\uFF09`,usage:"twp agent schedule delete <\u5B9A\u671F\u5B9F\u884C> --yes",description:`${SCHEDULE_REF_HELP}
|
|
49
|
+
\u524A\u9664\u306F\u53D6\u308A\u6D88\u305B\u307E\u305B\u3093\u3002\u6B62\u3081\u305F\u3044\u3060\u3051\u306A\u3089 twp agent schedule disable \u3092\u4F7F\u3063\u3066\u304F\u3060\u3055\u3044\u3002\u8D77\u52D5\u6E08\u307F\u306E\u30BB\u30C3\u30B7\u30E7\u30F3\u30FB\u4F5C\u6210\u3055\u308C\u305F PR \u306F\u6B8B\u308A\u307E\u3059\u3002`,destructive:true,flags:[],plan:input=>({method:"DELETE",path:schedulePath(scheduleId(input,"delete"))}),summarize:messageOf,raw:messageOf,forbidden:FORBIDDEN};function runOf(body){
|
|
50
|
+
return dataOf(body,"\u4ECA\u3059\u3050\u5B9F\u884C","run_id")}var runOperation={name:"run",summary:`${LABEL}\u3092\u4ECA\u3059\u30501\u56DE\u5B9F\u884C\u3059\u308B\uFF08AI \u30AF\u30EC\u30B8\u30C3\u30C8\u3092\u6D88\u8CBB\u30FB--yes \u304C\u8981\u308B\u30FB\u30AA\u30FC\u30CA\u30FC\u306E\u307F\uFF09`,usage:"twp agent schedule run <\u5B9A\u671F\u5B9F\u884C> --yes",description:`${SCHEDULE_REF_HELP}
|
|
51
|
+
\u5B9A\u671F\u8D77\u52D5\u3068\u540C\u3058\u7D4C\u8DEF\u3067\u30BB\u30C3\u30B7\u30E7\u30F3\u30921\u3064\u8D77\u52D5\u3057\u307E\u3059\uFF08\u6B21\u56DE\u306E\u4E88\u5B9A\u306F\u52D5\u304D\u307E\u305B\u3093\u3002\u7121\u52B9\u306A\u5B9A\u7FA9\u3067\u3082\u5B9F\u884C\u3067\u304D\u307E\u3059\uFF09\u3002
|
|
52
|
+
\u524D\u56DE\u306E\u30BB\u30C3\u30B7\u30E7\u30F3\u304C\u307E\u3060\u52D5\u3044\u3066\u3044\u308B\u30FB\u65E5\u6B21\u4E0A\u9650\u30FB\u30AF\u30EC\u30B8\u30C3\u30C8\u4E0D\u8DB3\u306E\u3068\u304D\u306F\u898B\u9001\u3089\u308C\u3001\u7406\u7531\u3092\u51FA\u3057\u3066\u7D42\u4E86\u30B3\u30FC\u30C9 3 \u3067\u7D42\u308F\u308A\u307E\u3059\uFF08\u5B9F\u884C\u5C65\u6B74\u306B\u306F\u6B8B\u308A\u307E\u3059\uFF09\u3002
|
|
53
|
+
\u8D77\u52D5\u3057\u305F\u30BB\u30C3\u30B7\u30E7\u30F3\u306F twp agent session get <\u30BB\u30C3\u30B7\u30E7\u30F3> \u3067\u8FFD\u3048\u307E\u3059\u3002`,destructive:true,confirmation:CREDIT_CONFIRMATION,flags:[],async execute(input,ctx){let body;try{body=await ctx.send({method:"POST",path:schedulePath(scheduleId(input,"run"),"/run")})}catch(err){if(!(err instanceof ApiError&&err.status>=400&&err.status<500)&&!(err instanceof NotLoggedInError)&&!(err instanceof SessionExpiredError)){ctx.warn(`\u9001\u4FE1\
|
|
54
|
+
\u306E\u7D50\u679C\u3092\u53D7\u3051\u53D6\u308C\u307E\u305B\u3093\u3067\u3057\u305F\u3002\u30B5\u30FC\u30D0\u3067\u8D77\u52D5\u6E08\u307F\u306E\u3053\u3068\u304C\u3042\u308A\u307E\u3059\uFF08\u6253\u3061\u76F4\u3059\u3068\u4E8C\u91CD\u306B\u30AF\u30EC\u30B8\u30C3\u30C8\u3092\u6D88\u8CBB\u3057\u3046\u308B\uFF09\u3002twp agent schedule runs ${scheduleId(input,"run")} --limit 1 \u3067\u78BA\u304B\u3081\u3066\u304F\u3060\u3055\u3044\u3002`)}throw err}const run=runOf(body);if(run["result"]==="skippe\
|
|
55
|
+
d"){throw new ApiRejectedError(`\u898B\u9001\u3089\u308C\u307E\u3057\u305F\uFF08skip_reason=${String(run["skip_reason"]??"\u4E0D\u660E")}\u30FBrun=${String(run["run_id"])}\uFF09\u3002\u7406\u7531\u306F twp agent schedule runs ${scheduleId(input,"run")} \u3067\u3082\u78BA\u8A8D\u3067\u304D\u307E\u3059`)}if(run["result"]!=="started"){const reason=typeof run["error_message"]==="string"&&run["error_message"]!==""?`: ${run["error_message"]}`:"";throw new ApiRejectedError(`\u30BB\u30C3\u30B7\u30E7\u30F3\u3092\u8D77\u52D5\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08result=${String(
|
|
56
|
+
run["result"])}\u30FBrun=${String(run["run_id"])}\uFF09${reason}`)}return body},plan:input=>({method:"POST",path:schedulePath(scheduleId(input,"run"),"/run")}),summarize:body=>pick(runOf(body),RUN_COLUMNS),raw:runOf,forbidden:FORBIDDEN,notes:body=>{const id=runOf(body)["session_id"];return typeof id==="string"?[`\u30BB\u30C3\u30B7\u30E7\u30F3\u3092\u8D77\u52D5\u3057\u307E\u3057\u305F\u3002\u9032\u307F\u5177\u5408\u306F twp agent session get ${id}\u3001\u4F1A\u8A71\u306F twp agent session chat ${id}\
|
|
57
|
+
\u3067\u8AAD\u3081\u307E\u3059\u3002`]:[]}};var runPaging=envelopePaging({label:`${LABEL}\u306E\u5B9F\u884C\u5C65\u6B74`});function runRows(body){envelope(body,`${LABEL}\u306E\u5B9F\u884C\u5C65\u6B74`);return runPaging.items(body)}var runsOperation={name:"runs",summary:`${LABEL}\u306E\u5B9F\u884C\u5C65\u6B74\u3092\u65B0\u3057\u3044\u9806\u306B\u4E00\u89A7\u3059\u308B\uFF08\u8D77\u52D5\u30FB\u898B\u9001\u308A\u30FB\u5931\u6557\u3068\u7406\u7531\u30FB\u30BB\u30C3\u30B7\u30E7\u30F3\u30FBPR\uFF09`,
|
|
58
|
+
usage:"twp agent schedule runs <\u5B9A\u671F\u5B9F\u884C> [--all] [--limit <\u4EF6\u6570>] [--cursor <\u30AB\u30FC\u30BD\u30EB>]",description:`${SCHEDULE_REF_HELP}
|
|
59
|
+
1\u5B9F\u884C\uFF1D1\u884C\u3067\u3059\u3002result \u306F started\uFF08\u8D77\u52D5\uFF09/ skipped\uFF08\u898B\u9001\u308A\u30FBskip_reason \u306B\u7406\u7531\uFF09/ start_failed\uFF08\u8D77\u52D5\u5931\u6557\uFF09\u3067\u3059\u3002
|
|
60
|
+
--output json \u306F API \u304C\u8FD4\u3059\u5168\u30D5\u30A3\u30FC\u30EB\u30C9\uFF08\u6D88\u8CBB\u30AF\u30EC\u30B8\u30C3\u30C8\u7B49\uFF09\u3092\u51FA\u3057\u307E\u3059\u3002--output table / text / tsv \u306F\u8981\u7D04\u5217\uFF08${RUN_COLUMNS.join(" / ")}\uFF09\u3067\u3059\u3002
|
|
61
|
+
|
|
62
|
+
`+LIST_PAGING_HELP,flags:[...LIST_FLAGS],paging:runPaging,plan(input){const limit=positiveInteger(input.flags,"--limit");if(limit!==void 0&&limit>RUNS_MAX_LIMIT)throw new UsageError(`--limit \u306F 1\u301C${RUNS_MAX_LIMIT} \u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044: ${limit}`,"\u5168\u4EF6\u306F --all \u3067\u8FBF\u308C\u307E\u3059\u3002");return{method:"GET",path:schedulePath(scheduleId(input,"runs"),"/runs"),query:{limit,cursor:nonEmpty(input.flags,"--cursor")}}},summarize:body=>runRows(
|
|
63
|
+
body).map(row=>pick(row,RUN_COLUMNS)),raw:runRows,forbidden:FORBIDDEN,notes:body=>runRows(body).length===0?["\u5B9F\u884C\u5C65\u6B74\u306F\u307E\u3060\u3042\u308A\u307E\u305B\u3093\u3002"]:[]};var scheduleResource={name:"schedule",summary:"\u5B9A\u671F\u5B9F\u884C\uFF08\u5B9A\u7FA9\u306E\u4F5C\u6210\u30FB\u66F4\u65B0\u30FB\u6709\u52B9\u5316/\u7121\u52B9\u5316\u30FB\u524A\u9664\u30FB\u4ECA\u3059\u3050\u5B9F\u884C\u30FB\u5B9F\u884C\u5C65\u6B74\uFF09",operations:[listOperation,getOperation,createOperation,
|
|
64
|
+
updateOperation,toggleOperation(true),toggleOperation(false),deleteOperation,runOperation,runsOperation]};var SESSION_COLUMNS=["sessionId","status","repositoryFullName","baseBranch","workBranch","prUrl","aiModel","myRole","createdAt"];var SESSION_GET_COLUMNS=["sessionId","status","repositoryFullName","repositoryId","baseBranch","workBranch","branchName","prUrl","errorMessage","aiProvider","aiModel","sessionMode","executionMode","masterUserName","myRole","createdAt","updatedAt","completedAt","instructions"];var CHAT_COLUMNS=["timestamp","role","user_name","content"];var REPOSITORY_COLUMNS=["id","full\
|
|
65
|
+
_name","default_branch","private"];var BRANCH_COLUMNS=["name","protected"];var DIFF_COLUMNS=["path","status","additions","deletions"];var INSTRUCTION_MAX_CHARS2=1e4;var ACTIVE=new Set(["created","pending","provisioning","running"]);var FAILED=new Set(["failed","cancelled","expired"]);var WAIT_POLL_INTERVAL_MS=5e3;var WAIT_DEFAULT_SECONDS=300;var WAIT_MAX_SECONDS=540;var WAIT_CHAT_SCAN_LIMIT=2e3;var sleep=ms=>new Promise(resolve=>setTimeout(resolve,ms));var SESSION_REF_HELP="<\u30BB\u30C3\u30B7\u30E7\u30F3> \u306F\u30BB\u30C3\u30B7\u30E7\u30F3 ID\uFF08twp\
|
|
66
|
+
agent session list \u306E sessionId \u5217\uFF09\u3067\u3059\u3002";var CREDIT_CONFIRMATION2="AI \u30AF\u30EC\u30B8\u30C3\u30C8\u3092\u6D88\u8CBB\u3059\u308B\u64CD\u4F5C";function usageOf2(op){return`twp agent ${op} help`}function noArgs2(input,op){if(input.args.length>0)throw new UsageError(`${op} \u306F\u4F4D\u7F6E\u5F15\u6570\u3092\u53D6\u308A\u307E\u305B\u3093: ${input.args.join(" ")}`,usageOf2(op))}function single(input,op,label,hint){const values=input.args.map(arg=>arg.trim());if(values.
|
|
67
|
+
length>1)throw new UsageError(`${op} \u304C\u53D7\u3051\u53D6\u308C\u308B\u5F15\u6570\u306F ${label} \u3060\u3051\u3067\u3059: ${values.slice(1).join(" ")}`,usageOf2(op));const value=values[0]??"";if(value==="")throw new UsageError(`${label}\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044`,usageOf2(op));if(!isSafePathSegment(value))throw new UsageError(`${label}\u3068\u3057\u3066\u4F7F\u3048\u306A\u3044\u5024\u3067\u3059: ${value}`,hint);return value}function sessionId(input,op){return single(
|
|
68
|
+
input,`session ${op}`,"<\u30BB\u30C3\u30B7\u30E7\u30F3>","\u30BB\u30C3\u30B7\u30E7\u30F3 ID \u306F twp agent session list \u306E sessionId \u5217\u3067\u78BA\u8A8D\u3067\u304D\u307E\u3059\u3002")}function sessionPath(id,suffix=""){return`${AGENT_SESSIONS_PATH}/${encodeURIComponent(id)}${suffix}`}function envelope2(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`);
|
|
69
|
+
return body}function sessionOf(body,what){const session=envelope2(body,what)["session"];if(!isRecord(session)||typeof session["sessionId"]!=="string"){throw new ApiResponseError(`${what}\u306E\u5FDC\u7B54\u306B session.sessionId \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}return session}function listOf(body,key,what){const value=envelope2(body,what)[key];if(!Array.isArray(value))throw new ApiResponseError(`${what}\u306E\u5FDC\u7B54\u306B\
|
|
70
|
+
${key} \u914D\u5217\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`);return value}function limitIn(input,max){const limit=positiveInteger(input.flags,"--limit");if(limit!==void 0&&limit>max)throw new UsageError(`--limit \u306F 1\u301C${max} \u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044: ${limit}`);return limit}function refusedBeforeSending(err){return err instanceof ApiError&&err.status>=400&&err.status<500||err instanceof
|
|
71
|
+
NotLoggedInError||err instanceof SessionExpiredError}var WAIT_FLAG={name:"--wait",summary:"runner \u306E\u4F5C\u696D\u304C\u6B62\u307E\u308B\uFF08\u5B8C\u4E86\u30FB\u5931\u6557\u30FB\u5165\u529B\u5F85\u3061\uFF09\u307E\u3067\u5F85\u3061\u3001\u6700\u5F8C\u306E\u30A2\u30B7\u30B9\u30BF\u30F3\u30C8\u767A\u8A00\u30FB\u4F5C\u696D\u30D6\u30E9\u30F3\u30C1\u30FBPR URL \u3092\u51FA\u3059",takesValue:false};var TIMEOUT_FLAG={name:"--timeout",summary:`--wait \u3067\u5F85\u3064\u4E0A\u9650\u306E\u79D2\u6570\uFF08\u65E2\u5B9A ${WAIT_DEFAULT_SECONDS}\
|
|
72
|
+
\u30FB\u6700\u5927 ${WAIT_MAX_SECONDS}\uFF09`,takesValue:true,placeholder:"<\u79D2>"};function waitSeconds(input,op){const timeout=positiveInteger(input.flags,TIMEOUT_FLAG.name);if(!input.flags.has(WAIT_FLAG.name)){if(timeout!==void 0)throw new UsageError("--timeout \u306F --wait \u3068\u4E00\u7DD2\u306B\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",usageOf2(op));return void 0}if(timeout!==void 0&&timeout>WAIT_MAX_SECONDS){throw new UsageError(`--timeout \u306F ${WAIT_MAX_SECONDS} \u79D2\u4EE5\u4E0B\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\
|
|
73
|
+
\u3044\uFF08\u305D\u308C\u3088\u308A\u9577\u304F\u5F85\u3064\u306A\u3089 --wait \u3092\u5916\u3057\u3001\u3042\u3068\u3067 twp agent session get \u3067\u78BA\u304B\u3081\u3066\u304F\u3060\u3055\u3044\uFF09`,usageOf2(op))}return timeout??WAIT_DEFAULT_SECONDS}function chatRows(body){return listOf(body,"messages","\u30C1\u30E3\u30C3\u30C8")}function lastAssistant(rows){for(let i=rows.length-1;i>=0;i--){const row=rows[i];if(isRecord(row)&&row["role"]==="assistant"&&typeof row["content"]==="string"){
|
|
74
|
+
return{role:"assistant",content:row["content"],timestamp:typeof row["timestamp"]==="string"?row["timestamp"]:""}}}return null}function isAfter(timestamp,since){if(since===null)return true;const a=Date.parse(timestamp);const b=Date.parse(since);return!Number.isNaN(a)&&!Number.isNaN(b)&&a>b}async function waitForSession(ctx,id,seconds,since){const deadline=Date.now()+seconds*1e3;const hint=`twp agent session get ${id}`;ctx.warn(`runner \u306E\u4F5C\u696D\u304C\u6B62\u307E\u308B\u306E\u3092\u5F85\u3061\u307E\u3059\uFF08${WAIT_POLL_INTERVAL_MS/
|
|
75
|
+
1e3} \u79D2\u304A\u304D\u30FB\u6700\u5927 ${seconds} \u79D2\uFF09\u3002`);for(;;){await sleep(WAIT_POLL_INTERVAL_MS);let session;try{session=sessionOf(await ctx.send({method:"GET",path:sessionPath(id)}),"\u30BB\u30C3\u30B7\u30E7\u30F3");const status=String(session["status"]);if(FAILED.has(status)){const reason=typeof session["errorMessage"]==="string"&&session["errorMessage"]!==""?`: ${session["errorMessage"]}`:"";throw new ApiRejectedError(`\u30BB\u30C3\u30B7\u30E7\u30F3\u304C ${status} \u3067\u7D42\u308F\u308A\u307E\u3057\u305F${reason}\
|
|
76
|
+
\u3002\u4F1A\u8A71\u306F twp agent session chat ${id} \u3067\u8AAD\u3081\u307E\u3059`)}if(!ACTIVE.has(status)){const last=lastAssistant(chatRows(await ctx.send({method:"GET",path:sessionPath(id,"/chat-messages"),query:{limit:WAIT_CHAT_SCAN_LIMIT}})));if(last!==null&&isAfter(last.timestamp,since))return{session,last};if(since===null)return{session,last}}}catch(err){if(err instanceof ApiRejectedError)throw err;ctx.warn(`\u6307\u793A\u306F\u53D7\u3051\u4ED8\u3051\u6E08\u307F\u3067\u3059\u304C\u3001\u5F85\u3064\u9014\u4E2D\u3067\u30BB\u30C3\u30B7\u30E7\u30F3\u3092\u8AAD\u3081\u307E\u305B\u3093\u3067\u3057\u305F\u3002\u6253\u3061\u76F4\u3059\u524D\u306B ${hint}\
|
|
77
|
+
\u3067\u78BA\u304B\u3081\u3066\u304F\u3060\u3055\u3044\u3002`);if(err instanceof NetworkError||err instanceof ApiResponseError||err instanceof ApiError&&(err.status>=500||err.status===429)){throw new WaitTimeoutError(`\u5F85\u3064\u9014\u4E2D\u3067\u30BB\u30C3\u30B7\u30E7\u30F3\u3092\u8AAD\u3081\u307E\u305B\u3093\u3067\u3057\u305F\uFF08${err.message}\uFF09\u3002\u4F5C\u696D\u306F\u53D7\u3051\u4ED8\u3051\u6E08\u307F\u3067\u3059\u3002\u6253\u3061\u76F4\u3055\u305A ${hint} \u3067\u78BA\u304B\u3081\u3066\u304F\u3060\u3055\u3044`)}
|
|
78
|
+
throw err}if(Date.now()>=deadline){const status=String(session["status"]);throw new WaitTimeoutError(ACTIVE.has(status)?`${seconds} \u79D2\u5F85\u3061\u307E\u3057\u305F\u304C\u4F5C\u696D\u304C\u6B62\u307E\u308A\u307E\u305B\u3093\u3067\u3057\u305F\uFF08status=${status}\uFF09\u3002\u3042\u3068\u3067 ${hint} \u3068 twp agent session chat ${id} \u3067\u78BA\u304B\u3081\u3066\u304F\u3060\u3055\u3044\uFF08\u4F5C\u696D\u306F runner \u4E0A\u3067\u7D9A\u3044\u3066\u3044\u307E\u3059\uFF09`:`${seconds} \u79D2\u5F85\u3061\
|
|
79
|
+
\u307E\u3057\u305F\u304C\u3001\u9001\u3063\u305F\u6307\u793A\u3088\u308A\u5F8C\u306E\u30A2\u30B7\u30B9\u30BF\u30F3\u30C8\u767A\u8A00\u3092\u78BA\u8A8D\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08status=${status}\uFF09\u3002twp agent session chat ${id} \u3067\u78BA\u304B\u3081\u3066\u304F\u3060\u3055\u3044\uFF08\u6B62\u307E\u3063\u305F\u307E\u307E\u306A\u3089 twp agent session resume \u3067\u518D\u958B\u3067\u304D\u307E\u3059\uFF09`)}}}function startedOf(body,what){const data=envelope2(body,
|
|
80
|
+
what);const session=data["session"];if(session!==void 0&&session!==null&&!isRecord(session))throw new ApiResponseError(`${what}\u306E\u5FDC\u7B54\u306E session \u304C\u60F3\u5B9A\u3068\u9055\u3044\u307E\u3059\u3002`);const ts=data["timestamp"];return{session:isRecord(session)?session:null,timestamp:typeof ts==="string"?ts:null,last_assistant_message:typeof data["last_assistant_message"]==="string"?data["last_assistant_message"]:null,last_assistant_at:typeof data["last_assistant_at"]==="string"?data["\
|
|
81
|
+
last_assistant_at"]:null}}function startedRaw(what){return body=>startedOf(body,what)}function startedSummary(what){return body=>{const started=startedOf(body,what);const session=started.session??{};return{sessionId:session["sessionId"]??null,status:session["status"]??null,workBranch:session["workBranch"]??session["branchName"]??null,prUrl:session["prUrl"]??null,last_assistant_message:started.last_assistant_message}}}function startedDocument(what){return body=>{const started=startedOf(body,what);
|
|
82
|
+
const session=started.session??{};const lines=[started.last_assistant_message??"\uFF08\u30A2\u30B7\u30B9\u30BF\u30F3\u30C8\u306E\u767A\u8A00\u306F\u307E\u3060\u3042\u308A\u307E\u305B\u3093\uFF09",""];for(const key of["sessionId","status","workBranch","branchName","prUrl","errorMessage"]){const value=session[key];if(value!==null&&value!==void 0&&value!=="")lines.push(`${key}: ${String(value)}`)}return`${lines.join("\n")}
|
|
83
|
+
`}}function startedNotes(op){return(body,input)=>{const started=startedOf(body,op);const id=started.session?.["sessionId"]??input.args[0]??"<\u30BB\u30C3\u30B7\u30E7\u30F3>";if(input.flags.has(WAIT_FLAG.name))return[];return[`runner \u306F\u975E\u540C\u671F\u3067\u52D5\u304D\u307E\u3059\u3002\u9032\u307F\u5177\u5408\u306F twp agent session get ${String(id)}\u3001\u4F1A\u8A71\u306F twp agent session chat ${String(id)} \u3067\u8AAD\u3081\u307E\u3059\uFF08--wait \u3092\u4ED8\u3051\u308B\u3068\u6B62\u307E\u308B\u307E\u3067\u5F85\u3061\u307E\u3059\uFF09\u3002`]}}
|
|
84
|
+
function waitPlannedNotes(input,idHint){return["\u9001\u308B\u3068\u30C6\u30CA\u30F3\u30C8\u306E AI \u30AF\u30EC\u30B8\u30C3\u30C8\u3092\u6D88\u8CBB\u3057\u307E\u3059\uFF08runner \u304C AI \u3092\u547C\u3076\u305F\u3081\uFF09",...input.flags.has(WAIT_FLAG.name)?[`\u7D9A\u3051\u3066 GET ${AGENT_SESSIONS_PATH}/${idHint} \u3092 ${WAIT_POLL_INTERVAL_MS/1e3} \u79D2\u304A\u304D\u306B\u9001\u308A\u3001\u6B62\u307E\u3063\u305F\u3089\u30C1\u30E3\u30C3\u30C8\u30921\u56DE\u8AAD\u307F\u307E\u3059`]:[]]}async function sendAndMaybeWait(input,ctx,plan,op,idFrom){
|
|
85
|
+
const seconds=waitSeconds(input,op);let sent;try{sent=await ctx.send(plan)}catch(err){if(op==="session instruct"&&err instanceof ApiError&&err.status===400&&String(err.body?.error_description??"").includes("\u53D7\u3051\u4ED8\u3051\u3089\u308C\u308B\u72B6\u614B\u3067\u306F\u3042\u308A\u307E\u305B\u3093")){ctx.warn("\u7D42\u308F\u3063\u305F\u30BB\u30C3\u30B7\u30E7\u30F3\u306B\u306F\u6307\u793A\u3092\u9001\u308C\u307E\u305B\u3093\u3002twp agent session resume <\u30BB\u30C3\u30B7\u30E7\u30F3> --body-file <\u30D1\u30B9> --yes \u3067\u518D\u958B\u306E\u6307\u793A\u3068\u3057\u3066\u9001\u308C\u307E\u3059\u3002")}
|
|
86
|
+
if(!refusedBeforeSending(err)){ctx.warn("\u9001\u4FE1\u306E\u7D50\u679C\u3092\u53D7\u3051\u53D6\u308C\u307E\u305B\u3093\u3067\u3057\u305F\u3002\u30B5\u30FC\u30D0\u3067\u53D7\u3051\u4ED8\u3051\u6E08\u307F\u306E\u3053\u3068\u304C\u3042\u308A\u307E\u3059\uFF08\u6253\u3061\u76F4\u3059\u3068\u4E8C\u91CD\u306B\u30AF\u30EC\u30B8\u30C3\u30C8\u3092\u6D88\u8CBB\u3057\u3046\u308B\uFF09\u3002twp agent session list \u3067\u78BA\u304B\u3081\u3066\u304F\u3060\u3055\u3044\u3002")}throw err}const data=envelope2(
|
|
87
|
+
sent,op);if(isRecord(data["session"])&&FAILED.has(String(data["session"]["status"]))){const failed=data["session"];const reason=typeof failed["errorMessage"]==="string"&&failed["errorMessage"]!==""?`: ${failed["errorMessage"]}`:"";throw new ApiRejectedError(`\u30BB\u30C3\u30B7\u30E7\u30F3\u306F ${String(failed["status"])} \u3067\u3059${reason}\uFF08session=${String(failed["sessionId"])}\uFF09`)}const base={result:true,session:isRecord(data["session"])?data["session"]:null,timestamp:typeof data["\
|
|
88
|
+
timestamp"]==="string"?data["timestamp"]:null,last_assistant_message:null,last_assistant_at:null};if(seconds===void 0)return base;const id=idFrom(data);const since=op==="session create"?null:base["timestamp"]??new Date().toISOString();const{session,last}=await waitForSession(ctx,id,seconds,since);return{...base,session,last_assistant_message:last?.content??null,last_assistant_at:last?.timestamp??null}}var sessionPaging=envelopePaging({label:"\u30BB\u30C3\u30B7\u30E7\u30F3\u4E00\u89A7"});function sessionRows(body){
|
|
89
|
+
envelope2(body,"\u30BB\u30C3\u30B7\u30E7\u30F3\u4E00\u89A7");return sessionPaging.items(body)}var REPOSITORY_FLAG2={name:"--repository",summary:"\u30EA\u30DD\u30B8\u30C8\u30EA\uFF08owner/repo\u30FB\u540D\u524D\u30FBID\u3002twp agent repository list \u3067\u78BA\u8A8D\u3067\u304D\u308B\uFF09",takesValue:true,placeholder:"<owner/repo>"};async function resolveRepository(input,ctx,ref,flag){const repo=await ctx.resolver.agentRepository(ref,flag);if(!isSafePathSegment(repo.id))throw new UsageError(`\u30EA\
|
|
90
|
+
\u30DD\u30B8\u30C8\u30EA ID \u3068\u3057\u3066\u4F7F\u3048\u306A\u3044\u5024\u3067\u3059: ${repo.id}`);return withResolved(input,{repositoryId:repo.id})}var sessionListOperation={name:"list",summary:"\u30B3\u30F3\u30C6\u30CA\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u306E\u30BB\u30C3\u30B7\u30E7\u30F3\u3092\u4E00\u89A7\u3059\u308B\uFF08\u81EA\u5206\u304C\u30DE\u30B9\u30BF\u30FC\u304B\u30E1\u30F3\u30D0\u30FC\u306E\u3082\u306E\u30FB\u65B0\u3057\u3044\u9806\uFF09",usage:"twp agent session list [--status \
|
|
91
|
+
<\u72B6\u614B>] [--repository <owner/repo>] [--all] [--limit <\u4EF6\u6570>] [--cursor <\u30AB\u30FC\u30BD\u30EB>]",description:`\u81EA\u5206\u304C\u30DE\u30B9\u30BF\u30FC\uFF08\u8D77\u52D5\u3057\u305F\u4EBA\uFF09\u304B\u30E1\u30F3\u30D0\u30FC\u3068\u3057\u3066\u53C2\u52A0\u3057\u3066\u3044\u308B\u30BB\u30C3\u30B7\u30E7\u30F3\u3060\u3051\u304C\u51FA\u307E\u3059\u3002
|
|
92
|
+
--status \u306F pending / provisioning / running / completed / failed / cancelled \u7B49\u306E\u72B6\u614B\u3067\u7D5E\u308A\u307E\u3059\u3002
|
|
93
|
+
|
|
94
|
+
--output json \u306F API \u304C\u8FD4\u3059\u5168\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u51FA\u3057\u307E\u3059\uFF08\u6307\u793A\u6587\u30FB\u30B7\u30B9\u30C6\u30E0\u30D7\u30ED\u30F3\u30D7\u30C8\u30FB\u6DFB\u4ED8\u306E\u4E00\u89A7\u3092\u542B\u3080\uFF09\u3002
|
|
95
|
+
--output table / text / tsv \u306F\u8981\u7D04\u5217\uFF08${SESSION_COLUMNS.join(" / ")}\uFF09\u3067\u3059\u3002
|
|
96
|
+
|
|
97
|
+
`+LIST_PAGING_HELP,flags:[...LIST_FLAGS,{name:"--status",summary:"\u72B6\u614B\u3067\u7D5E\u308A\u8FBC\u3080",takesValue:true,placeholder:"<\u72B6\u614B>"},REPOSITORY_FLAG2],paging:sessionPaging,async prepare(input,ctx){noArgs2(input,"session list");limitIn(input,100);const repo=nonEmpty(input.flags,REPOSITORY_FLAG2.name);return repo===void 0?input:resolveRepository(input,ctx,repo,REPOSITORY_FLAG2.name)},plan:input=>({method:"GET",path:AGENT_SESSIONS_PATH,query:{status:nonEmpty(input.flags,"--st\
|
|
98
|
+
atus"),repositoryId:input.resolved?.["repositoryId"],limit:limitIn(input,100),cursor:nonEmpty(input.flags,"--cursor")}}),summarize:body=>sessionRows(body).map(row=>pick(row,SESSION_COLUMNS)),raw:sessionRows,notes:body=>sessionRows(body).length===0?["\u6761\u4EF6\u306B\u4E00\u81F4\u3059\u308B\u30BB\u30C3\u30B7\u30E7\u30F3\u306F\u3042\u308A\u307E\u305B\u3093\u3002"]:[]};var sessionGetOperation={name:"get",summary:"\u30BB\u30C3\u30B7\u30E7\u30F31\u4EF6\u306E\u72B6\u614B\u30FB\u4F5C\u696D\u30D6\u30E9\u30F3\u30C1\u30FBPR \u3092\u8868\u793A\u3059\u308B",
|
|
99
|
+
usage:"twp agent session get <\u30BB\u30C3\u30B7\u30E7\u30F3>",description:`${SESSION_REF_HELP}
|
|
100
|
+
\u53C2\u52A0\u3057\u3066\u3044\u306A\u3044\u30BB\u30C3\u30B7\u30E7\u30F3\u306F\u300C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u300D\u306B\u306A\u308A\u307E\u3059\u3002
|
|
101
|
+
|
|
102
|
+
--output json \u306F API \u304C\u8FD4\u3059\u5168\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u51FA\u3057\u307E\u3059\u3002`,flags:[],plan:input=>({method:"GET",path:sessionPath(sessionId(input,"get"))}),summarize:body=>pick(sessionOf(body,"\u30BB\u30C3\u30B7\u30E7\u30F3"),SESSION_GET_COLUMNS),raw:body=>sessionOf(body,"\u30BB\u30C3\u30B7\u30E7\u30F3")};var INSTRUCTIONS_SPEC={flag:"--instructions",fileFlag:"--instructions-file",label:"\u521D\u671F\u6307\u793A",maxChars:INSTRUCTION_MAX_CHARS2,usage:"twp a\
|
|
103
|
+
gent session create --repository <owner/repo> --instructions-file <\u30D1\u30B9> --yes"};var BODY_SPEC={flag:"--body",fileFlag:"--body-file",label:"\u6307\u793A",maxChars:INSTRUCTION_MAX_CHARS2,usage:"twp agent session instruct <\u30BB\u30C3\u30B7\u30E7\u30F3> --body-file <\u30D1\u30B9> --yes"};var sessionCreateOperation={name:"create",summary:"\u30EA\u30DD\u30B8\u30C8\u30EA\u3067\u4F5C\u696D\u3059\u308B\u30BB\u30C3\u30B7\u30E7\u30F3\u3092\u8D77\u52D5\u3059\u308B\uFF08AI \u30AF\u30EC\u30B8\u30C3\u30C8\u3092\u6D88\u8CBB\u30FB--yes \u304C\u8981\u308B\u30FB--wait \u3067\u6B62\u307E\u308B\u307E\u3067\u5F85\u3064\uFF09",
|
|
104
|
+
usage:"twp agent session create --repository <owner/repo> (--instructions-file <\u30D1\u30B9> | --instructions <\u6587>) [--base <\u30D6\u30E9\u30F3\u30C1>] [--model <\u30E2\u30C7\u30EB>] [--wait [--timeout <\u79D2>]] --yes",description:`\u753B\u9762\u306E\u300C\u65B0\u3057\u3044\u30BB\u30C3\u30B7\u30E7\u30F3\u300D\u3068\u540C\u3058 POST /api/v2/agent/sessions \u3092\u9001\u308A\u307E\u3059\u3002runner \u304C\u8D77\u52D5\u3057\u3066\u30EA\u30DD\u30B8\u30C8\u30EA\u3092\u53D6\u5F97\u3057\u3001
|
|
105
|
+
\u4F5C\u696D\u30D6\u30E9\u30F3\u30C1\uFF08agent/task-<\u30BB\u30C3\u30B7\u30E7\u30F3ID>\uFF09\u3067\u6307\u793A\u3069\u304A\u308A\u306B\u4F5C\u696D\u3057\u307E\u3059\u3002\u30C6\u30CA\u30F3\u30C8\u306E AI \u30AF\u30EC\u30B8\u30C3\u30C8\u3092\u6D88\u8CBB\u3057\u307E\u3059\u3002
|
|
106
|
+
--repository \u306F twp agent repository list \u306E full_name\uFF08owner/repo\uFF09\u304B id \u3067\u3059\u3002
|
|
107
|
+
--base \u3092\u7701\u304F\u3068\u3001\u30B5\u30FC\u30D0\u304C\u30EA\u30DD\u30B8\u30C8\u30EA\u306E\u65E2\u5B9A\u306E\u30D6\u30E9\u30F3\u30C1\u3092\u4F7F\u3044\u307E\u3059\u3002--model \u3092\u7701\u304F\u3068\u30B5\u30FC\u30D0\u306E\u65E2\u5B9A\u306E\u30E2\u30C7\u30EB\u3067\u3059\u3002
|
|
108
|
+
--wait \u3092\u4ED8\u3051\u308B\u3068 5 \u79D2\u304A\u304D\u306B\u72B6\u614B\u3092\u5F15\u304D\u3001\u4F5C\u696D\u304C\u6B62\u307E\u3063\u305F\u3089\u6700\u5F8C\u306E\u30A2\u30B7\u30B9\u30BF\u30F3\u30C8\u767A\u8A00\u30FB\u4F5C\u696D\u30D6\u30E9\u30F3\u30C1\u30FBPR URL \u3092\u51FA\u3057\u307E\u3059
|
|
109
|
+
\uFF08failed / cancelled / expired \u306A\u3089\u7D42\u4E86\u30B3\u30FC\u30C9 3\u3001--timeout \u79D2\u3067\u6B62\u307E\u3089\u306A\u3051\u308C\u3070\u7D42\u4E86\u30B3\u30FC\u30C9 6\uFF1D\u672A\u5B8C\u4E86\u30FB\u6253\u3061\u76F4\u3055\u306A\u3044\u3002\u65E2\u5B9A ${WAIT_DEFAULT_SECONDS} \u79D2\u30FB\u6700\u5927 ${WAIT_MAX_SECONDS} \u79D2\uFF09\u3002
|
|
110
|
+
\u6307\u793A\u6587\u306F\u6539\u884C\u3084 Markdown \u3092\u58CA\u3055\u306A\u3044\u3088\u3046 --instructions-file \u3067\u6E21\u3057\u3066\u304F\u3060\u3055\u3044\uFF08- \u3067\u6A19\u6E96\u5165\u529B\uFF09\u3002`,destructive:true,confirmation:CREDIT_CONFIRMATION2,flags:[REPOSITORY_FLAG2,{name:"--base",summary:"\u4F5C\u696D\u306E\u8D77\u70B9\u306B\u3059\u308B\u30D6\u30E9\u30F3\u30C1\uFF08twp agent repository branches \u3067\u78BA\u8A8D\u3067\u304D\u308B\uFF09",takesValue:true,placeholder:"<\u30D6\u30E9\u30F3\u30C1\
|
|
111
|
+
>"},{name:INSTRUCTIONS_SPEC.fileFlag,summary:"\u521D\u671F\u6307\u793A\u3092\u30D5\u30A1\u30A4\u30EB\u304B\u3089\u8AAD\u3080\uFF08- \u3067\u6A19\u6E96\u5165\u529B\uFF09",takesValue:true,placeholder:"<\u30D1\u30B9>"},{name:INSTRUCTIONS_SPEC.flag,summary:"\u521D\u671F\u6307\u793A\u3092\u76F4\u63A5\u6E21\u3059\uFF08\u6539\u884C\u3092\u542B\u3080\u306A\u3089 --instructions-file\uFF09",takesValue:true,placeholder:"<\u6587>"},{name:"--model",summary:"AI \u30E2\u30C7\u30EB\uFF08claude \u306E\u30E2\u30C7\u30EB\u306E\u307F\u30FB\u7701\u7565\u6642\u306F\u30B5\u30FC\u30D0\u306E\u65E2\u5B9A\uFF09",
|
|
112
|
+
takesValue:true,placeholder:"<\u30E2\u30C7\u30EB>"},WAIT_FLAG,TIMEOUT_FLAG],async prepare(input,ctx){noArgs2(input,"session create");waitSeconds(input,"session create");const repo=nonEmpty(input.flags,REPOSITORY_FLAG2.name);if(repo===void 0)throw new UsageError("--repository \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044","\u30EA\u30DD\u30B8\u30C8\u30EA\u306F twp agent repository list \u3067\u78BA\u8A8D\u3067\u304D\u307E\u3059\u3002");const instructions=await readBody(input,INSTRUCTIONS_SPEC);
|
|
113
|
+
if(instructions===void 0)throw new UsageError("\u521D\u671F\u6307\u793A\u3092 --instructions-file \u304B --instructions \u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",INSTRUCTIONS_SPEC.usage);return withResolved(await resolveRepository(input,ctx,repo,REPOSITORY_FLAG2.name),{instructions})},plan:input=>({method:"POST",path:AGENT_SESSIONS_PATH,body:{repositoryId:requireResolved(input,"repositoryId"),instructions:requireResolved(input,"instructions"),...nonEmpty(input.flags,"--base")!==void 0?
|
|
114
|
+
{baseBranch:nonEmpty(input.flags,"--base")}:{},...nonEmpty(input.flags,"--model")!==void 0?{aiModel:nonEmpty(input.flags,"--model")}:{}}}),plannedNotes:input=>waitPlannedNotes(input,"{\u4F5C\u6210\u3057\u305F\u30BB\u30C3\u30B7\u30E7\u30F3ID}"),execute:(input,ctx)=>sendAndMaybeWait(input,ctx,sessionCreateOperation.plan(input),"session create",data=>{const session=data["session"];const id=isRecord(session)?session["sessionId"]:void 0;if(typeof id!=="string"||!isSafePathSegment(id))throw new ApiResponseError(
|
|
115
|
+
"\u30BB\u30C3\u30B7\u30E7\u30F3\u4F5C\u6210\u306E\u5FDC\u7B54\u306B session.sessionId \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002");return id}),summarize:startedSummary("\u30BB\u30C3\u30B7\u30E7\u30F3\u4F5C\u6210"),raw:startedRaw("\u30BB\u30C3\u30B7\u30E7\u30F3\u4F5C\u6210"),document:startedDocument("\u30BB\u30C3\u30B7\u30E7\u30F3\u4F5C\u6210"),notes:startedNotes("\u30BB\u30C3\u30B7\u30E7\u30F3\u4F5C\u6210")};var sessionInstructOperation={
|
|
116
|
+
name:"instruct",summary:"\u52D5\u3044\u3066\u3044\u308B\u30BB\u30C3\u30B7\u30E7\u30F3\u3078\u8FFD\u52A0\u306E\u6307\u793A\u3092\u9001\u308B\uFF08AI \u30AF\u30EC\u30B8\u30C3\u30C8\u3092\u6D88\u8CBB\u30FB--yes \u304C\u8981\u308B\u30FB--wait \u3067\u7B54\u3048\u3092\u5F85\u3064\uFF09",usage:"twp agent session instruct <\u30BB\u30C3\u30B7\u30E7\u30F3> (--body-file <\u30D1\u30B9> | --body <\u6587>) [--wait [--timeout <\u79D2>]] --yes",description:`${SESSION_REF_HELP}
|
|
117
|
+
\u753B\u9762\u306E\u30C1\u30E3\u30C3\u30C8\u6B04\u304B\u3089\u9001\u308B\u306E\u3068\u540C\u3058 POST /api/v2/agent/sessions/{id}/instructions \u3067\u3059\u3002\u767A\u8A00\u8005\u306F\u3042\u306A\u305F\u3068\u3057\u3066\u8A18\u9332\u3055\u308C\u307E\u3059\u3002
|
|
118
|
+
\u30BB\u30C3\u30B7\u30E7\u30F3\u304C running / pending / \u5165\u529B\u5F85\u3061\u306E\u3068\u304D\u3060\u3051\u53D7\u3051\u4ED8\u3051\u307E\u3059\uFF08\u7D42\u308F\u3063\u305F\u30BB\u30C3\u30B7\u30E7\u30F3\u306F twp agent session resume \u3067\u518D\u958B\u3057\u307E\u3059\uFF09\u3002
|
|
119
|
+
--wait \u3092\u4ED8\u3051\u308B\u3068\u3001\u9001\u3063\u305F\u6642\u523B\u3088\u308A\u5F8C\u306E\u30A2\u30B7\u30B9\u30BF\u30F3\u30C8\u767A\u8A00\u304C\u51FA\u3066\u4F5C\u696D\u304C\u6B62\u307E\u308B\u307E\u3067\u5F85\u3061\u307E\u3059\u3002`,destructive:true,confirmation:CREDIT_CONFIRMATION2,flags:[{name:BODY_SPEC.fileFlag,summary:"\u6307\u793A\u3092\u30D5\u30A1\u30A4\u30EB\u304B\u3089\u8AAD\u3080\uFF08- \u3067\u6A19\u6E96\u5165\u529B\uFF09",takesValue:true,placeholder:"<\u30D1\u30B9>"},{name:BODY_SPEC.
|
|
120
|
+
flag,summary:"\u6307\u793A\u3092\u76F4\u63A5\u6E21\u3059\uFF08\u6539\u884C\u3092\u542B\u3080\u306A\u3089 --body-file\uFF09",takesValue:true,placeholder:"<\u6587>"},WAIT_FLAG,TIMEOUT_FLAG],async prepare(input){sessionId(input,"instruct");waitSeconds(input,"session instruct");const body=await readBody(input,BODY_SPEC);if(body===void 0)throw new UsageError("\u6307\u793A\u3092 --body-file \u304B --body \u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",BODY_SPEC.usage);return withResolved(input,
|
|
121
|
+
{instruction:body})},plan:input=>({method:"POST",path:sessionPath(sessionId(input,"instruct"),"/instructions"),body:{instruction:requireResolved(input,"instruction")}}),plannedNotes:input=>waitPlannedNotes(input,input.args[0]??"<\u30BB\u30C3\u30B7\u30E7\u30F3>"),execute:(input,ctx)=>sendAndMaybeWait(input,ctx,sessionInstructOperation.plan(input),"session instruct",()=>sessionId(input,"instruct")),summarize:startedSummary("\u6307\u793A\u306E\u9001\u4FE1"),raw:startedRaw("\u6307\u793A\u306E\u9001\u4FE1"),
|
|
122
|
+
document:startedDocument("\u6307\u793A\u306E\u9001\u4FE1"),notes:startedNotes("\u6307\u793A\u306E\u9001\u4FE1")};var RESUME_SPEC={...BODY_SPEC,label:"\u518D\u958B\u306E\u6307\u793A",usage:"twp agent session resume <\u30BB\u30C3\u30B7\u30E7\u30F3> [--body-file <\u30D1\u30B9>] --yes"};var sessionResumeOperation={name:"resume",summary:"\u6B62\u307E\u3063\u305F\u30BB\u30C3\u30B7\u30E7\u30F3\u3092\u518D\u958B\u3059\u308B\uFF08AI \u30AF\u30EC\u30B8\u30C3\u30C8\u3092\u6D88\u8CBB\u30FB--yes \u304C\u8981\u308B\u30FB--body-file \u3067\u518D\u958B\u306E\u6307\u793A\uFF09",
|
|
123
|
+
usage:"twp agent session resume <\u30BB\u30C3\u30B7\u30E7\u30F3> [--body-file <\u30D1\u30B9> | --body <\u6587>] [--wait [--timeout <\u79D2>]] --yes",description:`${SESSION_REF_HELP}
|
|
124
|
+
\u753B\u9762\u306E\u300C\u518D\u958B\u300D\u3068\u540C\u3058 POST /api/v2/agent/sessions/{id}/resume \u3067\u3059\u3002runner \u3092\u8D77\u52D5\u3057\u76F4\u3057\u3001\u4F5C\u696D\u30D6\u30E9\u30F3\u30C1\u306E\u7D9A\u304D\u304B\u3089\u4F5C\u696D\u3057\u307E\u3059\u3002
|
|
125
|
+
\u518D\u958B\u306E\u6307\u793A\u306F\u4EFB\u610F\u3067\u3059\uFF08\u7701\u304F\u3068\u524D\u56DE\u306E\u7D9A\u304D\u3092\u518D\u958B\u3057\u307E\u3059\uFF09\u3002`,destructive:true,confirmation:CREDIT_CONFIRMATION2,flags:[{name:BODY_SPEC.fileFlag,summary:"\u518D\u958B\u306E\u6307\u793A\u3092\u30D5\u30A1\u30A4\u30EB\u304B\u3089\u8AAD\u3080\uFF08- \u3067\u6A19\u6E96\u5165\u529B\uFF09",takesValue:true,placeholder:"<\u30D1\u30B9>"},{name:BODY_SPEC.flag,summary:"\u518D\u958B\u306E\u6307\u793A\u3092\u76F4\u63A5\u6E21\u3059",
|
|
126
|
+
takesValue:true,placeholder:"<\u6587>"},WAIT_FLAG,TIMEOUT_FLAG],async prepare(input){sessionId(input,"resume");waitSeconds(input,"session resume");const body=await readBody(input,RESUME_SPEC);return body===void 0?input:withResolved(input,{resumeInstruction:body})},plan:input=>{const instruction=input.resolved?.["resumeInstruction"];return{method:"POST",path:sessionPath(sessionId(input,"resume"),"/resume"),body:instruction===void 0?{}:{resumeInstruction:instruction}}},plannedNotes:input=>waitPlannedNotes(
|
|
127
|
+
input,input.args[0]??"<\u30BB\u30C3\u30B7\u30E7\u30F3>"),execute:(input,ctx)=>sendAndMaybeWait(input,ctx,sessionResumeOperation.plan(input),"session resume",()=>sessionId(input,"resume")),summarize:startedSummary("\u30BB\u30C3\u30B7\u30E7\u30F3\u306E\u518D\u958B"),raw:startedRaw("\u30BB\u30C3\u30B7\u30E7\u30F3\u306E\u518D\u958B"),document:startedDocument("\u30BB\u30C3\u30B7\u30E7\u30F3\u306E\u518D\u958B"),notes:startedNotes("\u30BB\u30C3\u30B7\u30E7\u30F3\u306E\u518D\u958B")};function messageOf2(body,what){
|
|
128
|
+
const data=envelope2(body,what);return{message:typeof data["message"]==="string"?data["message"]:null}}var sessionCancelOperation={name:"cancel",summary:"\u52D5\u3044\u3066\u3044\u308B\u30BB\u30C3\u30B7\u30E7\u30F3\u3092\u6B62\u3081\u308B\uFF08runner \u3092\u505C\u6B62\u3059\u308B\u3002\u8A18\u9332\u306F\u6B8B\u308A\u3001resume \u3067\u518D\u958B\u3067\u304D\u308B\uFF09",usage:"twp agent session cancel <\u30BB\u30C3\u30B7\u30E7\u30F3>",description:`${SESSION_REF_HELP}
|
|
129
|
+
\u753B\u9762\u306E\u300C\u505C\u6B62\u300D\u3068\u540C\u3058 DELETE /api/v2/agent/sessions/{id} \u3067\u3059\u3002\u30BB\u30C3\u30B7\u30E7\u30F3\u306E\u8A18\u9332\u306F\u6D88\u3048\u307E\u305B\u3093\uFF08\u6D88\u3059\u306E\u306F delete\uFF09\u3002`,flags:[],plan:input=>({method:"DELETE",path:sessionPath(sessionId(input,"cancel"))}),summarize:body=>messageOf2(body,"\u30BB\u30C3\u30B7\u30E7\u30F3\u306E\u505C\u6B62"),raw:body=>messageOf2(body,"\u30BB\u30C3\u30B7\u30E7\u30F3\u306E\u505C\u6B62")};var sessionDeleteOperation={
|
|
130
|
+
name:"delete",summary:"\u30BB\u30C3\u30B7\u30E7\u30F3\u3092\u524A\u9664\u3059\u308B\uFF08\u30DE\u30B9\u30BF\u30FC\u306E\u307F\u30FB\u53D6\u308A\u6D88\u305B\u306A\u3044\u30FB--yes \u304C\u8981\u308B\uFF09",usage:"twp agent session delete <\u30BB\u30C3\u30B7\u30E7\u30F3> --yes",description:`${SESSION_REF_HELP}
|
|
131
|
+
DELETE /api/v2/agent/sessions/{id}/delete\u3002\u8D77\u52D5\u3057\u305F\u672C\u4EBA\uFF08\u30DE\u30B9\u30BF\u30FC\uFF09\u3060\u3051\u304C\u524A\u9664\u3067\u304D\u307E\u3059\u3002\u4F5C\u696D\u30D6\u30E9\u30F3\u30C1\u30FBPR \u306F GitHub \u306B\u6B8B\u308A\u307E\u3059\u3002`,destructive:true,flags:[],plan:input=>({method:"DELETE",path:sessionPath(sessionId(input,"delete"),"/delete")}),summarize:body=>messageOf2(body,"\u30BB\u30C3\u30B7\u30E7\u30F3\u306E\u524A\u9664"),raw:body=>messageOf2(body,"\u30BB\
|
|
132
|
+
\u30C3\u30B7\u30E7\u30F3\u306E\u524A\u9664")};var logPaging=envelopePaging({label:"\u30BB\u30C3\u30B7\u30E7\u30F3\u30ED\u30B0",itemsKey:"logs",readCursor:body=>{const record=isRecord(body)?body:{};return{hasMore:record["hasMore"],cursor:record["nextCursor"]}}});function logRows(body){envelope2(body,"\u30BB\u30C3\u30B7\u30E7\u30F3\u30ED\u30B0");return logPaging.items(body)}var sessionLogsOperation={name:"logs",summary:"\u30BB\u30C3\u30B7\u30E7\u30F3\u306E\u5B9F\u884C\u30ED\u30B0\uFF08runner \u306E\u30A4\u30D9\u30F3\u30C8\uFF09\u3092\u4E00\u89A7\u3059\u308B",
|
|
133
|
+
usage:"twp agent session logs <\u30BB\u30C3\u30B7\u30E7\u30F3> [--all] [--limit <\u4EF6\u6570>] [--cursor <\u30AB\u30FC\u30BD\u30EB>]",description:`${SESSION_REF_HELP}
|
|
134
|
+
--output json \u306F API \u304C\u8FD4\u3059\u5168\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u51FA\u3057\u307E\u3059\u3002
|
|
135
|
+
|
|
136
|
+
${LIST_PAGING_HELP}`,flags:[...LIST_FLAGS],paging:logPaging,plan:input=>({method:"GET",path:sessionPath(sessionId(input,"logs"),"/logs"),query:{limit:positiveInteger(input.flags,"--limit"),cursor:nonEmpty(input.flags,"--cursor")}}),summarize:body=>logRows(body),raw:logRows,notes:body=>logRows(body).length===0?["\u30ED\u30B0\u306F\u307E\u3060\u3042\u308A\u307E\u305B\u3093\u3002"]:[]};function chatSummary(row){const metadata=isRecord(row)&&isRecord(row["metadata"])?row["metadata"]:{};return{...pick(
|
|
137
|
+
row,["timestamp","role","content"]),user_name:metadata["userName"]??null}}var sessionChatOperation={name:"chat",summary:"\u30BB\u30C3\u30B7\u30E7\u30F3\u306E\u4F1A\u8A71\uFF08\u6307\u793A\u3068\u30A2\u30B7\u30B9\u30BF\u30F3\u30C8\u306E\u767A\u8A00\u30FB\u30D5\u30A1\u30A4\u30EB\u5909\u66F4\uFF09\u3092\u53E4\u3044\u9806\u306B\u8868\u793A\u3059\u308B",usage:"twp agent session chat <\u30BB\u30C3\u30B7\u30E7\u30F3> [--limit <\u4EF6\u6570>]",description:`${SESSION_REF_HELP}
|
|
138
|
+
--limit \u306F\u30B5\u30FC\u30D0\u304C**\u53E4\u3044\u5074\u304B\u3089**\u8D70\u67FB\u3059\u308B\u30ED\u30B0\u306E\u4EF6\u6570\u3067\u3059\uFF08\u65E2\u5B9A 100\uFF09\u3002\u30C4\u30FC\u30EB\u306E\u30ED\u30B0\u3082\u6570\u3048\u3066\u304B\u3089\u4F1A\u8A71\u3060\u3051\u3092\u6B8B\u3059\u306E\u3067\u3001
|
|
139
|
+
\u9577\u3044\u30BB\u30C3\u30B7\u30E7\u30F3\u3067\u306F\u65E2\u5B9A\u306E\u307E\u307E\u3060\u3068\u6700\u8FD1\u306E\u767A\u8A00\u307E\u3067\u5C4A\u304D\u307E\u305B\u3093\u3002\u6700\u5F8C\u307E\u3067\u8AAD\u3080\u306B\u306F --limit \u3092\u5927\u304D\u304F\u3057\u3066\u304F\u3060\u3055\u3044\u3002\u3053\u306EAPI\u306B\u30DA\u30FC\u30B8\u30F3\u30B0\u306F\u3042\u308A\u307E\u305B\u3093\u3002
|
|
140
|
+
--output text \u306F1\u767A\u8A00\u30921\u6BB5\u843D\u306B\u3057\u3066\u8AAD\u3081\u308B\u5F62\u3067\u51FA\u3057\u307E\u3059\u3002
|
|
141
|
+
|
|
142
|
+
--output json \u306F API \u304C\u8FD4\u3059\u5168\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u51FA\u3057\u307E\u3059\u3002--output table / tsv \u306F\u8981\u7D04\u5217\uFF08${CHAT_COLUMNS.join(" / ")}\uFF09\u3067\u3059\u3002`,flags:[{name:"--limit",summary:"\u30B5\u30FC\u30D0\u304C\u53E4\u3044\u5074\u304B\u3089\u8D70\u67FB\u3059\u308B\u30ED\u30B0\u306E\u4EF6\u6570\uFF08\u65E2\u5B9A 100\uFF09",takesValue:true,placeholder:"<\u4EF6\u6570>"}],plan:input=>({method:"GET",path:sessionPath(sessionId(input,"cha\
|
|
143
|
+
t"),"/chat-messages"),query:{limit:positiveInteger(input.flags,"--limit")}}),summarize:body=>chatRows(body).map(chatSummary).map(row=>pick(row,CHAT_COLUMNS)),raw:chatRows,document(body){const blocks=chatRows(body).map(row=>{const s=chatSummary(row);const who=s["role"]==="user"?`user${s["user_name"]!==null?`\uFF08${String(s["user_name"])}\uFF09`:""}`:String(s["role"]??"");return`[${String(s["timestamp"]??"")}] ${who}
|
|
144
|
+
${String(s["content"]??"")}`});return blocks.length===0?"\uFF08\u4F1A\u8A71\u306F\u307E\u3060\u3042\u308A\u307E\u305B\u3093\uFF09\n":`${blocks.join("\n\n")}
|
|
145
|
+
`},notes:body=>chatRows(body).length===0?["\u4F1A\u8A71\u306F\u307E\u3060\u3042\u308A\u307E\u305B\u3093\uFF08runner \u304C\u8D77\u52D5\u4E2D\u304B\u3001\u4F1A\u8A71\u306E\u4FDD\u5B58\u5148\u306B\u5C4A\u3044\u3066\u3044\u307E\u305B\u3093\uFF09\u3002"]:[]};function diffOf(body){return envelope2(body,"Git \u306E\u5DEE\u5206")["gitDiff"]??null}function diffFiles(body){const diff=diffOf(body);if(diff===null)return[];if(Array.isArray(diff))return diff;if(isRecord(diff)&&Array.isArray(diff["files"]))return diff["\
|
|
146
|
+
files"];throw new ApiResponseError("Git \u306E\u5DEE\u5206\u306E\u5FDC\u7B54\u306B files \u914D\u5217\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002")}var sessionDiffOperation={name:"diff",summary:"\u4F5C\u696D\u30D6\u30E9\u30F3\u30C1\u306E\u5909\u66F4\u30D5\u30A1\u30A4\u30EB\uFF08\u8D77\u70B9\u30D6\u30E9\u30F3\u30C1\u3068\u306E\u5DEE\u5206\uFF09\u3092\u8868\u793A\u3059\u308B",usage:"twp agent session diff <\u30BB\u30C3\u30B7\u30E7\u30F3>",
|
|
147
|
+
description:`${SESSION_REF_HELP}
|
|
148
|
+
--output table / tsv \u306F\u5909\u66F4\u30D5\u30A1\u30A4\u30EB1\u4EF6\uFF1D1\u884C\uFF08${DIFF_COLUMNS.join(" / ")}\uFF09\u3001--output text \u306F unified diff \u306E\u672C\u6587\u3067\u3059\u3002
|
|
149
|
+
--output json \u306F API \u306E gitDiff\uFF08diff \u672C\u6587\u30FBfiles\u30FBbaseBranch\uFF09\u3092\u305D\u306E\u307E\u307E\u51FA\u3057\u307E\u3059\uFF08runner \u304C\u307E\u3060\u5DEE\u5206\u3092\u5831\u544A\u3057\u3066\u3044\u306A\u3051\u308C\u3070 null\uFF09\u3002`,flags:[],plan:input=>({method:"GET",path:sessionPath(sessionId(input,"diff"),"/git-diff")}),summarize:body=>diffFiles(body).map(row=>pick(row,DIFF_COLUMNS)),raw:diffOf,document(body){const diff=diffOf(body);const text=isRecord(diff)&&
|
|
150
|
+
typeof diff["diff"]==="string"?diff["diff"]:"";return text===""?"\uFF08\u5DEE\u5206\u306F\u3042\u308A\u307E\u305B\u3093\uFF09\n":text.endsWith("\n")?text:`${text}
|
|
151
|
+
`},notes:body=>diffOf(body)===null?["\u5DEE\u5206\u306F\u307E\u3060\u3042\u308A\u307E\u305B\u3093\uFF08runner \u304C\u307E\u3060\u5909\u66F4\u3092\u5831\u544A\u3057\u3066\u3044\u307E\u305B\u3093\uFF09\u3002"]:diffFiles(body).length===0?["\u5909\u66F4\u30D5\u30A1\u30A4\u30EB\u306F\u3042\u308A\u307E\u305B\u3093\u3002"]:[]};function repositoryRows(body){return listOf(body,"list","\u30EA\u30DD\u30B8\u30C8\u30EA\u4E00\u89A7")}var repositoryListOperation={name:"list",summary:"\u30BB\u30C3\u30B7\u30E7\u30F3\u3092\u8D77\u52D5\u3067\u304D\u308B\u30EA\u30DD\u30B8\u30C8\u30EA\u3092\u4E00\u89A7\u3059\u308B\uFF08\u53C2\u52A0\u30D7\
|
|
152
|
+
\u30ED\u30B8\u30A7\u30AF\u30C8\u306B\u7D10\u3065\u3044\u305F\u3082\u306E\uFF09",usage:"twp agent repository list",description:`\u30C6\u30CA\u30F3\u30C8\u306B\u9023\u643A\u3057\u305F GitHub \u30EA\u30DD\u30B8\u30C8\u30EA\u306E\u3046\u3061\u3001\u3042\u306A\u305F\u304C\u53C2\u52A0\u3059\u308B\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306B\u7D10\u3065\u3044\u305F\u3082\u306E\u3060\u3051\u304C\u51FA\u307E\u3059\u3002
|
|
153
|
+
\u3053\u306E API \u306F\u30DA\u30FC\u30B8\u30F3\u30B0\u3092\u6301\u305F\u305A\u3001\u5168\u4EF6\u3092\u8FD4\u3057\u307E\u3059\u3002
|
|
154
|
+
|
|
155
|
+
--output table / text / tsv \u306F\u8981\u7D04\u5217\uFF08${REPOSITORY_COLUMNS.join(" / ")}\uFF09\u3067\u3059\u3002`,flags:[],plan(input){noArgs2(input,"repository list");return{method:"GET",path:AGENT_REPOSITORIES_PATH}},summarize:body=>repositoryRows(body).map(row=>pick(row,REPOSITORY_COLUMNS)),raw:repositoryRows,notes:body=>repositoryRows(body).length===0?["\u8D77\u52D5\u3067\u304D\u308B\u30EA\u30DD\u30B8\u30C8\u30EA\u306F\u3042\u308A\u307E\u305B\u3093\uFF08GitHub \u9023\u643A\u304C\u672A\u8A2D\u5B9A\u304B\u3001\u53C2\u52A0\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306B\u30EA\u30DD\u30B8\u30C8\u30EA\u304C\u7D10\u3065\u3044\u3066\u3044\u307E\u305B\u3093\uFF09\u3002"]:
|
|
156
|
+
[]};var repositoryBranchesOperation={name:"branches",summary:"\u30EA\u30DD\u30B8\u30C8\u30EA\u306E\u30D6\u30E9\u30F3\u30C1\u3092\u4E00\u89A7\u3059\u308B\uFF08--base \u306B\u6E21\u305B\u308B\u540D\u524D\uFF09",usage:"twp agent repository branches <\u30EA\u30DD\u30B8\u30C8\u30EA>",description:"<\u30EA\u30DD\u30B8\u30C8\u30EA> \u306F twp agent repository list \u306E full_name\uFF08owner/repo\uFF09\u304B id \u3067\u3059\u3002",flags:[],async prepare(input,ctx){const values=input.args.map(arg=>arg.trim());
|
|
157
|
+
if(values.length!==1||values[0]==="")throw new UsageError("<\u30EA\u30DD\u30B8\u30C8\u30EA>\u30921\u3064\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",usageOf2("repository branches"));return resolveRepository(input,ctx,values[0],"<\u30EA\u30DD\u30B8\u30C8\u30EA>")},plan:input=>({method:"GET",path:`${AGENT_REPOSITORIES_PATH}/${encodeURIComponent(requireResolved(input,"repositoryId"))}/branches`}),summarize:body=>listOf(body,"list","\u30D6\u30E9\u30F3\u30C1\u4E00\u89A7").map(row=>pick(row,BRANCH_COLUMNS)),
|
|
158
|
+
raw:body=>listOf(body,"list","\u30D6\u30E9\u30F3\u30C1\u4E00\u89A7")};var sessionResource={name:"session",summary:"\u30BB\u30C3\u30B7\u30E7\u30F3\uFF08\u8D77\u52D5\u30FB\u6307\u793A\u30FB\u518D\u958B\u30FB\u505C\u6B62\u30FB\u524A\u9664\u30FB\u72B6\u614B\u30FB\u4F1A\u8A71\u30FB\u30ED\u30B0\u30FB\u5DEE\u5206\uFF09",operations:[sessionListOperation,sessionGetOperation,sessionCreateOperation,sessionInstructOperation,sessionResumeOperation,sessionCancelOperation,sessionDeleteOperation,sessionLogsOperation,
|
|
159
|
+
sessionChatOperation,sessionDiffOperation]};var repositoryResource={name:"repository",summary:"\u30BB\u30C3\u30B7\u30E7\u30F3\u3092\u8D77\u52D5\u3067\u304D\u308B\u30EA\u30DD\u30B8\u30C8\u30EA\u3068\u305D\u306E\u30D6\u30E9\u30F3\u30C1",operations:[repositoryListOperation,repositoryBranchesOperation]};var agentDomain={name:"agent",summary:"\u30B3\u30F3\u30C6\u30CA\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\uFF08\u30EA\u30DD\u30B8\u30C8\u30EA\u3067\u4F5C\u696D\u3059\u308B AI \u30BB\u30C3\u30B7\u30E7\u30F3\u306E\u8D77\u52D5\u30FB\u6307\u793A\u30FB\u76E3\u8996\u3068\u5B9A\u671F\u5B9F\u884C\uFF09",
|
|
160
|
+
operations:[],subresources:[sessionResource,repositoryResource,scheduleResource]};export{WAIT_POLL_INTERVAL_MS,agentDomain};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{stepToItem}from"./chunk-
|
|
4
|
-
import{acknowledgement,isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";import"./chunk-PMOUHEJQ.js";import"./chunk-J7QYPKVK.js";import"./chunk-5WGOHFAS.js";import"./chunk-RZVI6PMW.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var LABEL="\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u30EB\u30FC\u30D7\u306E\u30A2\u30A4\u30C6\u30E0";var STATUSES=["pending","processing","completed","failed"];var AI_TYPES=["claude","gemini","codex","copilot"];var EFFORTS=["low","medium","high","xhigh","max"];var PRIORITIES=["P0","P1","P2","P3"];var LIST_COLUMNS=["item_id","status","task_key","label","ai_type","ai_effort","runner_id","created_at"];var GET_COLUMNS=["item_id","status","task_key","label","prompt","ai_type","ai_model","ai_effort","runn\
|
|
3
|
+
import{stepToItem}from"./chunk-6PAZUW73.js";import"./chunk-DXUFECE7.js";import"./chunk-SPZ3GBYC.js";import{loadLocalConfig,parseOperations}from"./chunk-LJVAOWZI.js";import"./chunk-G4TZFGNN.js";import{loadAiConfig}from"./chunk-FABDZBDZ.js";import{SKILL_PREFIX_RE,setSkillPrefix}from"./chunk-6CS5L24D.js";import"./chunk-N2UVRM3Z.js";import"./chunk-GY7KI5E5.js";import{LIST_FLAGS,LIST_PAGING_HELP,envelopePaging,nonEmpty,positiveInteger}from"./chunk-MI6HVYR2.js";
|
|
4
|
+
import{requireResolved,singleRef,withResolved}from"./chunk-PS5QFKHB.js";import"./chunk-II5RVJQN.js";import{acknowledgement,isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";import"./chunk-PMOUHEJQ.js";import"./chunk-J7QYPKVK.js";import"./chunk-5WGOHFAS.js";import"./chunk-RZVI6PMW.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var LABEL="\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u30EB\u30FC\u30D7\u306E\u30A2\u30A4\u30C6\u30E0";var STATUSES=["pending","processing","completed","failed"];var AI_TYPES=["claude","gemini","codex","copilot"];var EFFORTS=["low","medium","high","xhigh","max"];var PRIORITIES=["P0","P1","P2","P3"];var LIST_COLUMNS=["item_id","status","task_key","label","ai_type","ai_effort","runner_id","created_at"];var GET_COLUMNS=["item_id","status","task_key","label","prompt","ai_type","ai_model","ai_effort","runn\
|
|
5
5
|
er_id","attempt_count","reclaim_count","error_message","created_by_name","created_at","started_at","completed_at"];var HISTORY_COLUMNS=["item_id","status","task_key","skill","ai_type","runner_id","duration_ms","cost_usd","created_at"];var PROJECT_FLAG={name:"--project",summary:"\u30AD\u30E5\u30FC\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\uFF08\u30B3\u30FC\u30C9\u307E\u305F\u306F ID\u3002\u7701\u7565\u6642\u306F TWP_PROJECT / .twp/config.json / ~/.twp/config.json\uFF09",takesValue:true,placeholder:"\
|
|
6
6
|
<\u30B3\u30FC\u30C9|ID>"};var ITEM_FLAG={name:"--item",summary:"\u30A2\u30A4\u30C6\u30E0\u306E ID\uFF08item_id\uFF09\u3002\u4F4D\u7F6E\u5F15\u6570\u3068\u540C\u3058\u610F\u5473\uFF08\u4E21\u65B9\u6307\u5B9A\u306F\u30A8\u30E9\u30FC\uFF09",takesValue:true,placeholder:"<\u30A2\u30A4\u30C6\u30E0ID>"};var FORBIDDEN_CORE="\u30C6\u30CA\u30F3\u30C8\u306E\u7BA1\u7406\u8005\uFF08admin \u30ED\u30FC\u30EB\uFF09\u306E\u6A29\u9650\u304C\u5FC5\u8981\u3067\u3059\uFF08\u500B\u4EBA\u30AD\u30E5\u30FC\u3092\u9664\u304F\uFF09";
|
|
7
7
|
var CREATE_HINT="\u30A2\u30A4\u30C6\u30E0\u306E\u6295\u5165\uFF08twp agent-loop create\uFF09\u306F\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u30E1\u30F3\u30D0\u30FC\u306A\u3089\u7BA1\u7406\u8005\u3067\u306A\u304F\u3066\u3082\u884C\u3048\u307E\u3059";var FORBIDDEN_UPDATE=`\u30AD\u30E5\u30FC\u306E\u30A2\u30A4\u30C6\u30E0\u306E\u66F4\u65B0\u306B\u306F${FORBIDDEN_CORE}\u3002\u5B9F\u884C\u4E2D\u306E\u30A2\u30A4\u30C6\u30E0\u3078\u306E\u66F8\u304D\u623B\u3057\u3060\u3051\u306F\u3001\u305D\u306E\u30A2\u30A4\u30C6\u30E0\u3092 claim \u3057\u305F\u30EB\u30FC\u30D7\u81EA\u8EAB\u304C run_id \u3092\u6DFB\u3048\u3066\u884C\u3048\u307E\u3059\u3002`+
|
|
@@ -9,33 +9,36 @@ CREATE_HINT;var FORBIDDEN_MOVE=`\u30AD\u30E5\u30FC\u306E\u4E26\u3073\u66FF\u3048
|
|
|
9
9
|
function basePath(input){return`/api/v2/projects/${encodeURIComponent(requireResolved(input,"projectId"))}/agent-loop`}function itemPath(input){return`${basePath(input)}/${encodeURIComponent(requireResolved(input,"itemId"))}`}async function prepareProject(input,ctx){return withResolved(input,{projectId:await ctx.projectId(input.flags.get("--project"))})}async function prepareItem(input,ctx,usage){const itemId=singleRef(input,{flag:ITEM_FLAG.name,label:"\u30A2\u30A4\u30C6\u30E0",usage});return withResolved(
|
|
10
10
|
await prepareProject(input,ctx),{itemId})}function rejectArgs(input,operation){if(input.args.length>0){throw new UsageError(`${operation} \u306F\u4F4D\u7F6E\u5F15\u6570\u3092\u53D6\u308A\u307E\u305B\u3093: ${input.args.join(" ")}`,`twp agent-loop ${operation} help`)}}function oneOf(flags,name,values){const raw=nonEmpty(flags,name);if(raw===void 0)return void 0;if(!values.includes(raw)){throw new UsageError(`${name} \u306B\u306F ${values.join(" / ")} \u306E\u3044\u305A\u308C\u304B\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u53D7\u3051\u53D6\u3063\u305F\u5024: ${raw}\
|
|
11
11
|
\uFF09`)}return raw}function oneOfOrNone(flags,name,values){if(flags.get(name)?.trim()==="none")return null;return oneOf(flags,name,values)}function itemObject(body){const item=isRecord(body)?body["item"]:void 0;if(!isRecord(item)){throw new ApiResponseError(`${LABEL}\u306E\u5FDC\u7B54\u306B item \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}return item}var listPaging=envelopePaging({label:`${LABEL}\u4E00\u89A7`});var historyPaging=envelopePaging(
|
|
12
|
-
{label:"\u5B9F\u884C\u5C65\u6B74"});function parseSkillPrompt(prompt){const m=/^\/
|
|
13
|
-
|
|
14
|
-
""
|
|
15
|
-
|
|
16
|
-
|
|
12
|
+
{label:"\u5B9F\u884C\u5C65\u6B74"});function parseSkillPrompt(prompt,prefix=""){const m=/^\/([a-z0-9][a-z0-9-]*)(?:\s+([\s\S]*))?$/.exec(prompt.trim());if(!m){throw new UsageError(`--prompt \u306F /${prefix}<\u30B9\u30AD\u30EB\u540D> \u3067\u59CB\u3081\u3066\u304F\u3060\u3055\u3044\uFF08\u53D7\u3051\u53D6\u3063\u305F\u5024: ${prompt}\uFF09`,`\u4F8B: twp agent-loop create --prompt "/${prefix}fix-bug ABC-123"`)}const name=m[1]??"";if(prefix!==""&&(!name.startsWith(prefix)||name.length===prefix.length)){
|
|
13
|
+
throw new UsageError(`\u3053\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u30B9\u30AD\u30EB\u63A5\u982D\u8F9E\u306F '/${prefix}' \u3067\u3059\u3002--prompt \u306F /${prefix}<\u30B9\u30AD\u30EB\u540D> \u3067\u59CB\u3081\u3066\u304F\u3060\u3055\u3044\uFF08\u53D7\u3051\u53D6\u3063\u305F\u5024: ${prompt}\uFF09`,`\u4F8B: twp agent-loop create --prompt "/${prefix}fix-bug ABC-123"`)}return{skill:name.slice(prefix.length),args:(m[2]??"").trim()}}function skillPrefixFromLocalConfig(projectId){const local=loadLocalConfig(
|
|
14
|
+
projectId);if(local.operations===void 0||local.operations===null)return"";const prefix=parseOperations(local.operations).operations.skillPrefix;setSkillPrefix(prefix);return prefix}function resolvedPrefix(input){const p=input.resolved?.["skillPrefix"]??"";return SKILL_PREFIX_RE.test(p)?p:""}function fixedAssignment(category,primary){return{categoryForSkill:()=>category,selectPrimary:()=>primary}}function assignFromLocalConfig(projectId,step,prefix){const local=loadLocalConfig(projectId);const configured=local.
|
|
15
|
+
ai!==void 0||(local.ai_config_file??"").trim()!=="";const{config,warnings}=loadAiConfig(local.ai,local.ai_config_file,local.workspace??process.cwd());const category=config.categoryForSkill(step.skill);const item=stepToItem(step,{categoryForSkill:()=>category,selectPrimary:(c,s,p,display)=>config.selectPrimary(c,s,p,display)},prefix);return{category,primary:item?.ai_type??"",configured,warnings}}function createStep(input,prefix=resolvedPrefix(input)){const prompt=nonEmpty(input.flags,"--prompt");
|
|
16
|
+
if(prompt===void 0){throw new UsageError("--prompt \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",'twp agent-loop create --prompt "/<\u30B9\u30AD\u30EB\u540D> <\u5F15\u6570>"')}const{skill,args}=parseSkillPrompt(prompt,prefix);return{skill,args,priority:oneOf(input.flags,"--priority",PRIORITIES)??"P2",label:nonEmpty(input.flags,"--label")??""}}function createBody(input){const step=createStep(input);const category=requireResolved(input,"category");const primary=input.resolved?.["primary"]??
|
|
17
|
+
"";const item=stepToItem(step,fixedAssignment(category,primary),resolvedPrefix(input));if(item===null)throw new Error("\u5185\u90E8\u30A8\u30E9\u30FC: \u30B9\u30AD\u30EB\u540D\u304C\u7A7A\u306E\u307E\u307E stepToItem \u306B\u6E21\u308A\u307E\u3057\u305F");const body={label:item.label,prompt:item.prompt};if(item.task_key!=="")body["task_key"]=item.task_key;if(item.ai_type!==void 0)body["ai_type"]=item.ai_type;const effort=oneOf(input.flags,"--ai-effort",EFFORTS);if(effort!==void 0)body["ai_effort"]=
|
|
18
|
+
effort;return body}var createOperation={name:"create",summary:"\u30AD\u30E5\u30FC\u306B\u30A2\u30A4\u30C6\u30E0\u3092\u6295\u5165\u3059\u308B",usage:'twp agent-loop create --prompt "/<\u63A5\u982D\u8F9E><\u30B9\u30AD\u30EB\u540D> <\u5F15\u6570>" [--priority P2] [--label <\u30E9\u30D9\u30EB>] [--ai-effort <effort>] [--project <\u30B3\u30FC\u30C9|ID>]',description:`\u30EB\u30FC\u30D7\u306E\u8A08\u753B\u6295\u5165\u3068\u540C\u3058\u898F\u5247\u3067\u30A2\u30A4\u30C6\u30E0\u3092\u4F5C\u308A\u307E\u3059\uFF08\u30E9\u30D9\u30EB\u66F8\u5F0F\u30FBtask_key \u306E\u62BD\u51FA\u306F\u8A08\u753B\u6295\u5165\u3068\u5171\u901A\uFF09:
|
|
17
19
|
\u30E9\u30D9\u30EB [<\u512A\u5148\u5EA6>] <\u30BF\u30B9\u30AF\u30AD\u30FC> <\u30E9\u30D9\u30EB> #ai:<\u30AB\u30C6\u30B4\u30EA>\uFF08200\u5B57\u3067\u5207\u308B\u3002--label \u7701\u7565\u6642\u306F\u30D7\u30ED\u30F3\u30D7\u30C8\uFF09
|
|
18
20
|
task_key \u30D7\u30ED\u30F3\u30D7\u30C8\u306E\u5F15\u6570\u306E\u5148\u982D\u306B\u3042\u308B\u30BF\u30B9\u30AF\u30AD\u30FC\uFF08\u4F8B ABC-123\uFF09
|
|
19
21
|
1\u756A\u624B \u3053\u306E\u6A5F\u4F53\u306E\u30EB\u30FC\u30D7\u8A2D\u5B9A\uFF08~/.twp/loops/<\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8ID>.json\uFF09\u306E\u30AB\u30C6\u30B4\u30EA\u8868\u3068 primary_rotation \u3067\u6C7A\u3081\u308B
|
|
20
22
|
\uFF08\u30B3\u30DE\u30F3\u30C91\u56DE\u3054\u3068\u306B\u8A2D\u5B9A\u3092\u8AAD\u307F\u76F4\u3059\u306E\u3067\u3001\u91CD\u307F\u4ED8\u304D\u30ED\u30FC\u30C6\u30FC\u30B7\u30E7\u30F3\u306F\u56DE\u3089\u305A\u6BCE\u56DE\u305D\u306E\u5148\u982D\u306E\u4F7F\u3048\u308B AI \u306B\u306A\u308A\u307E\u3059\uFF09
|
|
21
23
|
ai_model \u9001\u308A\u307E\u305B\u3093\uFF08claim \u3057\u305F\u5B9F\u884C\u6A5F\u304C\u81EA\u5206\u306E\u8A2D\u5B9A\u3067\u89E3\u6C7A\u3057\u307E\u3059\uFF09
|
|
24
|
+
\u63A5\u982D\u8F9E \u3053\u306E\u6A5F\u4F53\u306E\u30EB\u30FC\u30D7\u8A2D\u5B9A\u306E operations.skill_prefix\uFF08\u65E2\u5B9A twp-\uFF09\u3002\u904B\u7528\u8A2D\u5B9A\u304C\u7121\u3051\u308C\u3070 /<\u540D\u524D> \u3092\u305D\u306E\u307E\u307E\u7A4D\u307F\u307E\u3059
|
|
22
25
|
|
|
23
26
|
\u540C\u3058\u30BF\u30B9\u30AF\u306E\u30A2\u30A4\u30C6\u30E0\u304C\u65E2\u306B\u4E26\u3093\u3067\u3044\u3066\u3082\u5F3E\u304D\u307E\u305B\u3093\u3002\u78BA\u304B\u3081\u308B\u306B\u306F:
|
|
24
27
|
twp agent-loop list --status pending --query "[?task_key=='ABC-123']"
|
|
25
28
|
|
|
26
|
-
${PROJECT_HELP}`,flags:[{name:"--prompt",summary:"\u5B9F\u884C\u3059\u308B\u30B9\u30AD\u30EB\u3068\u5F15\u6570\uFF08
|
|
27
|
-
\u306F\u30D7\u30ED\u30F3\u30D7\u30C8\uFF09",takesValue:true,placeholder:"<\u30E9\u30D9\u30EB>"},{name:"--ai-effort",summary:`\u3053\u306E\u30A2\u30A4\u30C6\u30E0\u306E effort\uFF08${EFFORTS.join(" / ")}\uFF09\u3002\u30AB\u30C6\u30B4\u30EA\u65E2\u5B9A\u3088\u308A\u512A\u5148\u3059\u308B`,takesValue:true,placeholder:"<effort>"},PROJECT_FLAG],async prepare(input,ctx){rejectArgs(input,"create");
|
|
28
|
-
projectId,step);return withResolved(input,{projectId,category:assign.category,primary:assign.primary,aiConfigured:assign.configured?"yes":"no",aiWarnings:assign.warnings.join("\n")})},plan:input=>({method:"POST",path:basePath(input),body:createBody(input)}),plannedNotes(input){const notes=[];const warnings=input.
|
|
29
|
-
if(input.resolved?.["aiConfigured"]==="no"){notes.push(`\u3053\u306E\u6A5F\u4F53\u306B\u30EB\u30FC\u30D7\u8A2D\u5B9A\uFF08ai / ai_config_file\uFF09\u304C\u7121\u3044\u305F\u3081\u3001\u30AB\u30C6\u30B4\u30EA\u306F\u7D44\u307F\u8FBC\u307F\u65E2\u5B9A\uFF08${input.resolved?.["category"]??"?"}\uFF09\u3067\u6C7A\u3081\u307E\u3057\u305F\u3002\u5B9F\u884C\u6A5F\u306F claim \u6642\u306B\
|
|
30
|
-
return notes},summarize:body=>pick(itemObject(body),GET_COLUMNS),raw:itemObject};function updateBody(input){const body={};const label=nonEmpty(input.flags,"--label");if(label!==void 0)body["label"]=label;const prompt=nonEmpty(input.flags,"--prompt");if(prompt!==void 0){
|
|
31
|
-
flags,"--ai-type",AI_TYPES);if(aiType!==void 0)body["ai_type"]=aiType;const effort=oneOfOrNone(input.flags,"--ai-effort",EFFORTS);if(effort!==void 0)body["ai_effort"]=effort;if(Object.keys(body).length===0){throw new UsageError("\u66F4\u65B0\u3059\u308B\u9805\u76EE\u304C\u3042\u308A\u307E\u305B\u3093\uFF08--label / --prompt / --task
|
|
32
|
-
name:"update",summary:"\u30A2\u30A4\u30C6\u30E0\u306E\u30E9\u30D9\u30EB\u30FB\u30D7\u30ED\u30F3\u30D7\u30C8\u30FBAI \u6307\u5B9A\u3092\u66F4\u65B0\u3059\u308B\uFF08\u7BA1\u7406\u8005\u306E\u307F\uFF09",usage:"twp agent-loop update <\u30A2\u30A4\u30C6\u30E0ID> [--label <\u30E9\u30D9\u30EB>] [--prompt <\u30D7\u30ED\u30F3\u30D7\u30C8>] [--task-key <\u30AD\u30FC|none>] [--ai-type <AI|
|
|
33
|
-
|
|
29
|
+
${PROJECT_HELP}`,flags:[{name:"--prompt",summary:"\u5B9F\u884C\u3059\u308B\u30B9\u30AD\u30EB\u3068\u5F15\u6570\uFF08/<\u63A5\u982D\u8F9E><\u30B9\u30AD\u30EB\u540D> \u3067\u59CB\u3081\u308B\uFF09",takesValue:true,placeholder:'"/<\u63A5\u982D\u8F9E><\u30B9\u30AD\u30EB\u540D> <\u5F15\u6570>"'},{name:"--priority",summary:`\u512A\u5148\u5EA6\uFF08${PRIORITIES.join(" / ")}\u3002\u65E2\u5B9A P2\uFF09\u3002\u30E9\u30D9\u30EB\u306E\u5148\u982D\u306B\u5165\u308B`,takesValue:true,placeholder:"<P0-P3>"},{name:"\
|
|
30
|
+
--label",summary:"\u30E9\u30D9\u30EB\u306E\u672C\u6587\uFF08\u7701\u7565\u6642\u306F\u30D7\u30ED\u30F3\u30D7\u30C8\uFF09",takesValue:true,placeholder:"<\u30E9\u30D9\u30EB>"},{name:"--ai-effort",summary:`\u3053\u306E\u30A2\u30A4\u30C6\u30E0\u306E effort\uFF08${EFFORTS.join(" / ")}\uFF09\u3002\u30AB\u30C6\u30B4\u30EA\u65E2\u5B9A\u3088\u308A\u512A\u5148\u3059\u308B`,takesValue:true,placeholder:"<effort>"},PROJECT_FLAG],async prepare(input,ctx){rejectArgs(input,"create");createStep(input,"");const projectId=await ctx.
|
|
31
|
+
projectId(input.flags.get("--project"));const skillPrefix=skillPrefixFromLocalConfig(projectId);const step=createStep(input,skillPrefix);const assign=assignFromLocalConfig(projectId,step,skillPrefix);return withResolved(input,{projectId,skillPrefix,category:assign.category,primary:assign.primary,aiConfigured:assign.configured?"yes":"no",aiWarnings:assign.warnings.join("\n")})},plan:input=>({method:"POST",path:basePath(input),body:createBody(input)}),plannedNotes(input){const notes=[];const warnings=input.
|
|
32
|
+
resolved?.["aiWarnings"]??"";if(warnings!=="")notes.push(`\u30EB\u30FC\u30D7\u8A2D\u5B9A\u306E\u8AAD\u307F\u8FBC\u307F\u3067\u554F\u984C\u304C\u3042\u308A\u307E\u3057\u305F: ${warnings}`);if(input.resolved?.["aiConfigured"]==="no"){notes.push(`\u3053\u306E\u6A5F\u4F53\u306B\u30EB\u30FC\u30D7\u8A2D\u5B9A\uFF08ai / ai_config_file\uFF09\u304C\u7121\u3044\u305F\u3081\u3001\u30AB\u30C6\u30B4\u30EA\u306F\u7D44\u307F\u8FBC\u307F\u65E2\u5B9A\uFF08${input.resolved?.["category"]??"?"}\uFF09\u3067\u6C7A\u3081\u307E\u3057\u305F\u3002\u5B9F\u884C\u6A5F\u306F claim \u6642\u306B\
|
|
33
|
+
\u81EA\u5206\u306E\u8A2D\u5B9A\u3067\u30AB\u30C6\u30B4\u30EA\u3092\u5F15\u304D\u76F4\u3057\u307E\u3059\u304C\u3001\u30E9\u30D9\u30EB\u306E #ai: \u30BF\u30B0\u306F\u6295\u5165\u6642\u306E\u5024\u306E\u307E\u307E\u3067\u3059\u3002`)}return notes},summarize:body=>pick(itemObject(body),GET_COLUMNS),raw:itemObject};function updateBody(input){const body={};const label=nonEmpty(input.flags,"--label");if(label!==void 0)body["label"]=label;const prompt=nonEmpty(input.flags,"--prompt");if(prompt!==void 0){
|
|
34
|
+
parseSkillPrompt(prompt);body["prompt"]=prompt.trim()}const taskKey=input.flags.get("--task-key");if(taskKey!==void 0)body["task_key"]=taskKey.trim()==="none"?null:nonEmpty(input.flags,"--task-key");const aiType=oneOfOrNone(input.flags,"--ai-type",AI_TYPES);if(aiType!==void 0)body["ai_type"]=aiType;const effort=oneOfOrNone(input.flags,"--ai-effort",EFFORTS);if(effort!==void 0)body["ai_effort"]=effort;if(Object.keys(body).length===0){throw new UsageError("\u66F4\u65B0\u3059\u308B\u9805\u76EE\u304C\u3042\u308A\u307E\u305B\u3093\uFF08--label / --prompt / --task-\
|
|
35
|
+
key / --ai-type / --ai-effort \u306E\u3044\u305A\u308C\u304B\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF09","twp agent-loop update help")}return body}var updateOperation={name:"update",summary:"\u30A2\u30A4\u30C6\u30E0\u306E\u30E9\u30D9\u30EB\u30FB\u30D7\u30ED\u30F3\u30D7\u30C8\u30FBAI \u6307\u5B9A\u3092\u66F4\u65B0\u3059\u308B\uFF08\u7BA1\u7406\u8005\u306E\u307F\uFF09",usage:"twp agent-loop update <\u30A2\u30A4\u30C6\u30E0ID> [--label <\u30E9\u30D9\u30EB>] [--prompt <\u30D7\u30ED\u30F3\u30D7\u30C8>] [--task-key <\u30AD\u30FC|none>] [--ai-type <AI|no\
|
|
36
|
+
ne>] [--ai-effort <effort|none>]",description:`\u6307\u5B9A\u3057\u305F\u9805\u76EE\u3060\u3051\u3092\u9001\u308A\u307E\u3059\u3002none \u3092\u6E21\u3059\u3068\u305D\u306E\u9805\u76EE\u3092\u6D88\u3057\u307E\u3059\uFF08--task-key / --ai-type / --ai-effort\uFF09\u3002
|
|
34
37
|
--label \u306F\u66F8\u5F0F\u3092\u7D44\u307F\u7ACB\u3066\u76F4\u3055\u305A\u3001\u6E21\u3057\u305F\u6587\u5B57\u5217\u3092\u305D\u306E\u307E\u307E\u4FDD\u5B58\u3057\u307E\u3059\uFF08#ai: \u30BF\u30B0\u3082\u81EA\u5206\u3067\u66F8\u3044\u3066\u304F\u3060\u3055\u3044\uFF09\u3002
|
|
35
38
|
|
|
36
39
|
\u66F4\u65B0\u306B\u306F\u66F8\u304D\u8FBC\u307F\u30B2\u30FC\u30C8\u304C\u639B\u304B\u308A\u307E\u3059: ${FORBIDDEN_UPDATE}\u3002
|
|
37
40
|
|
|
38
|
-
`+PROJECT_HELP,forbidden:FORBIDDEN_UPDATE,flags:[ITEM_FLAG,{name:"--label",summary:"\u30E9\u30D9\u30EB\uFF08\u305D\u306E\u307E\u307E\u4FDD\u5B58\u3059\u308B\uFF09",takesValue:true,placeholder:"<\u30E9\u30D9\u30EB>"},{name:"--prompt",summary:"\u30D7\u30ED\u30F3\u30D7\u30C8\uFF08
|
|
41
|
+
`+PROJECT_HELP,forbidden:FORBIDDEN_UPDATE,flags:[ITEM_FLAG,{name:"--label",summary:"\u30E9\u30D9\u30EB\uFF08\u305D\u306E\u307E\u307E\u4FDD\u5B58\u3059\u308B\uFF09",takesValue:true,placeholder:"<\u30E9\u30D9\u30EB>"},{name:"--prompt",summary:"\u30D7\u30ED\u30F3\u30D7\u30C8\uFF08/<\u63A5\u982D\u8F9E><\u30B9\u30AD\u30EB\u540D> \u3067\u59CB\u3081\u308B\uFF09",takesValue:true,placeholder:'"/<\u63A5\u982D\u8F9E><\u30B9\u30AD\u30EB\u540D> <\u5F15\u6570>"'},{name:"--task-key",summary:"\u30BF\u30B9\u30AF\u30AD\u30FC\uFF08none \u3067\u6D88\u3059\uFF09",
|
|
39
42
|
takesValue:true,placeholder:"<\u30AD\u30FC|none>"},{name:"--ai-type",summary:`1\u756A\u624B\u306E AI\uFF08${AI_TYPES.join(" / ")}\u3002none \u3067\u6D88\u3059\uFF09`,takesValue:true,placeholder:"<AI|none>"},{name:"--ai-effort",summary:`effort\uFF08${EFFORTS.join(" / ")}\u3002none \u3067\u6D88\u3059\uFF09`,takesValue:true,placeholder:"<effort|none>"},PROJECT_FLAG],async prepare(input,ctx){updateBody(input);return prepareItem(input,ctx,"twp agent-loop update help")},plan:input=>({method:"PUT",path:itemPath(
|
|
40
43
|
input),body:updateBody(input)}),summarize:body=>pick(itemObject(body),GET_COLUMNS),raw:itemObject};function movedItems(body){const items=isRecord(body)?body["items"]:void 0;if(!Array.isArray(items)){throw new ApiResponseError("\u4E26\u3073\u66FF\u3048\u306E\u5FDC\u7B54\u306B items \u914D\u5217\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002")}return items}var moveOperation={name:"move",summary:"\u30A2\u30A4\u30C6\u30E0\u3092\u30AD\u30E5\u30FC\u306E\u5148\u982D\u3078\u79FB\u3059\uFF08--yes \u304C\u8981\u308B\u30FB\u7BA1\u7406\u8005\u306E\u307F\
|
|
41
44
|
\uFF09",usage:"twp agent-loop move <\u30A2\u30A4\u30C6\u30E0ID> --yes [--project <\u30B3\u30FC\u30C9|ID>]",description:`\u6B21\u306B claim \u3055\u308C\u308B\u306E\u304C\u3053\u306E\u30A2\u30A4\u30C6\u30E0\u306B\u306A\u308A\u307E\u3059\uFF08\u7A3C\u50CD\u4E2D\u306E\u30EB\u30FC\u30D7\u306E\u5B9F\u884C\u9806\u304C\u5909\u308F\u308B\u306E\u3067 --yes \u304C\u8981\u308A\u307E\u3059\uFF09\u3002
|
|
@@ -60,10 +63,10 @@ YYYY-MM-DD \u306F UTC \u306E 0 \u6642\u3068\u3057\u3066\u6271\u3044\u307E\u3059\
|
|
|
60
63
|
${PROJECT_HELP}
|
|
61
64
|
|
|
62
65
|
`+LIST_PAGING_HELP,flags:[...LIST_FLAGS,{name:"--since",summary:"\u671F\u9593\u306E\u958B\u59CB\uFF08\u3053\u306E\u6642\u523B\u3092\u542B\u3080\u30FB\u5FC5\u9808\uFF09",takesValue:true,placeholder:"<\u65E5\u4ED8|\u65E5\u6642>"},{name:"--until",summary:"\u671F\u9593\u306E\u7D42\u4E86\uFF08\u3053\u306E\u6642\u523B\u3092\u542B\u307E\u306A\u3044\u30FB\u7701\u7565\u6642\u306F\u73FE\u5728\uFF09",takesValue:true,placeholder:"<\u65E5\u4ED8|\u65E5\u6642>"},{name:"--status",summary:`\u72B6\u614B\u3067\u7D5E\u308A\u8FBC\u3080\uFF08${STATUSES.
|
|
63
|
-
join(" / ")}\uFF09`,takesValue:true,placeholder:"<\u72B6\u614B>"},{name:"--task-key",summary:"\u30BF\u30B9\u30AF\u30AD\u30FC\u3067\u7D5E\u308A\u8FBC\u3080\uFF08\u5B8C\u5168\u4E00\u81F4\uFF09",takesValue:true,placeholder:"<\u30AD\u30FC>"},{name:"--runner",summary:"\u5B9F\u884C\u6A5F\uFF08runner_id\uFF09\u3067\u7D5E\u308A\u8FBC\u3080",takesValue:true,placeholder:"<runner_id>"},{name:"--skill",summary:"\u30B9\u30AD\u30EB\
|
|
64
|
-
<\u30B9\u30AD\u30EB>"},{name:"--ai-type",summary:"AI \u3067\u7D5E\u308A\u8FBC\u3080",takesValue:true,placeholder:"<AI>"},{name:"--full",summary:"result / prompt \u3082\u8FD4\u3059",takesValue:false},PROJECT_FLAG],paging:historyPaging,async prepare(input,ctx){rejectArgs(input,"history list");if(nonEmpty(input.flags,"--since")===void 0){throw new UsageError("--since \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044","twp agent-loop history list --since 2026-09-01")}oneOf(input.flags,
|
|
65
|
-
STATUSES);return prepareProject(input,ctx)},plan(input){const until=nonEmpty(input.flags,"--until");return{method:"GET",path:`${basePath(input)}/history`,query:{from:historyBound(nonEmpty(input.flags,"--since")),to:until===void 0?void 0:historyBound(until),fields:input.flags.has("--full")?"full":void 0,status:oneOf(input.flags,"--status",STATUSES),task_key:nonEmpty(input.flags,"--task-key"),runner_id:nonEmpty(input.flags,"--runner"),skill:nonEmpty(input.flags,"--skill"),ai_type:nonEmpty(
|
|
66
|
-
"--ai-type"),limit:positiveInteger(input.flags,"--limit"),cursor:nonEmpty(input.flags,"--cursor")}}},summarize:body=>historyPaging.items(body).map(row=>pick(row,HISTORY_COLUMNS)),raw:body=>historyPaging.items(body)}]};var agentLoopDomain={name:"agent-loop",summary:"\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u30EB\u30FC\u30D7\u306E\u30AD\u30E5\u30FC\uFF08\u30A2\u30A4\u30C6\u30E0\u306E\u4E00\u89A7\u30FB\u6295\u5165\u30FB\u66F4\u65B0\u30FB\u4E26\u3073\u66FF\u3048\u30FB\u524A\u9664\u30FB\u5B9F\u884C\u5C65\u6B74\uFF09",
|
|
66
|
+
join(" / ")}\uFF09`,takesValue:true,placeholder:"<\u72B6\u614B>"},{name:"--task-key",summary:"\u30BF\u30B9\u30AF\u30AD\u30FC\u3067\u7D5E\u308A\u8FBC\u3080\uFF08\u5B8C\u5168\u4E00\u81F4\uFF09",takesValue:true,placeholder:"<\u30AD\u30FC>"},{name:"--runner",summary:"\u5B9F\u884C\u6A5F\uFF08runner_id\uFF09\u3067\u7D5E\u308A\u8FBC\u3080",takesValue:true,placeholder:"<runner_id>"},{name:"--skill",summary:"\u30B9\u30AD\u30EB\uFF08\u63A5\u982D\u8F9E\u7121\u3057\uFF09\u3067\u7D5E\u308A\u8FBC\u3080",takesValue:true,
|
|
67
|
+
placeholder:"<\u30B9\u30AD\u30EB>"},{name:"--ai-type",summary:"AI \u3067\u7D5E\u308A\u8FBC\u3080",takesValue:true,placeholder:"<AI>"},{name:"--full",summary:"result / prompt \u3082\u8FD4\u3059",takesValue:false},PROJECT_FLAG],paging:historyPaging,async prepare(input,ctx){rejectArgs(input,"history list");if(nonEmpty(input.flags,"--since")===void 0){throw new UsageError("--since \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044","twp agent-loop history list --since 2026-09-01")}oneOf(input.flags,
|
|
68
|
+
"--status",STATUSES);return prepareProject(input,ctx)},plan(input){const until=nonEmpty(input.flags,"--until");return{method:"GET",path:`${basePath(input)}/history`,query:{from:historyBound(nonEmpty(input.flags,"--since")),to:until===void 0?void 0:historyBound(until),fields:input.flags.has("--full")?"full":void 0,status:oneOf(input.flags,"--status",STATUSES),task_key:nonEmpty(input.flags,"--task-key"),runner_id:nonEmpty(input.flags,"--runner"),skill:nonEmpty(input.flags,"--skill"),ai_type:nonEmpty(
|
|
69
|
+
input.flags,"--ai-type"),limit:positiveInteger(input.flags,"--limit"),cursor:nonEmpty(input.flags,"--cursor")}}},summarize:body=>historyPaging.items(body).map(row=>pick(row,HISTORY_COLUMNS)),raw:body=>historyPaging.items(body)}]};var agentLoopDomain={name:"agent-loop",summary:"\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u30EB\u30FC\u30D7\u306E\u30AD\u30E5\u30FC\uFF08\u30A2\u30A4\u30C6\u30E0\u306E\u4E00\u89A7\u30FB\u6295\u5165\u30FB\u66F4\u65B0\u30FB\u4E26\u3073\u66FF\u3048\u30FB\u524A\u9664\u30FB\u5B9F\u884C\u5C65\u6B74\uFF09",
|
|
67
70
|
operations:[{name:"list",summary:"\u30AD\u30E5\u30FC\u306E\u30A2\u30A4\u30C6\u30E0\u3092\u4E00\u89A7\u3059\u308B\uFF08\u65B0\u3057\u3044\u9806\uFF09",usage:"twp agent-loop list [--status <\u72B6\u614B>] [--limit <\u4EF6\u6570>] [--all] [--project <\u30B3\u30FC\u30C9|ID>]",description:`--status \u306F ${STATUSES.join(" / ")} \u306E\u3044\u305A\u308C\u304B\u3002\u7701\u7565\u3059\u308B\u3068\u5168\u72B6\u614B\u3092\u65B0\u3057\u3044\u9806\u306B\u8FD4\u3057\u307E\u3059\u3002
|
|
68
71
|
\u671F\u9593\u3067\u5207\u3063\u305F\u5B9F\u884C\u5C65\u6B74\u306F twp agent-loop history list \u3092\u4F7F\u3063\u3066\u304F\u3060\u3055\u3044\uFF08\u3053\u3061\u3089\u306F\u5B8C\u4E86\u6E08\u307F\u3092\u5927\u91CF\u306B\u6301\u3064\u3068\u9045\u304F\u306A\u308A\u307E\u3059\uFF09\u3002
|
|
69
72
|
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{failureHint,isAuthError,isCliFatalText,isRateLimited,isServerAiType,isUntrusted,maxTurnsReached,rateLimitWaitSeconds,tailForScan}from"./chunk-ZOOEH7ZE.js";import{
|
|
4
|
-
detectClaudeAutoSwitch,isClaudeAi,isUsableModelId,modelFitsRoute,resolveSpawnTarget,usesBedrock,wrapWithAutoSwitch}from"./chunk-
|
|
5
|
-
import"./chunk-VSJBJXZO.js";import{spawnSync}from"child_process";import fs2 from"fs";import path2 from"path";import{spawn}from"child_process";import fs from"fs";import path from"path";var DEFAULT_AI_TIMING={abortGraceMs:5e3,abortReapMs:2e3,pollIntervalMs:5e3};function resolveTiming(over){return{abortGraceMs:over?.abortGraceMs??DEFAULT_AI_TIMING.abortGraceMs,abortReapMs:over?.abortReapMs??DEFAULT_AI_TIMING.abortReapMs,pollIntervalMs:over?.pollIntervalMs??DEFAULT_AI_TIMING.pollIntervalMs}}var MAX_RETAINED_BYTES=4*1024*1024;function closeStream(stream){return new Promise(resolve=>{if(stream===null)return resolve();stream.once("error",()=>resolve());stream.end(()=>resolve())})}function buildArgs(req,cfg,env,workspace){
|
|
3
|
+
import{failureHint,isAuthError,isCliFatalText,isRateLimited,isServerAiType,isUntrusted,maxTurnsReached,rateLimitWaitSeconds,tailForScan}from"./chunk-ZOOEH7ZE.js";import{expandServerSkills,prepareSkillOverlay}from"./chunk-FAHDBWW2.js";import{detectAiClis}from"./chunk-5SONMN6K.js";import"./chunk-YJZT3UD3.js";import"./chunk-A4LFG7MW.js";import"./chunk-VRBI2NPI.js";import{ClaudeStreamRenderer}from"./chunk-DXUFECE7.js";import"./chunk-SPZ3GBYC.js";import{
|
|
4
|
+
DEFAULT_CLAUDE_LAUNCHER,activeSlotPath,detectClaudeAutoSwitch,isClaudeAi,isUsableModelId,modelFitsRoute,resolveSpawnTarget,usesBedrock,wrapWithAutoSwitch}from"./chunk-FABDZBDZ.js";import"./chunk-6CS5L24D.js";import{isForceOnly,killProcessTree,system32}from"./chunk-N2UVRM3Z.js";import"./chunk-GY7KI5E5.js";import"./chunk-VFPY2A23.js";import{findExecutable,isWindowsDriveAbsolute}from"./chunk-PMOUHEJQ.js";import"./chunk-J7QYPKVK.js";import"./chunk-5WGOHFAS.js";
|
|
5
|
+
import{stripTerminalControls}from"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";import{spawnSync}from"child_process";import fs2 from"fs";import path2 from"path";import{spawn}from"child_process";import fs from"fs";import path from"path";var DEFAULT_AI_TIMING={abortGraceMs:5e3,abortReapMs:2e3,pollIntervalMs:5e3};function resolveTiming(over){return{abortGraceMs:over?.abortGraceMs??DEFAULT_AI_TIMING.abortGraceMs,abortReapMs:over?.abortReapMs??DEFAULT_AI_TIMING.abortReapMs,pollIntervalMs:over?.pollIntervalMs??DEFAULT_AI_TIMING.pollIntervalMs}}var MAX_RETAINED_BYTES=4*1024*1024;function closeStream(stream){return new Promise(resolve=>{if(stream===null)return resolve();stream.once("error",()=>resolve());stream.end(()=>resolve())})}function buildArgs(req,cfg,env,workspace){
|
|
6
6
|
const warnings=[];const requested=(req.model??"").trim();const usable=requested!==""&&isUsableModelId(requested);if(requested!==""&&!usable){warnings.push(`ai_model '${requested}' \u306F\u4F7F\u3048\u306A\u3044\u5F62\u3067\u3059 \u2192 \u30AB\u30C6\u30B4\u30EA\u65E2\u5B9A\u306E\u30E2\u30C7\u30EB\u3092\u4F7F\u3044\u307E\u3059`)}const fitsRoute=!usable||!isClaudeAi(req.ai)||modelFitsRoute(requested,env);if(usable&&!fitsRoute){warnings.push(`ai_model '${requested}' \u306F\u73FE\u5728\u306E\u5B9F\u884C\u7D4C\u8DEF\u3067\u306F\u89E3\u6C7A\u3067\u304D\u307E\u305B\u3093\uFF08\u3053\u306E\u6A5F\u4F53\u306F ${usesBedrock(
|
|
7
7
|
env)?"Bedrock":"Anthropic \u76F4"}\uFF09 \u2192 \u30AB\u30C6\u30B4\u30EA\u65E2\u5B9A\u306E\u30E2\u30C7\u30EB\u3092\u4F7F\u3044\u307E\u3059`)}const fallback=cfg.modelFor(req.ai,req.category,env);const safeFallback=fallback===""||!isClaudeAi(req.ai)||modelFitsRoute(fallback,env)?fallback:"";if(fallback!==""&&safeFallback===""){warnings.push(`CLAUDE_MODEL '${fallback}' \u3082\u73FE\u5728\u306E\u5B9F\u884C\u7D4C\u8DEF\u3067\u306F\u89E3\u6C7A\u3067\u304D\u307E\u305B\u3093 \u2192 \u30E2\u30C7\u30EB\u3092\u6307\u5B9A\u3057\u307E\u305B\u3093`)}
|
|
8
8
|
const model=usable&&fitsRoute?requested:safeFallback;const maxTurns=cfg.maxTurnsFor(req.category,env);let effort="";switch(req.ai){case"gemini":return{file:"gemini",args:["--yolo",...model?["--model",model]:[]],env:{GEMINI_CLI_TRUST_WORKSPACE:"true"},model,effort,maxTurns,warnings};case"codex":return{file:"codex",args:["exec","-s","danger-full-access",...model?["--model",model]:[]],env:{},model,effort,maxTurns,warnings};case"copilot":{const mcp=path.join(workspace,".copilot","mcp-config.json");const args=[
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
|
+
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
+
import{FROM_FLAG,MANHOUR_DESCRIPTION,MANHOUR_FROM_FLAG,MANHOUR_TO_FLAG,MONTH_FLAG,TO_FLAG,analysisDomain,analysisForbidden,currentMonth,dataOf,listIn,manhourNotes,manhourQuery,manhourRows,monthRange,monthsBetween,noArgs,profitRows,rangeNotes,recordOf,staffKpiRows,workloadDistributionNotes,workloadDistributionRows}from"./chunk-APPYZQNC.js";import"./chunk-7EJOKJLV.js";import"./chunk-EXT4AIDF.js";import"./chunk-XGYOJHZC.js";import"./chunk-JJSBBWJ5.js";import"./chunk-MI6HVYR2.js";
|
|
4
|
+
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"./chunk-3ZRMMBP5.js";import"./chunk-VFPY2A23.js";import"./chunk-J7QYPKVK.js";import"./chunk-4VZKNEVN.js";import"./chunk-RZVI6PMW.js";import"./chunk-QQRJLH6B.js";import"./chunk-NHYMHCAT.js";
|
|
5
|
+
import"./chunk-VSJBJXZO.js";export{FROM_FLAG,MANHOUR_DESCRIPTION,MANHOUR_FROM_FLAG,MANHOUR_TO_FLAG,MONTH_FLAG,TO_FLAG,analysisDomain,analysisForbidden,currentMonth,dataOf,listIn,manhourNotes,manhourQuery,manhourRows,monthRange,monthsBetween,noArgs,profitRows,rangeNotes,recordOf,staffKpiRows,workloadDistributionNotes,workloadDistributionRows};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{composeDocument,htmlToText,metaLine}from"./chunk-
|
|
3
|
+
import{composeDocument,htmlToText,metaLine}from"./chunk-HPPIVCK3.js";import{boundedText}from"./chunk-JJSBBWJ5.js";import{LIST_FLAGS,LIST_PAGING_HELP,envelopePaging,positiveInteger}from"./chunk-MI6HVYR2.js";import{readBody}from"./chunk-6LSQCOCJ.js";import{ANNOUNCEMENTS_PATH}from"./chunk-HNG6MF26.js";import{isSafePathSegment}from"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";import{requireResolved,withResolved}from"./chunk-PS5QFKHB.js";
|
|
4
4
|
import"./chunk-II5RVJQN.js";import{isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";import"./chunk-J7QYPKVK.js";import"./chunk-4VZKNEVN.js";import"./chunk-RZVI6PMW.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var LABEL="\u304A\u77E5\u3089\u305B";var LIST_COLUMNS=["id","publish_start_at","sender_name","category_name","title","is_read","require_confirmation","is_confirmed"];var UNCONFIRMED_COLUMNS=["id","publish_start_at","publish_end_at","importance","title"];var GET_COLUMNS=["id","title","sender_name","category_name","importance_name","publish_start_at","publish_end_at","is_organization","is_read","require_confirmation","is_confirmed","allow_replies","link_url"];var REPLY_COLUMNS=["id","created_at","\
|
|
5
5
|
user_name","is_mine","content"];var REPLY_MAX_CHARS=2e3;function noArgs(input,op){if(input.args.length>0){throw new UsageError(`${op} \u306F\u4F4D\u7F6E\u5F15\u6570\u3092\u53D6\u308A\u307E\u305B\u3093: ${input.args.join(" ")}`,`twp announcement ${op} help`)}}function checkId(raw,help){const id=raw.trim();if(id==="")throw new UsageError("\u304A\u77E5\u3089\u305B\u306E ID \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",help);if(!isSafePathSegment(id)){throw new UsageError(`\u304A\u77E5\u3089\u305B\u306E ID \u3068\u3057\u3066\u4F7F\u3048\u306A\u3044\
|
|
6
6
|
\u5024\u3067\u3059: ${id}`,"\u304A\u77E5\u3089\u305B\u306E ID \u306F twp announcement list \u306E id \u5217\u3067\u78BA\u8A8D\u3067\u304D\u307E\u3059\u3002")}return id}function announcementId(input,op){const help=`twp announcement ${op} help`;const[raw,...rest]=input.args;if(rest.length>0)throw new UsageError(`${op} \u304C\u53D7\u3051\u53D6\u308C\u308B\u304A\u77E5\u3089\u305B ID \u306F1\u3064\u3060\u3051\u3067\u3059: ${rest.join(" ")}`,help);return checkId(raw??"",help)}function announcementIds(input){
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{CommandModelMissingError,MAX_REPORTED_VIOLATIONS,loadCommandModelDomain,loadCommandModelRoutes,validateBody,validateQuery}from"./chunk-NZ7WI4RZ.js";import{
|
|
4
|
-
import{
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
import{CommandModelMissingError,MAX_REPORTED_VIOLATIONS,loadCommandModelDomain,loadCommandModelRoutes,validateBody,validateQuery}from"./chunk-NZ7WI4RZ.js";import{NO_REDACT_FLAG,NO_REDACT_NOTICE,exitCodeFor,fetchAllPages,reportError}from"./chunk-FDVWV3AY.js";import"./chunk-6OLZMQBK.js";import"./chunk-Q3B65OFC.js";import{evaluateQuery}from"./chunk-GFLGXGWE.js";import{renderOutput}from"./chunk-YXVN6OCH.js";import{redactSecretValues,redactSecrets,withDebug}from"./chunk-UFGJSWKU.js";
|
|
4
|
+
import{describeWaitResult,parseWaitOptions,waitUntilTerminal}from"./chunk-WVCEKC7V.js";import{DEFAULT_MAX_ITEMS,DEFAULT_MAX_PAGES,envelopePaging,isPageNumberEnvelope,pageRangeNotes,positiveInteger,readEnvelopeCursor,readPageNumberCursor,shellQuote}from"./chunk-MI6HVYR2.js";import{parseOperationArgs,repeatedValues}from"./chunk-RX5HWI4L.js";import{readBody}from"./chunk-6LSQCOCJ.js";import"./chunk-HNG6MF26.js";import"./chunk-HVZUXLQ4.js";import{ApiError,TwpApiClient,
|
|
5
|
+
appendQuery}from"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";import"./chunk-II5RVJQN.js";import"./chunk-3ZRMMBP5.js";import{ApiResponseError,EXIT_OK,EXIT_WAIT_TIMEOUT,NetworkError,UsageError}from"./chunk-VFPY2A23.js";import{GLOBAL_OPTIONS_HELP}from"./chunk-PECIBNFD.js";import{AuthSession,NotLoggedInError,SessionExpiredError,loadCredentials}from"./chunk-XNLIEUAW.js";import{httpFetch}from"./chunk-J7QYPKVK.js";import{effectiveApiUrl,resolveConfiguredOutput,
|
|
6
|
+
resolveProfile}from"./chunk-4VZKNEVN.js";import"./chunk-RZVI6PMW.js";import{HELP_TOKEN}from"./chunk-KDH3KWPO.js";import"./chunk-QQRJLH6B.js";import{OUTPUT_FORMATS,resolveOutputFormat}from"./chunk-74BPZOKU.js";import"./chunk-UREA4ZIG.js";import{stripTerminalControls}from"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var MIN_SEGMENT_CHARS=3;var parsedCache=new WeakMap;function splitSegments(path){return path.split("/").filter(segment=>segment!=="")}function parseRoutes(routes){const cached=parsedCache.get(routes);if(cached!==void 0)return cached;const parsed=[];for(const[key,domain]of Object.entries(routes.routes)){const space=key.indexOf(" ");if(space<=0)continue;const template=key.slice(space+1);parsed.push({method:key.slice(0,space),template,domain,segments:splitSegments(template).map(segment=>/^\{[^/{}]+\}$/.
|
|
7
7
|
test(segment)?null:segment)})}parsedCache.set(routes,parsed);return parsed}function matches(route,segments){if(route.segments.length!==segments.length)return false;return route.segments.every((literal,i)=>literal===null||literal===segments[i])}function compareSpecificity(a,b){const literals=route=>route.segments.filter(segment=>segment!==null).length;const diff=literals(b)-literals(a);if(diff!==0)return diff;for(let i=0;i<a.segments.length;i+=1){const aLiteral=a.segments[i]!==null;const bLiteral=b.
|
|
8
8
|
segments[i]!==null;if(aLiteral!==bLiteral)return aLiteral?-1:1}return 0}function lookupRoute(routes,method,path){const segments=splitSegments(path);const hits=parseRoutes(routes).filter(route=>matches(route,segments));const sameMethod=hits.filter(route=>route.method===method).sort(compareSpecificity);const best=sameMethod[0];if(best!==void 0)return{kind:"matched",domain:best.domain,template:best.template};if(hits.length>0){const[top]=[...hits].sort(compareSpecificity);const template=top.template;
|
|
9
9
|
const methods=[...new Set(hits.filter(route=>route.template===template).map(route=>route.method))].sort();return{kind:"method-mismatch",template,methods}}return{kind:"unknown"}}function pickOperation(operations,method,template){return operations.find(op=>op.method===method&&op.path===template)??null}async function suggestRoutes(routes,path,limit=5){const{default:fuzzysort}=await import("./fuzzysort-DFVKV4B4.js");const parsed=parseRoutes(routes);const templates=[...new Set(parsed.map(route=>route.
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{RESIDENT_TOKEN_CAP,activateModeFiles,activatePermissionSettings,buildResidentSet,buildSystemPrompt,createAuditLogger,createTwpToolkit,currentBranch,describeAuditLog,describeToolCatalog,displayCwd,executeTool,findProjectTwpSubdir,localTools,lstatOrNull,parseFrontMatter,parseRule,persistProjectAllow,projectPermissionsPath,projectRootFor,readFileTool,residentInputs,resolveGitExecutable,runTurn,secretReason}from"./chunk-7PDUN5MS.js";import"./chunk-
|
|
4
|
-
|
|
5
|
-
import"./chunk-XNLIEUAW.js";import{proxyDiagnostics}from"./chunk-J7QYPKVK.js";import{checkMinSupportedVersion,isBelowMinSupported,minSupportedBlockMessage}from"./chunk-DXXFUNYN.js";import"./chunk-4VZKNEVN.js";import{configReadDirs,twpHomeDir}from"./chunk-RZVI6PMW.js";import{parseArgv}from"./chunk-
|
|
3
|
+
import{RESIDENT_TOKEN_CAP,activateModeFiles,activatePermissionSettings,buildResidentSet,buildSystemPrompt,createAuditLogger,createTwpToolkit,currentBranch,describeAuditLog,describeToolCatalog,displayCwd,executeTool,findProjectTwpSubdir,localTools,lstatOrNull,parseFrontMatter,parseRule,persistProjectAllow,projectPermissionsPath,projectRootFor,readFileTool,residentInputs,resolveGitExecutable,runTurn,secretReason}from"./chunk-7PDUN5MS.js";import{buildDiffLines,diffStat}from"./chunk-VRBI2NPI.js";
|
|
4
|
+
import"./chunk-NZ7WI4RZ.js";import"./chunk-UFGJSWKU.js";import"./chunk-N2UVRM3Z.js";import"./chunk-HNG6MF26.js";import"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";import"./chunk-II5RVJQN.js";import"./chunk-VFPY2A23.js";import{RelayError,builtinCatalog,createRuntime,loadCachedCatalog,modelLabel,pickModel,toModelInfos}from"./chunk-5WTFZJT7.js";import"./chunk-D233KKXW.js";import"./chunk-PMOUHEJQ.js";
|
|
5
|
+
import"./chunk-XNLIEUAW.js";import{proxyDiagnostics}from"./chunk-J7QYPKVK.js";import{checkMinSupportedVersion,isBelowMinSupported,minSupportedBlockMessage}from"./chunk-DXXFUNYN.js";import"./chunk-4VZKNEVN.js";import{configReadDirs,twpHomeDir}from"./chunk-RZVI6PMW.js";import{parseArgv}from"./chunk-2OG4LAGD.js";import{applyPermissionMode,checkPermission,describePermissionMode,getMode,isModeId,modeSource,nextMode}from"./chunk-2LOT54OO.js";import"./chunk-KDH3KWPO.js";
|
|
6
6
|
import"./chunk-QQRJLH6B.js";import{isFullWidth,isWide,stringWidth,stripAnsi}from"./chunk-UREA4ZIG.js";import{stripTerminalControls}from"./chunk-NHYMHCAT.js";import{require_fuzzysort}from"./chunk-DIMZRTLE.js";import{__commonJS,__export,__require,__toESM}from"./chunk-VSJBJXZO.js";var require_react_production=__commonJS({"node_modules/react/cjs/react.production.js"(exports){"use strict";var REACT_ELEMENT_TYPE=Symbol.for("react.transitional.element");var REACT_PORTAL_TYPE=Symbol.for("react.portal");var REACT_FRAGMENT_TYPE=Symbol.for("react.fragment");var REACT_STRICT_MODE_TYPE=Symbol.for("react.strict_mode");var REACT_PROFILER_TYPE=Symbol.for("react.profiler");var REACT_CONSUMER_TYPE=Symbol.for("react.consumer");var REACT_CONTEXT_TYPE=Symbol.for("react.context");var REACT_FORWARD_REF_TYPE=Symbol.
|
|
7
7
|
for("react.forward_ref");var REACT_SUSPENSE_TYPE=Symbol.for("react.suspense");var REACT_MEMO_TYPE=Symbol.for("react.memo");var REACT_LAZY_TYPE=Symbol.for("react.lazy");var REACT_ACTIVITY_TYPE=Symbol.for("react.activity");var REACT_VIEW_TRANSITION_TYPE=Symbol.for("react.view_transition");var MAYBE_ITERATOR_SYMBOL=Symbol.iterator;function getIteratorFn(maybeIterable){if(null===maybeIterable||"object"!==typeof maybeIterable)return null;maybeIterable=MAYBE_ITERATOR_SYMBOL&&maybeIterable[MAYBE_ITERATOR_SYMBOL]||
|
|
8
8
|
maybeIterable["@@iterator"];return"function"===typeof maybeIterable?maybeIterable:null}var ReactNoopUpdateQueue={isMounted:function(){return false},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}};var assign=Object.assign;var emptyObject={};function Component(props,context,updater){this.props=props;this.context=context;this.refs=emptyObject;this.updater=updater||ReactNoopUpdateQueue}Component.prototype.isReactComponent={};Component.prototype.setState=
|
|
@@ -1212,7 +1212,7 @@ cwd()){const listed=await gitListFiles(cwd2);const raw=listed??await walkFiles(c
|
|
|
1212
1212
|
1;const after=/^[^\s]*/.exec(text.slice(cursor))?.[0]??"";return{query,start,end:cursor+after.length}}var TWP_SLASH_ROUTES={"/tasks":{domain:"task",operation:"list"},"/task":{domain:"task",operation:"get"},"/projects":{domain:"project",operation:"list"}};function isTwpSlashCommand(name){return Object.hasOwn(TWP_SLASH_ROUTES,name)}async function runTwpSlashCommand(name,args,deps){const route=TWP_SLASH_ROUTES[name];if(!Object.hasOwn(TWP_SLASH_ROUTES,name)||route===void 0){return{code:2,out:"",err:`\u4E0D\u660E\u306A\u30B3\u30DE\u30F3\u30C9: ${name}
|
|
1213
1213
|
`}}const parsed=parseArgv([route.domain,route.operation,...args]);if(parsed.command!=="domain"||parsed.domain!==route.domain){return{code:2,out:"",err:`${name}: \u3053\u306E\u5F15\u6570\u306F\u4F7F\u3048\u307E\u305B\u3093\uFF08${args.join(" ")}\uFF09
|
|
1214
1214
|
`}}if(parsed.unknown.length>0){return{code:2,out:"",err:`\u4E0D\u660E\u306A\u5F15\u6570: ${parsed.unknown.join(" ")}
|
|
1215
|
-
`}}let out="";let err="";const io={out:text=>void(out+=text),err:text=>void(err+=text),isTty:true};const globals={profile:parsed.profile??deps.profile,...parsed.output!==void 0?{output:parsed.output}:{},...parsed.query!==void 0?{query:parsed.query}:{},dryRun:parsed.dryRun,debug:parsed.debug,yes:parsed.yes,refresh:parsed.refresh};const{runDomain}=await import("./run-
|
|
1215
|
+
`}}let out="";let err="";const io={out:text=>void(out+=text),err:text=>void(err+=text),isTty:true};const globals={profile:parsed.profile??deps.profile,...parsed.output!==void 0?{output:parsed.output}:{},...parsed.query!==void 0?{query:parsed.query}:{},dryRun:parsed.dryRun,debug:parsed.debug,yes:parsed.yes,refresh:parsed.refresh};const{runDomain}=await import("./run-TYKHDD6N.js");try{const code=await runDomain({domain:route.domain,...parsed.operation!==void 0?{operation:parsed.operation}:
|
|
1216
1216
|
{},argv:parsed.domainArgv,help:parsed.domainHelp,globals,version:deps.version,io,...deps.fetchImpl!==void 0?{fetchImpl:deps.fetchImpl}:{}});return{code,out,err}}catch(e){return{code:1,out,err:`${err}${e.message}
|
|
1217
1217
|
`}}}var GIT_LOG_OUTPUT=["9f3c1a2 feat(ui): \u4E00\u89A7\u306E\u30D5\u30A3\u30EB\u30BF\u3092 URL \u30AF\u30A8\u30EA\u3068\u540C\u671F\u3059\u308B","4b8e0d7 fix(ui): \u4EEE\u60F3\u30B9\u30AF\u30ED\u30FC\u30EB\u306E\u884C\u9AD8\u3055\u3092\u5B9F\u6E2C\u5024\u306B\u5408\u308F\u305B\u308B","c15a99e refactor(api): \u4E00\u89A7\u53D6\u5F97\u306E\u30DA\u30FC\u30B8\u30F3\u30B0\u51E6\u7406\u3092\u5171\u901A\u5316\u3059\u308B","2d70f4b test: \u4E00\u89A7\u30D5\u30A3\u30EB\u30BF\u306E\u56DE\u5E30\u30C6\u30B9\u30C8\u3092\u8FFD\u52A0\u3059\u308B",
|
|
1218
1218
|
"a6e2b38 fix(api): \u7A7A\u306E\u691C\u7D22\u6761\u4EF6\u3067\u5168\u4EF6\u8FD4\u3089\u306A\u3044\u3088\u3046\u306B\u3059\u308B","7c40d51 chore(deps): \u958B\u767A\u4F9D\u5B58\u3092\u6700\u65B0\u3078\u66F4\u65B0\u3059\u308B","e83b1c6 docs: \u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u624B\u9806\u306B Node 22 \u306E\u524D\u63D0\u3092\u8FFD\u8A18\u3059\u308B","b91f7a4 fix(ui): \u30E2\u30FC\u30C0\u30EB\u306E\u91CD\u306A\u308A\u9806\u3092\u6307\u5B9A\u3059\u308B","5a2c8e0 perf(api): \u4E00\u89A7\u306E N+1 \u3092\u89E3\u6D88\u3059\u308B",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{PUNCH_TYPES,assertMonthOpen,attendanceDomain}from"./chunk-
|
|
4
|
-
ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";import"./chunk-J7QYPKVK.js";import"./chunk-4VZKNEVN.js";import"./chunk-RZVI6PMW.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var CREATE_USAGE="twp attendance record create --date <YYYY-MM-DD> --time <HH:MM> --type <clock-in|clock-out|break-start|break-end|switch> [--project <\u30B3\u30FC\u30C9|ID>] [--task <\u30BF\u30B9\u30AFID>] [--memo <\u30E1\u30E2>]";var UPDATE_USAGE="twp attendance record update <\u8A18\u9332ID> --memo <\u30E1\u30E2> [--month <YYYY-MM>]";var DELETE_USAGE="twp attendance record delete <\u8A18\u9332ID> --reason <\u7406\u7531> --yes [--month <YYYY-MM>]";var MOVE_USAGE="twp attendance record move <\u8A18\u9332\
|
|
3
|
+
import{PUNCH_TYPES,assertMonthOpen,attendanceDomain}from"./chunk-7EJOKJLV.js";import{dateFlag,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{isSafePathSegment}from"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";import{requireResolved,withResolved}from"./chunk-PS5QFKHB.js";
|
|
4
|
+
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";var CREATE_USAGE="twp attendance record create --date <YYYY-MM-DD> --time <HH:MM> --type <clock-in|clock-out|break-start|break-end|switch> [--project <\u30B3\u30FC\u30C9|ID>] [--task <\u30BF\u30B9\u30AFID>] [--memo <\u30E1\u30E2>]";var UPDATE_USAGE="twp attendance record update <\u8A18\u9332ID> --memo <\u30E1\u30E2> [--month <YYYY-MM>]";var DELETE_USAGE="twp attendance record delete <\u8A18\u9332ID> --reason <\u7406\u7531> --yes [--month <YYYY-MM>]";var MOVE_USAGE="twp attendance record move <\u8A18\u9332\
|
|
5
5
|
ID> --project <\u30B3\u30FC\u30C9|ID> [--month <YYYY-MM>]";var TEXT_MAX=500;var UUID_PATTERN=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;var TIME_PATTERN=/^(\d{2}):(\d{2})(?::(\d{2}))?$/;var CLOSED_REASON="\u30B5\u30FC\u30D0\u306F\u7DE0\u3081\u6E08\u307F\u306E\u6708\u3078\u306E\u4FEE\u6B63\u3092\u62D2\u5426\u305B\u305A\u7DE0\u3081\u306E\u96C6\u8A08\u3092\u6D17\u3044\u66FF\u3048\u308B\u306E\u3067\u3001CLI \u304C\u9001\u308B\u524D\u306B\u6B62\u3081\u3066\u3044\u307E\u3059\u3002";
|
|
6
6
|
var FORBIDDEN="\u81EA\u5206\u306E\u6253\u523B\u306E\u4FEE\u6B63\u306B\u306F\u6253\u523B\u4FEE\u6B63\u306E\u6A29\u9650\uFF08\u30E6\u30FC\u30B6\u30FC\u8A2D\u5B9A\u306E\u300C\u6253\u523B\u4FEE\u6B63\u300D\uFF09\u3068\u52E4\u6020\u306E\u5229\u7528\u6A29\u9650\u304C\u5FC5\u8981\u3067\u3059\u3002\u30C6\u30CA\u30F3\u30C8\u306E\u7BA1\u7406\u8005\u306B\u4ED8\u4E0E\u3092\u4F9D\u983C\u3057\u3066\u304F\u3060\u3055\u3044";var RECORD_COLUMNS=["id","type","type_label","recorded_at","year_month","project_id","t\
|
|
7
7
|
ask_id","memo","is_manual","deleted_at"];var LABELS={clock_in:"\u51FA\u52E4",clock_out:"\u9000\u52E4",break_start:"\u4F11\u61A9\u958B\u59CB",break_end:"\u4F11\u61A9\u7D42\u4E86",switch:"\u5207\u66FF"};var TYPE_ORDER={break_start:1,break_end:2,switch:3,clock_out:4,clock_in:5};function zonedParts(epochMs,timeZone){const parts=new Intl.DateTimeFormat("en-US",{timeZone,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",hourCycle:"h23"}).formatToParts(new Date(
|