@tocca-systems/twp-cli 0.48.0 → 0.50.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.
Files changed (101) hide show
  1. package/CHANGELOG.public.md +16 -0
  2. package/README.md +121 -4
  3. package/dist/{agent-loop-XKH5YE6A.js → agent-loop-EBIXJ4EH.js} +2 -2
  4. package/dist/{ai-dispatch-FGVNSM6L.js → ai-dispatch-2FL2AFL7.js} +2 -2
  5. package/dist/analysis-2SWIQ4AI.js +4 -0
  6. package/dist/announcement-R76XDLW7.js +52 -0
  7. package/dist/{api-command-26MLBIZC.js → api-command-VFFV7BD4.js} +5 -16
  8. package/dist/{app-Y7MAQAPC.js → app-PNDIA4NV.js} +4 -4
  9. package/dist/{attendance-correct-5SFXA4DC.js → attendance-correct-SN2KYGOE.js} +2 -2
  10. package/dist/{attendance-lists-3T7S7QF5.js → attendance-lists-6S62D2UV.js} +1 -1
  11. package/dist/{backlog-F4EWY7MT.js → backlog-5XSCJGPJ.js} +2 -2
  12. package/dist/{budget-QFUGQIPZ.js → budget-PIGBJ5N7.js} +1 -1
  13. package/dist/{charter-command-2RIS2VTQ.js → charter-command-LIX2JXRJ.js} +1 -1
  14. package/dist/{chunk-6TPGATAG.js → chunk-342WUEV4.js} +1 -1
  15. package/dist/{chunk-IXFMXUNT.js → chunk-3YCVR7X4.js} +1 -1
  16. package/dist/{chunk-VTQAI52S.js → chunk-3ZRMMBP5.js} +1 -1
  17. package/dist/{chunk-HNUBM24L.js → chunk-4S7SNE2M.js} +1 -1
  18. package/dist/{chunk-QICH2OOI.js → chunk-5JL26BPU.js} +1 -1
  19. package/dist/{chunk-ORUDW52G.js → chunk-6LSQCOCJ.js} +1 -1
  20. package/dist/{chunk-F7K37QG6.js → chunk-7UB4I3JF.js} +1 -1
  21. package/dist/{chunk-AJO4O5ZF.js → chunk-A4LFG7MW.js} +1 -1
  22. package/dist/{chunk-LAXINIDA.js → chunk-BVXUORXE.js} +1 -1
  23. package/dist/{chunk-GOZCJLRA.js → chunk-CF3ZZKCZ.js} +2 -2
  24. package/dist/{chunk-MY2U3CD6.js → chunk-CUPPIHSJ.js} +51 -27
  25. package/dist/{chunk-JKL6NUVV.js → chunk-DQCHLRSB.js} +2 -2
  26. package/dist/{chunk-BN26WHLS.js → chunk-ELEOYXLD.js} +2 -2
  27. package/dist/{chunk-4B3T4UE7.js → chunk-EXT4AIDF.js} +1 -1
  28. package/dist/{chunk-VB2CSFRO.js → chunk-FANDYQCM.js} +1 -1
  29. package/dist/{chunk-4OSCQLZT.js → chunk-FMJUPLDG.js} +1 -1
  30. package/dist/{chunk-ATYA6DG5.js → chunk-GFLGXGWE.js} +1 -1
  31. package/dist/chunk-GXZOFRZH.js +9 -0
  32. package/dist/{chunk-KS2ZUQFC.js → chunk-IRHKFHJZ.js} +2 -2
  33. package/dist/{chunk-QOUDJ7XO.js → chunk-IU5P6MY5.js} +1 -1
  34. package/dist/{chunk-IOGMOXYF.js → chunk-MI6HVYR2.js} +1 -1
  35. package/dist/{chunk-A65V3K75.js → chunk-NK53AFVE.js} +1 -1
  36. package/dist/{chunk-XQRSX2RH.js → chunk-NN6LAZRA.js} +33 -8
  37. package/dist/{chunk-3AD2T6L2.js → chunk-ONAMXPTE.js} +1 -1
  38. package/dist/{chunk-XDHLO54T.js → chunk-OTIR4GES.js} +1 -1
  39. package/dist/{chunk-LXIAOCUW.js → chunk-PS5QFKHB.js} +1 -1
  40. package/dist/chunk-Q2KIETMB.js +132 -0
  41. package/dist/{chunk-3HH5IYNO.js → chunk-QBGEYQ2I.js} +1 -1
  42. package/dist/{chunk-OHXZO5WK.js → chunk-QLENN5DD.js} +1 -1
  43. package/dist/chunk-QSXS5SB2.js +33 -0
  44. package/dist/{chunk-VYT6JAXQ.js → chunk-S3A24B2C.js} +6 -6
  45. package/dist/{chunk-OYDF57NH.js → chunk-SECVO7RQ.js} +2 -2
  46. package/dist/{chunk-TKGVAWGU.js → chunk-TVODNAPX.js} +1 -1
  47. package/dist/{chunk-IO5SMECE.js → chunk-V2BB5EWS.js} +2 -2
  48. package/dist/{chunk-2YNZ4MRT.js → chunk-V64CGX7V.js} +1 -1
  49. package/dist/{chunk-UFND7FBC.js → chunk-VFPY2A23.js} +2 -2
  50. package/dist/chunk-WVCEKC7V.js +14 -0
  51. package/dist/{chunk-H3WYVFTS.js → chunk-YJZT3UD3.js} +1 -1
  52. package/dist/chunk-ZGHEF45T.js +4 -0
  53. package/dist/{chunk-FZWRYJVM.js → chunk-ZY6LEKWR.js} +2 -2
  54. package/dist/cli.js +105 -10
  55. package/dist/{commands-EIWS357Q.js → commands-CA22R7VD.js} +7 -7
  56. package/dist/{commands-SWR442MR.js → commands-ZZGY6P3B.js} +2 -2
  57. package/dist/{company-77JEESSV.js → company-CQYSBKTQ.js} +4 -3
  58. package/dist/{completion-YSP6UE25.js → completion-3F2GJNGC.js} +1 -1
  59. package/dist/{contract-26SKL7XT.js → contract-A2FGGVOR.js} +2 -2
  60. package/dist/{department-IZAR2LZ4.js → department-6BILJZG7.js} +2 -2
  61. package/dist/{deposit-MYTKRIEX.js → deposit-OAGRJMZ4.js} +2 -2
  62. package/dist/{estimate-KLS7XJLD.js → estimate-5PSXHHNT.js} +4 -4
  63. package/dist/{inquiry-52OT4HKJ.js → inquiry-NMOT4JSX.js} +2 -2
  64. package/dist/{invoice-D77PS3WU.js → invoice-TXEJT6I6.js} +3 -3
  65. package/dist/{job-title-U67Z25ZO.js → job-title-NSYPQMEX.js} +1 -1
  66. package/dist/{knowledge-Q3QLSNDX.js → knowledge-5DX6EMHZ.js} +2 -32
  67. package/dist/{leave-OSIABEFV.js → leave-DEGAZKVH.js} +2 -2
  68. package/dist/{media-HDG4VHAR.js → media-RJCTHFK6.js} +86 -26
  69. package/dist/{notification-MEOHWBXH.js → notification-NG4J6N2D.js} +2 -2
  70. package/dist/{onedrive-3OBI4B5Z.js → onedrive-YPJCILR2.js} +1 -1
  71. package/dist/{oneshot-ACV6XH5A.js → oneshot-RA65DTXP.js} +2 -2
  72. package/dist/{outlook-LY6WBXIJ.js → outlook-MNOVX6QS.js} +2 -2
  73. package/dist/{position-N7SRF3CF.js → position-OZBQYKZS.js} +1 -1
  74. package/dist/{project-YMJJDSTP.js → project-5YFBRM32.js} +2 -2
  75. package/dist/{prospect-3JD7STGT.js → prospect-TQ2FFWEZ.js} +3 -3
  76. package/dist/{purchase-2SLZBDD6.js → purchase-WOUWIZHO.js} +4 -4
  77. package/dist/query-XEOVFI4D.js +3 -0
  78. package/dist/receivable-RFZT6PY3.js +4 -0
  79. package/dist/{registry-GQ3L7PZ2.js → registry-H4NP4HUQ.js} +1 -1
  80. package/dist/{report-TUSP7RRF.js → report-EFE43ZVI.js} +2 -2
  81. package/dist/{run-ZPB23AZX.js → run-TNFPATQF.js} +2 -2
  82. package/dist/{sales-ai-review-7NPG7KV6.js → sales-ai-review-FSA4J2J2.js} +2 -2
  83. package/dist/{sales-master-W5MXNZQ2.js → sales-master-Q5BJ7RNG.js} +3 -3
  84. package/dist/{sales-numbering-RQV2I5G5.js → sales-numbering-ITDBMODV.js} +2 -2
  85. package/dist/{server-skills-Z5DGCJQ7.js → server-skills-IXIOOOC2.js} +1 -1
  86. package/dist/{skill-command-74MCUHFJ.js → skill-command-NXHTJXYY.js} +1 -1
  87. package/dist/{storage-KLLBENBY.js → storage-AQDCEBDJ.js} +1 -1
  88. package/dist/{supplier-payment-TDL3IE4H.js → supplier-payment-FWGQR3Z3.js} +3 -3
  89. package/dist/support-TVTQJFRE.js +53 -0
  90. package/dist/{task-2SHYSZBZ.js → task-IDQKPRYS.js} +3 -3
  91. package/dist/{teams-DRHXPLWN.js → teams-IO6UQNYP.js} +2 -2
  92. package/dist/{user-YEIHSVVN.js → user-B6KW6HA2.js} +3 -3
  93. package/dist/worker-agent-PEFBLL56.js +150 -0
  94. package/dist/{workflow-USG3ZKW6.js → workflow-SYWZKWWB.js} +1 -1
  95. package/package.json +1 -1
  96. package/dist/analysis-GAU2A3FU.js +0 -3
  97. package/dist/chunk-4F2ONF4P.js +0 -127
  98. package/dist/chunk-6ZB7A6VD.js +0 -9
  99. package/dist/chunk-Y5EN7RYN.js +0 -4
  100. package/dist/query-3ZQP4DCN.js +0 -3
  101. package/dist/receivable-6ZRAUHC3.js +0 -4
@@ -0,0 +1,150 @@
1
+ import { createRequire as __twpCreateRequire } from 'node:module';
2
+ const require = __twpCreateRequire(import.meta.url);
3
+ import{parseWaitOptions,waitUntilTerminal}from"./chunk-WVCEKC7V.js";import{charCount,readBody}from"./chunk-6LSQCOCJ.js";import{WORKER_AGENTS_PATH}from"./chunk-Q2KIETMB.js";import{isSafePathSegment}from"./chunk-GMBJTG6A.js";import"./chunk-QBGEYQ2I.js";import{repeatedValues}from"./chunk-7UB4I3JF.js";import{ApiError}from"./chunk-IF2K4PM5.js";import{NotLoggedInError,SessionExpiredError}from"./chunk-XNLIEUAW.js";import"./chunk-4VZKNEVN.js";import"./chunk-QQRJLH6B.js";
4
+ import"./chunk-II5RVJQN.js";import{LIST_FLAGS,LIST_PAGING_HELP,envelopePaging,nonEmpty,positiveInteger}from"./chunk-MI6HVYR2.js";import{requireResolved,withResolved}from"./chunk-PS5QFKHB.js";import{isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiRejectedError,ApiResponseError,UsageError,WaitTimeoutError}from"./chunk-VFPY2A23.js";import"./chunk-J7QYPKVK.js";import"./chunk-RZVI6PMW.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var LABEL="\u30EF\u30FC\u30AB\u30FC\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8";var LIST_COLUMNS=["agent_id","name","is_enabled","schedule","next_run_at","last_run_status","last_run_at","owner_user_name"];var GET_COLUMNS=["agent_id","name","description","owner_user_name","is_enabled","schedule","next_run_at","is_running","last_run_status","last_run_at","last_run_id","allowed_tool_count","write_enabled","ai_model","consecutive_failure_count","auto_disabled_reason"];var TOOL_COLUMNS=["name","category","d\
5
+ isplay_name","is_mutating","is_available"];var TOOL_GET_COLUMNS=["name","category","display_name","description","is_mutating","is_destructive","is_available","required_feature","required_level","required_api_scopes"];var RUN_COLUMNS=["run_id","status","trigger","started_at","duration_ms","tool_call_count","consumed_credits","summary"];var RUN_GET_COLUMNS=["summary","status","skip_reason","error_code","error_message","run_id","agent_id","trigger","is_dry_run","started_at","finished_at","duration_\
6
+ ms","iteration_count","tool_call_count","mutation_count","consumed_credits","ai_model"];var STEP_COLUMNS=["step_no","type","tool_name","is_mutation","duration_ms","content","error_message"];var STEP_TYPES=["thinking","tool_call","tool_result","error","budget_warning","final_summary"];var FORBIDDEN="AI\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u6A5F\u80FD\u306E\u30E9\u30A4\u30BB\u30F3\u30B9\uFF08agent\uFF09\u304C\u3042\u306A\u305F\u306E\u30A2\u30AB\u30A6\u30F3\u30C8\u306B\u5272\u308A\u5F53\u3066\u3089\u308C\u3066\u3044\u306A\u3044\u305F\u3081\u4F7F\u3048\u307E\u305B\u3093\u3002\u30C6\u30CA\u30F3\u30C8\u306E\u7BA1\u7406\u8005\u306B\u30E9\u30A4\u30BB\u30F3\u30B9\u306E\u5272\u308A\u5F53\u3066\u3092\u4F9D\u983C\u3057\u3066\u304F\u3060\u3055\u3044\u3002";
7
+ var AGENT_REF_HELP="<\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8> \u306F\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8 ID\uFF08twp worker-agent list \u306E agent_id \u5217\uFF09\u304B\u540D\u524D\u3067\u6307\u5B9A\u3067\u304D\u307E\u3059\u3002\n\u540D\u524D\u306F\u4E00\u89A7\u3068\u5B8C\u5168\u4E00\u81F4\u3067\u7167\u5408\u3057\u307E\u3059\uFF08\u540C\u540D\u304C\u8907\u6570\u3042\u308C\u3070\u5019\u88DC\u3092\u51FA\u3057\u3066\u6B62\u307E\u308A\u307E\u3059\uFF09\u3002";function usageOf(op){return`twp worker-age\
8
+ nt ${op} help`}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(" ")}`,usageOf(op))}function positional(input,op,labels){const values=input.args.map(arg=>arg.trim());if(values.length>labels.length){throw new UsageError(`${op} \u304C\u53D7\u3051\u53D6\u308C\u308B\u5F15\u6570\u306F ${labels.join(" ")} \u3060\u3051\u3067\u3059: ${values.slice(labels.length).join(" ")}`,usageOf(op))}labels.
9
+ forEach((label,index)=>{if((values[index]??"")==="")throw new UsageError(`${label}\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044`,usageOf(op))});return values}function safeSegment(value,label,hint){if(!isSafePathSegment(value))throw new UsageError(`${label}\u3068\u3057\u3066\u4F7F\u3048\u306A\u3044\u5024\u3067\u3059: ${value}`,hint);return value}async function resolveAgent(input,ctx,ref,flag="<\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8>"){const agent=await ctx.resolver.workerAgent(ref,flag);return withResolved(
10
+ input,{agentId:safeSegment(agent.id,"\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8 ID","\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8 ID \u306F twp worker-agent list \u306E agent_id \u5217\u3067\u78BA\u8A8D\u3067\u304D\u307E\u3059\u3002")})}function agentPath(input,suffix=""){return`${WORKER_AGENTS_PATH}/${encodeURIComponent(requireResolved(input,"agentId"))}${suffix}`}function runPath(input,runId,suffix=""){return agentPath(input,`/runs/${encodeURIComponent(runId)}${suffix}`)}function envelope(body,what){if(!isRecord(
11
+ body)||body["result"]!==true){throw new ApiResponseError(`${what}\u306E\u5FDC\u7B54\u306E\u5F62\u304C\u60F3\u5B9A\u3068\u9055\u3044\u307E\u3059\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}return body}function 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`)}
12
+ return data}function scheduleText(row){const schedule=row["schedule"];return isRecord(schedule)?schedule["description"]??schedule["type"]??null:schedule??null}function agentSummary(row,columns){const out=pick(row,columns);if(isRecord(row))out["schedule"]=scheduleText(row);return out}function listQuery(input,maxLimit){const limit=positiveInteger(input.flags,"--limit");if(limit!==void 0&&limit>maxLimit){throw new UsageError(`--limit \u306F 1\u301C${maxLimit} \u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044: ${limit}`,
13
+ `\u30B5\u30FC\u30D0\u306E\u4E0A\u9650\u304C${maxLimit}\u4EF6\u3067\u3059\u3002\u5168\u4EF6\u306F --all \u3067\u8FBF\u308C\u307E\u3059\u3002`)}return{limit}}function agentRows(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={
14
+ 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\u3002\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u7BA1\u7406\u8005\u306E\u3068\u304D\u3060\u3051\u52B9\u304D\u307E\u3059\uFF09",takesValue:true,placeholder:"<\u30E6\u30FC\u30B6\u30FC>"};var listOperation={name:"list",summary:`${LABEL}\u3092\u4E00\u89A7\u3059\u308B\uFF08\u6709\u52B9/\u7121\u52B9\u30FB\u30B9\u30B1\u30B8\u30E5\u30FC\u30EB\u30FB\u6B21\u56DE\u5B9F\u884C\u4E88\u5B9A\uFF09`,
15
+ usage:"twp worker-agent list [--owner <\u30E6\u30FC\u30B6\u30FC>]",description:`\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u7BA1\u7406\u8005\u306F\u30C6\u30CA\u30F3\u30C8\u306E\u5168\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u3001\u305D\u308C\u4EE5\u5916\u306F\u81EA\u5206\u306E\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u3060\u3051\u304C\u51FA\u307E\u3059\u3002
16
+ --owner \u306F\u7BA1\u7406\u8005\u306E\u3068\u304D\u3060\u3051\u52B9\u304D\u307E\u3059\uFF08\u7BA1\u7406\u8005\u3067\u306A\u3051\u308C\u3070\u30B5\u30FC\u30D0\u304C\u7121\u8996\u3057\u3001\u81EA\u5206\u306E\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u3060\u3051\u3092\u8FD4\u3057\u307E\u3059\uFF09\u3002
17
+ \u3053\u306E API \u306F\u30DA\u30FC\u30B8\u30F3\u30B0\u3092\u6301\u305F\u305A\u3001\u5168\u4EF6\u3092\u8FD4\u3057\u307E\u3059\u3002
18
+
19
+ --output json \u306F API \u304C\u8FD4\u3059\u5168\u30D5\u30A3\u30FC\u30EB\u30C9\uFF08schedule \u306E\u5185\u8A33\u3092\u542B\u3080\uFF09\u3092\u51FA\u3057\u307E\u3059\u3002
20
+ --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:WORKER_AGENTS_PATH,
21
+ query:{owner_user_id:input.resolved?.["ownerUserId"]}}),summarize:body=>agentRows(body).map(row=>agentSummary(row,LIST_COLUMNS)),raw:agentRows,forbidden:FORBIDDEN,notes(body,input){const notes=[];if(agentRows(body).length===0)notes.push(`${LABEL}\u306F0\u4EF6\u3067\u3059\u3002`);if(input.flags.has(OWNER_FLAG.name)&&isRecord(body)&&body["is_agent_admin"]!==true){notes.push("\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u7BA1\u7406\u8005\u3067\u306F\u306A\u3044\u305F\u3081 --owner \u306F\u52B9\u3044\u3066\u3044\u307E\u305B\u3093\uFF08\u81EA\u5206\u306E\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u3060\u3051\u3092\u8868\u793A\u3057\u3066\u3044\u307E\u3059\uFF09\u3002")}
22
+ return notes}};var getOperation={name:"get",summary:`${LABEL}1\u4EF6\u306E\u8A73\u7D30\u3092\u8868\u793A\u3059\u308B\uFF08\u30B9\u30B1\u30B8\u30E5\u30FC\u30EB\u30FB\u6B21\u56DE\u5B9F\u884C\u4E88\u5B9A\u30FB\u76F4\u8FD1\u306E\u5B9F\u884C\uFF09`,usage:"twp worker-agent get <\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8>",description:`${AGENT_REF_HELP}
23
+ \u53C2\u7167\u3067\u304D\u306A\u3044\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\uFF08\u4ED6\u4EBA\u306E\u3082\u306E\u3067\u3001\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u7BA1\u7406\u8005\u3067\u306A\u3044\uFF09\u306F\u300C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u300D\u306B\u306A\u308A\u307E\u3059\u3002
24
+
25
+ --output json \u306F\u6307\u793A\u6587\uFF08instruction\uFF09\u30FB\u8A31\u53EF\u30C4\u30FC\u30EB\uFF08allowed_tools\uFF09\u30FB\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:[],prepare(input,ctx){const[ref]=positional(input,"get",["<\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8>"]);return resolveAgent(input,ctx,ref)},plan:input=>({method:"GET",path:agentPath(input)}),summarize:body=>agentSummary(dataOf(
26
+ body,LABEL,"agent_id"),GET_COLUMNS),raw:body=>dataOf(body,LABEL,"agent_id"),forbidden:FORBIDDEN};function readOffsetCursor(body){const record=isRecord(body)?body:{};const next=record["next_offset"];return{hasMore:record["has_more"],cursor:typeof next==="number"?String(next):next}}var toolPaging=envelopePaging({label:"\u30C4\u30FC\u30EB\u4E00\u89A7",cursorParam:"offset",readCursor:readOffsetCursor});function toolRows(body){envelope(body,"\u30C4\u30FC\u30EB\u4E00\u89A7");return toolPaging.items(body)}
27
+ var toolsOperation={name:"tools",summary:"\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u306B\u8A31\u53EF\u3067\u304D\u308B\u30C4\u30FC\u30EB\u3092\u4E00\u89A7\u3059\u308B\uFF08--keyword / --category \u3067\u7D5E\u308A\u8FBC\u3080\uFF09",usage:"twp worker-agent tools [--keyword <\u8A9E>] [--category <\u30AB\u30C6\u30B4\u30EA>] [--all] [--limit <\u4EF6\u6570>] [--cursor <\u30AA\u30D5\u30BB\u30C3\u30C8>]",description:`is_available \u306F\u3042\u306A\u305F\u304C\u5B9F\u969B\u306B\u4F7F\u3048\u308B\u304B\uFF08\u6A5F\u80FD\u306E\u5229\u7528\u6A29\u9650\u30FB\u6A29\u9650\u30EC\u30D9\u30EB\uFF09\u3067\u3001\u5B9F\u884C\u6642\u3068\u540C\u3058\u5224\u5B9A\u3067\u3059\u3002
28
+ --keyword \u306F\u30C4\u30FC\u30EB\u540D\u30FB\u8868\u793A\u540D\u30FB\u8AAC\u660E\u306E\u90E8\u5206\u4E00\u81F4\uFF08\u5927\u6587\u5B57\u5C0F\u6587\u5B57\u3092\u533A\u5225\u3057\u306A\u3044\uFF09\u3067\u3059\u3002
29
+ \u3053\u306E\u30AB\u30BF\u30ED\u30B0\u306F\u30AA\u30D5\u30BB\u30C3\u30C8\u65B9\u5F0F\u3067\u3001--cursor \u306B\u306F\u524D\u56DE\u306E\u7D9A\u304D\u306E\u4F4D\u7F6E\uFF08\u6570\u5024\uFF09\u3092\u6E21\u3057\u307E\u3059\u3002
30
+
31
+ --output json \u306F\u5165\u529B\u30B9\u30AD\u30FC\u30DE\uFF08input_schema\uFF09\u3092\u542B\u3080\u5168\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u51FA\u3057\u307E\u3059\u3002
32
+ --output table / text / tsv \u306F\u8981\u7D04\u5217\uFF08${TOOL_COLUMNS.join(" / ")}\uFF09\u3067\u3059\u3002
33
+
34
+ `+LIST_PAGING_HELP,flags:[...LIST_FLAGS,{name:"--keyword",summary:"\u30C4\u30FC\u30EB\u540D\u30FB\u8868\u793A\u540D\u30FB\u8AAC\u660E\u306E\u8A9E\u3067\u7D5E\u308A\u8FBC\u3080",takesValue:true,placeholder:"<\u8A9E>"},{name:"--category",summary:"\u30AB\u30C6\u30B4\u30EA\u3067\u7D5E\u308A\u8FBC\u3080\uFF08note / task \u7B49\u3002--output json \u306E categories \u3067\u4E00\u89A7\u3067\u304D\u308B\uFF09",takesValue:true,placeholder:"<\u30AB\u30C6\u30B4\u30EA>"}],paging:toolPaging,plan(input){noArgs(
35
+ input,"tools");const cursor=nonEmpty(input.flags,"--cursor");if(cursor!==void 0&&!/^\d+$/.test(cursor.trim())){throw new UsageError(`--cursor \u306B\u306F\u30AA\u30D5\u30BB\u30C3\u30C8\uFF080\u4EE5\u4E0A\u306E\u6574\u6570\uFF09\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044: ${cursor}`,usageOf("tools"))}return{method:"GET",path:`${WORKER_AGENTS_PATH}/tools`,query:{keyword:nonEmpty(input.flags,"--keyword"),category:nonEmpty(input.flags,"--category"),...listQuery(input,100),offset:cursor?.trim()}}},
36
+ summarize:body=>toolRows(body).map(row=>pick(row,TOOL_COLUMNS)),raw:toolRows,forbidden:FORBIDDEN,notes:body=>toolRows(body).length===0?["\u6761\u4EF6\u306B\u4E00\u81F4\u3059\u308B\u30C4\u30FC\u30EB\u306F\u3042\u308A\u307E\u305B\u3093\u3002"]:[]};var toolGetOperation={name:"get",summary:"\u30C4\u30FC\u30EB1\u4EF6\u306E\u8A73\u7D30\uFF08\u5165\u529B\u30B9\u30AD\u30FC\u30DE\u30FB\u5FC5\u8981\u306A\u6A29\u9650\uFF09\u3092\u8868\u793A\u3059\u308B",usage:"twp worker-agent tool get <\u30C4\u30FC\u30EB\u540D>",
37
+ description:"<\u30C4\u30FC\u30EB\u540D> \u306F twp worker-agent tools \u306E name \u5217\uFF08create_note \u7B49\uFF09\u3067\u3059\u3002\n\n--output json \u306F\u5165\u529B\u30B9\u30AD\u30FC\u30DE\uFF08input_schema\uFF09\u3092\u542B\u3080\u5168\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u51FA\u3057\u307E\u3059\u3002",flags:[],plan(input){const[name]=positional(input,"tool get",["<\u30C4\u30FC\u30EB\u540D>"]);const safe=safeSegment(name,"\u30C4\u30FC\u30EB\u540D","\u30C4\u30FC\u30EB\u540D\u306F twp worker-agent tools \u306E name \u5217\u3067\u78BA\
38
+ \u8A8D\u3067\u304D\u307E\u3059\u3002");return{method:"GET",path:`${WORKER_AGENTS_PATH}/tools/${encodeURIComponent(safe)}`}},summarize:body=>pick(dataOf(body,"\u30C4\u30FC\u30EB","name"),TOOL_GET_COLUMNS),raw:body=>dataOf(body,"\u30C4\u30FC\u30EB","name"),forbidden:FORBIDDEN};function limitsData(body){const data=envelope(body,"\u5B9F\u884C\u4E0A\u9650")["data"];if(!isRecord(data)||!isRecord(data["limits"])||typeof data["run_date"]!=="string"){throw new ApiResponseError("\u5B9F\u884C\u4E0A\u9650\u306E\u5FDC\u7B54\u306B data.limits / run\
39
+ _date \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002")}return data}function limitsRows(body){const data=limitsData(body);const limits=data["limits"];const row=(item,used,limit)=>({item,used:used??null,limit:limit??null});const scope=typeof data["agent_id"]==="string"?"\u3053\u306E\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8":"1\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u3042\u305F\u308A";const hint=typeof data["agent_id"]==="string"?"\u4ECA\u65E5":
40
+ "1\u65E5\u30FB\u4F7F\u7528\u6570\u306F --agent \u3067\u8868\u793A";return[row(`\u30C6\u30CA\u30F3\u30C8\u306E\u5B9F\u884C\u56DE\u6570\uFF08${String(data["run_date"])}\uFF09`,data["tenant_runs"],limits["max_runs_per_tenant_per_day"]),row(`${scope}\u306E\u5B9A\u671F\u5B9F\u884C\u56DE\u6570\uFF08${hint}\uFF09`,data["agent_scheduled_runs"],limits["max_scheduled_runs_per_agent_per_day"]),row(`${scope}\u306E\u624B\u52D5\u5B9F\u884C\u56DE\u6570\uFF08${hint}\uFF09`,data["agent_manual_runs"],limits["max_\
41
+ manual_runs_per_agent_per_day"]),row("\u81EA\u5206\u306E\u6709\u52B9\u306A\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u6570",data["owner_enabled_agents"],limits["max_enabled_agents_per_user"]),row("\u30C6\u30CA\u30F3\u30C8\u306E\u6709\u52B9\u306A\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u6570",data["tenant_enabled_agents"],limits["max_enabled_agents_per_tenant"]),row("1\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u306B\u8A31\u53EF\u3067\u304D\u308B\u30C4\u30FC\u30EB\u6570",null,limits["max_tools_per_agent"])]}var limitsOperation={
42
+ name:"limits",summary:"\u5B9F\u884C\u56DE\u6570\u30FB\u6709\u52B9\u5316\u6570\u306E\u4E0A\u9650\u3068\u4ECA\u65E5\u306E\u4F7F\u7528\u6570\u3092\u8868\u793A\u3059\u308B\uFF08--agent \u3067\u305D\u306E\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u306E\u56DE\u6570\u3082\uFF09",usage:"twp worker-agent limits [--agent <\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8>]",description:`--agent \u3092\u4ED8\u3051\u308B\u3068\u3001\u305D\u306E\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u306E\u4ECA\u65E5\u306E\u5B9A\u671F\u30FB\u624B\u52D5\u306E\u5B9F\u884C\u56DE\u6570\u3082\u51FA\u3057\u307E\u3059\uFF08\u4ED8\u3051\u306A\u3051\u308C\u3070\u7A7A\u6B04\uFF09\u3002
43
+ ${AGENT_REF_HELP}
44
+
45
+ --output json \u306F API \u306E\u5FDC\u7B54\uFF08limits \u306E\u5185\u8A33\u3092\u542B\u3080\uFF09\u3092\u305D\u306E\u307E\u307E\u51FA\u3057\u307E\u3059\u3002`,flags:[{name:"--agent",summary:"\u3053\u306E\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u306E\u4ECA\u65E5\u306E\u5B9F\u884C\u56DE\u6570\u3082\u51FA\u3059\uFF08ID \u304B\u540D\u524D\uFF09",takesValue:true,placeholder:"<\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8>"}],async prepare(input,ctx){noArgs(input,"limits");const agent=nonEmpty(input.flags,"--agen\
46
+ t");return agent===void 0?input:resolveAgent(input,ctx,agent,"--agent")},plan:input=>({method:"GET",path:`${WORKER_AGENTS_PATH}/limits`,query:{agent_id:input.resolved?.["agentId"]}}),summarize:limitsRows,raw:limitsData,forbidden:FORBIDDEN};var runPaging=envelopePaging({label:"\u5B9F\u884C\u5C65\u6B74"});var stepPaging=envelopePaging({label:"\u30B9\u30C6\u30C3\u30D7\u30ED\u30B0"});function runRows(body){envelope(body,"\u5B9F\u884C\u5C65\u6B74");return runPaging.items(body)}function stepRows(body){
47
+ envelope(body,"\u30B9\u30C6\u30C3\u30D7\u30ED\u30B0");return stepPaging.items(body)}function runDetail(body){const data=dataOf(body,"\u5B9F\u884C\u8A18\u9332","run_id");const{summary,...rest}=data;return{summary:summary??null,...rest}}function retentionNote(body,empty){const days=isRecord(body)?body["retention_days"]:void 0;return empty&&typeof days==="number"?[`\u30B9\u30C6\u30C3\u30D7\u30ED\u30B0\u306F\u3042\u308A\u307E\u305B\u3093\uFF08\u30B9\u30C6\u30C3\u30D7\u306E\u4FDD\u6301\u671F\u9593\u306F ${days}\
48
+ \u65E5\u3067\u3059\u3002\u305D\u308C\u3088\u308A\u53E4\u3044\u5B9F\u884C\u3067\u306F\u30B9\u30C6\u30C3\u30D7\u304C\u6B8B\u3063\u3066\u3044\u307E\u305B\u3093\uFF09\u3002`]:[]}function runRefs(input,op){const[agent,runId]=positional(input,op,["<\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8>","<\u5B9F\u884CID>"]);return{agent,runId:safeSegment(runId,"\u5B9F\u884C ID","\u5B9F\u884C ID \u306F twp worker-agent run list <\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8> \u306E run_id \u5217\u3067\u78BA\u8A8D\u3067\u304D\u307E\u3059\u3002")}}
49
+ var runListOperation={name:"list",summary:"\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u306E\u5B9F\u884C\u5C65\u6B74\u3092\u4E00\u89A7\u3059\u308B\uFF08\u65B0\u3057\u3044\u9806\uFF09",usage:"twp worker-agent run list <\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8> [--all] [--limit <\u4EF6\u6570>] [--cursor <\u30AB\u30FC\u30BD\u30EB>]",description:`${AGENT_REF_HELP}
50
+ \u5B9F\u884C\u8A18\u9332\u306E\u4FDD\u6301\u671F\u9593\u306F180\u65E5\u3067\u3059\u3002
51
+
52
+ --output json \u306F API \u304C\u8FD4\u3059\u5168\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u51FA\u3057\u307E\u3059\u3002
53
+ --output table / text / tsv \u306F\u8981\u7D04\u5217\uFF08${RUN_COLUMNS.join(" / ")}\uFF09\u3067\u3059\u3002
54
+
55
+ `+LIST_PAGING_HELP,flags:[...LIST_FLAGS],paging:runPaging,prepare(input,ctx){const[agent]=positional(input,"run list",["<\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8>"]);listQuery(input,100);return resolveAgent(input,ctx,agent)},plan:input=>({method:"GET",path:agentPath(input,"/runs"),query:{...listQuery(input,100),cursor:nonEmpty(input.flags,"--cursor")}}),summarize:body=>runRows(body).map(row=>pick(row,RUN_COLUMNS)),raw:runRows,forbidden:FORBIDDEN,notes:body=>runRows(body).length===0?["\u5B9F\u884C\u5C65\u6B74\u306F\u3042\u308A\u307E\u305B\u3093\u3002"]:
56
+ []};var runGetOperation={name:"get",summary:"\u5B9F\u884C1\u4EF6\u306E\u7D50\u679C\u3092\u8868\u793A\u3059\u308B\uFF08\u6700\u7D42\u8981\u7D04\u3092\u5148\u982D\u306B\uFF09",usage:"twp worker-agent run get <\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8> <\u5B9F\u884CID>",description:`${AGENT_REF_HELP}
57
+ \u6700\u7D42\u8981\u7D04\uFF08summary\uFF09\u3092\u5148\u982D\u306B\u51FA\u3057\u307E\u3059\u3002\u7D50\u679C\u3060\u3051\u304C\u6B32\u3057\u3044\u3068\u304D\u306F --query summary \u3067\u53D6\u308A\u51FA\u305B\u307E\u3059\u3002
58
+ --output text \u306F\u8981\u7D04\u3092\u672C\u6587\u3068\u3057\u3066\u5148\u306B\u51FA\u3057\u3001\u305D\u306E\u5F8C\u306B\u72B6\u614B\u30FB\u6240\u8981\u30FB\u6D88\u8CBB\u3092\u4E26\u3079\u307E\u3059\u3002
59
+
60
+ --output json \u306F API \u304C\u8FD4\u3059\u5168\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u51FA\u3057\u307E\u3059\uFF08summary \u304C\u5148\u982D\u306E\u30AD\u30FC\uFF09\u3002
61
+ \u30C8\u30FC\u30AF\u30F3\u6570\uFF08input_tokens / output_tokens / total_tokens\uFF09\u306F\u30AD\u30FC\u540D\u304C\u79D8\u5BC6\u306E\u4F0F\u5B57\u5316\u306B\u5F53\u305F\u308B\u305F\u3081 ***\uFF08\u4F0F\u5B57\uFF09\u3067\u51FA\u307E\u3059\u3002
62
+ \u898B\u308B\u3068\u304D\u306F --no-redact \u3092\u4ED8\u3051\u3066\u304F\u3060\u3055\u3044\uFF08\u5024\u306F\u30C8\u30FC\u30AF\u30F3\u306E\u300C\u6570\u300D\u3067\u3001\u8CC7\u683C\u60C5\u5831\u3067\u306F\u3042\u308A\u307E\u305B\u3093\uFF09\u3002`,flags:[],prepare(input,ctx){return resolveAgent(input,ctx,runRefs(input,"run get").agent)},plan:input=>({method:"GET",path:runPath(input,runRefs(input,"run get").runId)}),summarize:body=>pick(runDetail(body),RUN_GET_COLUMNS),raw:runDetail,document(body){
63
+ const run=runDetail(body);const lines=[typeof run["summary"]==="string"&&run["summary"]!==""?run["summary"]:"\uFF08\u6700\u7D42\u8981\u7D04\u306F\u3042\u308A\u307E\u305B\u3093\uFF09",""];for(const key of RUN_GET_COLUMNS.slice(1)){const value=run[key];if(value!==null&&value!==void 0)lines.push(`${key}: ${typeof value==="object"?JSON.stringify(value):String(value)}`)}return`${lines.join("\n")}
64
+ `},forbidden:FORBIDDEN,notes(body){const status=isRecord(body)&&isRecord(body["data"])?body["data"]["status"]:void 0;return status==="pending"||status==="running"?[`\u3053\u306E\u5B9F\u884C\u306F\u307E\u3060\u7D42\u308F\u3063\u3066\u3044\u307E\u305B\u3093\uFF08status: ${String(status)}\uFF09\u3002\u6700\u7D42\u8981\u7D04\u306F\u7D42\u4E86\u5F8C\u306B\u5165\u308A\u307E\u3059\u3002`]:[]}};var STEP_TYPE_FLAG={name:"--type",summary:`\u7A2E\u5225\u3067\u7D5E\u308A\u8FBC\u3080\uFF08${STEP_TYPES.join("\
65
+ / ")}\u3002\u30AB\u30F3\u30DE\u533A\u5207\u308A\u3067\u8907\u6570\uFF09`,takesValue:true,placeholder:"<\u7A2E\u5225>"};function stepTypes(input){const raw=nonEmpty(input.flags,STEP_TYPE_FLAG.name);if(raw===void 0)return void 0;const types=raw.split(",").map(type=>type.trim());const unknown=types.filter(type=>!STEP_TYPES.includes(type));if(unknown.length>0){throw new UsageError(`--type \u306B\u6307\u5B9A\u3067\u304D\u306A\u3044\u7A2E\u5225\u3067\u3059: ${unknown.join(", ")}`,`\u6307\u5B9A\u3067\u304D\u308B\u7A2E\u5225: ${STEP_TYPES.
66
+ join(" / ")}`)}return types.join(",")}var runStepsOperation={name:"steps",summary:"\u5B9F\u884C\u306E\u30B9\u30C6\u30C3\u30D7\u30ED\u30B0\uFF08\u601D\u8003\u30FB\u30C4\u30FC\u30EB\u547C\u3073\u51FA\u3057\u30FB\u7D50\u679C\uFF09\u3092\u6642\u7CFB\u5217\u3067\u4E00\u89A7\u3059\u308B",usage:"twp worker-agent run steps <\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8> <\u5B9F\u884CID> [--type <\u7A2E\u5225>] [--all] [--limit <\u4EF6\u6570>] [--cursor <\u30AB\u30FC\u30BD\u30EB>]",description:`${AGENT_REF_HELP}
67
+ --type \u306F ${STEP_TYPES.join(" / ")} \u306E\u3044\u305A\u308C\u304B\uFF08\u30AB\u30F3\u30DE\u533A\u5207\u308A\u3067\u8907\u6570\uFF09\u3067\u3059\u3002
68
+ \u7D5E\u308A\u8FBC\u3080\u30681\u30DA\u30FC\u30B8\u304C --limit \u4EF6\u306B\u6E80\u305F\u306A\u304F\u3066\u3082\u7D9A\u304D\u304C\u3042\u308B\u3053\u3068\u304C\u3042\u308A\u307E\u3059\uFF08--all \u3067\u8FBF\u308C\u307E\u3059\uFF09\u3002
69
+ \u30B9\u30C6\u30C3\u30D7\u306E\u4FDD\u6301\u671F\u9593\uFF0890\u65E5\uFF09\u306F\u5B9F\u884C\u8A18\u9332\uFF08180\u65E5\uFF09\u3088\u308A\u77ED\u304F\u3001\u53E4\u3044\u5B9F\u884C\u3067\u306F\u30B9\u30C6\u30C3\u30D7\u304C0\u4EF6\u306B\u306A\u308A\u307E\u3059\u3002
70
+
71
+ --output json \u306F\u30C4\u30FC\u30EB\u306E\u5165\u529B\uFF08tool_input\uFF09\u3092\u542B\u3080\u5168\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u51FA\u3057\u307E\u3059\u3002
72
+ --output table / text / tsv \u306F\u8981\u7D04\u5217\uFF08${STEP_COLUMNS.join(" / ")}\uFF09\u3067\u3059\u3002
73
+
74
+ `+LIST_PAGING_HELP,flags:[...LIST_FLAGS,STEP_TYPE_FLAG],paging:stepPaging,prepare(input,ctx){const{agent}=runRefs(input,"run steps");stepTypes(input);listQuery(input,500);return resolveAgent(input,ctx,agent)},plan:input=>({method:"GET",path:runPath(input,runRefs(input,"run steps").runId,"/steps"),query:{step_type:stepTypes(input),...listQuery(input,500),cursor:nonEmpty(input.flags,"--cursor")}}),summarize:body=>stepRows(body).map(row=>pick(row,STEP_COLUMNS)),raw:stepRows,forbidden:FORBIDDEN,notes:body=>retentionNote(
75
+ body,stepRows(body).length===0)};function statsData(body){const data=envelope(body,"\u30B9\u30C6\u30C3\u30D7\u96C6\u8A08")["data"];if(!isRecord(data)||typeof data["total_steps"]!=="number"){throw new ApiResponseError("\u30B9\u30C6\u30C3\u30D7\u96C6\u8A08\u306E\u5FDC\u7B54\u306B data.total_steps \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002")}return data}var STATS_COLUMNS=["total_steps","tool_call_count","error_count","fai\
76
+ led_tool_result_count","total_tool_duration_ms","truncated"];var runStatsOperation={name:"stats",summary:"\u5B9F\u884C\u306E\u30B9\u30C6\u30C3\u30D7\u3092\u7A2E\u5225\u30FB\u30C4\u30FC\u30EB\u3054\u3068\u306B\u96C6\u8A08\u3059\u308B",usage:"twp worker-agent run stats <\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8> <\u5B9F\u884CID>",description:`${AGENT_REF_HELP}
77
+ \u30C4\u30FC\u30EB\u3054\u3068\u306E\u547C\u3073\u51FA\u3057\u30FB\u5931\u6557\u30FB\u66F8\u304D\u8FBC\u307F\u56DE\u6570\u3068\u6240\u8981\u6642\u9593\u306F --output json \u306E tools \u306B\u5165\u308A\u307E\u3059\u3002
78
+ \u30B5\u30FC\u30D0\u306F5,000\u30B9\u30C6\u30C3\u30D7\u307E\u3067\u3057\u304B\u6570\u3048\u307E\u305B\u3093\uFF08\u8D85\u3048\u305F\u3089 truncated: true\uFF09\u3002`,flags:[],prepare(input,ctx){return resolveAgent(input,ctx,runRefs(input,"run stats").agent)},plan:input=>({method:"GET",path:runPath(input,runRefs(input,"run stats").runId,"/steps/stats")}),summarize:body=>pick(statsData(body),STATS_COLUMNS),raw:statsData,forbidden:FORBIDDEN,notes(body){const data=statsData(body);const notes=retentionNote(
79
+ body,data["total_steps"]===0);if(data["truncated"]===true)notes.push("\u30B9\u30C6\u30C3\u30D7\u304C\u591A\u3044\u305F\u3081\u3001\u96C6\u8A08\u306F\u5148\u982D\u306E5,000\u30B9\u30C6\u30C3\u30D7\u307E\u3067\u3067\u3059\uFF08\u5168\u4EF6\u306E\u96C6\u8A08\u3067\u306F\u3042\u308A\u307E\u305B\u3093\uFF09\u3002");return notes}};var NAME_MAX_CHARS=100;var DESCRIPTION_MAX_CHARS=1e3;var INSTRUCTION_MAX_CHARS=2e4;var INTERVAL_MIN_MINUTES=15;var INTERVAL_MAX_MINUTES=1440;var INTERVAL_STEP_MINUTES=5;var WEEKDAYS={
80
+ mon:1,tue:2,wed:3,thu:4,fri:5,sat:6,sun:7};var SCHEDULE_HELP=`--schedule \u306E\u66F8\u304D\u65B9\uFF08\u6642\u523B\u306F Asia/Tokyo\u30FB24\u6642\u9593\u8868\u8A18\uFF09:
81
+ interval:30m 30\u5206\u3054\u3068\uFF08${INTERVAL_MIN_MINUTES}\u301C${INTERVAL_MAX_MINUTES}\u5206\u30FB${INTERVAL_STEP_MINUTES}\u5206\u523B\u307F\u30022h \u306E\u3088\u3046\u306B\u6642\u9593\u3067\u3082\u66F8\u3051\u307E\u3059\uFF09
82
+ daily:09:00 \u6BCE\u65E5 09:00
83
+ weekly:mon,fri@09:00 \u6BCE\u9031 \u6708\u30FB\u91D1\u306E 09:00\uFF08mon tue wed thu fri sat sun\uFF09
84
+ monthly:1,15@09:00 \u6BCE\u6708 1\u65E5\u30FB15\u65E5\u306E 09:00\uFF08last \u3067\u6708\u672B\u3002\u4F8B: monthly:last@18:00\uFF09`;function parseSchedule(raw){const text=raw.trim();const colon=text.indexOf(":");const type=(colon<0?text:text.slice(0,colon)).toLowerCase();const rest=colon<0?"":text.slice(colon+1).trim();const bad=why=>new UsageError(`--schedule \u306E\u5024\u304C\u4E0D\u6B63\u3067\u3059: ${raw}\uFF08${why}\uFF09`,SCHEDULE_HELP);if(type==="interval"){const m=/^(\d+)\s*(m|min|h)?$/i.
85
+ exec(rest);if(m===null)throw bad("\u9593\u9694\u306F 30m \u3084 2h \u306E\u3088\u3046\u306B\u66F8\u304D\u307E\u3059");const minutes=Number(m[1])*((m[2]??"m").toLowerCase()==="h"?60:1);if(minutes<INTERVAL_MIN_MINUTES||minutes>INTERVAL_MAX_MINUTES)throw bad(`\u9593\u9694\u306F ${INTERVAL_MIN_MINUTES}\u301C${INTERVAL_MAX_MINUTES} \u5206\u3067\u3059`);if(minutes%INTERVAL_STEP_MINUTES!==0)throw bad(`\u9593\u9694\u306F ${INTERVAL_STEP_MINUTES} \u5206\u523B\u307F\u3067\u3059`);return{type,interval_minutes:minutes}}
86
+ if(type==="daily")return{type,time_of_day:timeOfDay(rest,bad)};if(type==="weekly"||type==="monthly"){const at=rest.lastIndexOf("@");if(at<0)throw bad(`${type} \u306F\u300C\u65E5\u4ED8\u306E\u4E26\u3073@\u6642\u523B\u300D\u3067\u66F8\u304D\u307E\u3059`);const time=timeOfDay(rest.slice(at+1),bad);const items=rest.slice(0,at).split(",").map(item=>item.trim().toLowerCase()).filter(item=>item!=="");if(items.length===0)throw bad(type==="weekly"?"\u66DC\u65E5\u30921\u3064\u4EE5\u4E0A\u66F8\u304D\u307E\u3059":
87
+ "\u65E5\u30921\u3064\u4EE5\u4E0A\u66F8\u304D\u307E\u3059");if(type==="weekly"){const days2=items.map(item=>{const day=WEEKDAYS[item];if(day===void 0)throw bad(`\u66DC\u65E5\u306F mon tue wed thu fri sat sun \u3067\u66F8\u304D\u307E\u3059: ${item}`);return day});return{type,days_of_week:[...new Set(days2)].sort((a,b)=>a-b),time_of_day:time}}const last=items.includes("last");const days=items.filter(item=>item!=="last").map(item=>{if(!/^\d{1,2}$/.test(item)||Number(item)<1||Number(item)>31)throw bad(
88
+ `\u65E5\u306F 1\u301C31 \u304B last \u3067\u66F8\u304D\u307E\u3059: ${item}`);return Number(item)});return{type,days_of_month:[...new Set(days)].sort((a,b)=>a-b),last_day_of_month:last,time_of_day:time}}throw bad("\u7A2E\u5225\u306F interval / daily / weekly / monthly \u306E\u3044\u305A\u308C\u304B\u3067\u3059")}function timeOfDay(raw,bad){const m=/^(\d{1,2}):(\d{2})$/.exec(raw.trim());if(m===null||Number(m[1])>23||Number(m[2])>59)throw bad(`\u6642\u523B\u306F 09:00 \u306E\u3088\u3046\u306B\u66F8\u304D\u307E\u3059: ${raw.
89
+ trim()===""?"\uFF08\u7A7A\uFF09":raw.trim()}`);return`${String(m[1]).padStart(2,"0")}:${m[2]}`}var NAME_FLAG={name:"--name",summary:`\u540D\u524D\uFF08${NAME_MAX_CHARS}\u6587\u5B57\u307E\u3067\uFF09`,takesValue:true,placeholder:"<\u540D\u524D>"};var DESCRIPTION_FLAG={name:"--description",summary:`\u8AAC\u660E\uFF08${DESCRIPTION_MAX_CHARS}\u6587\u5B57\u307E\u3067\uFF09`,takesValue:true,placeholder:"<\u8AAC\u660E>"};var INSTRUCTIONS_FILE_FLAG={name:"--instructions-file",summary:`\u6307\u793A\u6587\u3092\u30D5\u30A1\u30A4\u30EB\u304B\u3089\u8AAD\u3080\uFF08- \u3067\u6A19\u6E96\
90
+ \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\u3084\u8A18\u53F7\u304C\u58CA\u308C\u3084\u3059\u3044\u306E\u3067 --instructions-file \u3092\u63A8\u5968\uFF09",takesValue:true,placeholder:"<\u6307\u793A\u6587>"};var TOOL_FLAG={name:"--tool",summary:"\u8A31\u53EF\u3059\u308B\u30C4\u30FC\u30EB\u540D\uFF08\u8907\u6570\u56DE\u30FB\u30AB\u30F3\u30DE\u533A\u5207\u308A\u53EF\u3002twp worker-\
91
+ agent tools \u306E name \u5217\uFF09",takesValue:true,placeholder:"<\u30C4\u30FC\u30EB\u540D>",repeatable:true};var WRITE_ENABLED_FLAG={name:"--write-enabled",summary:"\u66F8\u304D\u8FBC\u307F\u7CFB\u30C4\u30FC\u30EB\u306E\u5B9F\u884C\u3092\u8A31\u53EF\u3059\u308B\uFF08--yes \u304C\u8981\u308B\uFF09",takesValue:false};var READ_ONLY_FLAG={name:"--read-only",summary:"\u66F8\u304D\u8FBC\u307F\u306E\u8A31\u53EF\u3092\u5916\u3059\uFF08update \u306E\u307F\uFF09",takesValue:false};var SCHEDULE_FLAG={name:"\
92
+ --schedule",summary:"\u30B9\u30B1\u30B8\u30E5\u30FC\u30EB\uFF08interval:30m / 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 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",
93
+ takesValue:false};var CLI_INPUT_FLAG={name:"--cli-input-json",summary:"API \u306E\u672C\u6587\u3092 JSON \u30D5\u30A1\u30A4\u30EB\u3067\u6E21\u3059\uFF08- \u3067\u6A19\u6E96\u5165\u529B\uFF09",takesValue:true,placeholder:"<\u30D1\u30B9|->"};var CREATE_KEYS=["name","description","instruction","allowed_tools","write_enabled","schedule","ai_provider","ai_model","is_enabled"];var UPDATE_KEYS=CREATE_KEYS.filter(key=>key!=="is_enabled");async function readCliInput(input,keys,op){const text=await readBody(
94
+ input,{flag:"--cli-input",fileFlag:CLI_INPUT_FLAG.name,label:"--cli-input-json \u306E JSON",maxChars:INSTRUCTION_MAX_CHARS*2,usage:usageOf(op)});if(text===void 0)return{};let parsed;try{parsed=JSON.parse(text)}catch(err){throw new UsageError(`--cli-input-json \u304C JSON \u3068\u3057\u3066\u8AAD\u3081\u307E\u305B\u3093\uFF08${err.message}\uFF09`,usageOf(op))}if(!isRecord(parsed))throw new UsageError("--cli-input-json \u306F\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\uFF08{...}\uFF09\u3067\u66F8\u3044\u3066\u304F\u3060\u3055\u3044",
95
+ usageOf(op));const unknown=Object.keys(parsed).filter(key=>!keys.includes(key));if(unknown.length>0)throw new UsageError(`--cli-input-json \u306B\u66F8\u3051\u306A\u3044\u30AD\u30FC\u3067\u3059: ${unknown.join(", ")}`,`\u66F8\u3051\u308B\u30AD\u30FC: ${keys.join(" / ")}`);for(const key of["write_enabled","is_enabled"]){if(key in parsed&&typeof parsed[key]!=="boolean")throw new UsageError(`--cli-input-json \u306E ${key} \u306F true / false \u3067\u66F8\u3044\u3066\u304F\u3060\u3055\u3044: ${JSON.
96
+ stringify(parsed[key])}`,usageOf(op))}return parsed}function checkedText(value,label,max,op){if(value.trim()==="")throw new UsageError(`${label}\u304C\u7A7A\u3067\u3059`,usageOf(op));const count=charCount(value.trim());if(count>max)throw new UsageError(`${label}\u306F ${max.toLocaleString()} \u6587\u5B57\u307E\u3067\u3067\u3059\uFF08${count.toLocaleString()} \u6587\u5B57\uFF09`,usageOf(op));return value}function toolNames(input){const values=repeatedValues(input,TOOL_FLAG.name);if(values.length===
97
+ 0)return void 0;const names=values.flatMap(value=>value.split(",")).map(name=>name.trim());if(names.some(name=>name===""))throw new UsageError("--tool \u306B\u7A7A\u306E\u30C4\u30FC\u30EB\u540D\u304C\u3042\u308A\u307E\u3059","\u30C4\u30FC\u30EB\u540D\u306F twp worker-agent tools \u306E name \u5217\u3067\u78BA\u8A8D\u3067\u304D\u307E\u3059\u3002");return[...new Set(names)]}async function buildBody(input,op){if(input.flags.has(WRITE_ENABLED_FLAG.name)&&input.flags.has(READ_ONLY_FLAG.name)){throw new UsageError(
98
+ "--write-enabled \u3068 --read-only \u306F\u540C\u6642\u306B\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093",usageOf(op))}const fromFlags={};const name=nonEmpty(input.flags,NAME_FLAG.name);if(name!==void 0)fromFlags["name"]=checkedText(name,"\u540D\u524D",NAME_MAX_CHARS,op);const description=input.flags.get(DESCRIPTION_FLAG.name);if(description!==void 0)fromFlags["description"]=description.trim()===""?null:checkedText(description,"\u8AAC\u660E",DESCRIPTION_MAX_CHARS,op);const instruction=await readBody(
99
+ 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)fromFlags["instruction"]=instruction;const tools=toolNames(input);if(tools!==void 0)fromFlags["allowed_tools"]=tools;if(input.flags.has(WRITE_ENABLED_FLAG.name))fromFlags["write_enabled"]=true;if(input.flags.has(READ_ONLY_FLAG.name))fromFlags["write_enabled"]=false;const schedule=nonEmpty(input.flags,SCHEDULE_FLAG.name);if(schedule!==
100
+ void 0)fromFlags["schedule"]=parseSchedule(schedule);const model=nonEmpty(input.flags,MODEL_FLAG.name);if(model!==void 0)fromFlags["ai_model"]=model.trim();if(input.flags.has(ENABLE_FLAG.name))fromFlags["is_enabled"]=true;const fromJson=await readCliInput(input,op==="create"?CREATE_KEYS:UPDATE_KEYS,op);const both=Object.keys(fromFlags).filter(key=>key in fromJson);if(both.length>0)throw new UsageError(`${both.join(", ")} \u304C --cli-input-json \u3068\u30D5\u30E9\u30B0\u306E\u4E21\u65B9\u3067\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u3059`,
101
+ "\u3069\u3061\u3089\u304B\u4E00\u65B9\u3060\u3051\u306B\u3057\u3066\u304F\u3060\u3055\u3044\u3002");const body={...fromJson,...fromFlags};if(op==="create"){const missing=[["name","--name"],["instruction","--instructions-file"],["allowed_tools","--tool"],["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))}else if(Object.keys(body).length===
102
+ 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"))}function writeGate(input){const body=bodyOf(input);return body["write_enabled"]===true?{notes:[],warnings:["\u66F8\u304D\u8FBC\u307F\u7CFB\u30C4\u30FC\u30EB\u306E\u5B9F\u884C\u3092\u8A31\u53EF\u3057\u307E\u3059\uFF08\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u304C\u3042\u306A\u305F\u306E\u6A29\u9650\u3067 TWP \u306E\u30C7\u30FC\u30BF\u3092\u4F5C\u6210\u30FB\u66F4\u65B0\u30FB\u524A\u9664\u3067\u304D\u308B\u3088\u3046\u306B\u306A\u308A\u307E\u3059\uFF09\u3002"]}:
103
+ {notes:[],warnings:[]}}function agentNotes(body){const data=dataOf(body,LABEL,"agent_id");const notes=[];if(data["is_enabled"]!==true)notes.push(`\u7121\u52B9\u306E\u307E\u307E\u3067\u3059\u3002\u5B9A\u671F\u5B9F\u884C\u3092\u59CB\u3081\u308B\u306B\u306F twp worker-agent enable ${String(data["agent_id"])} \u3092\u6253\u3063\u3066\u304F\u3060\u3055\u3044\u3002`);else if(typeof data["next_run_at"]==="string")notes.push(`\u6B21\u56DE\u306E\u5B9F\u884C\u4E88\u5B9A: ${data["next_run_at"]}`);return notes}
104
+ var createOperation={name:"create",summary:`${LABEL}\u3092\u4F5C\u6210\u3059\u308B\uFF08\u6307\u793A\u6587\u30FB\u8A31\u53EF\u30C4\u30FC\u30EB\u30FB\u30B9\u30B1\u30B8\u30E5\u30FC\u30EB\u3002\u65E2\u5B9A\u306F\u7121\u52B9\u3067\u4F5C\u6210\uFF09`,usage:"twp worker-agent create --name <\u540D\u524D> --instructions-file <\u30D1\u30B9> --tool <\u30C4\u30FC\u30EB\u540D>... --schedule <\u30B9\u30B1\u30B8\u30E5\u30FC\u30EB> [--write-enabled --yes] [--enable]",description:`\u6307\u793A\u6587\u306F --instructions-file \u3067\u6E21\u3057\u3066\u304F\
105
+ \u3060\u3055\u3044\uFF08\u5F15\u6570\u3067\u306F\u6539\u884C\u30FB\u5F15\u7528\u7B26\u304C\u58CA\u308C\u307E\u3059\uFF09\u3002
106
+ --tool \u306F\u8907\u6570\u56DE\u66F8\u304F\u304B\u3001\u30AB\u30F3\u30DE\u533A\u5207\u308A\u3067\u4E26\u3079\u307E\u3059\u3002\u66F8\u304D\u8FBC\u307F\u7CFB\u30C4\u30FC\u30EB\u3092\u5B9F\u884C\u3055\u305B\u308B\u306B\u306F --write-enabled \u3068 --yes \u304C\u8981\u308A\u307E\u3059\u3002
107
+ --enable \u3092\u4ED8\u3051\u306A\u3051\u308C\u3070\u7121\u52B9\u3067\u4F5C\u6210\u3057\u307E\u3059\uFF08\u4F5C\u6210\u5F8C\u306B twp worker-agent enable \u3067\u6709\u52B9\u5316\uFF09\u3002
108
+ --cli-input-json \u306B\u306F API \u306E\u672C\u6587\uFF08name / description / instruction / allowed_tools / write_enabled / schedule / ai_provider / ai_model / is_enabled\uFF09\u3092 JSON \u3067\u66F8\u3051\u307E\u3059\u3002
109
+ \u30D5\u30E9\u30B0\u3068\u540C\u3058\u9805\u76EE\u3092\u4E21\u65B9\u3067\u66F8\u304F\u3068\u30A8\u30E9\u30FC\u3067\u3059\u3002
110
+
111
+ ${SCHEDULE_HELP}
112
+
113
+ CLI \u304B\u3089\u4F5C\u3063\u305F\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u306F\u753B\u9762\u304B\u3089\u4F5C\u3063\u305F\u3082\u306E\u3068\u540C\u3058\u6271\u3044\uFF08created_via: ui\uFF09\u3067\u8A18\u9332\u3055\u308C\u307E\u3059\u3002`,flags:[NAME_FLAG,DESCRIPTION_FLAG,INSTRUCTIONS_FILE_FLAG,INSTRUCTIONS_FLAG,TOOL_FLAG,WRITE_ENABLED_FLAG,SCHEDULE_FLAG,MODEL_FLAG,ENABLE_FLAG,CLI_INPUT_FLAG],async prepare(input){noArgs(input,"create");return withResolved(input,{body:JSON.stringify(await buildBody(
114
+ input,"create"))})},plan:input=>({method:"POST",path:WORKER_AGENTS_PATH,body:bodyOf(input)}),preview:async input=>writeGate(input),summarize:body=>agentSummary(dataOf(body,LABEL,"agent_id"),GET_COLUMNS),raw:body=>dataOf(body,LABEL,"agent_id"),forbidden:FORBIDDEN,notes:agentNotes};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 worker-age\
115
+ nt update <\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8> [--name] [--instructions-file <\u30D1\u30B9>] [--tool <\u30C4\u30FC\u30EB\u540D>...] [--schedule <\u30B9\u30B1\u30B8\u30E5\u30FC\u30EB>] [--write-enabled --yes | --read-only]",description:`${AGENT_REF_HELP}
116
+ \u6307\u5B9A\u3057\u305F\u9805\u76EE\u3060\u3051\u3092\u9001\u308A\u307E\u3059\u3002--tool \u306F**\u8A31\u53EF\u30C4\u30FC\u30EB\u306E\u4E00\u89A7\u3092\u4E38\u3054\u3068\u7F6E\u304D\u63DB\u3048\u307E\u3059**\uFF08\u8FFD\u52A0\u3067\u306F\u3042\u308A\u307E\u305B\u3093\uFF09\u3002
117
+ --description "" \u3067\u8AAC\u660E\u3092\u6D88\u305B\u307E\u3059\u3002\u6709\u52B9/\u7121\u52B9\u306F enable / disable \u3067\u5207\u308A\u66FF\u3048\u307E\u3059\u3002
118
+ \u4ED6\u4EBA\u306E\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\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
119
+
120
+ `+SCHEDULE_HELP,flags:[NAME_FLAG,DESCRIPTION_FLAG,INSTRUCTIONS_FILE_FLAG,INSTRUCTIONS_FLAG,TOOL_FLAG,WRITE_ENABLED_FLAG,READ_ONLY_FLAG,SCHEDULE_FLAG,MODEL_FLAG,CLI_INPUT_FLAG],async prepare(input,ctx){const[ref]=positional(input,"update",["<\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8>"]);const body=await buildBody(input,"update");return withResolved(await resolveAgent(input,ctx,ref),{body:JSON.stringify(body)})},plan:input=>({method:"PATCH",path:agentPath(input),body:bodyOf(input)}),preview:async input=>writeGate(
121
+ input),summarize:body=>agentSummary(dataOf(body,LABEL,"agent_id"),GET_COLUMNS),raw:body=>dataOf(body,LABEL,"agent_id"),forbidden:FORBIDDEN,notes:agentNotes};function messageOf(body,what){const record=envelope(body,what);return{message:typeof record["message"]==="string"?record["message"]:null,...typeof record["run_id"]==="string"?{run_id:record["run_id"]}:{}}}var deleteOperation={name:"delete",summary:`${LABEL}\u3092\u524A\u9664\u3059\u308B\uFF08--yes \u304C\u8981\u308B\u30FB\u30AA\u30FC\u30CA\u30FC\u306E\u307F\uFF09`,
122
+ usage:"twp worker-agent delete <\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8> --yes",description:`${AGENT_REF_HELP}
123
+ \u524A\u9664\u306F\u53D6\u308A\u6D88\u305B\u307E\u305B\u3093\u3002\u6B62\u3081\u305F\u3044\u3060\u3051\u306A\u3089 twp worker-agent disable \u3092\u4F7F\u3063\u3066\u304F\u3060\u3055\u3044\u3002`,destructive:true,flags:[],prepare(input,ctx){const[ref]=positional(input,"delete",["<\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8>"]);return resolveAgent(input,ctx,ref)},plan:input=>({method:"DELETE",path:agentPath(input)}),summarize:body=>messageOf(body,`${LABEL}\u306E\u524A\u9664`),raw:body=>messageOf(body,`${LABEL}\
124
+ \u306E\u524A\u9664`),forbidden:FORBIDDEN};function toggleOperation(enable){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\u5B9F\u884C\u304C\u59CB\u307E\u308B\u30FB\u30AA\u30FC\u30CA\u30FC\u306E\u307F\uFF09`:`${LABEL}\u3092\u7121\u52B9\u306B\u3059\u308B\uFF08\u81EA\u52D5\u5B9F\u884C\u3092\u6B62\u3081\u308B\uFF09`,usage:`twp worker-agent ${op} <\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8>`,
125
+ description:`${AGENT_REF_HELP}
126
+ `+(enable?"\u6709\u52B9\u5316\u3059\u308B\u3068\u3001\u30AA\u30FC\u30CA\u30FC\uFF08\u3042\u306A\u305F\uFF09\u306E\u6A29\u9650\u3067\u30B9\u30B1\u30B8\u30E5\u30FC\u30EB\u3069\u304A\u308A\u306B\u5B9F\u884C\u3055\u308C\u307E\u3059\u3002\u6709\u52B9\u306A\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u6570\u306B\u306F\u4E0A\u9650\u304C\u3042\u308A\u307E\u3059\uFF08twp worker-agent limits\uFF09\u3002":"\u30AA\u30FC\u30CA\u30FC\u304B\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u7BA1\u7406\u8005\u304C\u7121\u52B9\u5316\u3067\u304D\u307E\u3059\u3002\u7BA1\u7406\u8005\u304C\u7121\u52B9\u5316\u3057\u305F\u3068\u304D\u306F\u30AA\u30FC\u30CA\u30FC\u3078\u901A\u77E5\u3055\u308C\u307E\u3059\u3002"),
127
+ flags:[],prepare(input,ctx){const[ref]=positional(input,op,["<\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8>"]);return resolveAgent(input,ctx,ref)},plan:input=>({method:"POST",path:agentPath(input,`/${op}`)}),summarize:body=>agentSummary(dataOf(body,LABEL,"agent_id"),GET_COLUMNS),raw:body=>dataOf(body,LABEL,"agent_id"),forbidden:FORBIDDEN,notes:enable?agentNotes:void 0}}var RUN_PENDING=["pending","running"];var RUN_OK="succeeded";var RUN_FAILED=["failed","cancelled","skipped"];function readRunStatus(body){
128
+ const data=isRecord(body)?body["data"]:void 0;const status=isRecord(data)?data["status"]:void 0;if(typeof status!=="string")throw new ApiResponseError("\u5B9F\u884C\u8A18\u9332\u306E\u5FDC\u7B54\u306B data.status \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002");if(status===RUN_OK)return{kind:"completed",status};if(RUN_FAILED.includes(status))return{kind:"failed",status};if(RUN_PENDING.includes(status))return{kind:"pending",
129
+ status};throw new ApiResponseError(`\u77E5\u3089\u306A\u3044\u5B9F\u884C\u72B6\u614B\u3067\u3059: ${status}`)}var WAIT_FLAGS=[{name:"--wait",summary:"\u5B9F\u884C\u304C\u7D42\u308F\u308B\uFF08succeeded / failed / cancelled\uFF09\u307E\u3067\u5F85\u3063\u3066\u6700\u7D42\u8981\u7D04\u3092\u51FA\u3059",takesValue:false},{name:"--wait-timeout",summary:"--wait \u3067\u5F85\u3064\u4E0A\u9650\u306E\u79D2\u6570\uFF08\u65E2\u5B9A 300\u30FB\u6700\u5927 480\uFF09",takesValue:true,placeholder:"<\u79D2>"},{
130
+ name:"--wait-interval",summary:"--wait \u3067\u72B6\u614B\u3092\u53D6\u308A\u76F4\u3059\u9593\u9694\u306E\u79D2\u6570\uFF08\u65E2\u5B9A 5\uFF09",takesValue:true,placeholder:"<\u79D2>"}];var SIMULATE_FLAG={name:"--simulate",summary:"\u66F8\u304D\u8FBC\u307F\u7CFB\u30C4\u30FC\u30EB\u3092\u5B9F\u969B\u306B\u306F\u66F8\u304D\u8FBC\u307E\u305A\u300C\u4F55\u3092\u3057\u3088\u3046\u3068\u3057\u305F\u304B\u300D\u3060\u3051\u8A18\u9332\u3059\u308B\uFF08API \u306E dry_run\u3002AI \u306E\u30AF\u30EC\u30B8\u30C3\u30C8\u306F\u6D88\u8CBB\u3059\u308B\uFF09",
131
+ takesValue:false};function runStartExecute(sleep,now){return async(input,ctx)=>{const plan=runStartOperation.plan(input);const startedAt=now();let started;try{started=await ctx.send(plan)}catch(err){if(!(err instanceof ApiError&&err.status>=400&&err.status<500)&&!(err instanceof NotLoggedInError)&&!(err instanceof SessionExpiredError)){ctx.warn(`\u5B9F\u884C\u306E\u958B\u59CB\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\u3002\u6253\u3061\u76F4\u3059\u524D\u306B twp worker-agent run list ${requireResolved(
132
+ input,"agentId")} --limit 1 \u3067\u78BA\u304B\u3081\u3066\u304F\u3060\u3055\u3044\u3002`)}throw err}const runId=envelope(started,"\u5B9F\u884C\u306E\u958B\u59CB")["run_id"];const options=parseWaitOptions(input.flags);if(options===null)return started;const id=typeof runId==="string"?runId:String(dataOf(started,"\u5B9F\u884C\u306E\u958B\u59CB","run_id")["run_id"]);const agentId=requireResolved(input,"agentId");const hint=`twp worker-agent run get ${agentId} ${id}`;const result=await waitUntilTerminal(
133
+ started,options,{fetchAgain:()=>ctx.send({method:"GET",path:runPath(input,id)}),sleep,now,startedAt,readStatus:readRunStatus});const head=`\u5F85\u6A5F: ${result.polls} \u56DE\u53D6\u5F97\u30FB${result.elapsedSeconds} \u79D2`;if(result.pollError!==void 0){ctx.warn(`${head}\u3002\u5B9F\u884C\u306F\u53D7\u3051\u4ED8\u3051\u6E08\u307F\u3067\u3059\u304C\u3001\u7D42\u4E86\u3092\u5F85\u3064\u9014\u4E2D\u3067\u72B6\u614B\u3092\u8AAD\u3081\u307E\u305B\u3093\u3067\u3057\u305F\u3002\u6253\u3061\u76F4\u3055\u305A ${hint}\
134
+ \u3067\u78BA\u304B\u3081\u3066\u304F\u3060\u3055\u3044\u3002`);throw result.pollError}if(result.timedOut){throw new WaitTimeoutError(`${options.timeoutSeconds} \u79D2\u5F85\u3061\u307E\u3057\u305F\u304C\u5B9F\u884C\u304C\u7D42\u308F\u308A\u307E\u305B\u3093\u3067\u3057\u305F\uFF08status=${result.state.status}\uFF09\u3002\u5B9F\u884C\u306F\u7D9A\u3044\u3066\u3044\u307E\u3059\u3002\u3042\u3068\u3067 ${hint} \u3067\u7D50\u679C\u3092\u78BA\u304B\u3081\u3066\u304F\u3060\u3055\u3044\uFF08\u6253\u3061\u76F4\u3059\u3068\u4E8C\u91CD\u306B\u5B9F\u884C\u3055\u308C\u307E\u3059\uFF09`)}
135
+ if(result.state.kind==="failed"){const data=dataOf(result.body,"\u5B9F\u884C\u8A18\u9332","run_id");const reason=[data["error_code"],data["error_message"],data["skip_reason"]].filter(v=>typeof v==="string"&&v!=="").join(" / ");throw new ApiRejectedError(`\u5B9F\u884C\u304C ${result.state.status} \u3067\u7D42\u308F\u308A\u307E\u3057\u305F${reason===""?"":`\uFF08${reason}\uFF09`}\u3002\u8A73\u7D30\u306F ${hint} / twp worker-agent run steps ${agentId} ${id} \u3067\u898B\u3089\u308C\u307E\u3059`)}ctx.
136
+ warn(`${head}\u3002status=${result.state.status} \u3067\u7D42\u308F\u308A\u307E\u3057\u305F\u3002`);return result.body}}function runStartRejected(server){return/上限|実行中|skipped|見送/.test(server)?"\u4ECA\u65E5\u306E\u5B9F\u884C\u56DE\u6570\u30FB\u540C\u6642\u5B9F\u884C\u306E\u72B6\u6CC1\u306F twp worker-agent limits --agent <\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8> \u3067\u78BA\u304B\u3081\u3089\u308C\u307E\u3059\u3002":void 0}var runStartOperation={name:"start",summary:"\u4ECA\u3059\u3050\u5B9F\u884C\u3059\u308B\uFF08AI \u30AF\u30EC\u30B8\u30C3\u30C8\
137
+ \u3092\u6D88\u8CBB\u30FB--yes \u304C\u8981\u308B\u30FB--wait \u3067\u7D42\u308F\u308B\u307E\u3067\u5F85\u3064\uFF09",usage:"twp worker-agent run start <\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8> [--simulate] [--wait [--wait-timeout <\u79D2>]] --yes",description:`${AGENT_REF_HELP}
138
+ \u624B\u52D5\u5B9F\u884C\u306F\u30AA\u30FC\u30CA\u30FC\u3060\u3051\u304C\u3067\u304D\u307E\u3059\uFF08\u7BA1\u7406\u8005\u3067\u3082\u4ED6\u4EBA\u306E\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u306F\u5B9F\u884C\u3067\u304D\u307E\u305B\u3093\uFF09\u3002
139
+ --simulate \u306F\u66F8\u304D\u8FBC\u307F\u7CFB\u30C4\u30FC\u30EB\u3092\u5B9F\u969B\u306B\u306F\u66F8\u304D\u8FBC\u307E\u305A\u306B\u8A18\u9332\u3060\u3051\u3057\u307E\u3059\uFF08AI \u306F\u52D5\u304F\u306E\u3067\u30AF\u30EC\u30B8\u30C3\u30C8\u306F\u6D88\u8CBB\u3057\u307E\u3059\uFF09\u3002
140
+ \u203B twp \u5171\u901A\u306E --dry-run \u306F\u300C\u4F55\u3082\u9001\u3089\u305A\u306B\u9001\u308B\u5185\u5BB9\u3092\u8868\u793A\u3059\u308B\u300D\u3067\u3001\u5B9F\u884C\u305D\u306E\u3082\u306E\u3092\u3057\u307E\u305B\u3093\u3002
141
+ --wait \u306F\u7D42\u308F\u308B\u307E\u3067\u72B6\u614B\u3092\u53D6\u308A\u76F4\u3057\u3001\u6700\u7D42\u8981\u7D04\u3092\u5148\u982D\u306B\u3057\u305F\u5B9F\u884C\u8A18\u9332\u3092\u51FA\u3057\u307E\u3059\u3002\u7D42\u4E86\u30B3\u30FC\u30C9\u306F
142
+ 0\uFF1Dsucceeded\u30FB3\uFF1Dfailed / cancelled\u30FB4\uFF1D\u4E0A\u9650\u307E\u3067\u5F85\u3063\u3066\u3082\u7D42\u308F\u3089\u306A\u304B\u3063\u305F\uFF08\u5B9F\u884C\u306F\u7D9A\u3044\u3066\u3044\u307E\u3059\uFF09\u3067\u3059\u3002
143
+ \u540C\u3058\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u304C\u5B9F\u884C\u4E2D\u30FB\u4ECA\u65E5\u306E\u4E0A\u9650\u306B\u9054\u3057\u3066\u3044\u308B\u3068\u30B5\u30FC\u30D0\u304C\u898B\u9001\u308A\uFF08409\uFF09\u3001\u7D42\u4E86\u30B3\u30FC\u30C9 3 \u306B\u306A\u308A\u307E\u3059\u3002`,destructive:true,confirmation:"AI \u306E\u30AF\u30EC\u30B8\u30C3\u30C8\u3092\u6D88\u8CBB\u3059\u308B\u64CD\u4F5C",flags:[SIMULATE_FLAG,...WAIT_FLAGS],prepare(input,ctx){const[ref]=positional(input,"run start",["<\u30A8\u30FC\u30B8\u30A7\
144
+ \u30F3\u30C8>"]);parseWaitOptions(input.flags);return resolveAgent(input,ctx,ref)},plan:input=>({method:"POST",path:agentPath(input,"/runs"),body:{dry_run:input.flags.has(SIMULATE_FLAG.name)}}),plannedNotes:input=>input.flags.has("--wait")?["\u958B\u59CB\u5F8C\u3001\u7D42\u308F\u308B\u307E\u3067 GET \u2026/runs/{run_id} \u3092\u53D6\u308A\u76F4\u3057\u307E\u3059\u3002"]:[],execute:(input,ctx)=>runStartExecute(ms=>new Promise(resolve=>setTimeout(resolve,ms)),Date.now)(input,ctx),summarize:body=>pick(
145
+ runDetail(body),RUN_GET_COLUMNS),raw:runDetail,document:runGetOperation.document,forbidden:FORBIDDEN,rejected:runStartRejected,notes(body,input){const run=runDetail(body);const status=run["status"];if(status==="pending"||status==="running"){return[`\u5B9F\u884C\u3092\u53D7\u3051\u4ED8\u3051\u307E\u3057\u305F\uFF08run_id: ${String(run["run_id"])}\uFF09\u3002\u7D50\u679C\u306F twp worker-agent run get ${requireResolved(input,"agentId")} ${String(run["run_id"])} \u3067\u898B\u3089\u308C\u307E\u3059\uFF08--wait \u3067\u7D42\u308F\u308B\u307E\u3067\u5F85\u3066\u307E\u3059\uFF09\u3002`]}
146
+ return[]}};var runCancelOperation={name:"cancel",summary:"\u5B9F\u884C\u4E2D\u306E\u5B9F\u884C\u3092\u6B62\u3081\u308B\uFF08\u5B9F\u884C\u4E2D\u306E\u30C4\u30FC\u30EB\u547C\u3073\u51FA\u3057\u304C\u7D42\u308F\u3063\u3066\u304B\u3089\u505C\u6B62\uFF09",usage:"twp worker-agent run cancel <\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8> <\u5B9F\u884CID>",description:`${AGENT_REF_HELP}
147
+ \u30AA\u30FC\u30CA\u30FC\u304B\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u7BA1\u7406\u8005\u304C\u6B62\u3081\u3089\u308C\u307E\u3059\u3002\u65E2\u306B\u7D42\u308F\u3063\u305F\u5B9F\u884C\u306F\u6B62\u3081\u3089\u308C\u307E\u305B\u3093\uFF08\u7D42\u4E86\u30B3\u30FC\u30C9 3\uFF09\u3002
148
+ \u6B62\u307E\u3063\u305F\u304B\u3069\u3046\u304B\u306F twp worker-agent run get \u3067 status: cancelled \u3092\u78BA\u304B\u3081\u3066\u304F\u3060\u3055\u3044\u3002`,flags:[],prepare(input,ctx){return resolveAgent(input,ctx,runRefs(input,"run cancel").agent)},plan:input=>({method:"POST",path:runPath(input,runRefs(input,"run cancel").runId,"/cancel")}),summarize:body=>messageOf(body,"\u5B9F\u884C\u306E\u30AD\u30E3\u30F3\u30BB\u30EB"),raw:body=>messageOf(body,"\u5B9F\u884C\u306E\u30AD\u30E3\u30F3\u30BB\u30EB"),
149
+ forbidden:FORBIDDEN};var toolResource={name:"tool",summary:"\u30C4\u30FC\u30EB1\u4EF6\u306E\u8A73\u7D30\uFF08\u4E00\u89A7\u306F twp worker-agent tools\uFF09",operations:[toolGetOperation]};var runResource={name:"run",summary:"\u5B9F\u884C\u306E\u958B\u59CB\u30FB\u53D6\u6D88\u30FB\u5C65\u6B74\u30FB\u7D50\u679C\u30FB\u30B9\u30C6\u30C3\u30D7\u30ED\u30B0",operations:[runListOperation,runGetOperation,runStepsOperation,runStatsOperation,runStartOperation,runCancelOperation]};var workerAgentDomain={name:"\
150
+ worker-agent",summary:"\u30EF\u30FC\u30AB\u30FC\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\uFF08\u4E00\u89A7\u30FB\u8A73\u7D30\u30FB\u4F5C\u6210\u30FB\u66F4\u65B0\u30FB\u524A\u9664\u30FB\u6709\u52B9\u5316\u30FB\u30C4\u30FC\u30EB\u30FB\u4E0A\u9650\u30FB\u5B9F\u884C\u306E\u958B\u59CB\u3068\u7D50\u679C\uFF09",operations:[listOperation,getOperation,createOperation,updateOperation,deleteOperation,toggleOperation(true),toggleOperation(false),toolsOperation,limitsOperation],subresources:[toolResource,runResource]};export{parseSchedule,readRunStatus,workerAgentDomain};
@@ -1,4 +1,4 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{applyInstancePlan,createInstancePlan,formColumns,parseInstanceContent,workflowDomain,writtenInstance}from"./chunk-6TPGATAG.js";import"./chunk-ORUDW52G.js";import"./chunk-4F2ONF4P.js";import"./chunk-GMBJTG6A.js";import"./chunk-3HH5IYNO.js";import"./chunk-IF2K4PM5.js";import"./chunk-4VZKNEVN.js";import"./chunk-II5RVJQN.js";import"./chunk-IOGMOXYF.js";import"./chunk-LXIAOCUW.js";import"./chunk-VTQAI52S.js";import"./chunk-UFND7FBC.js";
3
+ import{applyInstancePlan,createInstancePlan,formColumns,parseInstanceContent,workflowDomain,writtenInstance}from"./chunk-342WUEV4.js";import"./chunk-6LSQCOCJ.js";import"./chunk-Q2KIETMB.js";import"./chunk-GMBJTG6A.js";import"./chunk-QBGEYQ2I.js";import"./chunk-IF2K4PM5.js";import"./chunk-4VZKNEVN.js";import"./chunk-II5RVJQN.js";import"./chunk-MI6HVYR2.js";import"./chunk-PS5QFKHB.js";import"./chunk-3ZRMMBP5.js";import"./chunk-VFPY2A23.js";
4
4
  import"./chunk-J7QYPKVK.js";import"./chunk-RZVI6PMW.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";export{applyInstancePlan,createInstancePlan,formColumns,parseInstanceContent,workflowDomain,writtenInstance};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tocca-systems/twp-cli",
3
- "version": "0.48.0",
3
+ "version": "0.50.0",
4
4
  "description": "TWP CLI — Tocca Working Platform の CLI 型統合インターフェース(AIエージェントハーネス)",
5
5
  "type": "module",
6
6
  "bin": {
@@ -1,3 +0,0 @@
1
- import { createRequire as __twpCreateRequire } from 'node:module';
2
- const require = __twpCreateRequire(import.meta.url);
3
- import{MANHOUR_DESCRIPTION,MANHOUR_FROM_FLAG,MANHOUR_TO_FLAG,analysisDomain,analysisForbidden,currentMonth,manhourNotes,manhourQuery,manhourRows,monthsBetween,workloadDistributionNotes,workloadDistributionRows}from"./chunk-MY2U3CD6.js";import"./chunk-QOUDJ7XO.js";import"./chunk-4B3T4UE7.js";import"./chunk-F7K37QG6.js";import"./chunk-QQRJLH6B.js";import"./chunk-LXIAOCUW.js";import"./chunk-VTQAI52S.js";import"./chunk-UFND7FBC.js";import"./chunk-VSJBJXZO.js";export{MANHOUR_DESCRIPTION,MANHOUR_FROM_FLAG,MANHOUR_TO_FLAG,analysisDomain,analysisForbidden,currentMonth,manhourNotes,manhourQuery,manhourRows,monthsBetween,workloadDistributionNotes,workloadDistributionRows};
@@ -1,127 +0,0 @@
1
- import { createRequire as __twpCreateRequire } from 'node:module';
2
- const require = __twpCreateRequire(import.meta.url);
3
- import{ResolveError,UUID_RE,isSafePathSegment,resolveProjectRef,safeProjectIdPolicy}from"./chunk-GMBJTG6A.js";import{graphNextCursor,ms365NamedRow,ms365NotConnectedGuidance,ms365Path,ms365Segment}from"./chunk-3HH5IYNO.js";import{ApiError}from"./chunk-IF2K4PM5.js";import{loadProjectConfig,loadUserConfig}from"./chunk-4VZKNEVN.js";import{isTaskKey}from"./chunk-II5RVJQN.js";import{UsageError}from"./chunk-UFND7FBC.js";import{twpHomeDir}from"./chunk-RZVI6PMW.js";var BACKLOG_BASE_PATH="/api/v2/integrations/backlog";function assertBacklogPathSegment(value,label){if(!isSafePathSegment(value)){throw new ResolveError(`${label}\u3068\u3057\u3066 URL \u306B\u5165\u308C\u3089\u308C\u306A\u3044\u5024\u304C\u30B5\u30FC\u30D0\u304B\u3089\u8FD4\u308A\u307E\u3057\u305F: ${JSON.stringify(value)}\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}return value}function backlogSpacePath(spaceId,suffix=""){assertBacklogPathSegment(spaceId,
4
- "Backlog \u30B9\u30DA\u30FC\u30B9 ID");return`${BACKLOG_BASE_PATH}/${encodeURIComponent(spaceId)}${suffix}`}function idString(value){if(typeof value==="number"&&Number.isFinite(value))return String(value);if(typeof value==="string"&&value.trim()!=="")return value.trim();return null}function text(value){return typeof value==="string"&&value.trim()!==""?value.trim():null}function backlogSpaceAliases(spaceUrl){const aliases=[];const trimmed=spaceUrl.trim().replace(/\/+$/,"");if(trimmed==="")return aliases;
5
- let host;try{host=new URL(trimmed).host}catch{host=trimmed.replace(/^\/+/,"").split("/")[0]??""}if(host==="")return aliases;aliases.push(host);const label=host.split(".")[0];if(label!==void 0&&label!==""&&label!==host)aliases.push(label);return aliases}function backlogSpaceRow(row){const url=text(row["space_url"]);return{id:idString(row["id"]),name:url,code:null,aliases:url!==null?backlogSpaceAliases(url):[]}}function backlogProjectRow(row){return{id:idString(row["id"]),name:text(row["name"]),code:text(
6
- row["projectKey"])}}function backlogStatusRow(row){return{id:idString(row["id"]),name:text(row["name"]),code:null}}function backlogUserRow(row){return{id:idString(row["id"]),name:text(row["name"]),code:null,aliases:[text(row["userId"]),text(row["mailAddress"])].filter(v=>v!==null)}}var DEFAULT_LOOKUP_SCOPE="\u3053\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8";function fold(value){return value.trim().toLowerCase()}function keysOf(ref){return[ref.id,ref.code,ref.name,...ref.aliases??[]].filter(v=>typeof v==="string"&&v.trim()!=="").map(fold)}function describe(ref){return ref.code!==void 0&&ref.code!==null&&ref.code!==""&&ref.code!==ref.name?`${ref.name}\uFF08${ref.code}\uFF09`:ref.name}async function suggest(input,candidates){try{const{default:fuzzysort}=await import("./fuzzysort-DFVKV4B4.js");
7
- const indexed=candidates.map(ref=>({hay:keysOf(ref).join(" "),ref}));const hits=fuzzysort.go(input.trim(),indexed,{key:"hay",limit:5,threshold:-1e4});return hits.map(hit=>hit.obj.ref)}catch{return[]}}function listCandidates(candidates,limit=10){const shown=candidates.slice(0,limit).map(describe).join(" / ");return candidates.length>limit?`${shown} \u2026\uFF08\u5168 ${candidates.length} \u4EF6\uFF09`:shown}async function resolveNamed(input,candidates,ctx){const needle=fold(input);if(needle===""){
8
- throw new UsageError(`${ctx.flag} \u306B\u7A7A\u306E\u5024\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093`)}if(candidates.length===0){throw new UsageError(`${ctx.scope??DEFAULT_LOOKUP_SCOPE}\u306B\u306F${ctx.label}\u304C1\u4EF6\u3082\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u307E\u305B\u3093\uFF08${ctx.flag} ${input}\uFF09`)}const hits=candidates.filter(ref=>keysOf(ref).includes(needle));const distinct=[...new Map(hits.map(ref=>[ref.id,ref])).values()];if(distinct.length===1)return distinct[0];if(distinct.
9
- length>1){throw new UsageError(`${ctx.flag} \u306E\u300C${input}\u300D\u304C${ctx.label}${distinct.length}\u4EF6\u306B\u4E00\u81F4\u3057\u307E\u3059: ${listCandidates(distinct)}`,`\u3069\u308C\u304B1\u3064\u306B\u6C7A\u307E\u308B\u5024\uFF08ID \u304B\u30B3\u30FC\u30C9\uFF09\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}const near=await suggest(input,candidates);throw new UsageError(`${ctx.flag} \u306E\u300C${input}\u300D\u306B\u4E00\u81F4\u3059\u308B${ctx.label}\u304C\u3042\u308A\u307E\u305B\u3093`,
10
- near.length>0?`\u3082\u3057\u304B\u3057\u3066: ${listCandidates(near,5)}\uFF08\u5168 ${candidates.length} \u4EF6\uFF09`:`\u6307\u5B9A\u3067\u304D\u308B${ctx.label}: ${listCandidates(candidates)}`)}function usable(value){return typeof value==="string"&&value.trim()!==""?value.trim():null}function resolveDefaultProject(explicit,profileName,env=process.env,cwd=process.cwd()){const fromFlag=usable(explicit);if(fromFlag!==null)return{ref:fromFlag,source:"flag"};const fromEnv=usable(env.TWP_PROJECT);if(fromEnv!==null)return{ref:fromEnv,source:"env"};const fromProjectConfig=usable(loadProjectConfig(cwd).project);if(fromProjectConfig!==null)return{ref:fromProjectConfig,source:"project-config"};const user=loadUserConfig(
11
- env);const fromProfile=usable(user.profiles?.[profileName]?.project);if(fromProfile!==null)return{ref:fromProfile,source:"user-config"};const fromUser=usable(user.project);if(fromUser!==null)return{ref:fromUser,source:"user-config"};return null}function requireDefaultProject(explicit,profileName,env=process.env,cwd=process.cwd()){const resolved=resolveDefaultProject(explicit,profileName,env,cwd);if(resolved!==null)return resolved;throw new UsageError("\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093",
12
- '--project <\u30B3\u30FC\u30C9|ID> \u3092\u4ED8\u3051\u308B\u304B\u3001TWP_PROJECT / .twp/config.json / ~/.twp/config.json \u306E "project" \u306B\u65E2\u5B9A\u3092\u8A2D\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002')}import crypto from"crypto";import fs from"fs";import path from"path";var DEFAULT_TTL_MS=10*60*1e3;var CACHE_VERSION=3;function cacheDir(env=process.env){return path.join(twpHomeDir(env),"cache")}function cacheFilePath(key,env=process.env){const digest=crypto.createHash("sha256").update(JSON.stringify([key.profile,key.scope,key.project??""])).digest("hex").slice(0,12);const label=key.scope.replace(/[^A-Za-z0-9._-]/g,"_").slice(0,40);return path.join(cacheDir(env),`${label}-${digest}.json`)}function sameKey(a,b){return a.profile===b.profile&&a.scope===b.scope&&(a.project??
13
- "")===(b.project??"")}function isOursAndPrivate(target,check){if(process.platform==="win32")return true;try{const st=fs.lstatSync(target);if(st.isSymbolicLink())return false;const uid=process.getuid?.();if(uid!==void 0&&st.uid!==uid)return false;const forbidden=check==="file"?54:18;return(st.mode&forbidden)===0}catch{return false}}function isCacheLocationTrusted(env){const home=twpHomeDir(env);const dir=cacheDir(env);for(const target of[home,dir]){if(fs.existsSync(target)&&!isOursAndPrivate(target,
14
- "dir"))return false}return true}function readCache(key,options={}){if(options.refresh===true)return null;const env=options.env??process.env;const file=cacheFilePath(key,env);if(!isCacheLocationTrusted(env)||!isOursAndPrivate(file,"file"))return null;let parsed;try{parsed=JSON.parse(fs.readFileSync(file,"utf8"))}catch{return null}if(parsed?.version!==CACHE_VERSION||!parsed.key||!sameKey(parsed.key,key))return null;const fetchedAt=Date.parse(parsed.fetched_at);if(!Number.isFinite(fetchedAt))return null;
15
- const ttl=options.ttlMs??DEFAULT_TTL_MS;const now=(options.now??Date.now)();if(Math.abs(now-fetchedAt)>ttl)return null;return parsed.value}function writeCache(key,value,options={}){const env=options.env??process.env;const dir=cacheDir(env);const file=cacheFilePath(key,env);const body={version:CACHE_VERSION,key:{profile:key.profile,scope:key.scope,...key.project!==void 0?{project:key.project}:{}},fetched_at:new Date((options.now??Date.now)()).toISOString(),value};if(!isCacheLocationTrusted(env))return;
16
- const tmp=`${file}.${process.pid}.tmp`;try{fs.mkdirSync(dir,{recursive:true,mode:448});fs.writeFileSync(tmp,`${JSON.stringify(body)}
17
- `,{mode:384});fs.renameSync(tmp,file)}catch{try{fs.rmSync(tmp,{force:true})}catch{}}}function removeCache(key,options={}){const env=options.env??process.env;if(!isCacheLocationTrusted(env))return;try{fs.rmSync(cacheFilePath(key,env),{force:true})}catch{}}var SELF_REF="me";var PRIVATE_TASKS_PATH="/api/v2/tasks/private";var PRIVATE_MASTERS_CACHE_KEY="__private__";var BACKLOG_SPACES_CACHE_KEY="__backlog__";var MS365_TEAMS_CACHE_KEY="__ms365__";var MS365_SCOPE_LABEL="\u53C2\u52A0\u3057\u3066\u3044\u308B Teams";var MS365_RESOLVE_MAX_PAGES=20;var BACKLOG_SCOPE_LABEL="\u3053\u306E\u63A5\u7D9A\u5148";var BACKLOG_PROJECT_SCOPE_LABEL="\u3053\u306E Backlog \u30D7\u30ED\u30B8\u30A7\u30AF\u30C8";var PRIVATE_SCOPE_LABEL="\u500B\u4EBA\u30BF\u30B9\u30AF";var TENANT_CACHE_KEY="\
18
- __tenant__";var TENANT_SCOPE_LABEL="\u3053\u306E\u30C6\u30CA\u30F3\u30C8";var ADMIN_USERS_LIST_PATH="/api/v2/admin/users/list";var PROJECT_MEMBERS_LIMIT=1e4;var DEPARTMENTS_PATH="/api/v2/organization/departments";var POSITIONS_PATH="/api/v2/organization/positions";var JOB_TITLES_PATH="/api/v2/organization/job-titles";var INQUIRY_CATEGORIES_PATH="/api/v2/inquiries/categories";var NOTIFICATIONS_PATH="/api/v2/notifications";var NOTIFICATION_COUNT_MAX_PAGES=20;var NOTIFICATION_COUNT_PAGE_LIMIT=100;var WORKFLOWS_PATH="\
19
- /api/v2/workflows";var REPORTS_PATH="/api/v2/reports";var SALES_ESTIMATES_PATH="/api/v2/sales/estimates";var SALES_INVOICES_PATH="/api/v2/sales/invoices";var SALES_CONTRACTS_PATH="/api/v2/sales/contracts";var SALES_INVOICE_AUTO_TEMPLATES_PATH="/api/v2/sales/invoice-auto-templates";var SALES_DEPOSITS_PATH="/api/v2/sales/deposits";var SALES_PURCHASES_PATH="/api/v2/sales/purchases";var SALES_SUPPLIER_PAYMENTS_PATH="/api/v2/sales/supplier-payments";var SALES_SUPPLIER_PAYMENT_SCHEDULES_PATH="/api/v2/\
20
- sales/supplier-payment-schedules";var SALES_BUSINESS_PLACES_PATH="/api/v2/sales/business-places";var SALES_PAYEES_PATH="/api/v2/sales/payees";var SALES_SEAL_IMPRESSIONS_PATH="/api/v2/sales/seal-impressions";var SALES_PURCHASE_AI_MAPPINGS_PATH="/api/v2/sales/purchase-ai-field-mappings";var SALES_ESTIMATE_NO_RULES_PATH="/api/v2/sales/estimate-no-rules";var SALES_INVOICE_NO_RULES_PATH="/api/v2/sales/invoice-no-rules";var SALES_PURCHASE_NO_RULES_PATH="/api/v2/sales/purchase-no-rules";var SALES_ESTIMATE_FORMATS_PATH="\
21
- /api/v2/sales/estimate-formats";var SALES_ROUNDING_SETTING_PATH="/api/v2/sales/rounding-setting";var SALES_RECORD_KINDS={estimate:{path:SALES_ESTIMATES_PATH,label:"\u898B\u7A4D"},invoice:{path:SALES_INVOICES_PATH,label:"\u8ACB\u6C42"},contract:{path:SALES_CONTRACTS_PATH,label:"\u53D6\u5F15\u5951\u7D04"},"invoice-auto-template":{path:SALES_INVOICE_AUTO_TEMPLATES_PATH,label:"\u81EA\u52D5\u8ACB\u6C42\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8"},deposit:{path:SALES_DEPOSITS_PATH,label:"\u5165\u91D1"},purchase:{
22
- path:SALES_PURCHASES_PATH,label:"\u4ED5\u5165"},"supplier-payment":{path:SALES_SUPPLIER_PAYMENTS_PATH,label:"\u652F\u6255"},"supplier-payment-schedule":{path:SALES_SUPPLIER_PAYMENT_SCHEDULES_PATH,label:"\u652F\u6255\u5148\u30DE\u30B9\u30BF"},"business-place":{path:SALES_BUSINESS_PLACES_PATH,label:"\u4E8B\u696D\u6240"},payee:{path:SALES_PAYEES_PATH,label:"\u632F\u8FBC\u5148"},"seal-impression":{path:SALES_SEAL_IMPRESSIONS_PATH,label:"\u5370\u5F71"},"purchase-ai-mapping":{path:SALES_PURCHASE_AI_MAPPINGS_PATH,
23
- label:"\u4ED5\u5165AI\u30DE\u30C3\u30D4\u30F3\u30B0"},"estimate-no-rule":{path:SALES_ESTIMATE_NO_RULES_PATH,label:"\u898B\u7A4D\u756A\u53F7\u30EB\u30FC\u30EB"},"invoice-no-rule":{path:SALES_INVOICE_NO_RULES_PATH,label:"\u8ACB\u6C42\u756A\u53F7\u30EB\u30FC\u30EB"},"purchase-no-rule":{path:SALES_PURCHASE_NO_RULES_PATH,label:"\u4ED5\u5165\u756A\u53F7\u30EB\u30FC\u30EB"},"estimate-format":{path:SALES_ESTIMATE_FORMATS_PATH,label:"\u898B\u7A4D\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8"}};var SALES_COMPANIES_PATH="\
24
- /api/v2/sales/companies";var CUSTOMERS_PATH="/api/v2/customers";var COMPANY_SEARCH_PAGE_LIMIT=100;var COMPANY_SEARCH_MAX_PAGES=10;var CUSTOMER_CHILDREN_PAGE_LIMIT=100;var PROSPECTS_PATH="/api/v2/prospects";var PROSPECT_SEARCH_PAGE_LIMIT=100;var PROSPECT_SEARCH_MAX_PAGES=10;function isExactNumericId(value){return/^[0-9]+$/.test(value)&&String(Number(value))===value}function exactCompanyId(ref,label){if(!isExactNumericId(ref.id)){throw new ResolveError(`${label}\u4E00\u89A7\u306E id \u304C\u6574\u6570\u3067\u306F\u3042\u308A\u307E\u305B\u3093\uFF08${ref.
25
- id}\uFF09\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}return ref}var ORG_MASTER_LIMIT=1e3;var USER_LIST_MAX_PAGES=100;function isRecord(value){return typeof value==="object"&&value!==null&&!Array.isArray(value)}function str(value){return typeof value==="string"&&value.trim()!==""?value:null}function truthyFlag(value){return value===true||value===1}function rawGetVia(client){return async path2=>{try{return{ok:true,status:200,json:await client.request("GET",
26
- path2),error:null}}catch(err){if(err instanceof ApiError){return{ok:false,status:err.status,json:err.body,error:err.message}}throw err}}}var TASK_MASTERS={status:{path:"task-statuses",envelope:"data",scope:"task-statuses",label:"\u30B9\u30C6\u30FC\u30BF\u30B9"},type:{path:"task-types",envelope:"data",scope:"task-types",label:"\u7A2E\u5225"},category:{path:"task-categories",envelope:"data",scope:"task-categories",label:"\u30AB\u30C6\u30B4\u30EA"},milestone:{path:"task-milestones",envelope:"data",
27
- scope:"task-milestones",label:"\u30DE\u30A4\u30EB\u30B9\u30C8\u30FC\u30F3"},label:{path:"task-labels",envelope:"items",scope:"task-labels",label:"\u30E9\u30D9\u30EB"}};var Resolver=class{constructor(client,options){this.client=client;this.options=options;this.get=rawGetVia(client)}client;options;get;privateMastersInFlight=null;async project(ref){const trimmed=ref.trim();if(trimmed==="")throw new UsageError("\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u30B3\u30FC\u30C9\u304B ID \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044");
28
- return resolveProjectRef(trimmed,this.get,safeProjectIdPolicy)}async taskByKey(key){const trimmed=key.trim();if(!isTaskKey(trimmed)){throw new UsageError(`\u30BF\u30B9\u30AF\u30AD\u30FC\u306E\u5F62\u5F0F\u3067\u306F\u3042\u308A\u307E\u305B\u3093: ${key}`,"\u30AD\u30FC\u306F\u300C\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u30B3\u30FC\u30C9-\u756A\u53F7\u300D\u306E\u5F62\u3067\u3059\uFF08\u4F8B: ABC-123\uFF09\u3002")}const res=await this.get(`/api/v2/tasks/resolve-by-key/${encodeURIComponent(trimmed)}`);
29
- if(res.status===404){throw new ResolveError(`\u30BF\u30B9\u30AF\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093: ${trimmed}\uFF08\u5B58\u5728\u3057\u306A\u3044\u304B\u3001\u95B2\u89A7\u3067\u304D\u308B\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306B\u3042\u308A\u307E\u305B\u3093\uFF09`,404)}if(!res.ok){throw new ResolveError(`\u30BF\u30B9\u30AF\u30AD\u30FC\u3092\u89E3\u6C7A\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F: ${trimmed}\uFF08HTTP ${res.status}\uFF09\u3002\u63A5\u7D9A\u5148\u3068\u30ED\u30B0\u30A4\u30F3\u72B6\u614B\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`,
30
- res.status)}const body=isRecord(res.json)?res.json:{};const projectId=str(body["project_id"]);const task=body["task"];if(projectId===null||!isRecord(task)){throw new ResolveError("\u30BF\u30B9\u30AF\u30AD\u30FC\u89E3\u6C7A\u306E\u5FDC\u7B54\u306B project_id / task \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002",res.status)}safeProjectIdPolicy.assertId(projectId);return{projectId,task}}async currentUser(){const res=await this.
31
- get("/api/v2/user");if(!res.ok){throw new ResolveError(`\u30ED\u30B0\u30A4\u30F3\u4E2D\u306E\u30E6\u30FC\u30B6\u30FC\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08HTTP ${res.status}\uFF09\u3002twp login \u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`,res.status)}const user=isRecord(res.json)?res.json["user"]:void 0;if(!isRecord(user)||str(user["id"])===null){throw new ResolveError("\u30E6\u30FC\u30B6\u30FC\u53D6\u5F97\u306E\u5FDC\u7B54\u306B user.id \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
32
- res.status)}return{id:user["id"],name:str(user["name"])??user["id"],email:str(user["email"])}}async status(projectId,input){return resolveNamed(this.applyAlias("status",input),await this.statuses(projectId),{flag:"--status",label:"\u30B9\u30C6\u30FC\u30BF\u30B9"})}async taskType(projectId,input){return resolveNamed(this.applyAlias("type",input),await this.taskTypes(projectId),{flag:"--type",label:"\u7A2E\u5225"})}async assignee(projectId,input,flag="--assignee"){if(input.trim().toLowerCase()===SELF_REF)
33
- return this.self();const value=this.applyAlias("assignee",input);if(value.trim().toLowerCase()===SELF_REF)return this.self();return resolveNamed(value,await this.members(projectId),{flag,label:"\u30E1\u30F3\u30D0\u30FC"})}async self(){const me=await this.currentUser();return{id:me.id,name:me.name,...me.email!==null?{aliases:[me.email]}:{}}}async defaultStatus(projectId){return requireDefault(await this.statuses(projectId),{flag:"--status",label:"\u30B9\u30C6\u30FC\u30BF\u30B9"})}async defaultTaskType(projectId){
34
- return requireDefault(await this.taskTypes(projectId),{flag:"--type",label:"\u7A2E\u5225"})}async statuses(projectId){return namedFromRows(await this.taskMasterRows("status",projectId),"\u30B9\u30C6\u30FC\u30BF\u30B9",codedMasterRow)}async taskTypes(projectId){return namedFromRows(await this.taskMasterRows("type",projectId),"\u7A2E\u5225",codedMasterRow)}async taskMaster(kind,projectId,input,flag){const spec=TASK_MASTERS[kind];return resolveNamed(input,await this.taskMasterRefs(kind,projectId),{
35
- flag,label:spec.label})}async taskMasterRefs(kind,projectId){const spec=TASK_MASTERS[kind];return namedFromRows(await this.taskMasterRows(kind,projectId),spec.label,codedMasterRow)}async privateTaskMaster(envelope,input,flag,label){return resolveNamed(input,await this.privateMasters(envelope,label),{flag,label,scope:PRIVATE_SCOPE_LABEL})}async taskMasterRows(kind,projectId){const spec=TASK_MASTERS[kind];return this.cached(spec.scope,projectId,async()=>rawListFrom(await this.get(`/api/v2/projects\
36
- /${encodeURIComponent(projectId)}/${spec.path}`),spec.envelope,spec.label))}invalidateTaskMaster(kind,projectId){removeCache({profile:this.options.profile,scope:TASK_MASTERS[kind].scope,project:projectId},this.options.env!==void 0?{env:this.options.env}:{})}async privateStatuses(){return this.privateMasters("statuses","\u30B9\u30C6\u30FC\u30BF\u30B9")}async privateTaskTypes(){return this.privateMasters("types","\u7A2E\u5225")}async privateStatus(input){return resolveNamed(this.applyAlias("status",
37
- input),await this.privateStatuses(),{flag:"--status",label:"\u30B9\u30C6\u30FC\u30BF\u30B9",scope:PRIVATE_SCOPE_LABEL})}async privateTaskType(input){return resolveNamed(this.applyAlias("type",input),await this.privateTaskTypes(),{flag:"--type",label:"\u7A2E\u5225",scope:PRIVATE_SCOPE_LABEL})}async privateDefaultStatus(){return requireDefault(await this.privateStatuses(),{flag:"--status",label:"\u30B9\u30C6\u30FC\u30BF\u30B9",scope:PRIVATE_SCOPE_LABEL})}async privateDefaultTaskType(){return requireDefault(
38
- await this.privateTaskTypes(),{flag:"--type",label:"\u7A2E\u5225",scope:PRIVATE_SCOPE_LABEL})}async privateTask(ref){const trimmed=ref.trim();const res=await this.get(`${PRIVATE_TASKS_PATH}/${encodeURIComponent(trimmed)}`);if(res.status===404){throw new ResolveError(`\u500B\u4EBA\u30BF\u30B9\u30AF\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093: ${trimmed}`,404)}if(!res.ok){throw new ResolveError(`\u500B\u4EBA\u30BF\u30B9\u30AF\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F: ${trimmed}\
39
- \uFF08HTTP ${res.status}\uFF09\u3002\u63A5\u7D9A\u5148\u3068\u30ED\u30B0\u30A4\u30F3\u72B6\u614B\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`,res.status)}const task=isRecord(res.json)?res.json["task"]:void 0;if(!isRecord(task)){throw new ResolveError("\u500B\u4EBA\u30BF\u30B9\u30AF\u306E\u5FDC\u7B54\u306B task \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002",res.status)}return task}async primaryAssignment(userId){
40
- if(!isSafePathSegment(userId)){throw new ResolveError(`\u30E6\u30FC\u30B6\u30FC ID \u3092\u30D1\u30B9\u306B\u4F7F\u3048\u307E\u305B\u3093: ${userId}\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}const res=await this.get(`/api/v2/organization/users/${encodeURIComponent(userId)}/assignments/primary`);if(res.status===404)return null;if(!res.ok){throw new ResolveError(`\u73FE\u5728\u306E\u4E3B\u6240\u5C5E\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08HTTP ${res.
41
- status}${res.error?`: ${res.error}`:""}\uFF09\u3002`,res.status)}const assignment=isRecord(res.json)?res.json["assignment"]:void 0;if(!isRecord(assignment)||typeof assignment["id"]!=="string"){throw new ResolveError("\u4E3B\u6240\u5C5E\u306E\u5FDC\u7B54\u306B assignment.id \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002",res.status)}return assignment}async assignments(userId){if(!isSafePathSegment(userId)){throw new ResolveError(
42
- `\u30E6\u30FC\u30B6\u30FC ID \u3092\u30D1\u30B9\u306B\u4F7F\u3048\u307E\u305B\u3093: ${userId}\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}const res=await this.get(`/api/v2/organization/users/${encodeURIComponent(userId)}/assignments`);if(!res.ok){throw new ResolveError(`\u6240\u5C5E\u306E\u4E00\u89A7\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08HTTP ${res.status}${res.error?`: ${res.error}`:""}\uFF09\u3002`,res.status)}const list=isRecord(
43
- res.json)?res.json["list"]:void 0;if(!Array.isArray(list)||!list.every(isRecord)){throw new ResolveError("\u6240\u5C5E\u4E00\u89A7\u306E\u5FDC\u7B54\u306B list \u914D\u5217\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002",res.status)}return list}async privateMasters(envelope,label){return namedFromRows(await this.privateMasterRows(envelope,label),label,codedMasterRow)}async privateMasterRows(envelope,label){return this.cached(
44
- `private-${envelope}`,PRIVATE_MASTERS_CACHE_KEY,async()=>rawListFrom(await this.privateMastersResponse(),envelope,label))}privateMastersResponse(){this.privateMastersInFlight??=this.get(`${PRIVATE_TASKS_PATH}/masters`);return this.privateMastersInFlight}async members(projectId){return this.cached("members",projectId,()=>this.namedList(`/api/v2/projects/${encodeURIComponent(projectId)}/members?limit=${PROJECT_MEMBERS_LIMIT}`,"list","\u30E1\u30F3\u30D0\u30FC",row=>({id:str(row["user_id"]),name:str(
45
- row["user_name"]),code:null,aliases:[str(row["alias"]),str(row["user_email"])].filter(v=>v!==null)})).then(refs=>assertMembersComplete(refs)))}async memberRows(projectId){return assertMembersComplete(rawListFrom(await this.get(`/api/v2/projects/${encodeURIComponent(projectId)}/members?limit=${PROJECT_MEMBERS_LIMIT}`),"list","\u30E1\u30F3\u30D0\u30FC"))}invalidateMembers(projectId){removeCache({profile:this.options.profile,scope:"members",project:projectId},this.options.env!==void 0?{env:this.options.
46
- env}:{})}async user(input,flag="<\u30E6\u30FC\u30B6\u30FC>"){const trimmed=input.trim();if(trimmed==="")throw new UsageError(`${flag} \u306B\u7A7A\u306E\u5024\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093`);if(trimmed.toLowerCase()===SELF_REF)return this.self();if(UUID_RE.test(trimmed))return{id:trimmed,name:trimmed};const searched=await this.searchUsers(trimmed);if(searched.refs!==null){const needle=trimmed.toLowerCase();const hits=searched.refs.filter(ref=>[ref.id,ref.code,ref.name,...ref.aliases??
47
- []].some(key=>typeof key==="string"&&key.trim().toLowerCase()===needle));if(hits.length>0)return resolveNamed(trimmed,hits,{flag,label:"\u30E6\u30FC\u30B6\u30FC",scope:TENANT_SCOPE_LABEL})}try{return await resolveNamed(trimmed,await this.visibleUsers(),{flag,label:"\u30E6\u30FC\u30B6\u30FC",scope:TENANT_SCOPE_LABEL})}catch(err){if(err instanceof UsageError&&searched.failure!==null){throw new UsageError(`${err.message}\uFF08\u30AD\u30FC\u30EF\u30FC\u30C9\u691C\u7D22\u304C ${searched.failure} \u3067\u5931\u6557\u3057\
48
- \u305F\u305F\u3081\u3001\u8868\u793A\u5BFE\u8C61\u306E\u30E6\u30FC\u30B6\u30FC\u3060\u3051\u3067\u7167\u5408\u3057\u307E\u3057\u305F\uFF09`,err.hint)}throw err}}async searchUsers(keyword){const query=new URLSearchParams({keyword,include_hidden:"true",limit:"100"});const res=await this.get(`${ADMIN_USERS_LIST_PATH}?${query.toString()}`);if(!res.ok)return{refs:null,failure:`HTTP ${res.status}`};return{refs:namedFromRows(rawListFrom(res,"items","\u30E6\u30FC\u30B6\u30FC"),"\u30E6\u30FC\u30B6\u30FC",
49
- userRow),failure:null}}async visibleUsers(){return this.cached("admin-users-visible",TENANT_CACHE_KEY,async()=>{const rows=[];let cursor=null;for(let page=0;;page++){if(page>=USER_LIST_MAX_PAGES){throw new ResolveError(`\u30E6\u30FC\u30B6\u30FC\u4E00\u89A7\u304C ${USER_LIST_MAX_PAGES} \u30DA\u30FC\u30B8\u3092\u8D85\u3048\u305F\u305F\u3081\u3001\u540D\u524D\u3067\u89E3\u6C7A\u3067\u304D\u307E\u305B\u3093\u3002ID \u304B\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}
50
- const query=new URLSearchParams({limit:"100"});if(cursor!==null)query.set("cursor",cursor);const res=await this.get(`${ADMIN_USERS_LIST_PATH}?${query.toString()}`);rows.push(...rawListFrom(res,"items","\u30E6\u30FC\u30B6\u30FC"));const body=isRecord(res.json)?res.json:{};if(body["has_more"]===false)break;const next=str(body["next_cursor"]);if(body["has_more"]!==true||next===null){throw new ResolveError("\u30E6\u30FC\u30B6\u30FC\u4E00\u89A7\u306E\u5FDC\u7B54\u306B has_more / next_cursor \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
51
- res.status)}cursor=next}return namedFromRows(rows,"\u30E6\u30FC\u30B6\u30FC",userRow)})}async department(input,flag="--department"){return resolveNamed(input,await this.departments(),{flag,label:"\u90E8\u7F72",scope:TENANT_SCOPE_LABEL})}async position(input,flag="--position"){return resolveNamed(input,await this.positions(),{flag,label:"\u5F79\u8077",scope:TENANT_SCOPE_LABEL})}async jobTitle(input,flag="--job-title"){return resolveNamed(input,await this.jobTitles(),{flag,label:"\u8077\u4F4D",scope:TENANT_SCOPE_LABEL})}async departments(){
52
- return this.cached("departments",TENANT_CACHE_KEY,async()=>namedFromRows(masterList(await this.get(`${DEPARTMENTS_PATH}?limit=${ORG_MASTER_LIMIT}`),"\u90E8\u7F72"),"\u90E8\u7F72",codedMasterRow))}async positions(){return this.cached("positions",TENANT_CACHE_KEY,async()=>namedFromRows(masterList(await this.get(`${POSITIONS_PATH}?limit=${ORG_MASTER_LIMIT}`),"\u5F79\u8077"),"\u5F79\u8077",codedMasterRow))}async jobTitles(){return this.cached("job-titles",TENANT_CACHE_KEY,async()=>namedFromRows(masterList(
53
- await this.get(`${JOB_TITLES_PATH}?limit=${ORG_MASTER_LIMIT}`),"\u8077\u4F4D"),"\u8077\u4F4D",codedMasterRow))}async workflow(input,flag="<\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC>",category){return resolveNamed(input,await this.applicableWorkflows(category),{flag,label:category===void 0?"\u7533\u8ACB\u3067\u304D\u308B\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC":`\u7533\u8ACB\u3067\u304D\u308B\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\uFF08${category}\uFF09`,scope:TENANT_SCOPE_LABEL})}async workflowDefinition(id){
54
- if(!isSafePathSegment(id)){throw new ResolveError(`\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC ID \u3092\u30D1\u30B9\u306B\u4F7F\u3048\u307E\u305B\u3093: ${id}\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}const res=await this.get(`${WORKFLOWS_PATH}/${encodeURIComponent(id)}`);if(res.status===404){throw new ResolveError(`\u7533\u8ACB\u66F8\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093: ${id}`,404)}if(!res.ok){throw new ResolveError(`\u7533\u8ACB\u66F8\u306E\u5B9A\u7FA9\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F: ${id}\
55
- \uFF08HTTP ${res.status}\uFF09\u3002\u63A5\u7D9A\u5148\u3068\u30ED\u30B0\u30A4\u30F3\u72B6\u614B\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`,res.status)}const workflow=isRecord(res.json)?res.json["workflow"]:void 0;if(!isRecord(workflow)){throw new ResolveError("\u7533\u8ACB\u66F8\u306E\u5FDC\u7B54\u306B workflow \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002",res.status)}return workflow}async applicableWorkflows(category){
56
- const path2=category===void 0?`${WORKFLOWS_PATH}/applicable`:`${WORKFLOWS_PATH}/applicable/${encodeURIComponent(category)}`;const scope=category===void 0?"workflows-applicable":`workflows-applicable-${category}`;return this.cached(scope,TENANT_CACHE_KEY,async()=>{const res=await this.get(path2);const rows=rawListFrom(res,"list","\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC");const sum=isRecord(res.json)?res.json["sum"]:void 0;if(typeof sum==="number"&&sum>rows.length){throw new ResolveError(`\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u4E00\u89A7\u304C ${sum}\
57
- \u4EF6\u4E2D ${rows.length} \u4EF6\u3067\u5207\u308A\u8A70\u3081\u3089\u308C\u305F\u305F\u3081\u3001\u540D\u524D\u3067\u89E3\u6C7A\u3067\u304D\u307E\u305B\u3093\u3002ID \u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002`,res.status)}return namedFromRows(rows,"\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC",row=>({id:str(row["id"]),name:str(row["name"]),code:null}))})}async reportFormat(input,flag="--format",usableOnly=false){const load=async()=>rawListFrom(await this.get(`${REPORTS_PATH}/format\
58
- s${usableOnly?"?include_unavailable=false":""}`),"formats","\u30EC\u30DD\u30FC\u30C8\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8");const rows=usableOnly?await load():await this.cached("report-formats",TENANT_CACHE_KEY,load);return resolveNamed(input,namedFromRows(rows,"\u30EC\u30DD\u30FC\u30C8\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8",row=>({id:str(row["id"]),name:str(row["name"]),code:str(row["code"])})),{flag,label:usableOnly?"\u4F5C\u6210\u3067\u304D\u308B\u30EC\u30DD\u30FC\u30C8\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8":
59
- "\u30EC\u30DD\u30FC\u30C8\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8",scope:TENANT_SCOPE_LABEL})}async company(input,options){const trimmed=input.trim();if(trimmed==="")throw new UsageError(`${options.flag} \u306B\u7A7A\u306E\u5024\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093`);if(isExactNumericId(trimmed))return options.mustExist===true?this.companyById(trimmed,options):{id:trimmed,name:trimmed};if(/^[0-9]+$/.test(trimmed)){throw new UsageError(`${options.flag} \u306E ID \u306F\u5148\u982D\u306B 0 \u3092\u4ED8\u3051\u306A\u3044\u6570\u5B57\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044: ${trimmed}`)}
60
- const label=options.source==="customer"?"\u9867\u5BA2":"\u53D6\u5F15\u5148";const base=options.source==="customer"?CUSTOMERS_PATH:SALES_COMPANIES_PATH;const rows=[];let truncated=false;for(let page=1;;page+=1){const path2=`${base}?keyword=${encodeURIComponent(trimmed)}&sort_column=id&sort_direction=desc&page_limit=${COMPANY_SEARCH_PAGE_LIMIT}&page_no=${page}`;const res=await this.get(path2);if(res.status===401||res.status===403){throw new ApiError(res.status,isRecord(res.json)?res.json:null,"GET",
61
- path2)}for(const row of rawListFrom(res,"list",label))rows.push(row);const pageSum=isRecord(res.json)?res.json["page_sum"]:void 0;if(!Number.isInteger(pageSum)){throw new ResolveError(`${label}\u4E00\u89A7\u306E\u5FDC\u7B54\u306B page_sum \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`,res.status)}if(page>=pageSum)break;if(page>=COMPANY_SEARCH_MAX_PAGES){truncated=true;break}}const listCommand=options.source==="customer"?"\
62
- twp customer list":"twp company list";if(rows.length===0){throw new UsageError(`${options.flag} \u306E\u300C${trimmed}\u300D\u3092\u540D\u524D\u306B\u542B\u3080${label}\u304C\u3042\u308A\u307E\u305B\u3093`,`${label}\u306F ID \u3067\u3082\u6307\u5B9A\u3067\u304D\u307E\u3059\uFF08${listCommand} --keyword <\u8A9E> \u306E id \u5217\uFF09\u3002`)}const refs=namedFromRows(rows,label,row=>({id:str(row["id"]),name:str(row["company_name"]),code:null,aliases:[str(row["company_short_name"]),str(row["compan\
63
- y_name_kana"])].filter(v=>v!==null)}));const needle=trimmed.toLowerCase();const hits=refs.filter(ref=>[ref.name,...ref.aliases??[]].some(key=>key.trim().toLowerCase()===needle));const ctx={flag:options.flag,label,scope:TENANT_SCOPE_LABEL};if(truncated){throw new UsageError(`${options.flag} \u306E\u300C${trimmed}\u300D\u3092\u540D\u524D\u306B\u542B\u3080${label}\u304C\u591A\u3059\u304E\u308B\u305F\u3081\uFF08${COMPANY_SEARCH_MAX_PAGES*COMPANY_SEARCH_PAGE_LIMIT} \u4EF6\u3092\u8D85\u3048\u3066\uFF09\u4E00\u610F\u306B\u6C7A\u3081\u3089\u308C\u307E\u305B\u3093`,
64
- `ID \u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08${listCommand} --keyword <\u8A9E> \u306E id \u5217\uFF09\u3002`)}if(hits.length>0)return exactCompanyId(await resolveNamed(trimmed,hits,ctx),label);return exactCompanyId(await resolveNamed(trimmed,refs,ctx),label)}async companyById(id,options){const label=options.source==="customer"?"\u9867\u5BA2":"\u53D6\u5F15\u5148";const path2=`${options.source==="customer"?CUSTOMERS_PATH:SALES_COMPANIES_PATH}/${id}`;const res=await this.get(path2);
65
- if(res.status===401||res.status===403){throw new ApiError(res.status,isRecord(res.json)?res.json:null,"GET",path2)}if(res.status===404)throw new UsageError(`${options.flag} \u306E ID ${id} \u306E${label}\u306F\u3042\u308A\u307E\u305B\u3093`);if(!res.ok)throw new ResolveError(`${label}\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08HTTP ${res.status}\uFF09\u3002`,res.status);const data=isRecord(res.json)?res.json["data"]:void 0;const name=isRecord(data)?str(data["company_n\
66
- ame"]):null;if(!isRecord(data)||data["id"]!==id||name===null){throw new ResolveError(`${label}\u306E\u5FDC\u7B54\u306B data.id / company_name \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`,res.status)}return{id,name}}async companyRecord(id){if(!isExactNumericId(id))throw new UsageError(`\u53D6\u5F15\u5148\u306E ID \u306F\u5148\u982D\u306B 0 \u3092\u4ED8\u3051\u306A\u3044\u6570\u5B57\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044: ${id}`);
67
- const path2=`${SALES_COMPANIES_PATH}/${id}`;const res=await this.get(path2);if(res.status===401||res.status===403){throw new ApiError(res.status,isRecord(res.json)?res.json:null,"GET",path2)}if(res.status===404)return null;if(!res.ok)throw new ResolveError(`\u53D6\u5F15\u5148\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08HTTP ${res.status}\uFF09\u3002`,res.status);const data=isRecord(res.json)?res.json["data"]:void 0;if(!isRecord(res.json)||res.json["result"]!==true||!isRecord(
68
- data)||data["id"]!==id){throw new ResolveError("\u53D6\u5F15\u5148\u306E\u5FDC\u7B54\u306B data.id \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002",res.status)}return data}async salesRecord(kind,id,flag){const{label,path:base}=SALES_RECORD_KINDS[kind];if(!isExactNumericId(id))throw new UsageError(`${flag} \u306E${label} ID \u306F\u5148\u982D\u306B 0 \u3092\u4ED8\u3051\u306A\u3044\u6570\u5B57\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044: ${id}`);
69
- const path2=`${base}/${id}`;const res=await this.get(path2);if(res.status===401||res.status===403){throw new ApiError(res.status,isRecord(res.json)?res.json:null,"GET",path2)}if(res.status===404)throw new UsageError(`${flag} \u306E ID ${id} \u306E${label}\u306F\u3042\u308A\u307E\u305B\u3093`);if(!res.ok)throw new ResolveError(`${label}\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08HTTP ${res.status}\uFF09\u3002`,res.status);const data=isRecord(res.json)?res.json["data"]:
70
- void 0;if(!isRecord(res.json)||res.json["result"]!==true||!isRecord(data)||data["id"]!==id){throw new ResolveError(`${label}\u306E\u5FDC\u7B54\u306B data.id \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`,res.status)}return data}async salesJson(path2,label){const res=await this.get(path2);if(res.status===401||res.status===403){throw new ApiError(res.status,isRecord(res.json)?res.json:null,"GET",path2)}if(!res.ok)throw new ResolveError(
71
- `${label}\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08HTTP ${res.status}\uFF09\u3002`,res.status);if(!isRecord(res.json)||res.json["result"]!==true)throw new ResolveError(`${label}\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`,res.status);return res.json}async invoiceByNumber(invoiceNo){const path2=`${SALES_INVOICES_PATH}?keyword=${encodeURIComponent(invoiceNo)}\
72
- &page_limit=100&page_no=1`;const res=await this.get(path2);if(res.status===401||res.status===403){throw new ApiError(res.status,isRecord(res.json)?res.json:null,"GET",path2)}const rows=rawListFrom(res,"list","\u8ACB\u6C42");const all=rows.flatMap(row=>[row,...Array.isArray(row["children"])?row["children"].filter(isRecord):[]]);const hits=all.filter(row=>row["invoice_no"]===invoiceNo);return hits.length===1?hits[0]:null}async estimateAllocations(estimateId){if(!isExactNumericId(estimateId))throw new UsageError(
73
- `\u898B\u7A4D\u306E ID \u306F\u5148\u982D\u306B 0 \u3092\u4ED8\u3051\u306A\u3044\u6570\u5B57\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044: ${estimateId}`);const path2=`${SALES_ESTIMATES_PATH}/${estimateId}/allocations`;const res=await this.get(path2);if(res.status===401||res.status===403){throw new ApiError(res.status,isRecord(res.json)?res.json:null,"GET",path2)}return rawListFrom(res,"data","\u90E8\u7F72\u6309\u5206")}async mediaFolders(scope,scopeId){const query=`scope=${encodeURIComponent(
74
- scope)}${scopeId===void 0?"":`&scope_id=${encodeURIComponent(scopeId)}`}`;const path2=`/api/v2/media/folders/tree?${query}`;const res=await this.get(path2);if(res.status===401||res.status===403){throw new ApiError(res.status,isRecord(res.json)?res.json:null,"GET",path2)}if(!res.ok)throw new ResolveError(`\u30E1\u30C7\u30A3\u30A2\u30D5\u30A9\u30EB\u30C0\u306E\u4E00\u89A7\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08HTTP ${res.status}\uFF09\u3002`,res.status);const data=isRecord(
75
- res.json)?res.json["data"]:void 0;if(!Array.isArray(data)||!data.every(isRecord)){throw new ResolveError("\u30E1\u30C7\u30A3\u30A2\u30D5\u30A9\u30EB\u30C0\u4E00\u89A7\u306E\u5FDC\u7B54\u306B data \u914D\u5217\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002",res.status)}return data}async mediaFolder(id,part){if(!isSafePathSegment(id))throw new UsageError(`\u30D5\u30A9\u30EB\u30C0 ID \u3068\u3057\u3066\u4F7F\u3048\u306A\u3044\u5024\u3067\u3059: ${id}`);
76
- const path2=`/api/v2/media/folders/${encodeURIComponent(id)}${part==="content"?"/can-delete":""}`;const res=await this.get(path2);if(res.status===401||res.status===403){throw new ApiError(res.status,isRecord(res.json)?res.json:null,"GET",path2)}if(res.status===404){throw new UsageError(`\u30D5\u30A9\u30EB\u30C0 ${id} \u306F\u3042\u308A\u307E\u305B\u3093\uFF08\u524A\u9664\u6E08\u307F\u306E\u30D5\u30A9\u30EB\u30C0\u306F\u30B4\u30DF\u7BB1\u306B\u3042\u308A\u307E\u3059: twp media folder list --trash\uFF09`)}
77
- if(!res.ok)throw new ResolveError(`\u30E1\u30C7\u30A3\u30A2\u30D5\u30A9\u30EB\u30C0\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08HTTP ${res.status}\uFF09\u3002`,res.status);const data=isRecord(res.json)?res.json["data"]:void 0;if(!isRecord(data)||part==="folder"&&data["id"]!==id){throw new ResolveError("\u30E1\u30C7\u30A3\u30A2\u30D5\u30A9\u30EB\u30C0\u306E\u5FDC\u7B54\u306B data \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
78
- res.status)}return data}async mediaFolderTrash(scope,scopeId){const base=`/api/v2/media/folders/trash?scope=${encodeURIComponent(scope)}${scopeId===void 0?"":`&scope_id=${encodeURIComponent(scopeId)}`}&limit=100`;const rows=[];const seen=new Set;let cursor=null;for(;;){const path2=cursor===null?base:`${base}&cursor=${encodeURIComponent(cursor)}`;const res=await this.get(path2);if(res.status===401||res.status===403){throw new ApiError(res.status,isRecord(res.json)?res.json:null,"GET",path2)}if(!res.
79
- ok)throw new ResolveError(`\u30B4\u30DF\u7BB1\u306E\u30D5\u30A9\u30EB\u30C0\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08HTTP ${res.status}\uFF09\u3002`,res.status);const body=isRecord(res.json)?res.json:{};const data=body["data"];const meta=isRecord(body["meta"])?body["meta"]:{};if(!Array.isArray(data)||!data.every(isRecord)){throw new ResolveError("\u30B4\u30DF\u7BB1\u306E\u30D5\u30A9\u30EB\u30C0\u4E00\u89A7\u306E\u5FDC\u7B54\u306B data \u914D\u5217\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
80
- res.status)}if(meta["scan_truncated"]===true){throw new ResolveError("\u30B4\u30DF\u7BB1\u306E\u30D5\u30A9\u30EB\u30C0\u3092\u8D70\u67FB\u3057\u304D\u308C\u307E\u305B\u3093\u3067\u3057\u305F\uFF08\u30B5\u30FC\u30D0\u306E\u8D70\u67FB\u4E0A\u9650\uFF09\u3002\u4EF6\u6570\u3092\u78BA\u5B9A\u3067\u304D\u306A\u3044\u305F\u3081\u6B62\u3081\u307E\u3059\u3002",res.status)}rows.push(...data);const next=meta["next_cursor"];if(next===null||next===void 0||next==="")return rows;if(typeof next!=="string"||seen.
81
- has(next)){throw new ResolveError("\u30B4\u30DF\u7BB1\u306E\u30D5\u30A9\u30EB\u30C0\u4E00\u89A7\u306E\u7D9A\u304D\u3092\u8FBF\u308C\u307E\u305B\u3093\u3067\u3057\u305F\uFF08next_cursor \u306E\u5F62\u304C\u9055\u3046\u304B\u5FAA\u74B0\u3057\u3066\u3044\u307E\u3059\uFF09\u3002",res.status)}seen.add(next);cursor=next}}async reportRecord(kind,id,flag){const label=kind==="format"?"\u30EC\u30DD\u30FC\u30C8\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8":"\u30EC\u30DD\u30FC\u30C8";if(!isSafePathSegment(id))throw new UsageError(
82
- `${flag} \u306E${label} ID \u3068\u3057\u3066\u4F7F\u3048\u306A\u3044\u5024\u3067\u3059: ${id}`);const path2=`${REPORTS_PATH}${kind==="format"?"/formats":""}/${encodeURIComponent(id)}`;const res=await this.get(path2);if(res.status===401||res.status===403){throw new ApiError(res.status,isRecord(res.json)?res.json:null,"GET",path2)}if(res.status===404)throw new UsageError(`${flag} \u306E ID ${id} \u306E${label}\u306F\u3042\u308A\u307E\u305B\u3093`);if(!res.ok)throw new ResolveError(`${label}\u3092\u53D6\u5F97\u3067\u304D\u307E\
83
- \u305B\u3093\u3067\u3057\u305F\uFF08HTTP ${res.status}\uFF09\u3002`,res.status);const data=isRecord(res.json)?res.json[kind]:void 0;if(!isRecord(res.json)||res.json["result"]!==true||!isRecord(data)||data["id"]!==id){throw new ResolveError(`${label}\u306E\u5FDC\u7B54\u306B ${kind}.id \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`,res.status)}return data}async customerChildren(companyId,kind){if(!isExactNumericId(companyId))
84
- throw new UsageError(`\u53D6\u5F15\u5148\u306E ID \u306F\u5148\u982D\u306B 0 \u3092\u4ED8\u3051\u306A\u3044\u6570\u5B57\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044: ${companyId}`);const label=kind==="contacts"?"\u62C5\u5F53\u8005":"\u5BFE\u5FDC\u5C65\u6B74";const rows=[];let cursor=null;const seenCursors=new Set;for(;;){const query=`limit=${CUSTOMER_CHILDREN_PAGE_LIMIT}${cursor===null?"":`&cursor=${encodeURIComponent(cursor)}`}`;const path2=`${CUSTOMERS_PATH}/${companyId}/${kind}?${query}`;
85
- const res=await this.get(path2);if(res.status===401||res.status===403){throw new ApiError(res.status,isRecord(res.json)?res.json:null,"GET",path2)}rows.push(...rawListFrom(res,"items",label));const hasMore=isRecord(res.json)?res.json["has_more"]:void 0;const next=isRecord(res.json)?res.json["next_cursor"]:void 0;if(hasMore===false)return rows;if(hasMore!==true||typeof next!=="string"||next===""){throw new ResolveError(`${label}\u4E00\u89A7\u306E\u5FDC\u7B54\u306E has_more / next_cursor \u304C\u8AAD\u3081\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`,
86
- res.status)}if(seenCursors.has(next))throw new ResolveError(`${label}\u4E00\u89A7\u306E next_cursor \u304C\u9032\u307F\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`,res.status);seenCursors.add(next);cursor=next}}async featureLevel(feature){const res=await this.get("/api/v2/user");if(res.status===401||res.status===403){throw new ApiError(res.status,isRecord(res.json)?res.json:null,"GET","/api/v2/user")}if(!res.ok)throw new ResolveError(`\u30ED\u30B0\u30A4\
87
- \u30F3\u4E2D\u306E\u30E6\u30FC\u30B6\u30FC\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08HTTP ${res.status}\uFF09\u3002`,res.status);const user=isRecord(res.json)?res.json["user"]:void 0;if(!isRecord(user))throw new ResolveError("\u30E6\u30FC\u30B6\u30FC\u53D6\u5F97\u306E\u5FDC\u7B54\u306B user \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002",res.status);const permissions=user["feature_permissions"];
88
- const level=isRecord(permissions)?permissions[feature]:void 0;return{isAdmin:user["is_admin"]===true,level:typeof level==="string"?level:null}}async tenantClock(){const res=await this.get("/api/v2/user");if(res.status===401||res.status===403){throw new ApiError(res.status,isRecord(res.json)?res.json:null,"GET","/api/v2/user")}if(!res.ok)throw new ResolveError(`\u30ED\u30B0\u30A4\u30F3\u4E2D\u306E\u30E6\u30FC\u30B6\u30FC\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08HTTP ${res.
89
- status}\uFF09\u3002`,res.status);const user=isRecord(res.json)?res.json["user"]:void 0;if(!isRecord(user))throw new ResolveError("\u30E6\u30FC\u30B6\u30FC\u53D6\u5F97\u306E\u5FDC\u7B54\u306B user \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002",res.status);const zone=str(user["tenant_timezone"]);const boundary=user["business_day_boundary_hour"];return{timeZone:zone??"Asia/Tokyo",boundaryHour:typeof boundary==="number"&&Number.
90
- isInteger(boundary)&&boundary>=0&&boundary<=23?boundary:5}}async prospect(input,flag="<\u30A2\u30D7\u30ED\u30FC\u30C1\u5148>"){const trimmed=input.trim();if(trimmed==="")throw new UsageError(`${flag} \u306B\u7A7A\u306E\u5024\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093`);if(UUID_RE.test(trimmed))return{id:trimmed,name:trimmed};const rows=[];let cursor=null;let truncated=false;const seenCursors=new Set;for(let page=1;;page+=1){const query=`keyword=${encodeURIComponent(trimmed)}&limit=${PROSPECT_SEARCH_PAGE_LIMIT}${cursor===
91
- null?"":`&cursor=${encodeURIComponent(cursor)}`}`;const path2=`${PROSPECTS_PATH}?${query}`;const res=await this.get(path2);if(res.status===401||res.status===403){throw new ApiError(res.status,isRecord(res.json)?res.json:null,"GET",path2)}rows.push(...rawListFrom(res,"items","\u30A2\u30D7\u30ED\u30FC\u30C1\u5148"));const hasMore=isRecord(res.json)?res.json["has_more"]:void 0;const next=isRecord(res.json)?res.json["next_cursor"]:void 0;if(hasMore===false)break;if(hasMore!==true||typeof next!=="str\
92
- ing"||next===""||seenCursors.has(next)){throw new ResolveError("\u30A2\u30D7\u30ED\u30FC\u30C1\u5148\u4E00\u89A7\u306E\u5FDC\u7B54\u306E has_more / next_cursor \u304C\u8AAD\u3081\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002",res.status)}if(page>=PROSPECT_SEARCH_MAX_PAGES){truncated=true;break}seenCursors.add(next);cursor=next}const needle=trimmed.toLowerCase();const hits=rows.filter(row=>str(row["company_name"])?.trim().toLowerCase()===needle);
93
- if(hits.some(row=>str(row["id"])===null))throw new ResolveError("\u30A2\u30D7\u30ED\u30FC\u30C1\u5148\u4E00\u89A7\u306E\u884C\u306B id \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002");const ids=[...new Set(hits.map(row=>str(row["id"])))];if(truncated){throw new UsageError(`${flag} \u306E\u300C${trimmed}\u300D\u306B\u5F53\u305F\u308B\u30A2\u30D7\u30ED\u30FC\u30C1\u5148\u304C\u591A\u3059\u304E\u308B\u305F\u3081\uFF08${PROSPECT_SEARCH_MAX_PAGES*
94
- PROSPECT_SEARCH_PAGE_LIMIT} \u4EF6\u3092\u8D85\u3048\u3066\uFF09\u4E00\u610F\u306B\u6C7A\u3081\u3089\u308C\u307E\u305B\u3093`,"ID \u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08twp prospect list --keyword <\u8A9E> \u306E id \u5217\uFF09\u3002")}if(ids.length===1&&ids[0]!==null&&ids[0]!==void 0){if(!isSafePathSegment(ids[0]))throw new ResolveError(`\u30B5\u30FC\u30D0\u304C\u8FD4\u3057\u305F\u30A2\u30D7\u30ED\u30FC\u30C1\u5148\u306E id \u3092\u30D1\u30B9\u306B\u4F7F\u3048\u307E\u305B\u3093: ${ids[0]}\
95
- \u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`);return{id:ids[0],name:trimmed}}if(ids.length>1){const shown=hits.slice(0,10).map(row=>`${String(row["id"])}\uFF08${[str(row["contact_department"]),str(row["contact_name"])].filter(v=>v!==null).join(" ")||"\u9023\u7D61\u5148\u306A\u3057"}\uFF09`).join(" / ");throw new UsageError(`${flag} \u306E\u300C${trimmed}\u300D\u304C\u30A2\u30D7\u30ED\u30FC\u30C1\u5148${ids.length}\u4EF6\u306B\u4E00\u81F4\u3057\u307E\u3059: ${shown}${hits.
96
- length>10?` \u2026\uFF08\u5168 ${hits.length} \u4EF6\uFF09`:""}`,"\u540C\u3058\u4F01\u696D\u540D\u306E\u884C\u304C\u8907\u6570\u3042\u308A\u307E\u3059\u3002ID \u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08twp prospect list --keyword <\u8A9E> \u306E id \u5217\uFF09\u3002")}throw new UsageError(`${flag} \u306E\u300C${trimmed}\u300D\u3068\u4F01\u696D\u540D\u304C\u5B8C\u5168\u306B\u4E00\u81F4\u3059\u308B\u30A2\u30D7\u30ED\u30FC\u30C1\u5148\u304C\u3042\u308A\u307E\u305B\u3093`,"\u4F5C\u6210\u3057\u305F\u76F4\u5F8C\u306F\u691C\
97
- \u7D22\u306B\u51FA\u306A\u3044\u3053\u3068\u304C\u3042\u308A\u307E\u3059\u3002ID \u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08twp prospect list --keyword <\u8A9E> \u306E id \u5217\uFF09\u3002")}async prospectPromotionPreview(id){if(!isSafePathSegment(id))throw new UsageError(`\u30A2\u30D7\u30ED\u30FC\u30C1\u5148\u306E ID \u3068\u3057\u3066\u4F7F\u3048\u306A\u3044\u6587\u5B57\u304C\u542B\u307E\u308C\u3066\u3044\u307E\u3059: ${id}`);const path2=`${PROSPECTS_PATH}/${encodeURIComponent(
98
- id)}/promotion-preview`;const res=await this.get(path2);if(res.status===401||res.status===403){throw new ApiError(res.status,isRecord(res.json)?res.json:null,"GET",path2)}if(res.status===404)throw new UsageError(`ID ${id} \u306E\u30A2\u30D7\u30ED\u30FC\u30C1\u5148\u306F\u3042\u308A\u307E\u305B\u3093`,"twp prospect list \u3067 ID \u3092\u78BA\u304B\u3081\u3066\u304F\u3060\u3055\u3044\u3002");if(!res.ok)throw new ResolveError(`\u6607\u683C\u306E\u4E0B\u898B\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08HTTP ${res.
99
- status}\uFF09\u3002`,res.status);const body=res.json;if(!isRecord(body)||body["result"]!==true||typeof body["already_promoted"]!=="boolean"||!Array.isArray(body["customer_matches"])){throw new ResolveError("\u6607\u683C\u306E\u4E0B\u898B\u306E\u5FDC\u7B54\u306B already_promoted / customer_matches \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002",res.status)}return body}async inquiryCategory(input,flag="<\u30AB\u30C6\u30B4\u30EA>"){
100
- const rows=await this.inquiryCategoryRows();return resolveNamed(input,namedFromRows(rows,"\u554F\u3044\u5408\u308F\u305B\u30AB\u30C6\u30B4\u30EA",inquiryCategoryRow),{flag,label:"\u554F\u3044\u5408\u308F\u305B\u30AB\u30C6\u30B4\u30EA",scope:TENANT_SCOPE_LABEL})}async inquiryCategoryRows(options={}){const load=async()=>rawListFrom(await this.get(INQUIRY_CATEGORIES_PATH),"list","\u554F\u3044\u5408\u308F\u305B\u30AB\u30C6\u30B4\u30EA");if(options.fresh!==true)return this.cached("inquiry-categories",
101
- TENANT_CACHE_KEY,load);const rows=await load();writeCache({profile:this.options.profile,scope:"inquiry-categories",project:TENANT_CACHE_KEY},rows,{...this.options.env!==void 0?{env:this.options.env}:{},...this.options.ttlMs!==void 0?{ttlMs:this.options.ttlMs}:{},...this.options.now!==void 0?{now:this.options.now}:{}});return rows}invalidateInquiryCategories(){removeCache({profile:this.options.profile,scope:"inquiry-categories",project:TENANT_CACHE_KEY},this.options.env!==void 0?{env:this.options.
102
- env}:{})}async notificationCategory(input,flag="--category"){const rows=await this.cached("notification-categories",TENANT_CACHE_KEY,async()=>rawListFrom(await this.get(`${NOTIFICATIONS_PATH}/categories`),"categories","\u901A\u77E5\u30AB\u30C6\u30B4\u30EA"));return resolveNamed(input,namedFromRows(rows,"\u901A\u77E5\u30AB\u30C6\u30B4\u30EA",notificationCategoryRow),{flag,label:"\u901A\u77E5\u30AB\u30C6\u30B4\u30EA",scope:TENANT_SCOPE_LABEL})}async notificationUnreadCount(category){if(category===
103
- null){const res=await this.get(`${NOTIFICATIONS_PATH}/counts`);const count=res.ok&&isRecord(res.json)?res.json["unread_count"]:void 0;if(typeof count!=="number"||!Number.isSafeInteger(count)||count<0){throw new ResolveError(res.ok?"\u901A\u77E5\u4EF6\u6570\u306E\u5FDC\u7B54\u306B unread_count \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002":`\u901A\u77E5\u306E\u672A\u8AAD\u4EF6\u6570\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08HTTP ${res.
104
- status}\uFF09\u3002\u63A5\u7D9A\u5148\u3068\u30ED\u30B0\u30A4\u30F3\u72B6\u614B\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`,res.status)}return{count,complete:true}}let total=0;let cursor=null;for(let page=0;page<NOTIFICATION_COUNT_MAX_PAGES;page++){const query=new URLSearchParams({read_status:"unread",category,limit:String(NOTIFICATION_COUNT_PAGE_LIMIT)});if(cursor!==null)query.set("cursor",cursor);const res=await this.get(`${NOTIFICATIONS_PATH}?${query.toString()}`);total+=rawListFrom(
105
- res,"list","\u901A\u77E5").length;const body=res.json;if(body["has_more"]===false)return{count:total,complete:true};if(body["has_more"]!==true||typeof body["next_cursor"]!=="string"||body["next_cursor"]===""){throw new ResolveError("\u901A\u77E5\u4E00\u89A7\u306E\u5FDC\u7B54\u306E has_more / next_cursor \u3092\u89E3\u91C8\u3067\u304D\u307E\u305B\u3093\u3002\u672A\u8AAD\u4EF6\u6570\u3092\u6570\u3048\u3089\u308C\u306A\u3044\u305F\u3081\u4E2D\u65AD\u3057\u307E\u3057\u305F\u3002",res.status)}cursor=
106
- body["next_cursor"]}return{count:total,complete:false}}async namedList(path2,envelope,label,map){return namedListFrom(await this.get(path2),envelope,label,map)}async cached(scope,projectId,load){const key={profile:this.options.profile,scope,project:projectId};const options={...this.options.env!==void 0?{env:this.options.env}:{},refresh:this.options.refresh,...this.options.ttlMs!==void 0?{ttlMs:this.options.ttlMs}:{},...this.options.now!==void 0?{now:this.options.now}:{}};const hit=readCache(key,
107
- options);if(hit!==null&&Array.isArray(hit))return hit;const fresh=await load();writeCache(key,fresh,options);return fresh}applyAlias(kind,input){const table=this.options.aliases?.[kind];if(table===void 0)return input;const needle=input.trim().toLowerCase();for(const[from,to]of Object.entries(table)){if(from.trim().toLowerCase()===needle&&typeof to==="string"&&to.trim()!=="")return to}return input}async backlogSpaces(){return this.cached("backlog-spaces",BACKLOG_SPACES_CACHE_KEY,()=>this.namedList(
108
- `${BACKLOG_BASE_PATH}/spaces`,"spaces","Backlog \u30B9\u30DA\u30FC\u30B9",backlogSpaceRow))}async backlogSpace(ref){return resolveNamed(ref,await this.backlogSpaces(),{flag:"--space",label:"Backlog \u30B9\u30DA\u30FC\u30B9",scope:BACKLOG_SCOPE_LABEL})}async backlogDefaultSpace(){const spaces=await this.backlogSpaces();if(spaces.length===1)return spaces[0];if(spaces.length===0){throw new UsageError("Backlog \u30B9\u30DA\u30FC\u30B9\u304C1\u4EF6\u3082\u767B\u9332\u3055\u308C\u3066\u3044\u307E\u305B\u3093",
109
- "TWP \u306E\u5916\u90E8\u9023\u643A\u8A2D\u5B9A\u3067 Backlog \u30B9\u30DA\u30FC\u30B9\u3092\u767B\u9332\u3057\u3066\u304F\u3060\u3055\u3044\uFF08twp backlog space list \u3067\u78BA\u8A8D\u3067\u304D\u307E\u3059\uFF09\u3002")}throw new UsageError(`Backlog \u30B9\u30DA\u30FC\u30B9\u304C ${spaces.length} \u4EF6\u767B\u9332\u3055\u308C\u3066\u3044\u308B\u305F\u3081\u3001--space \u30671\u3064\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044`,`twp backlog space list \u3067 ID \u3068\u30B9\u30DA\u30FC\u30B9URL\u3092\u78BA\u8A8D\u3067\u304D\u307E\u3059\u3002`)}async backlogProjects(spaceId){
110
- return this.cached("backlog-projects",spaceId,()=>this.namedList(backlogSpacePath(spaceId,"/projects"),"projects","Backlog \u30D7\u30ED\u30B8\u30A7\u30AF\u30C8",backlogProjectRow))}async backlogStatuses(spaceId,projectId){return this.cached("backlog-statuses",`${spaceId}/${projectId}`,()=>this.namedList(backlogSpacePath(spaceId,`/projects/${encodeURIComponent(assertBacklogPathSegment(projectId,"Backlog \u30D7\u30ED\u30B8\u30A7\u30AF\u30C8 ID"))}/statuses`),"statuses","Backlog \u30B9\u30C6\u30FC\u30BF\u30B9",
111
- backlogStatusRow))}async backlogUsers(spaceId,projectId){return this.cached("backlog-users",`${spaceId}/${projectId}`,()=>this.namedList(backlogSpacePath(spaceId,`/projects/${encodeURIComponent(assertBacklogPathSegment(projectId,"Backlog \u30D7\u30ED\u30B8\u30A7\u30AF\u30C8 ID"))}/users`),"users","Backlog \u30E6\u30FC\u30B6\u30FC",backlogUserRow))}async ms365Teams(){return this.cached("ms365-teams",MS365_TEAMS_CACHE_KEY,()=>this.ms365NamedList(ms365Path("/teams/teams"),"Teams \u306E\u30C1\u30FC\u30E0"))}async ms365Team(ref){
112
- return resolveNamed(ref,await this.ms365Teams(),{flag:"--team",label:"\u30C1\u30FC\u30E0",scope:MS365_SCOPE_LABEL})}async ms365Channels(teamId){return this.cached("ms365-channels",teamId,()=>this.ms365NamedList(ms365Path(`/teams/teams/${ms365Segment(teamId,"\u30C1\u30FC\u30E0 ID")}/channels`),"Teams \u306E\u30C1\u30E3\u30CD\u30EB"))}async ms365Channel(teamId,ref){return resolveNamed(ref,await this.ms365Channels(teamId),{flag:"--channel",label:"\u30C1\u30E3\u30CD\u30EB",scope:"\u3053\u306E\u30C1\u30FC\u30E0"})}async ms365Message(messageId){
113
- const res=await this.get(ms365Path(`/outlook/messages/${ms365Segment(messageId,"\u30E1\u30FC\u30EBID")}`));if(!res.ok){throw new ResolveError(ms365NotConnectedGuidance(res.json)??`\u5143\u306E\u30E1\u30FC\u30EB\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08HTTP ${res.status}\uFF09\u3002\u30E1\u30FC\u30EBID \u306F twp outlook mail list \u306E id \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002`,res.status)}const data=isRecord(res.json)?res.json["data"]:void 0;
114
- if(!isRecord(data)){throw new ResolveError("\u5143\u306E\u30E1\u30FC\u30EB\u306E\u5FDC\u7B54\u306B data \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002",res.status)}return data}async ms365Event(eventId){const res=await this.get(ms365Path(`/calendar/events/${ms365Segment(eventId,"\u4E88\u5B9AID")}`));if(!res.ok){throw new ResolveError(ms365NotConnectedGuidance(res.json)??`\u4E88\u5B9A\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08HTTP ${res.
115
- status}\uFF09\u3002\u4E88\u5B9AID \u306F twp outlook event list \u306E id \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002`,res.status)}const data=isRecord(res.json)?res.json["data"]:void 0;if(!isRecord(data)){throw new ResolveError("\u4E88\u5B9A\u306E\u5FDC\u7B54\u306B data \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002",res.status)}return data}async ms365NamedList(path2,label){const rows=[];let cursor=null;for(let page=1;page<=
116
- MS365_RESOLVE_MAX_PAGES;page+=1){const res=await this.get(cursor===null?path2:`${path2}?skiptoken=${encodeURIComponent(cursor)}`);if(!res.ok){throw new ResolveError(ms365NotConnectedGuidance(res.json)??`${label}\u306E\u4E00\u89A7\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08HTTP ${res.status}\uFF09\u3002\u63A5\u7D9A\u5148\u3068\u30ED\u30B0\u30A4\u30F3\u72B6\u614B\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`,res.status)}const data=isRecord(res.json)?res.json["\
117
- data"]:void 0;const value=isRecord(data)?data["value"]:void 0;if(!isRecord(data)||!Array.isArray(value)){throw new ResolveError(`${label}\u4E00\u89A7\u306E\u5FDC\u7B54\u306B data.value \u914D\u5217\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`,res.status)}value.forEach((row,index)=>{if(!isRecord(row)){throw new ResolveError(`${label}\u4E00\u89A7\u306E ${rows.length+index+1} \u4EF6\u76EE\u304C\u60F3\u5B9A\u306E\u5F62\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`,
118
- res.status)}rows.push(row)});const next=data["@odata.nextLink"];if(next===void 0||next===null)return namedFromRows(rows,label,ms365NamedRow,res.status??void 0);const parsed=typeof next==="string"?graphNextCursor(next):null;if(parsed===null||parsed.kind!=="skiptoken"){throw new ResolveError(`${label}\u4E00\u89A7\u306E\u7D9A\u304D\uFF08@odata.nextLink\uFF09\u3092\u8AAD\u3081\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`,res.status)}cursor=parsed.
119
- value}throw new UsageError(`${label}\u304C\u591A\u3059\u304E\u308B\u305F\u3081\u540D\u524D\u3067\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\uFF08${MS365_RESOLVE_MAX_PAGES} \u30DA\u30FC\u30B8\u3092\u8D85\u3048\u307E\u3057\u305F\uFF09`,"\u4E00\u89A7\u30B3\u30DE\u30F3\u30C9\u306E\u51FA\u529B\u306B\u3042\u308B id \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002")}get apiClient(){return this.client}};function assertMembersComplete(rows){if(rows.length>=PROJECT_MEMBERS_LIMIT){throw new ResolveError(
120
- `\u30E1\u30F3\u30D0\u30FC\u304C ${PROJECT_MEMBERS_LIMIT} \u4EBA\u4EE5\u4E0A\u3044\u308B\u305F\u3081\u3001\u5168\u54E1\u3092\u7167\u5408\u3067\u304D\u307E\u305B\u3093\u3002ID \u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}return rows}function rawListFrom(res,envelope,label){if(!res.ok){throw new ResolveError(`${label}\u306E\u4E00\u89A7\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08HTTP ${res.status}\uFF09\u3002\u63A5\u7D9A\u5148\u3068\u30ED\u30B0\u30A4\u30F3\u72B6\u614B\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`,
121
- res.status)}const list=isRecord(res.json)?res.json[envelope]:void 0;if(!Array.isArray(list)){throw new ResolveError(`${label}\u4E00\u89A7\u306E\u5FDC\u7B54\u306B ${envelope} \u914D\u5217\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`,res.status)}return list.map((row,index)=>{if(!isRecord(row)){throw new ResolveError(`${label}\u4E00\u89A7\u306E ${index+1} \u4EF6\u76EE\u304C\u60F3\u5B9A\u306E\u5F62\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`,
122
- res.status)}return row})}function userRow(row){const email=str(row["email"]);const employeeCode=str(row["employee_code"]);return{id:str(row["user_id"]),name:str(row["user_name"]),code:employeeCode??email,aliases:[email,employeeCode].filter(v=>v!==null)}}function notificationCategoryRow(row){return{id:str(row["key"]),name:str(row["name"]),code:str(row["key"])}}function inquiryCategoryRow(row){return{id:str(row["id"]),name:str(row["title"]),code:str(row["category_code"])}}function masterList(res,label){
123
- const rows=rawListFrom(res,"list",label);const count=isRecord(res.json)?res.json["count"]:void 0;if(typeof count==="number"&&count>rows.length){throw new ResolveError(`${label}\u4E00\u89A7\u304C ${count} \u4EF6\u4E2D ${rows.length} \u4EF6\u3067\u5207\u308A\u8A70\u3081\u3089\u308C\u305F\u305F\u3081\u3001\u540D\u524D\u3067\u89E3\u6C7A\u3067\u304D\u307E\u305B\u3093\u3002ID \u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002`,res.status)}return rows}function codedMasterRow(row){return{id:str(
124
- row["id"]),name:str(row["name"]),code:str(row["code"]),isDefault:truthyFlag(row["is_default"])}}function namedListFrom(res,envelope,label,map){return namedFromRows(rawListFrom(res,envelope,label),label,map,res.status??void 0)}function namedFromRows(rows,label,map,status=200){return rows.map((row,index)=>{const mapped=map(row);if(mapped.id===null||mapped.name===null){throw new ResolveError(`${label}\u4E00\u89A7\u306E ${index+1} \u4EF6\u76EE\u306B id / \u540D\u524D\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`,
125
- status)}return{id:mapped.id,name:mapped.name,...mapped.code!==void 0?{code:mapped.code}:{},...mapped.aliases!==void 0&&mapped.aliases.length>0?{aliases:mapped.aliases}:{},...mapped.isDefault!==void 0?{isDefault:mapped.isDefault}:{}}})}function requireDefault(candidates,ctx){const hit=candidates.find(ref=>ref.isDefault===true);if(hit!==void 0)return hit;throw new UsageError(`${ctx.flag} \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08${ctx.scope??DEFAULT_LOOKUP_SCOPE}\u306B\u306F\u65E2\u5B9A\u306E${ctx.
126
- label}\u304C\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093\uFF09`,`\u6307\u5B9A\u3067\u304D\u308B${ctx.label}: ${candidates.map(ref=>ref.name).join(" / ")}\uFF08\u53E4\u3044\u30AD\u30E3\u30C3\u30B7\u30E5\u304C\u6B8B\u3063\u3066\u3044\u308B\u5834\u5408\u306F --refresh \u3067\u53D6\u308A\u76F4\u305B\u307E\u3059\uFF09`)}export{BACKLOG_BASE_PATH,backlogSpacePath,resolveNamed,requireDefaultProject,PRIVATE_TASKS_PATH,BACKLOG_SCOPE_LABEL,BACKLOG_PROJECT_SCOPE_LABEL,PROJECT_MEMBERS_LIMIT,DEPARTMENTS_PATH,POSITIONS_PATH,JOB_TITLES_PATH,INQUIRY_CATEGORIES_PATH,NOTIFICATIONS_PATH,WORKFLOWS_PATH,REPORTS_PATH,SALES_ESTIMATES_PATH,SALES_INVOICES_PATH,SALES_CONTRACTS_PATH,SALES_INVOICE_AUTO_TEMPLATES_PATH,SALES_DEPOSITS_PATH,SALES_PURCHASES_PATH,SALES_SUPPLIER_PAYMENTS_PATH,SALES_SUPPLIER_PAYMENT_SCHEDULES_PATH,SALES_BUSINESS_PLACES_PATH,
127
- SALES_PAYEES_PATH,SALES_SEAL_IMPRESSIONS_PATH,SALES_PURCHASE_AI_MAPPINGS_PATH,SALES_ESTIMATE_NO_RULES_PATH,SALES_INVOICE_NO_RULES_PATH,SALES_PURCHASE_NO_RULES_PATH,SALES_ESTIMATE_FORMATS_PATH,SALES_ROUNDING_SETTING_PATH,SALES_COMPANIES_PATH,CUSTOMERS_PATH,PROSPECTS_PATH,isExactNumericId,ORG_MASTER_LIMIT,TASK_MASTERS,Resolver};
@@ -1,9 +0,0 @@
1
- import { createRequire as __twpCreateRequire } from 'node:module';
2
- const require = __twpCreateRequire(import.meta.url);
3
- var LOADERS={"agent-loop":async()=>(await import("./agent-loop-XKH5YE6A.js")).agentLoopDomain,"ai-review-reason":async()=>(await import("./sales-ai-review-7NPG7KV6.js")).aiReviewReasonDomain,analysis:async()=>(await import("./analysis-GAU2A3FU.js")).analysisDomain,attendance:async()=>(await import("./attendance-correct-5SFXA4DC.js")).attendanceDomainWithRecords,backlog:async()=>(await import("./backlog-F4EWY7MT.js")).backlogDomain,budget:async()=>(await import("./budget-QFUGQIPZ.js")).budgetDomain,
4
- "business-place":async()=>(await import("./sales-master-W5MXNZQ2.js")).businessPlaceDomain,company:async()=>(await import("./company-77JEESSV.js")).companyDomain,contract:async()=>(await import("./contract-26SKL7XT.js")).contractDomain,customer:async()=>(await import("./company-77JEESSV.js")).customerDomain,department:async()=>(await import("./department-IZAR2LZ4.js")).departmentDomain,deposit:async()=>(await import("./deposit-MYTKRIEX.js")).depositDomain,estimate:async()=>(await import("./estimate-KLS7XJLD.js")).
5
- estimateDomain,inquiry:async()=>(await import("./inquiry-52OT4HKJ.js")).inquiryDomain,invoice:async()=>(await import("./invoice-D77PS3WU.js")).invoiceDomain,"job-title":async()=>(await import("./job-title-U67Z25ZO.js")).jobTitleDomain,leave:async()=>(await import("./leave-OSIABEFV.js")).leaveDomain,media:async()=>(await import("./media-HDG4VHAR.js")).mediaDomain,meeting:async()=>(await import("./knowledge-Q3QLSNDX.js")).meetingDomain,note:async()=>(await import("./knowledge-Q3QLSNDX.js")).
6
- noteDomain,notification:async()=>(await import("./notification-MEOHWBXH.js")).notificationDomain,onedrive:async()=>(await import("./onedrive-3OBI4B5Z.js")).onedriveDomain,outlook:async()=>(await import("./outlook-LY6WBXIJ.js")).outlookDomain,payee:async()=>(await import("./sales-master-W5MXNZQ2.js")).payeeDomain,position:async()=>(await import("./position-N7SRF3CF.js")).positionDomain,project:async()=>(await import("./project-YMJJDSTP.js")).projectDomain,prospect:async()=>(await import("./prospect-3JD7STGT.js")).
7
- prospectDomain,purchase:async()=>(await import("./purchase-2SLZBDD6.js")).purchaseDomain,receivable:async()=>(await import("./receivable-6ZRAUHC3.js")).receivableDomain,report:async()=>(await import("./report-TUSP7RRF.js")).reportDomain,"rounding-setting":async()=>(await import("./sales-numbering-RQV2I5G5.js")).roundingSettingDomain,"seal-impression":async()=>(await import("./sales-master-W5MXNZQ2.js")).sealImpressionDomain,shift:async()=>(await import("./attendance-lists-3T7S7QF5.js")).shiftDomain,
8
- storage:async()=>(await import("./storage-KLLBENBY.js")).storageDomain,"supplier-payment":async()=>(await import("./supplier-payment-TDL3IE4H.js")).supplierPaymentDomain,task:async()=>(await import("./task-2SHYSZBZ.js")).taskDomain,teams:async()=>(await import("./teams-DRHXPLWN.js")).teamsDomain,user:async()=>(await import("./user-YEIHSVVN.js")).userDomain,wiki:async()=>(await import("./knowledge-Q3QLSNDX.js")).wikiDomain,workchange:async()=>(await import("./attendance-lists-3T7S7QF5.js")).
9
- workchangeDomain,workflow:async()=>(await import("./workflow-USG3ZKW6.js")).workflowDomain};async function loadDomain(name){return LOADERS[name]()}export{loadDomain};
@@ -1,4 +0,0 @@
1
- import { createRequire as __twpCreateRequire } from 'node:module';
2
- const require = __twpCreateRequire(import.meta.url);
3
- var DOMAIN_NAMES=["agent-loop","ai-review-reason","analysis","attendance","backlog","budget","business-place","company","contract","customer","department","deposit","estimate","inquiry","invoice","job-title","leave","media","meeting","note","notification","onedrive","outlook","payee","position","project","prospect","purchase","receivable","report","rounding-setting","seal-impression","shift","storage","supplier-payment","task","teams","user","wiki","workchange","workflow"];function isDomainName(value){
4
- return value!==void 0&&DOMAIN_NAMES.includes(value)}var HELP_TOKEN="help";var API_TOKEN="api";export{DOMAIN_NAMES,isDomainName,HELP_TOKEN,API_TOKEN};
@@ -1,3 +0,0 @@
1
- import { createRequire as __twpCreateRequire } from 'node:module';
2
- const require = __twpCreateRequire(import.meta.url);
3
- import{evaluateQuery}from"./chunk-ATYA6DG5.js";import"./chunk-UFND7FBC.js";import"./chunk-VSJBJXZO.js";export{evaluateQuery};
@@ -1,4 +0,0 @@
1
- import { createRequire as __twpCreateRequire } from 'node:module';
2
- const require = __twpCreateRequire(import.meta.url);
3
- import{balanceRows,previousYearMonth,receivableDomain,yearMonthValue}from"./chunk-LAXINIDA.js";import"./chunk-BN26WHLS.js";import"./chunk-OHXZO5WK.js";import"./chunk-GOZCJLRA.js";import"./chunk-XDHLO54T.js";import"./chunk-ORUDW52G.js";import"./chunk-4F2ONF4P.js";import"./chunk-GMBJTG6A.js";import"./chunk-3HH5IYNO.js";import"./chunk-F7K37QG6.js";import"./chunk-IF2K4PM5.js";import"./chunk-4VZKNEVN.js";import"./chunk-QQRJLH6B.js";
4
- import"./chunk-II5RVJQN.js";import"./chunk-IOGMOXYF.js";import"./chunk-LXIAOCUW.js";import"./chunk-VTQAI52S.js";import"./chunk-UFND7FBC.js";import"./chunk-J7QYPKVK.js";import"./chunk-RZVI6PMW.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";export{balanceRows,previousYearMonth,receivableDomain,yearMonthValue};