@tocca-systems/twp-cli 0.86.0 → 0.88.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 (109) hide show
  1. package/CHANGELOG.public.md +14 -0
  2. package/README.md +22 -0
  3. package/command-model/_routes.json +5 -0
  4. package/command-model/index.json +3 -2
  5. package/command-model/project-task-group.json +10 -0
  6. package/command-model/project-task.json +4 -4
  7. package/dist/{agent-YYDLDJJP.js → agent-SFDNPV24.js} +1 -1
  8. package/dist/{agent-loop-KNAIM7MN.js → agent-loop-XPV5PNE5.js} +1 -1
  9. package/dist/ai-dispatch-FTZKQHEL.js +80 -0
  10. package/dist/{analysis-3QDL4SFU.js → analysis-DPQN4BFG.js} +2 -2
  11. package/dist/{announcement-ITZHIPDQ.js → announcement-XAIC4CNE.js} +1 -1
  12. package/dist/{api-command-3ETVO5IN.js → api-command-XFQUUFDV.js} +2 -2
  13. package/dist/{app-PM4PZSKD.js → app-M56CCOE7.js} +4 -4
  14. package/dist/{attendance-correct-RI5SQW6G.js → attendance-correct-CJ3FJSVI.js} +1 -1
  15. package/dist/{attendance-lists-3IGZIBOR.js → attendance-lists-RRGFCDZR.js} +1 -1
  16. package/dist/{backlog-P5KPB76Q.js → backlog-L5VRYZGM.js} +1 -1
  17. package/dist/{budget-ZE5AMVSC.js → budget-T5YJTALN.js} +1 -1
  18. package/dist/capacity-list-command-LKOVLAY4.js +24 -0
  19. package/dist/{capacity-report-command-BUCAQ2P4.js → capacity-report-command-CENWVTKK.js} +1 -1
  20. package/dist/{chunk-RSSPNFSK.js → chunk-2AVQILQQ.js} +62 -62
  21. package/dist/{chunk-DR6BUZXT.js → chunk-3D734ED2.js} +1 -1
  22. package/dist/{chunk-QGRBZ2C2.js → chunk-3OCV6SOR.js} +1 -1
  23. package/dist/{chunk-3HOJI3X7.js → chunk-4VBSSXGA.js} +1 -1
  24. package/dist/{chunk-IIK77LSC.js → chunk-6M5NUVJJ.js} +1 -1
  25. package/dist/{chunk-KTQ7SK5O.js → chunk-E4FUHYC6.js} +1 -1
  26. package/dist/{chunk-VERYHAWV.js → chunk-EOXTDZTA.js} +4 -4
  27. package/dist/{chunk-2UWJVVXK.js → chunk-FBVSHQST.js} +1 -1
  28. package/dist/{chunk-NTT2QG3J.js → chunk-FJEGS55N.js} +1 -1
  29. package/dist/{chunk-ALKMLXOW.js → chunk-GO4KFSBE.js} +2 -2
  30. package/dist/chunk-GYB2R6BV.js +11 -0
  31. package/dist/{chunk-Y24FMUYU.js → chunk-INS77QHY.js} +4 -4
  32. package/dist/{chunk-LNIHJOXC.js → chunk-KPCVSILY.js} +1 -1
  33. package/dist/{chunk-VYIYENEU.js → chunk-LGJPXLMC.js} +1 -1
  34. package/dist/{chunk-WMFI4WG6.js → chunk-M7UEPYUQ.js} +1 -1
  35. package/dist/{chunk-2TWV2HRB.js → chunk-MUIN7OUW.js} +1 -1
  36. package/dist/{chunk-U3EMXP77.js → chunk-NMYHFVDR.js} +1 -1
  37. package/dist/{chunk-4FCPLEZN.js → chunk-OVV2PTZF.js} +1 -1
  38. package/dist/{chunk-5LFUD7K3.js → chunk-Q5NZXJNI.js} +28 -30
  39. package/dist/chunk-QLDKF6GK.js +49 -0
  40. package/dist/{chunk-4RNL462J.js → chunk-QUMDKN3U.js} +1 -1
  41. package/dist/{chunk-CZVQS3WP.js → chunk-RMU72S3D.js} +1 -1
  42. package/dist/{chunk-AQ5SHPHP.js → chunk-RTYJWZRA.js} +1 -1
  43. package/dist/{chunk-DED3IIC5.js → chunk-TJNM7PHZ.js} +1 -1
  44. package/dist/chunk-UZUV5FYG.js +16 -0
  45. package/dist/{chunk-V3RZ4RFP.js → chunk-VRJF6JLR.js} +1 -1
  46. package/dist/{chunk-CADCERVL.js → chunk-WDQMYRPE.js} +1 -1
  47. package/dist/{chunk-MUHAXMAT.js → chunk-WWDNWWPJ.js} +1 -1
  48. package/dist/{chunk-HYBXFEHH.js → chunk-XJ5EKWQY.js} +1 -1
  49. package/dist/{chunk-FED2BHMI.js → chunk-Y7QW7MHQ.js} +1 -1
  50. package/dist/cli.js +23 -11
  51. package/dist/{commands-GQBRPBFW.js → commands-2GRO356U.js} +44 -43
  52. package/dist/{commands-KKEZJCLF.js → commands-V7ZBTH7I.js} +1 -1
  53. package/dist/{company-2CRWKBJL.js → company-TF76Z3U5.js} +2 -2
  54. package/dist/{completion-C6ZQCDT2.js → completion-G54M3EFF.js} +1 -1
  55. package/dist/{contract-E523CMAL.js → contract-CFLPFV4I.js} +1 -1
  56. package/dist/{department-GPVHVFFP.js → department-T22PBYMP.js} +1 -1
  57. package/dist/{deposit-2HTM27AQ.js → deposit-PLQ7WHOX.js} +1 -1
  58. package/dist/{dispatch-HHWTJ3P4.js → dispatch-GSBMRWQ4.js} +1 -1
  59. package/dist/{domain-knowledge-VLLAEQEG.js → domain-knowledge-YFY5H6UB.js} +1 -1
  60. package/dist/{estimate-ADFAC72Y.js → estimate-DYPQ27KU.js} +2 -2
  61. package/dist/{evaluation-VP7OFTBS.js → evaluation-NG4DIIJM.js} +1 -1
  62. package/dist/{expense-3LLZQ4HE.js → expense-EA77QGLW.js} +1 -1
  63. package/dist/{fiscal-year-ZTCSF46U.js → fiscal-year-YSFASZEW.js} +1 -1
  64. package/dist/{holiday-E7N4ONKQ.js → holiday-E5WEZU6J.js} +1 -1
  65. package/dist/{inquiry-4Q4BRYM3.js → inquiry-LEYPOQWZ.js} +1 -1
  66. package/dist/{invoice-ZJM5Y7GE.js → invoice-CAYBEW65.js} +2 -2
  67. package/dist/{job-title-NCFHCA4M.js → job-title-RSDAHHVJ.js} +1 -1
  68. package/dist/{knowledge-VYQKSGQH.js → knowledge-GYLFDEXS.js} +1 -1
  69. package/dist/{leave-IZOHEIL3.js → leave-IG7SWPPB.js} +2 -2
  70. package/dist/{license-XSWDXSJE.js → license-I2SL53UI.js} +1 -1
  71. package/dist/{logout-guard-FCCJSF5V.js → logout-guard-PEETWT4A.js} +1 -1
  72. package/dist/{media-REBBHHCL.js → media-TKP7ONY4.js} +2 -2
  73. package/dist/{notification-WP7CH734.js → notification-IEANIYPD.js} +1 -1
  74. package/dist/{oneshot-S6T7VJNY.js → oneshot-3N2W247J.js} +1 -1
  75. package/dist/{plan-submit-F5VH3T37.js → plan-submit-WP25FEYE.js} +1 -1
  76. package/dist/{position-H3NSDVKQ.js → position-CRVEGXPL.js} +1 -1
  77. package/dist/{project-QAWTPSCR.js → project-JICUCXI5.js} +1 -1
  78. package/dist/{prospect-QY3NYP2A.js → prospect-A2YNQ4DE.js} +1 -1
  79. package/dist/{purchase-H4K66GDS.js → purchase-F3HUNCJE.js} +2 -2
  80. package/dist/{receivable-6H4W2OKM.js → receivable-K4UKS46G.js} +1 -1
  81. package/dist/{redmine-644RTL42.js → redmine-MC3RIB7W.js} +1 -1
  82. package/dist/{registry-XHUKN55J.js → registry-FAISFFZY.js} +1 -1
  83. package/dist/{report-HUJS6P5H.js → report-HUP2TXTK.js} +1 -1
  84. package/dist/{run-D5WEOH42.js → run-UH7QKMO3.js} +1 -1
  85. package/dist/{sales-ai-review-TAIEEDRM.js → sales-ai-review-5BJ3HNP5.js} +1 -1
  86. package/dist/{sales-master-THVBWI5T.js → sales-master-DUTB2DUX.js} +2 -2
  87. package/dist/{sales-numbering-E276FXQD.js → sales-numbering-WTEFGPOV.js} +1 -1
  88. package/dist/{schedule-command-ZOE3NYAA.js → schedule-command-4TFAFIAO.js} +1 -1
  89. package/dist/{search-BLMSVPIL.js → search-3ZPF7X5S.js} +7 -6
  90. package/dist/{segment-G4IPD43F.js → segment-ZKJYMOKV.js} +1 -1
  91. package/dist/{server-settings-GFWQ5ERV.js → server-settings-RNJ6RVTE.js} +1 -1
  92. package/dist/{server-skills-FVYYZ54O.js → server-skills-5JESWOTH.js} +1 -1
  93. package/dist/{setup-DW2H7BDN.js → setup-2KAICJYN.js} +1 -1
  94. package/dist/{skill-7NQZGSML.js → skill-5NCDQFDN.js} +1 -1
  95. package/dist/{skill-check-JBRUAUID.js → skill-check-VNUNX6IO.js} +2 -2
  96. package/dist/{staffing-board-PNTCS7NC.js → staffing-board-NWZLXYXJ.js} +2 -2
  97. package/dist/{status-command-PEL5GWIH.js → status-command-2FL2SVFR.js} +1 -1
  98. package/dist/{supplier-payment-T25C3NGB.js → supplier-payment-QKWONHRH.js} +2 -2
  99. package/dist/{support-UNJKXLAZ.js → support-MLNODDQT.js} +1 -1
  100. package/dist/{task-IIZRFCUR.js → task-7RLVDTK2.js} +80 -49
  101. package/dist/{user-DZV5ZMTP.js → user-FA2FIC47.js} +2 -2
  102. package/dist/{user-contract-type-HDA5TITL.js → user-contract-type-RELV4BV7.js} +1 -1
  103. package/dist/{worker-agent-5EKRFAD3.js → worker-agent-IPOLSJEA.js} +1 -1
  104. package/dist/{workflow-ZA3TDTIT.js → workflow-VJL4FV3U.js} +1 -1
  105. package/package.json +1 -1
  106. package/dist/ai-dispatch-QKGK4P7P.js +0 -78
  107. package/dist/chunk-IVFSEXD3.js +0 -48
  108. package/dist/chunk-O52RKZCC.js +0 -16
  109. package/dist/chunk-S5WBKXGY.js +0 -11
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{CONCURRENCY,DEFAULT_INACTIVE_DAYS,LOGIN_HISTORY_RETENTION_DAYS,daysBetween,lastLogin,lastLoginText,mapPool,pacedSender,primaryAssignment,recentlyHired,spreadsheetSafe,userDetail}from"./chunk-7PTFN3H7.js";import{DEPARTMENTS_PATH}from"./chunk-RSSPNFSK.js";import{ApiError}from"./chunk-JA5A6UJ2.js";import{positiveInteger,shellQuote}from"./chunk-MI6HVYR2.js";import{requireResolved,withResolved}from"./chunk-PS5QFKHB.js";import{isRecord}from"./chunk-3ZRMMBP5.js";
3
+ import{CONCURRENCY,DEFAULT_INACTIVE_DAYS,LOGIN_HISTORY_RETENTION_DAYS,daysBetween,lastLogin,lastLoginText,mapPool,pacedSender,primaryAssignment,recentlyHired,spreadsheetSafe,userDetail}from"./chunk-7PTFN3H7.js";import{DEPARTMENTS_PATH}from"./chunk-2AVQILQQ.js";import{ApiError}from"./chunk-JA5A6UJ2.js";import{positiveInteger,shellQuote}from"./chunk-MI6HVYR2.js";import{requireResolved,withResolved}from"./chunk-PS5QFKHB.js";import{isRecord}from"./chunk-3ZRMMBP5.js";
4
4
  import{ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";var SEAT_MOVING_LEVELS={inquiry:["admin","member"],content_management:["admin","member"],workflow:["admin"],hearing:["admin"]};function levelHoldsSeat(feature,level){return SEAT_MOVING_LEVELS[feature]?.includes(level)??false}function permissionMovesSeat(feature){return Object.hasOwn(SEAT_MOVING_LEVELS,feature)}var LICENSE_FEATURE_NAMES={content_management:"\u30B3\u30F3\u30C6\u30F3\u30C4\u7BA1\u7406",inquiry:"\u554F\u3044\u5408\u308F\u305B\u7BA1\u7406",workflow:"\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC",hearing:"\u30D2\u30A2\u30EA\u30F3\u30B0",task_management:"\u30BF\u30B9\u30AF\u7BA1\u7406",sales:"\u53D6\u5F15\u7BA1\u7406",attendance:"\u52E4\u6020\u7BA1\u7406",report:"\u30EC\u30DD\u30FC\u30C8",hr_management:"\u4EBA\u6750\u7BA1\u7406",learning:"\u5B66\u7FD2\u7BA1\u7406",expense:"\u7D4C\u8CBB\u7BA1\u7406",test:"\
5
5
  \u30B7\u30CA\u30EA\u30AA\u30C6\u30B9\u30C8\u7BA1\u7406",chat:"\u30C1\u30E3\u30C3\u30C8",customer:"\u9867\u5BA2\u7BA1\u7406",survey:"\u30A2\u30F3\u30B1\u30FC\u30C8",organization_survey:"\u7D44\u7E54\u30B5\u30FC\u30D9\u30A4",feedback:"\u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF",notes:"\u30CE\u30FC\u30C8",wiki_management:"Wiki",meeting_minutes:"\u8B70\u4E8B\u9332",equipment_management:"\u5099\u54C1\u7BA1\u7406",floor_map:"\u30D5\u30ED\u30A2\u30DE\u30C3\u30D7"};var LICENSES_PATH="/api/v2/licenses";var FORBIDDEN="\
6
6
  \u7D44\u7E54\u7BA1\u7406\u8005\u306E\u6A29\u9650\u304C\u5FC5\u8981\u3067\u3059\u3002twp license \u306F\u30C6\u30CA\u30F3\u30C8\u306E\u7D44\u7E54\u7BA1\u7406\u8005\u3060\u3051\u304C\u4F7F\u3048\u307E\u3059";var LIST_USAGE="twp license list";var ASSIGNMENTS_USAGE="twp license assignments <\u6A5F\u80FD\u30B3\u30FC\u30C9|\u6A5F\u80FD\u540D> | --all-features [--inactive-days <\u65E5\u6570>]";var ASSIGNMENTS_HELP="twp license assignments help";var RELEASE_COMMAND_MISSING="release_command \u304C\u7A7A\u306E\u884C\u306F\u3001\u6A29\u9650\u3092 non\
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{salesFeatureDenied}from"./chunk-V3RZ4RFP.js";import{featureLicenseGuidance}from"./chunk-4RNL462J.js";import{repeatedValues}from"./chunk-RX5HWI4L.js";import{charCount,readBody}from"./chunk-IWYJSQ5I.js";import{isExactNumericId}from"./chunk-RSSPNFSK.js";import{ApiError}from"./chunk-JA5A6UJ2.js";import{LIST_PAGING_HELP,PAGE_NUMBER_LIST_FLAGS,envelopePaging,nonEmpty,positiveInteger}from"./chunk-MI6HVYR2.js";import{requireResolved,withResolved}from"./chunk-PS5QFKHB.js";
3
+ import{salesFeatureDenied}from"./chunk-VRJF6JLR.js";import{featureLicenseGuidance}from"./chunk-QUMDKN3U.js";import{repeatedValues}from"./chunk-RX5HWI4L.js";import{charCount,readBody}from"./chunk-IWYJSQ5I.js";import{isExactNumericId}from"./chunk-2AVQILQQ.js";import{ApiError}from"./chunk-JA5A6UJ2.js";import{LIST_PAGING_HELP,PAGE_NUMBER_LIST_FLAGS,envelopePaging,nonEmpty,positiveInteger}from"./chunk-MI6HVYR2.js";import{requireResolved,withResolved}from"./chunk-PS5QFKHB.js";
4
4
  import{isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiRejectedError,ApiResponseError,NetworkError,UsageError}from"./chunk-VFPY2A23.js";import{NotLoggedInError,SessionExpiredError}from"./chunk-XNLIEUAW.js";var SALES_PATH="/api/v2/sales";var REASONS_PATH=`${SALES_PATH}/ai-review-reasons`;function documentForbidden(body){if(salesFeatureDenied(body))return featureLicenseGuidance("\u8CA9\u58F2\u7BA1\u7406");const reason=body?.error;if(typeof reason==="string"&&reason.endsWith("\u6A29\u9650\u304C\u3042\u308A\u307E\u305B\u3093")){return`${reason}\uFF08\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306B\u7D10\u3065\u304F\u66F8\u985E\u306F\u305D\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u30E1\u30F3\u30D0\u30FC\u3001\u7D10\u3065\u304B\u306A\u3044\u66F8\u985E\u306F\u4F5C\u6210\u8005\u30FB\u62C5\u5F53\u8005\u3068\u7BA1\u7406\u8005\u3060\u3051\u304C\u6271\u3048\u307E\u3059\uFF09`}
5
5
  return void 0}function reasonsForbidden(body){if(body?.error==="permission_denied")return featureLicenseGuidance("\u8CA9\u58F2\u7BA1\u7406");return"\u7406\u7531\u306E\u6A2A\u65AD\u4E00\u89A7\u30FB\u6587\u6848\u751F\u6210\u30FBPR \u4F5C\u6210\u306F\u8CA9\u58F2\u7BA1\u7406\u306E\u7BA1\u7406\u8005\u3060\u3051\u304C\u4F7F\u3048\u307E\u3059\uFF08\u66F8\u985E\u3092\u8DE8\u3044\u3067\u7406\u7531\u3092\u8AAD\u3080\u305F\u3081\uFF09\u3002\u30C6\u30CA\u30F3\u30C8\u304C\u8CA9\u58F2\u7BA1\u7406\u3092\u5951\u7D04\u3057\u3066\u3044\u308B\u304B\u30FB\u3042\u306A\u305F\u306E\u8CA9\u58F2\u7BA1\u7406\u306E\u6A29\u9650\u304C\u300C\u7BA1\u7406\u8005\u300D\u304B\u3092\u30C6\u30CA\u30F3\u30C8\u7BA1\u7406\u8005\u306B\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002"}
6
6
  var ESTIMATE={name:"estimate",label:"\u898B\u7A4D",segment:"estimates"};var INVOICE={name:"invoice",label:"\u8ACB\u6C42",segment:"invoices"};var CONTRACT={name:"contract",label:"\u53D6\u5F15\u5951\u7D04",segment:"contracts"};var JUDGMENTS={no_issue:"\u78BA\u8A8D\u3057\u305F\u304C\u554F\u984C\u306A\u3044\u3068\u5224\u65AD\u3057\u305F",corrected:"\u6307\u6458\u3092\u53D7\u3051\u3066\u66F8\u985E\u3092\u4FEE\u6B63\u3057\u305F",not_applicable:"\u3053\u306E\u6848\u4EF6\u306B\u306F\u5F53\u3066\u306F\u307E\u3089\u306A\u3044\u6307\u6458\u3060\u3068\u5224\u65AD\u3057\u305F"};
package/dist/cli.js CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire as __twpCreateRequire } from 'node:module';
3
3
  const require = __twpCreateRequire(import.meta.url);
4
- import{GLOBAL_OPTIONS_HELP}from"./chunk-PECIBNFD.js";import{parseArgv}from"./chunk-IVFSEXD3.js";import"./chunk-2LOT54OO.js";import"./chunk-MLRBDF44.js";import"./chunk-VERYHAWV.js";import"./chunk-QQRJLH6B.js";import"./chunk-VSJBJXZO.js";var VERSION=true?"0.86.0":"0.0.0-dev";var HELP=`twp ${VERSION} \u2014 TWP CLI
4
+ import{GLOBAL_OPTIONS_HELP}from"./chunk-PECIBNFD.js";import{parseArgv}from"./chunk-QLDKF6GK.js";import"./chunk-2LOT54OO.js";import"./chunk-MLRBDF44.js";import"./chunk-EOXTDZTA.js";import"./chunk-QQRJLH6B.js";import"./chunk-VSJBJXZO.js";var VERSION=true?"0.88.0":"0.0.0-dev";var HELP=`twp ${VERSION} \u2014 TWP CLI
5
5
 
6
6
  \u4F7F\u3044\u65B9:
7
7
  twp \u5BFE\u8A71 TUI \u3092\u8D77\u52D5
@@ -112,6 +112,12 @@ import{GLOBAL_OPTIONS_HELP}from"./chunk-PECIBNFD.js";import{parseArgv}from"./chu
112
112
  \u7F6E\u63DB\u30FB\u5EC3\u6B62\u3057\u305F\u6A5F\u306E stale \u306A\u767B\u9332\u3092\u4E00\u89A7\u304B\u3089\u5916\u3059\uFF08\u7BA1\u7406\u8005\u306E\u307F\uFF09\u3002
113
113
  \u5BFE\u8C61\uFF08\u30DB\u30B9\u30C8\u540D\u30FB\u6700\u7D42\u5FDC\u7B54\uFF09\u3092\u8868\u793A\u3057\u3066\u6B62\u307E\u308A\u3001--yes \u3067\u78BA\u5B9A\u3002
114
114
  \u7A3C\u50CD\u4E2D\uFF08live\uFF09\u306E\u767B\u9332\u306F\u5916\u305B\u306A\u3044\u3002\u540C\u3058\u6A5F\u304C\u518D\u3073\u5FDC\u7B54\u3059\u308C\u3070\u4E00\u89A7\u306B\u623B\u308B
115
+ twp task-loop capacity list [--project <\u30AD\u30FC|UUID>] [--include-stopped]
116
+ [--output json|table|tsv] [--query <\u5F0F>]
117
+ \u5B9F\u884C\u6A5F\u3068 AI \u30A2\u30AB\u30A6\u30F3\u30C8\u67A0\u306E\u72B6\u614B\uFF08\u753B\u9762\u300C\u30EB\u30FC\u30D7\u5B9F\u884C\u6A5F\u72B6\u614B\u300D\u3068\u540C\u3058\u5185\u5BB9\uFF09\u3092
118
+ \u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u6A2A\u65AD\u3067\u8AAD\u3080\uFF08\u500B\u4EBA\u30AD\u30E5\u30FC\u3092\u542B\u3080\uFF09\u3002\u67A0\u3054\u3068\u306B\u72B6\u614B\u30FB5\u6642\u9593\u67A0\uFF0F\u9031\u9593\u67A0\u306E
119
+ \u5229\u7528\u7387\u3068\u30EA\u30BB\u30C3\u30C8\u6642\u523B\u30FB\u518D\u30ED\u30B0\u30A4\u30F3\u671F\u9650\u30FB\u89B3\u6E2C\u6642\u523B\uFF0830\u5206\u8D85\u306F stale\uFF09\u3092\u51FA\u3059\u3002
120
+ \u505C\u6B62\u4E2D\u306E\u6A5F\u306F\u65E2\u5B9A\u3067\u51FA\u3055\u306A\u3044\u3002--project \u306F\u8FD4\u3063\u305F\u4E2D\u304B\u3089\u7D5E\u308B\u3060\u3051
115
121
  twp task-loop capacity report --project <\u30AD\u30FC|UUID>
116
122
  \u30EB\u30FC\u30D7\u3092\u56DE\u3055\u305A\u306B AI \u30A2\u30AB\u30A6\u30F3\u30C8\u67A0\u306E\u89B3\u6E2C\u5024\u30921\u56DE\u3060\u3051\u9001\u308B\uFF08\u5E38\u99D0\u3057\u306A\u3044\u3002
117
123
  \u5B9A\u671F\u5B9F\u884C\u306F systemd timer / cron / launchd \u306B\u4EFB\u305B\u308B\uFF09\u3002\u8A2D\u5B9A\u306F\u30EB\u30FC\u30D7\u3068
@@ -268,6 +274,12 @@ import{GLOBAL_OPTIONS_HELP}from"./chunk-PECIBNFD.js";import{parseArgv}from"./chu
268
274
  twp task category list \u30BF\u30B9\u30AF\u306E\u30AB\u30C6\u30B4\u30EA\u3092\u4E00\u89A7\u3059\u308B
269
275
  twp task milestone list \u30BF\u30B9\u30AF\u306E\u30DE\u30A4\u30EB\u30B9\u30C8\u30FC\u30F3\u3092\u4E00\u89A7\u3059\u308B
270
276
  twp task label list \u30BF\u30B9\u30AF\u306E\u30E9\u30D9\u30EB\u3092\u4E00\u89A7\u3059\u308B
277
+ twp task group list \u30BF\u30B9\u30AF\u30B0\u30EB\u30FC\u30D7\uFF08\u95B2\u89A7\u30E1\u30F3\u30D0\u30FC\u9650\u5B9A\uFF09\u3092\u4E00\u89A7\u3059\u308B
278
+ twp task group create \u30BF\u30B9\u30AF\u30B0\u30EB\u30FC\u30D7\u3092\u4F5C\u6210\u3059\u308B\uFF08--name\u30FB--member\uFF09
279
+ twp task group update <\u30B0\u30EB\u30FC\u30D7>
280
+ \u30BF\u30B9\u30AF\u30B0\u30EB\u30FC\u30D7\u3092\u66F4\u65B0\u3059\u308B\uFF08\u540D\u524D\u30FB\u95B2\u89A7\u30E1\u30F3\u30D0\u30FC\u30FB\u8868\u793A\u9806\uFF09
281
+ twp task group delete <\u30B0\u30EB\u30FC\u30D7>
282
+ \u30BF\u30B9\u30AF\u30B0\u30EB\u30FC\u30D7\u3092\u524A\u9664\u3059\u308B\uFF08--yes \u304C\u8981\u308B\uFF09
271
283
  twp media list \u30E1\u30C7\u30A3\u30A2\u30E9\u30A4\u30D6\u30E9\u30EA\u306E\u30D5\u30A1\u30A4\u30EB\u3092\u4E00\u89A7\u3059\u308B\uFF08\u65E2\u5B9A\u306F\u500B\u4EBA\u30D5\u30A1\u30A4\u30EB\uFF09
272
284
  twp media upload \u30D5\u30A1\u30A4\u30EB\u3092\u30A2\u30C3\u30D7\u30ED\u30FC\u30C9\u3059\u308B\uFF08--file \u5FC5\u9808\u30FB3\u5F80\u5FA9\u30921\u30B3\u30DE\u30F3\u30C9\u3067\uFF09
273
285
  twp media download <\u30D5\u30A1\u30A4\u30EBID>
@@ -1391,16 +1403,16 @@ TUI \u5185:
1391
1403
  TWP API \u3092\u547C\u3079\u307E\u3059\u3002TWP API \u306E\u30C4\u30FC\u30EB\u306F\u65E2\u5B9A\u3067\u78BA\u8A8D\u304C\u51FA\u307E\u3059\uFF08-p \u3067\u306F\u62D2\u5426\u3002--allowed-tools \u3067\u540D\u524D\u3092\u8A31\u53EF\uFF09\u3002
1392
1404
  \u4F1A\u8A71\u30FB\u30ED\u30FC\u30AB\u30EB\u30C4\u30FC\u30EB\uFF08\u30D5\u30A1\u30A4\u30EB\u30FB\u30B3\u30DE\u30F3\u30C9\u30FBgit\uFF09\u306F\u30C6\u30CA\u30F3\u30C8\u306E\u30AF\u30EC\u30B8\u30C3\u30C8\u3067\u5B9F\u969B\u306B\u52D5\u304D\u307E\u3059\u3002
1393
1405
  `;function ignoreEpipe(stream){stream.on("error",err=>{if(err.code==="EPIPE")process.exit(0);throw err})}async function main(){const nodeMajor=Number(process.versions.node.split(".")[0]);if(nodeMajor<22){process.stderr.write(`twp-cli \u306B\u306F Node.js 22 \u4EE5\u4E0A\u304C\u5FC5\u8981\u3067\u3059\uFF08\u73FE\u5728: ${process.versions.node}\uFF09
1394
- `);process.exit(1)}ignoreEpipe(process.stdout);ignoreEpipe(process.stderr);if(process.env["TWP_AUTO_UPDATE_WORKER"]==="1"){const{runAutoUpdateWorker}=await import("./auto-update-worker-XT4VB4LJ.js");await runAutoUpdateWorker().catch(()=>void 0);return}const[first,...rest]=process.argv.slice(2);if(first==="__complete"||first==="completion"){const completion=await import("./completion-C6ZQCDT2.js");if(first==="completion"){process.exitCode=completion.runCompletion(rest,process.stdout,process.stderr);return}
1395
- const[{loadDomain},{loadUserConfig}]=await Promise.all([import("./registry-XHUKN55J.js"),import("./config-XYWRBIC6.js")]);process.exitCode=await completion.runComplete(rest,process.stdout,{loadDomain,profileNames:()=>Object.keys(loadUserConfig().profiles??{})});return}if(first==="configure"){const autoUpdate2=await import("./auto-update-FXXQHBV5.js");autoUpdate2.registerRunning();autoUpdate2.onStartup(VERSION);const{runConfigure}=await import("./configure-3JID6MQ5.js");process.exitCode=
1406
+ `);process.exit(1)}ignoreEpipe(process.stdout);ignoreEpipe(process.stderr);if(process.env["TWP_AUTO_UPDATE_WORKER"]==="1"){const{runAutoUpdateWorker}=await import("./auto-update-worker-XT4VB4LJ.js");await runAutoUpdateWorker().catch(()=>void 0);return}const[first,...rest]=process.argv.slice(2);if(first==="__complete"||first==="completion"){const completion=await import("./completion-G54M3EFF.js");if(first==="completion"){process.exitCode=completion.runCompletion(rest,process.stdout,process.stderr);return}
1407
+ const[{loadDomain},{loadUserConfig}]=await Promise.all([import("./registry-FAISFFZY.js"),import("./config-XYWRBIC6.js")]);process.exitCode=await completion.runComplete(rest,process.stdout,{loadDomain,profileNames:()=>Object.keys(loadUserConfig().profiles??{})});return}if(first==="configure"){const autoUpdate2=await import("./auto-update-FXXQHBV5.js");autoUpdate2.registerRunning();autoUpdate2.onStartup(VERSION);const{runConfigure}=await import("./configure-3JID6MQ5.js");process.exitCode=
1396
1408
  await runConfigure(rest);return}const args=parseArgv(process.argv.slice(2));if(args.command==="version"){process.stdout.write(`${VERSION}
1397
- `);return}if(args.command==="help"){process.stdout.write(HELP);return}if(args.movedCommand!==void 0){const{MOVED_QUEUE_COMMAND_MESSAGE}=await import("./dispatch-HHWTJ3P4.js");process.stderr.write(MOVED_QUEUE_COMMAND_MESSAGE);process.exitCode=2;return}if(args.unknown.length>0){process.stderr.write(`\u4E0D\u660E\u306A\u5F15\u6570: ${args.unknown.join(" ")}
1409
+ `);return}if(args.command==="help"){process.stdout.write(HELP);return}if(args.movedCommand!==void 0){const{MOVED_QUEUE_COMMAND_MESSAGE}=await import("./dispatch-GSBMRWQ4.js");process.stderr.write(MOVED_QUEUE_COMMAND_MESSAGE);process.exitCode=2;return}if(args.unknown.length>0){process.stderr.write(`\u4E0D\u660E\u306A\u5F15\u6570: ${args.unknown.join(" ")}
1398
1410
 
1399
- ${HELP}`);process.exitCode=2;return}const autoUpdate=await import("./auto-update-FXXQHBV5.js");autoUpdate.registerRunning();if(args.command==="task-loop"&&args.taskLoopAction!=="capacity"){process.env[autoUpdate.DISABLE_ENV]="1"}else if(args.command!=="update"){autoUpdate.onStartup(VERSION)}if(args.command==="domain"&&args.domain!==void 0){const{runDomain}=await import("./run-D5WEOH42.js");process.exitCode=await runDomain({domain:args.domain,...args.operation!==void 0?{operation:args.operation}:
1400
- {},argv:args.domainArgv,help:args.domainHelp,globals:{...args.profile!==void 0?{profile:args.profile}:{},...args.output!==void 0?{output:args.output}:{},...args.query!==void 0?{query:args.query}:{},dryRun:args.dryRun,debug:args.debug,yes:args.yes,refresh:args.refresh},version:VERSION});return}if(args.command==="api"){const{runApiCommand}=await import("./api-command-3ETVO5IN.js");process.exitCode=await runApiCommand({argv:args.domainArgv,help:args.domainHelp,globals:{...args.profile!==void 0?{profile:args.
1401
- profile}:{},...args.output!==void 0?{output:args.output}:{},...args.query!==void 0?{query:args.query}:{},dryRun:args.dryRun,debug:args.debug,yes:args.yes},version:VERSION});return}if(args.command==="update"){const{runUpdate}=await import("./update-5NJSC26F.js");process.exitCode=await runUpdate({...args.profile!==void 0?{profile:args.profile}:{},version:VERSION});return}if(args.command==="login"||args.command==="logout"||args.command==="whoami"){const{runLogin,runLogout,runWhoami}=await import("./commands-KKEZJCLF.js");
1402
- const options={profile:args.profile,method:args.loginMethod,tenant:args.tenant,noBrowser:args.loginNoBrowser,cliVersion:VERSION,force:args.logoutForce,...args.output!==void 0?{output:args.output}:{},...args.query!==void 0?{query:args.query}:{}};const runner=args.command==="login"?runLogin:args.command==="logout"?runLogout:runWhoami;process.exitCode=await runner(options);return}if(args.command==="task-loop"){const{runTaskLoop}=await import("./commands-GQBRPBFW.js");process.exitCode=await runTaskLoop(
1411
+ ${HELP}`);process.exitCode=2;return}const autoUpdate=await import("./auto-update-FXXQHBV5.js");autoUpdate.registerRunning();if(args.command==="task-loop"&&args.taskLoopAction!=="capacity"){process.env[autoUpdate.DISABLE_ENV]="1"}else if(args.command!=="update"){autoUpdate.onStartup(VERSION)}if(args.command==="domain"&&args.domain!==void 0){const{runDomain}=await import("./run-UH7QKMO3.js");process.exitCode=await runDomain({domain:args.domain,...args.operation!==void 0?{operation:args.operation}:
1412
+ {},argv:args.domainArgv,help:args.domainHelp,globals:{...args.profile!==void 0?{profile:args.profile}:{},...args.output!==void 0?{output:args.output}:{},...args.query!==void 0?{query:args.query}:{},dryRun:args.dryRun,debug:args.debug,yes:args.yes,refresh:args.refresh},version:VERSION});return}if(args.command==="api"){const{runApiCommand}=await import("./api-command-XFQUUFDV.js");process.exitCode=await runApiCommand({argv:args.domainArgv,help:args.domainHelp,globals:{...args.profile!==void 0?{profile:args.
1413
+ profile}:{},...args.output!==void 0?{output:args.output}:{},...args.query!==void 0?{query:args.query}:{},dryRun:args.dryRun,debug:args.debug,yes:args.yes},version:VERSION});return}if(args.command==="update"){const{runUpdate}=await import("./update-5NJSC26F.js");process.exitCode=await runUpdate({...args.profile!==void 0?{profile:args.profile}:{},version:VERSION});return}if(args.command==="login"||args.command==="logout"||args.command==="whoami"){const{runLogin,runLogout,runWhoami}=await import("./commands-V7ZBTH7I.js");
1414
+ const options={profile:args.profile,method:args.loginMethod,tenant:args.tenant,noBrowser:args.loginNoBrowser,cliVersion:VERSION,force:args.logoutForce,...args.output!==void 0?{output:args.output}:{},...args.query!==void 0?{query:args.query}:{}};const runner=args.command==="login"?runLogin:args.command==="logout"?runLogout:runWhoami;process.exitCode=await runner(options);return}if(args.command==="task-loop"){const{runTaskLoop}=await import("./commands-2GRO356U.js");process.exitCode=await runTaskLoop(
1403
1415
  {action:args.taskLoopAction??"run",project:args.project,profile:args.profile,safe:args.safe,daemon:args.daemon,interval:args.interval,maxCycles:args.maxCycles,forceRunner:args.forceRunner,force:args.stopForce,drain:args.stopDrain,engine:args.engine,version:VERSION,verbose:args.verbose,scheduleNow:args.scheduleNow,scheduleCounts:args.scheduleCounts,scheduleGate:args.scheduleGate,scheduleOp:args.scheduleOp,scheduleConfigOp:args.scheduleConfigOp,scheduleId:args.scheduleId,charterOp:args.charterOp,charterInput:args.
1404
- charterFile,charterOutput:args.charterOut,charterRevision:args.charterRevision,settingsOp:args.settingsOp,skillOp:args.skillOp,skillName:args.skillName,skillAll:args.skillAll,skillDir:args.skillDir,skillConfig:args.skillConfig,output:args.output,query:args.query,revisionFrom:args.revisionFrom,revisionTo:args.revisionTo,planOp:args.planOp,capacityOp:args.capacityOp,runnerOp:args.runnerOp,runnerId:args.runnerTargetId,planEmpty:args.planEmpty,planCheck:args.planCheck,yes:args.yes,ais:args.ais,workspace:args.
1405
- workspace,aiConfigFile:args.aiConfigFile,noAiConfigFile:args.noAiConfigFile});return}if(args.command==="print"){const{runOneShot}=await import("./oneshot-S6T7VJNY.js");process.exitCode=await runOneShot({prompt:args.prompt??"",fromStdin:args.promptFromStdin,mode:args.mode??"dev",...args.permissionMode!==void 0?{permissionMode:args.permissionMode}:{},allowedTools:args.allowedTools,disallowedTools:args.disallowedTools,...args.model!==void 0?{model:args.model}:{},...args.profile!==void 0?{profile:args.
1406
- profile}:{},version:VERSION});return}const{startTui}=await import("./app-PM4PZSKD.js");await startTui({mode:args.mode,permissionMode:args.permissionMode,allowedTools:args.allowedTools,disallowedTools:args.disallowedTools,model:args.model,profile:args.profile,noTui:args.noTui||!process.stdout.isTTY,doctor:args.doctor,version:VERSION})}await main();
1416
+ charterFile,charterOutput:args.charterOut,charterRevision:args.charterRevision,settingsOp:args.settingsOp,skillOp:args.skillOp,skillName:args.skillName,skillAll:args.skillAll,skillDir:args.skillDir,skillConfig:args.skillConfig,output:args.output,query:args.query,revisionFrom:args.revisionFrom,revisionTo:args.revisionTo,planOp:args.planOp,capacityOp:args.capacityOp,includeStopped:args.includeStopped,runnerOp:args.runnerOp,runnerId:args.runnerTargetId,planEmpty:args.planEmpty,planCheck:args.planCheck,
1417
+ yes:args.yes,ais:args.ais,workspace:args.workspace,aiConfigFile:args.aiConfigFile,noAiConfigFile:args.noAiConfigFile});return}if(args.command==="print"){const{runOneShot}=await import("./oneshot-3N2W247J.js");process.exitCode=await runOneShot({prompt:args.prompt??"",fromStdin:args.promptFromStdin,mode:args.mode??"dev",...args.permissionMode!==void 0?{permissionMode:args.permissionMode}:{},allowedTools:args.allowedTools,disallowedTools:args.disallowedTools,...args.model!==void 0?{model:args.model}:
1418
+ {},...args.profile!==void 0?{profile:args.profile}:{},version:VERSION});return}const{startTui}=await import("./app-M56CCOE7.js");await startTui({mode:args.mode,permissionMode:args.permissionMode,allowedTools:args.allowedTools,disallowedTools:args.disallowedTools,model:args.model,profile:args.profile,noTui:args.noTui||!process.stdout.isTTY,doctor:args.doctor,version:VERSION})}await main();
@@ -1,12 +1,12 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{ScheduleApi,collectDue,gateStatus,nowInZone,parseCounts,promptSection}from"./chunk-IIK77LSC.js";import{NO_PLAN_SESSION,RECENT_ADVANCE_WINDOW_HOURS,ReleaseOutcomeLog,buildDynamicBlocks,buildRecentCandidateIndex,createItem,enqueueBlockerRecovery,enqueueDevVerifyForMerged,enqueueReleasePartialMergeRerun,enqueueReleasePhase5Recovery,fileSkillNames,findRecentCandidate,formatInflightEntry,formatPlanResultLine,formatRecentAdvance,formatResumeHold,inflightEntries,inflightStaleHours,openPlanSession,
4
- parseOutcomeCode,parseReleaseResult,parseTaskStatusSnapshot,pendingTaskKeys,resolveRecentAdvance,resolveResumeHold,shouldSuppressForResume,shouldSuppressForStatus,staleFloorHours,unavailableChecks,windowStartMicros}from"./chunk-5LFUD7K3.js";import{EngineNotConfiguredError,NoopEngine,UnknownEngineError,aiUnavailableLabel,assertKnownEngine,failureHint,isAiUnavailable,needsHumanToRestoreAi}from"./chunk-MBPJV745.js";import{ServerSkillCatalog,formatSkillOrigins}from"./chunk-QGRBZ2C2.js";
5
- import{claudeConfigDir,resolveDetectDeps}from"./chunk-5SONMN6K.js";import{InstanceLock,buildLockOwner,defaultIsLoopProcess,writeLockOwner}from"./chunk-3WHC4FSG.js";import{LoopSettingsApplier,renderStepBudget}from"./chunk-4FCPLEZN.js";import"./chunk-MYBIPHZ7.js";import"./chunk-A4LFG7MW.js";import"./chunk-VRBI2NPI.js";import{duplicateTaskKeyDropReason,excludedKeyInArgs,extractPlanJson,parseOpsCount,parsePlanExcludeKeys,placeholderTaskKey,releaseDeployDropReason,
6
- stepToItem,zeroTargetDropReasons}from"./chunk-DR6BUZXT.js";import{redactLoopOutput}from"./chunk-NXPLTDN4.js";import{buildLoopConfig,evaluateOwnership,exportStateDirEnv,localConfigPath,loopStateDir}from"./chunk-Y24FMUYU.js";import{describeOperations,evaluatePlanGate,planGateStatePath,recordPlanned}from"./chunk-CVX2YWHC.js";import{CapacityReporter}from"./chunk-VYDPW2YO.js";import{formatHookIds,formatHookWiring,runHook,runPrefetch,runPreflight}from"./chunk-TTST7UDR.js";
7
- import{exclusiveInflightEntries,formatExclusiveEntry,normalizeSkillName,spawnSyncResolved}from"./chunk-FABDZBDZ.js";import{setSkillPrefix,skillCommand,skillFromPrompt,stripSkillCommand}from"./chunk-6CS5L24D.js";import{killProcessTree}from"./chunk-N2UVRM3Z.js";import{AgentLoopApi,describeError,filterByStatus,isPermanent,pick,pickString}from"./chunk-O52RKZCC.js";import{PRIVATE_PROJECT_REF,isPrivateProjectId,isPrivateProjectRef,privateProjectId,projectFileKey}from"./chunk-RMFLTSOV.js";
8
- import{ULID_RE,loopProjectIdPolicy,resolveProjectRef}from"./chunk-HVZUXLQ4.js";import"./chunk-IXT2X5BZ.js";import"./chunk-II5RVJQN.js";import"./chunk-VFPY2A23.js";import{joinFor}from"./chunk-PMOUHEJQ.js";import{AuthSession}from"./chunk-XNLIEUAW.js";import{httpFetch}from"./chunk-J7QYPKVK.js";import{compareVersionCores,parseVersionCore}from"./chunk-DXXFUNYN.js";import"./chunk-5WGOHFAS.js";import{effectiveApiUrl,resolveProfile}from"./chunk-EDF4U5BT.js";
9
- import{twpHomeDir}from"./chunk-RZVI6PMW.js";import{stripTerminalControls}from"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";import fs9 from"fs";import path7 from"path";import fs from"fs";import path from"path";var LoopLogger=class{constructor(runnerId,logFile,out=process.stdout,now=()=>new Date){this.runnerId=runnerId;this.out=out;this.now=now;if(logFile){fs.mkdirSync(path.dirname(logFile),{recursive:true});this.stream=fs.createWriteStream(logFile,{flags:"a"})}}runnerId;out;now;stream=null;log(message){const d=this.now();const ts=`${d.getFullYear()}-${pad(d.getMonth()+1)}-${pad(d.getDate())} ${pad(d.getHours())}:${pad(d.getMinutes())}:${pad(d.getSeconds())}`;const line=`[${ts}] [${this.runnerId}] ${stripTerminalControls(
3
+ import{ScheduleApi,collectDue,gateStatus,nowInZone,parseCounts,promptSection}from"./chunk-6M5NUVJJ.js";import{NO_PLAN_SESSION,RECENT_ADVANCE_WINDOW_HOURS,buildDynamicBlocks,buildRecentCandidateIndex,createItem,enqueueBlockerRecovery,enqueueDevVerifyForMerged,enqueueReleasePartialMergeRerun,enqueueReleasePhase5Recovery,fileSkillNames,findRecentCandidate,formatInflightEntry,formatPlanResultLine,formatRecentAdvance,formatResumeHold,inflightEntries,inflightStaleHours,openPlanSession,parseOutcomeCode,
4
+ parseReleaseResult,parseTaskStatusSnapshot,pendingTaskKeys,resolveRecentAdvance,resolveResumeHold,shouldSuppressForResume,shouldSuppressForStatus,staleFloorHours,unavailableChecks,windowStartMicros}from"./chunk-Q5NZXJNI.js";import{EngineNotConfiguredError,NoopEngine,UnknownEngineError,aiUnavailableLabel,assertKnownEngine,failureHint,isAiUnavailable,needsHumanToRestoreAi}from"./chunk-MBPJV745.js";import{ServerSkillCatalog,formatSkillOrigins}from"./chunk-3OCV6SOR.js";import{claudeConfigDir,
5
+ resolveDetectDeps}from"./chunk-5SONMN6K.js";import{InstanceLock,buildLockOwner,defaultIsLoopProcess,writeLockOwner}from"./chunk-3WHC4FSG.js";import{LoopSettingsApplier,renderStepBudget}from"./chunk-OVV2PTZF.js";import"./chunk-MYBIPHZ7.js";import"./chunk-A4LFG7MW.js";import"./chunk-VRBI2NPI.js";import{duplicateTaskKeyDropReason,excludedKeyInArgs,extractPlanJson,parseOpsCount,parsePlanExcludeKeys,placeholderTaskKey,releaseDeployDropReason,stepToItem,zeroTargetDropReasons}from"./chunk-3D734ED2.js";
6
+ import{redactLoopOutput}from"./chunk-NXPLTDN4.js";import{buildLoopConfig,evaluateOwnership,exportStateDirEnv,localConfigPath,loopStateDir}from"./chunk-INS77QHY.js";import{describeOperations,evaluatePlanGate,planGateStatePath,recordPlanned}from"./chunk-CVX2YWHC.js";import{CapacityReporter}from"./chunk-VYDPW2YO.js";import{formatHookIds,formatHookWiring,runHook,runPrefetch,runPreflight}from"./chunk-TTST7UDR.js";import{exclusiveInflightEntries,formatExclusiveEntry,normalizeSkillName,
7
+ spawnSyncResolved}from"./chunk-FABDZBDZ.js";import{setSkillPrefix,skillCommand,skillFromPrompt,stripSkillCommand}from"./chunk-6CS5L24D.js";import{killProcessTree}from"./chunk-N2UVRM3Z.js";import{AgentLoopApi,describeError,filterByStatus,isPermanent,pick,pickString}from"./chunk-UZUV5FYG.js";import{PRIVATE_PROJECT_REF,isPrivateProjectId,isPrivateProjectRef,privateProjectId,projectFileKey}from"./chunk-RMFLTSOV.js";import{ULID_RE,loopProjectIdPolicy,resolveProjectRef}from"./chunk-HVZUXLQ4.js";
8
+ import"./chunk-IXT2X5BZ.js";import"./chunk-II5RVJQN.js";import"./chunk-VFPY2A23.js";import{joinFor}from"./chunk-PMOUHEJQ.js";import{AuthSession}from"./chunk-XNLIEUAW.js";import{httpFetch}from"./chunk-J7QYPKVK.js";import{compareVersionCores,parseVersionCore}from"./chunk-DXXFUNYN.js";import"./chunk-5WGOHFAS.js";import{effectiveApiUrl,resolveProfile}from"./chunk-EDF4U5BT.js";import{twpHomeDir}from"./chunk-RZVI6PMW.js";import{stripTerminalControls}from"./chunk-NHYMHCAT.js";
9
+ import"./chunk-VSJBJXZO.js";import fs9 from"fs";import path7 from"path";import fs from"fs";import path from"path";var LoopLogger=class{constructor(runnerId,logFile,out=process.stdout,now=()=>new Date){this.runnerId=runnerId;this.out=out;this.now=now;if(logFile){fs.mkdirSync(path.dirname(logFile),{recursive:true});this.stream=fs.createWriteStream(logFile,{flags:"a"})}}runnerId;out;now;stream=null;log(message){const d=this.now();const ts=`${d.getFullYear()}-${pad(d.getMonth()+1)}-${pad(d.getDate())} ${pad(d.getHours())}:${pad(d.getMinutes())}:${pad(d.getSeconds())}`;const line=`[${ts}] [${this.runnerId}] ${stripTerminalControls(
10
10
  message)}
11
11
  `;this.out.write(line);this.stream?.write(line)}separator(){this.log("=".repeat(60))}close(){this.stream?.end();this.stream=null}};function pad(n){return String(n).padStart(2,"0")}function rotateLogs(dir,retentionDays,now=Date.now()){if(retentionDays<=0)return;const cutoff=now-retentionDays*864e5;let entries;try{entries=fs.readdirSync(dir)}catch{return}for(const name of entries){if(!/^(agent-loop|task-loop|step|plan|schedule-enqueued)-.*\.(log|txt)$/.test(name))continue;const file=path.join(dir,
12
12
  name);try{if(fs.statSync(file).mtimeMs<cutoff)fs.rmSync(file,{force:true})}catch{}}}import fs6 from"fs";import os2 from"os";import path4 from"path";var MAX_OUTCOME_DETAIL_LENGTH=1e3;function parseOutcomeDetail(logText){const matches=[...logText.matchAll(/\b[A-Z][A-Z0-9_]*_RESULT:[^\n]*/g)];const line=matches.at(-1)?.[0];if(line===void 0)return null;const sep=line.indexOf("|");if(sep<0)return null;const detail=line.slice(sep+1).split("|").map(s=>s.trim()).filter(s=>s!=="").join(" | ");return detail===""?null:detail.slice(0,MAX_OUTCOME_DETAIL_LENGTH)}var str=v=>typeof v==="string"&&v!==""?v:null;function toRun(v){if(v===null||typeof v!=="obje\
@@ -122,11 +122,12 @@ log.log(` \u5B9A\u671F\u30B9\u30B1\u30B8\u30E5\u30FC\u30EB\u5C65\u6B74\u3092\u6
122
122
  \u3093\u3067\u3057\u305F\uFF08\u7406\u7531: ${why}\uFF09\u3002\u30EA\u30FC\u30B9\u671F\u9650\u307E\u3067\u518D\u8A66\u884C\u3067\u304D\u307E\u305B\u3093`)}}async promptSection(enqueuedFile){const cfg=await this.loadConfig();if("error"in cfg){this.deps.log.log(` \u26A0\uFE0F \u8A08\u753B\u30D7\u30ED\u30F3\u30D7\u30C8\u7528\u306E\u5B9A\u671F\u30BB\u30AF\u30B7\u30E7\u30F3\u3092\u751F\u6210\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F: ${cfg.error}`);this.deps.log.log(" \u8A08\u753BAI\u306B\u300C\u6295\u5165\u6E08\u307F\u306E\u5B9A\u671F\u30BF\u30B9\u30AF\u300D\u3092\u4F1D\u3048\
123
123
  \u3089\u308C\u306A\u3044\u305F\u3081\u3001\u91CD\u8907\u6295\u5165\u306E\u6291\u6B62\u304C\u5F31\u307E\u308A\u307E\u3059");return""}const hist=await this.loadHistory();if("error"in hist){this.deps.log.log(` \u26A0\uFE0F \u5B9A\u671F\u30BB\u30AF\u30B7\u30E7\u30F3\u306E\u300C\u6B21\u56DE\u767A\u706B\u4E88\u5B9A\u300D\u3092\u7701\u7565\u3057\u307E\u3059\uFF08\u5C65\u6B74\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093: ${hist.error}\uFF09`)}const lines=readEnqueuedLines(enqueuedFile);return promptSection(
124
124
  cfg.config,this.now(),"error"in hist?[]:hist.rows,lines,!("error"in hist))}};function readEnqueuedLines(file){if(!file)return[];let text;try{text=fs5.readFileSync(file,"utf8")}catch{return[]}return text.split("\n").filter(l=>l.trim()!=="").map(l=>l.replace(/\n$/,""))}async function refineCount(key,raw,hooks,cwd,run2=(hook,dir)=>runHook(hook,dir)){const hook=hooks.get(key);if(!hook||raw===null||raw===0)return{total:raw,note:null};const r=await run2(hook,cwd);const out=r.stdout.trim();if(!r.ok||!/^\d+$/.test(out)){return{total:raw,note:`${key}: \u6570\u3048\u76F4\u3057\u306B\u5931\u6557\u3057\u305F\u305F\u3081\u7D20\u306E\u4EF6\u6570 ${raw} \u3092\u4F7F\u3044\u307E\u3059\uFF08${r.ok?"\u51FA\u529B\u304C\u6574\u65701\u884C\u3067\u306F\u306A\u3044":r.reason}\uFF09`}}
125
- const n=Number.parseInt(out,10);if(n>raw){return{total:raw,note:`${key}: \u6570\u3048\u76F4\u3057\u306E\u7D50\u679C ${n} \u304C\u7D20\u306E\u4EF6\u6570 ${raw} \u3092\u8D85\u3048\u308B\u305F\u3081\u7D20\u306E\u4EF6\u6570\u3092\u4F7F\u3044\u307E\u3059`}}return{total:n,note:`${key}: ${raw}\u4EF6\u306E\u3046\u3061\u30B2\u30FC\u30C8\u306B\u52B9\u304F\u3082\u306E ${n}\u4EF6\uFF08${hook.id}\uFF09`}}function exitReasonFor(outcome){if(outcome==="ok")return"ok";if(outcome==="timeout")return"timeout";if(outcome==="rate-limited")return"rate_limited";if(outcome==="aborted")return"interrupted";if(outcome==="max-turns")return"max_turns";return"error"}function withFailureHint(base,output){const hint=failureHint(redactLoopOutput(output));return hint===""?base:`${base} | ${hint}`}var STOP_WAIT_MAX_SEC=3600;var AI_RECOVERY_HINT="\u78BA\u8A8D: claude-auto-switch status \uFF0F \u5404AI CLI\u306E\u30ED\u30B0\u30A4\u30F3\u72B6\u614B\uFF08twp task-loop setup \u3067\u691C\u51FA\u7D50\u679C\u304C\
126
- \u51FA\u307E\u3059\uFF09";var ABORT_DRAIN_TIMEOUT_MS=15e3;function lastContractLine(logText,line){const prefix=line!==null&&/^[A-Z][A-Z0-9_]*$/.test(line)?line:"[A-Z][A-Z0-9_]*_RESULT";return[...logText.matchAll(new RegExp(`^(?:${prefix}):[^\\n]*`,"gm"))].at(-1)?.[0]??""}var TaskLoop=class{constructor(deps){this.deps=deps;this.writeback=new Writeback(deps.api,deps.config,deps.log);this.schedule=new ScheduleBridge({config:deps.config,log:deps.log,api:new ScheduleApi(deps.api),fetchCount:async(key,statusId)=>{
127
- const{total,error}=await deps.projectApi.countByStatus(deps.config.projectId,statusId);if(error){deps.log.log(` \u26A0\uFE0F require_zero\u300C${key}\u300D\u306E\u4EF6\u6570\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08${error}\uFF09\u3002\u3053\u306E\u67A0\u306F\u767A\u706B\u3057\u307E\u305B\u3093\uFF08fail-closed\uFF09`)}const refined=await refineCount(key,total,deps.config.operations.countHooks,deps.config.workspace);if(refined.note)deps.log.log(` ${refined.note}`);
128
- return refined.total}});this.engine=deps.engine;this.releaseLog=new ReleaseOutcomeLog(deps.config.releaseOutcomeLogPath);this.postDeps={api:deps.api,config:deps.config,log:deps.log,releaseLog:this.releaseLog};this.planLock=new PlanLock({api:deps.api,config:deps.config,log:deps.log,runner:deps.runner,hasPendingItems:async()=>await this.hasPendingItems()&&!this.nothingClaimableBacklog,reregister:async()=>{deps.runner.registered=false;await deps.runner.registerOrThrow()},...deps.sleepFn?{sleepFn:deps.
129
- sleepFn}:{}});this.trustGate=deps.trustGate??new TrustGate({enabled:()=>deps.config.ai.usesAi("claude"),check:()=>checkWorkspaceTrust(deps.config.workspace,{launcherBin:deps.config.claudeLauncher.bin})});this.timestamp=new Date().toISOString().replace(/[-:]/g,"").replace(/\..*$/,"");this.settings=deps.settings??new LoopSettingsApplier({api:deps.api,config:deps.config,log:m=>deps.log.log(m)});this.skills=deps.skills??new ServerSkillCatalog({api:deps.api,config:deps.config,log:m=>deps.log.log(m)})}deps;planGateFingerprint=null;lastPlanWasEmpty=false;writeback;schedule;planLock;planRunScheduled=[];planRunRecord=null;engine;releaseLog;postDeps;timestamp;deferredIds=new Set;midcycleEnqueued=0;aborting=false;draining=false;nothingClaimableBacklog=false;drainExitCode=0;drainWaiters=new Set;itemInFlight=null;ownershipLostItemId=null;abortDrained=null;cyclePreflightSection="";trustGate;settings;skills;sleep(ms){
125
+ const n=Number.parseInt(out,10);if(n>raw){return{total:raw,note:`${key}: \u6570\u3048\u76F4\u3057\u306E\u7D50\u679C ${n} \u304C\u7D20\u306E\u4EF6\u6570 ${raw} \u3092\u8D85\u3048\u308B\u305F\u3081\u7D20\u306E\u4EF6\u6570\u3092\u4F7F\u3044\u307E\u3059`}}return{total:n,note:`${key}: ${raw}\u4EF6\u306E\u3046\u3061\u30B2\u30FC\u30C8\u306B\u52B9\u304F\u3082\u306E ${n}\u4EF6\uFF08${hook.id}\uFF09`}}function exitReasonFor(outcome){if(outcome==="ok")return"ok";if(outcome==="timeout")return"timeout";if(outcome==="rate-limited")return"rate_limited";if(outcome==="aborted")return"interrupted";if(outcome==="max-turns")return"max_turns";return"error"}function withFailureHint(base,output){const hint=failureHint(redactLoopOutput(output));return hint===""?base:`${base} | ${hint}`}function unexecutedMessage(result){const base=`not executed: ${result.outcome}`;return result.aiReasons===void 0?base:`${base}\
126
+ | ai: ${result.aiReasons}`}var STOP_WAIT_MAX_SEC=3600;var AI_RECOVERY_HINT="\u78BA\u8A8D: claude-auto-switch status \uFF0F \u5404AI CLI\u306E\u30ED\u30B0\u30A4\u30F3\u72B6\u614B\uFF08twp task-loop setup \u3067\u691C\u51FA\u7D50\u679C\u304C\u51FA\u307E\u3059\uFF09";var ABORT_DRAIN_TIMEOUT_MS=15e3;function lastContractLine(logText,line){const prefix=line!==null&&/^[A-Z][A-Z0-9_]*$/.test(line)?line:"[A-Z][A-Z0-9_]*_RESULT";return[...logText.matchAll(new RegExp(`^(?:${prefix}):[^\\n]*`,"gm"))].at(-1)?.[0]??
127
+ ""}var TaskLoop=class{constructor(deps){this.deps=deps;this.writeback=new Writeback(deps.api,deps.config,deps.log);this.schedule=new ScheduleBridge({config:deps.config,log:deps.log,api:new ScheduleApi(deps.api),fetchCount:async(key,statusId)=>{const{total,error}=await deps.projectApi.countByStatus(deps.config.projectId,statusId);if(error){deps.log.log(` \u26A0\uFE0F require_zero\u300C${key}\u300D\u306E\u4EF6\u6570\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08${error}\uFF09\
128
+ \u3002\u3053\u306E\u67A0\u306F\u767A\u706B\u3057\u307E\u305B\u3093\uFF08fail-closed\uFF09`)}const refined=await refineCount(key,total,deps.config.operations.countHooks,deps.config.workspace);if(refined.note)deps.log.log(` ${refined.note}`);return refined.total}});this.engine=deps.engine;this.postDeps={api:deps.api,config:deps.config,log:deps.log};this.planLock=new PlanLock({api:deps.api,config:deps.config,log:deps.log,runner:deps.runner,hasPendingItems:async()=>await this.hasPendingItems()&&!this.
129
+ nothingClaimableBacklog,reregister:async()=>{deps.runner.registered=false;await deps.runner.registerOrThrow()},...deps.sleepFn?{sleepFn:deps.sleepFn}:{}});this.trustGate=deps.trustGate??new TrustGate({enabled:()=>deps.config.ai.usesAi("claude"),check:()=>checkWorkspaceTrust(deps.config.workspace,{launcherBin:deps.config.claudeLauncher.bin})});this.timestamp=new Date().toISOString().replace(/[-:]/g,"").replace(/\..*$/,"");this.settings=deps.settings??new LoopSettingsApplier({api:deps.api,config:deps.
130
+ config,log:m=>deps.log.log(m)});this.skills=deps.skills??new ServerSkillCatalog({api:deps.api,config:deps.config,log:m=>deps.log.log(m)})}deps;planGateFingerprint=null;lastPlanWasEmpty=false;writeback;schedule;planLock;planRunScheduled=[];planRunRecord=null;engine;postDeps;timestamp;deferredIds=new Set;midcycleEnqueued=0;aborting=false;draining=false;nothingClaimableBacklog=false;drainExitCode=0;drainWaiters=new Set;itemInFlight=null;ownershipLostItemId=null;abortDrained=null;cyclePreflightSection="";trustGate;settings;skills;sleep(ms){
130
131
  return(this.deps.sleepFn??sleep)(ms)}sleepUnlessDraining(ms){if(this.draining)return Promise.resolve();return new Promise(resolve=>{let timer=null;let settled=false;const wake=()=>{if(settled)return;settled=true;if(timer!==null)clearTimeout(timer);this.drainWaiters.delete(wake);resolve()};this.drainWaiters.add(wake);const injected=this.deps.sleepFn;if(injected)void injected(ms).then(wake);else timer=setTimeout(wake,ms)})}requestDrain(reason,exitCode=0){if(this.draining)return;this.draining=true;
131
132
  this.drainExitCode=exitCode;const running=this.itemInFlight;const why=reason.trim()===""?"\u7406\u7531\u4E0D\u660E":reason;this.deps.log.log(running===null?`\u30C9\u30EC\u30A4\u30F3\u8981\u6C42\u3092\u53D7\u3051\u53D6\u308A\u307E\u3057\u305F\uFF08${why}\uFF09\u3002\u5B9F\u884C\u4E2D\u306E\u30A2\u30A4\u30C6\u30E0\u306F\u3042\u308A\u307E\u305B\u3093\u3002\u65B0\u3057\u3044\u30A2\u30A4\u30C6\u30E0\u3092\u53D6\u3089\u305A\u306B\u7D42\u4E86\u3057\u307E\u3059\u3002`:`\u30C9\u30EC\u30A4\u30F3\u8981\u6C42\u3092\u53D7\u3051\u53D6\u308A\u307E\u3057\u305F\uFF08${why}\
132
133
  \uFF09\u3002\u5B9F\u884C\u4E2D\u306E\u30A2\u30A4\u30C6\u30E0\uFF08${running}\uFF09\u3092\u5B8C\u8D70\u3055\u305B\u3066\u304B\u3089\u7D42\u4E86\u3057\u307E\u3059\u3002`);const waiters=[...this.drainWaiters];this.drainWaiters.clear();for(const w of waiters)w()}cooldownNote(outcome){if(outcome!=="rate-limited")return"";const remaining=this.deps.config.ai.minCooldownRemainingSec();return remaining===null?"":`\uFF08\u6700\u77ED\u306E\u89E3\u9664\u307E\u3067\u7D04${remaining}\u79D2\uFF09`}startOwnershipWatch(itemId){
@@ -191,7 +192,7 @@ const outcomeReports=await fetchOutcomeReports(this.deps.api,config.outcomeSkill
191
192
  process.env.CLAUDE_CONFIG_DIR,"commands")]:[],path4.join(os2.homedir(),".claude","commands")]),...this.skills.names()],blocks)}catch(err){log.log(` \u26A0\uFE0F \u8A08\u753B\u306E\u63D0\u51FA\u53E3\u3092\u6E96\u5099\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08${err.message}\uFF09\u3002\u3053\u306E\u30B5\u30A4\u30AF\u30EB\u306F\u5FDC\u7B54\u306E\u6587\u7AE0\u304B\u3089\u8A08\u753B\u3092\u53D6\u308A\u51FA\u3057\u307E\u3059`);planSession=NO_PLAN_SESSION}let result;let submitted;let rejectedSubmissions=[];
192
193
  try{result=await this.engine.run({prompt:buildPlanPrompt(config,planSkill,scheduleSection,prefetchSection,outcomeSection),promptPrefix:this.cyclePreflightSection,logFile:planLogFile,timeoutSec:config.planTimeoutSec,cwd:config.workspace,skill:normalizeSkillName(planSkill.replace(/^\//,"")),...Object.keys(planSession.env).length>0?{extraEnv:planSession.env}:{},validate:output=>planSession.submission()!==null||extractPlanJson(output)!==null});submitted=planSession.submission();rejectedSubmissions=planSession.
193
194
  rejections()}finally{planSession.close()}writeLogFile(planLogFile,result.output);engineResult=result;setRecord(result.outcome==="ok"?"error":"ai_failed",null);if(result.outcome==="aborted"){log.log(" \u23F9 \u4E2D\u65AD\u30B7\u30B0\u30CA\u30EB\u306B\u3088\u308A\u8A08\u753B\u3092\u6253\u3061\u5207\u308A\u307E\u3057\u305F");return"aborted"}if(result.outcome!=="ok"){if(isAiUnavailable(result.outcome)){log.log(` \u23ED AI \u3092\u8D77\u52D5\u3067\u304D\u306A\u3044\u305F\u3081\u8A08\u753B\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08outcome=${result.
194
- outcome}\uFF09`);return result.outcome}log.log(` \u26D4 \u8A08\u753B\u306E\u5B9F\u884C\u306B\u5931\u6557\u3057\u307E\u3057\u305F\uFF08outcome=${result.outcome}\uFF09`);return"failed"}if(this.planLock.isLost()){log.log(` \u26D4 \u8A08\u753B\u4E2D\u306B\u8A08\u753B\u30ED\u30C3\u30AF\u3092\u5931\u3044\u307E\u3057\u305F\uFF08reason=${this.planLock.lostReasonText()}\uFF09`);log.log(" **\u30A8\u30F3\u30AD\u30E5\u30FC\u3092\u4E2D\u6B62\u3057\u307E\u3059**\u3002\u8A08\u753B\u7D50\u679C\u306F\u7834\u68C4\u3057\u3001\u6B21\u30B5\u30A4\u30AF\u30EB\u3067\u53D6\u308A\u76F4\u3057\u307E\u3059");
195
+ outcome}${result.aiReasons===void 0?"":` / ${result.aiReasons}`}\uFF09`);return result.outcome}log.log(` \u26D4 \u8A08\u753B\u306E\u5B9F\u884C\u306B\u5931\u6557\u3057\u307E\u3057\u305F\uFF08outcome=${result.outcome}\uFF09`);return"failed"}if(this.planLock.isLost()){log.log(` \u26D4 \u8A08\u753B\u4E2D\u306B\u8A08\u753B\u30ED\u30C3\u30AF\u3092\u5931\u3044\u307E\u3057\u305F\uFF08reason=${this.planLock.lostReasonText()}\uFF09`);log.log(" **\u30A8\u30F3\u30AD\u30E5\u30FC\u3092\u4E2D\u6B62\u3057\u307E\u3059**\u3002\u8A08\u753B\u7D50\u679C\u306F\u7834\u68C4\u3057\u3001\u6B21\u30B5\u30A4\u30AF\u30EB\u3067\u53D6\u308A\u76F4\u3057\u307E\u3059");
195
196
  setRecord("error",null);return"ok"}const unchecked=unavailableChecks(blocks);const recordResult=summary2=>{const line=formatPlanResultLine(rejectedSubmissions.length>0?{...summary2,rejected_submissions:rejectedSubmissions}:summary2);log.log(line);try{fs6.appendFileSync(planLogFile,`
196
197
  ${line}
197
198
  `)}catch{}};if(submitted?.empty===true){log.log("\u8A08\u753BAI\u306F\u7A7A\u306E\u8A08\u753B\uFF080\u4EF6\uFF09\u3092\u63D0\u51FA\u3057\u307E\u3057\u305F");recordResult({source:"submit",empty:true,planned:0,enqueued:0,dropped:[],unchecked});setRecord("empty",null);this.lastPlanWasEmpty=true;return"ok"}if(submitted!==null){log.log(`\u63D0\u51FA\u3055\u308C\u305F\u8A08\u753B\u3092\u4F7F\u3044\u307E\u3059\uFF08plan submit\u30FB${submitted.plan.steps.length}\u4EF6\u30FB${submitted.submitted_at}\uFF09`)}else{
@@ -247,31 +248,30 @@ ${result.output}`);const durationSec=Math.trunc((Date.now()-startedAt)/1e3);if(t
247
248
  this.abortDrained?.();this.abortDrained=null;continue dequeue}if(result.outcome==="aborted"){log.log(`[${stepNum}] ${label} \u2192 \u4E2D\u65AD [ai=${result.usedAi||"-"}] (${durationSec}s)`);const res=await api.update(itemId,{status:"pending",result:serverResult(result.output),error_message:"aborted: \u4E2D\u65AD\u30B7\u30B0\u30CA\u30EB\u306B\u3088\u308A AI \u3092\u505C\u6B62\u3057\u307E\u3057\u305F\uFF08\u4F5C\u696D\u306F\u9014\u4E2D\u306E\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\uFF09"},
248
249
  config.runId);if(res.status===409){log.log(` \u26A0\uFE0F \u30AD\u30E5\u30FC\u3078\u8FD4\u305D\u3046\u3068\u3057\u305F\u30A2\u30A4\u30C6\u30E0\u306F\u65E2\u306B\u5225\u306E\u30E9\u30F3\u30CA\u30FC\u304C\u4FDD\u6301\u3057\u3066\u3044\u307E\u3059\uFF08409\uFF09: item=${itemId}`)}else if(res.ok){log.log(" \u2192 \u30A2\u30A4\u30C6\u30E0\u3092 pending \u306B\u623B\u3057\u307E\u3057\u305F\uFF08\u6B21\u306E\u8D77\u52D5\u3067\u62FE\u3044\u76F4\u3057\u307E\u3059\uFF09")}else{log.log(` \u26A0\uFE0F pending \u3078\u623B\
249
250
  \u305B\u307E\u305B\u3093\u3067\u3057\u305F\uFF08${describeError(res)}\uFF09\u3002\u30B5\u30FC\u30D0\u306E\u56DE\u53CE\u3092\u5F85\u3061\u307E\u3059: item=${itemId}`)}log.log(" \u2192 \u5B9A\u671F\u30B9\u30B1\u30B8\u30E5\u30FC\u30EB\u5C65\u6B74\u306B\u306F\u8A18\u9332\u3057\u307E\u305B\u3093\uFF08\u505C\u6B62\u64CD\u4F5C\u304C\u539F\u56E0\u306E\u305F\u3081\uFF09");this.abortDrained?.();this.abortDrained=null;stop=true;break}if(isAiUnavailable(result.outcome)){unexecuted+=1;if(needsHumanToRestoreAi(
250
- result.outcome))unexecutedNeedsHuman=true;log.log(`[${stepNum}] ${label} \u2192 \u672A\u5B9F\u884C [ai=${result.usedAi||"-"}] (${durationSec}s)`);log.log(` \u23ED AI \u3092\u8D77\u52D5\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08outcome=${result.outcome}\uFF09`);if(needsHumanToRestoreAi(result.outcome))log.log(` ${AI_RECOVERY_HINT}`);const res=await api.update(itemId,{status:"pending",result:serverResult(result.output),error_message:withFailureHint(`not executed: ${result.outcome}`,result.
251
- output)},config.runId);if(res.status===409){log.log(` \u26A0\uFE0F \u30AD\u30E5\u30FC\u3078\u8FD4\u305D\u3046\u3068\u3057\u305F\u30A2\u30A4\u30C6\u30E0\u306F\u65E2\u306B\u5225\u306E\u30E9\u30F3\u30CA\u30FC\u304C\u4FDD\u6301\u3057\u3066\u3044\u307E\u3059\uFF08409\uFF09: item=${itemId}`)}else if(res.ok){log.log(" \u2192 \u30A2\u30A4\u30C6\u30E0\u3092 pending \u306B\u623B\u3057\u307E\u3057\u305F\uFF08\u4ED6\u306E\u53F0\u304C\u5B9F\u884C\u3067\u304D\u307E\u3059\uFF09")}else{log.log(` \u26A0\uFE0F pending\
252
- \u3078\u623B\u305B\u307E\u305B\u3093\u3067\u3057\u305F\uFF08${describeError(res)}\uFF09\u3002\u30B5\u30FC\u30D0\u306E\u56DE\u53CE\u3092\u5F85\u3061\u307E\u3059: item=${itemId}`)}log.log(" \u2192 \u5B9A\u671F\u30B9\u30B1\u30B8\u30E5\u30FC\u30EB\u5C65\u6B74\u306B\u306F\u8A18\u9332\u3057\u307E\u305B\u3093\uFF08\u67A0\u306F\u4ED6\u306E\u53F0\u304C\u6D88\u5316\u3067\u304D\u307E\u3059\uFF09");log.log(" \u2192 AI \u304C1\u3064\u3082\u4F7F\u3048\u306A\u3044\u305F\u3081\u3001\u3053\u306E\u30B5\u30A4\u30AF\u30EB\u306E Phase 2 \u306F\u6253\u3061\u5207\u308A\u307E\u3059");
251
+ result.outcome))unexecutedNeedsHuman=true;log.log(`[${stepNum}] ${label} \u2192 \u672A\u5B9F\u884C [ai=${result.usedAi||"-"}] (${durationSec}s)`);log.log(` \u23ED AI \u3092\u8D77\u52D5\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08outcome=${result.outcome}\uFF09`);if(result.aiReasons!==void 0)log.log(` \u4F7F\u3048\u306A\u304B\u3063\u305F\u7406\u7531: ${result.aiReasons}`);if(needsHumanToRestoreAi(result.outcome))log.log(` ${AI_RECOVERY_HINT}`);const res=await api.update(itemId,{status:"\
252
+ pending",result:serverResult(result.output),error_message:withFailureHint(unexecutedMessage(result),result.output)},config.runId);if(res.status===409){log.log(` \u26A0\uFE0F \u30AD\u30E5\u30FC\u3078\u8FD4\u305D\u3046\u3068\u3057\u305F\u30A2\u30A4\u30C6\u30E0\u306F\u65E2\u306B\u5225\u306E\u30E9\u30F3\u30CA\u30FC\u304C\u4FDD\u6301\u3057\u3066\u3044\u307E\u3059\uFF08409\uFF09: item=${itemId}`)}else if(res.ok){log.log(" \u2192 \u30A2\u30A4\u30C6\u30E0\u3092 pending \u306B\u623B\u3057\u307E\u3057\u305F\uFF08\u4ED6\u306E\u53F0\u304C\u5B9F\u884C\u3067\u304D\u307E\u3059\uFF09")}else{
253
+ log.log(` \u26A0\uFE0F pending \u3078\u623B\u305B\u307E\u305B\u3093\u3067\u3057\u305F\uFF08${describeError(res)}\uFF09\u3002\u30B5\u30FC\u30D0\u306E\u56DE\u53CE\u3092\u5F85\u3061\u307E\u3059: item=${itemId}`)}log.log(" \u2192 \u5B9A\u671F\u30B9\u30B1\u30B8\u30E5\u30FC\u30EB\u5C65\u6B74\u306B\u306F\u8A18\u9332\u3057\u307E\u305B\u3093\uFF08\u67A0\u306F\u4ED6\u306E\u53F0\u304C\u6D88\u5316\u3067\u304D\u307E\u3059\uFF09");log.log(" \u2192 AI \u304C1\u3064\u3082\u4F7F\u3048\u306A\u3044\u305F\u3081\u3001\u3053\u306E\u30B5\u30A4\u30AF\u30EB\u306E Phase 2 \u306F\u6253\u3061\u5207\u308A\u307E\u3059");
253
254
  break}const metrics={durationMs:Date.now()-startedAt,turns:result.metrics?.turns??null,tokensIn:result.metrics?.tokensIn??null,tokensOut:result.metrics?.tokensOut??null,costUsd:result.metrics?.costUsd??null,skill:skillName===""?null:skillName,effort:result.metrics?.effort??null,exitReason:exitReasonFor(result.outcome),outcomeCode:parseOutcomeCode(result.output),outcomeDetail:parseOutcomeDetail(result.output)};const noTurn=result.outcome==="ok"&&isNoTurnExecution(metrics,result.output);const status=result.
254
255
  outcome==="ok"&&!noTurn?"completed":"failed";const errorMessage=noTurn?`outcome: ${NO_TURN_OUTCOME_CODE}`:result.outcome==="ok"?void 0:withFailureHint(`outcome: ${result.outcome}`,result.output);const payload=buildPayload({status,aiType:result.serverAiType,runId:config.runId,logText:result.output,...errorMessage?{errorMessage}:{},metrics});const logS3Key=await this.writeback.uploadFullLog(itemId,config.runId,result.output);if(logS3Key!==null)payload.log_s3_key=logS3Key;const outcome=await this.writeback.
255
256
  write(itemId,payload);if(outcome!=="ok"){log.log(outcome==="lost"?`[${stepNum}] ${label} \u2192 \u26A0\uFE0F \u6240\u6709\u6A29\u3092\u5931\u3063\u3066\u3044\u305F\u305F\u3081\u7D50\u679C\u3092\u7834\u68C4\u3057\u307E\u3057\u305F [ai=${result.usedAi}] (${durationSec}s)`:`[${stepNum}] ${label} \u2192 \u26A0\uFE0F \u5B9F\u884C\u306F\u7D42\u308F\u3063\u305F\u304C\u7D50\u679C\u3092\u66F8\u304D\u623B\u305B\u307E\u305B\u3093\u3067\u3057\u305F [ai=${result.usedAi}] (${durationSec}s)`);log.log(" \u3053\u306E\u30A2\u30A4\u30C6\u30E0\
256
257
  \u306E\u5F8C\u51E6\u7406\uFF08\u5B9A\u671F\u67A0\u306E\u8A18\u9332\u30FB\u30EA\u30EA\u30FC\u30B9\u7D50\u679C\u306E\u8A18\u9332\u30FB\u5F8C\u7D9A\u6295\u5165\uFF09\u306F\u884C\u3044\u307E\u305B\u3093");continue dequeue}if(status==="completed"){completed+=1;log.log(`[${stepNum}] ${label} \u2192 \u5B8C\u4E86 [ai=${result.usedAi}] (${durationSec}s)`)}else if(noTurn){failed+=1;log.log(`[${stepNum}] ${label} \u2192 \u26A0\uFE0F AI \u304C1\u30BF\u30FC\u30F3\u3082\u5B9F\u884C\u3057\u3066\u3044\u306A\u3044\u305F\u3081\u5931\u6557\u3068\u3057\u3066\u8A18\u9332 [ai=${result.
257
258
  usedAi}] (${durationSec}s)`);log.log(" turns=0 \u304B\u3064\u51FA\u529B\u5951\u7D04\u884C\u306A\u3057\u3002completed \u306B\u3059\u308B\u3068\u518D\u6295\u5165\u3055\u308C\u306A\u3044\u305F\u3081 failed \u3067\u8A18\u9332\u3057\u307E\u3057\u305F")}else if(result.outcome==="max-turns"){failed+=1;log.log(`[${stepNum}] ${label} \u2192 \u26A0\uFE0F \u30BF\u30FC\u30F3\u4E0A\u9650\u5230\u9054\u3067\u6253\u3061\u5207\u308A [ai=${result.usedAi}] (${durationSec}s)`)}else{failed+=1;log.log(`[${stepNum}] ${label}\
258
259
  \u2192 \u5931\u6557 [ai=${result.usedAi}] (${durationSec}s)`)}if(this.deps.engine.name==="noop"){log.log(" \u23ED engine=noop \u306E\u305F\u3081\u5B9A\u671F\u67A0\u306E\u8A18\u9332\u30FB\u5B8C\u4E86\u5F8C\u51E6\u7406\u306F\u884C\u3044\u307E\u305B\u3093\uFF08AI \u3092\u8D77\u52D5\u3057\u3066\u3044\u306A\u3044\u306E\u3067\u5B9F\u4F53\u304C\u3042\u308A\u307E\u305B\u3093\uFF09");continue dequeue}await this.schedule.recordByItem(itemId,status);if(status==="completed"){await this.runCompletionHooks(
259
- skillName,result.output,result.usedAi)}else if(result.outcome==="max-turns"){await this.runMaxTurnsHooks(skillName,result.output,result.usedAi)}await this.maybeEnqueueDueMidcycle()}log.separator();log.log(`Phase 2 \u5B8C\u4E86: ${completed} \u5B8C\u4E86 / ${failed} \u5931\u6557`+(unexecuted>0?` / ${unexecuted} \u672A\u5B9F\u884C`:"")+` (\u8A08 ${stepNum} \u30A2\u30A4\u30C6\u30E0)`);log.separator();return{progress:completed>0,emptyQueue:stepNum===0&&!undetermined,undetermined,stop,deferred:this.deferredIds.
260
- size,unexecuted,needsHuman:unexecutedNeedsHuman}}async runCompletionHooks(skillName,logText,usedAi){const{log}=this.deps;const hooks=this.deps.config.operations.releaseHooks;if(hooks!==null&&hooks.line!==null&&skillName===hooks.skill){const parsed=parseReleaseResult(logText,hooks.line);if(!parsed){log.log(` \u26A0\uFE0F ${skillName} \u304C ${hooks.line} \u884C\u3092\u51FA\u529B\u3057\u3066\u3044\u307E\u305B\u3093\uFF08\u51FA\u529B\u5951\u7D04\u9055\u53CD\uFF09\u2192 \u30EA\u30EA\u30FC\u30B9\u672A\u5B9F\u884C\u3068\u3057\u3066\u6271\u3044\u307E\u3059`);
261
- this.releaseLog.record("NOT_EXECUTED","unknown",`${hooks.line}\u884C\u306A\u3057\uFF08\u51FA\u529B\u5951\u7D04\u9055\u53CD\uFF09`,usedAi);return}if(parsed.executed){log.log(` \u2705 \u30EA\u30EA\u30FC\u30B9\u5B9F\u884C\u6E08\u307F: ${parsed.line.slice(0,120)}`);this.releaseLog.record("EXECUTED","Phase5",parsed.reason,usedAi);return}log.log(` \u26A0\uFE0F \u30EA\u30EA\u30FC\u30B9\u672A\u5B9F\u884C: ${parsed.phase} \u3067\u4E2D\u6B62 \u2014 ${parsed.reason}`);this.releaseLog.record("NOT_EXECUTE\
262
- D",parsed.phase,parsed.reason,usedAi);await enqueueBlockerRecovery(this.postDeps,parsed.line);await enqueueReleasePhase5Recovery(this.postDeps,parsed.line);await enqueueReleasePartialMergeRerun(this.postDeps,parsed.line);return}const followUp=this.deps.config.operations.postSuccessEnqueue.get(skillName);if(followUp){await enqueueDevVerifyForMerged(this.postDeps,logText,followUp)}}async runMaxTurnsHooks(skillName,logText,usedAi){const{log}=this.deps;log.log(" \u4F5C\u696D\u306E\u5927\u534A\u304C\u5B8C\u4E86\u3057\u3066\u3044\u308B\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\u3002\u4EE5\u4E0B\u306E\u672A\u5B9F\u65BD\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\
263
- :");log.log(" - TWP\u30BF\u30B9\u30AF\u306E\u30B9\u30C6\u30FC\u30BF\u30B9\u9077\u79FB\uFF08\u9032\u884C\u4E2D\u306E\u307E\u307E\u653E\u7F6E\u3055\u308C\u3066\u3044\u306A\u3044\u304B\uFF09");log.log(" - PR\u4F5C\u6210\u6E08\u307F\u306E\u5834\u5408\u306E\u30EC\u30D3\u30E5\u30FC\u4F9D\u983C\u30B3\u30E1\u30F3\u30C8\u30FB\u62C5\u5F53\u8005\u5909\u66F4");log.log(" - \u30A8\u30D3\u30C7\u30F3\u30B9\u6DFB\u4ED8\u30FB\u691C\u8A3C\u30C7\u30FC\u30BF\u306E\u30AF\u30EA\u30FC\u30F3\u30A2\u30C3\u30D7");log.log(
264
- " \u6B21\u30B5\u30A4\u30AF\u30EB\u306E\u8A08\u753B\u30D5\u30A7\u30FC\u30BA\u3067 /twp-task-resume \u3068\u3057\u3066\u518D\u6295\u5165\u3055\u308C\u308B\u3053\u3068\u3092\u60F3\u5B9A\u3057\u3066\u3044\u307E\u3059\u3002");if(!this.deps.config.operations.contractSkills.has(skillName))return;const contract=lastContractLine(logText,this.deps.config.operations.contractLines.get(skillName)?.line??null);if(contract!==""){log.log(` \u26A0\uFE0F \u30BF\u30FC\u30F3\u4E0A\u9650\u3067\u6253\u3061\u5207\u3089\u308C\u307E\u3057\u305F\u304C\u5951\u7D04\u884C\u306F\u51FA\u3066\u3044\u307E\u3059: ${contract.
265
- slice(0,120)}`)}else{log.log(` \u26A0\uFE0F ${skillName} \u304C\u30BF\u30FC\u30F3\u4E0A\u9650\u3067\u6253\u3061\u5207\u3089\u308C\u3001\u5951\u7D04\u884C\u304C\u3042\u308A\u307E\u305B\u3093\u3002`);log.log(" develop \u3078\u306E\u30DE\u30FC\u30B8\u30FB\u672C\u756A\u30EA\u30EA\u30FC\u30B9\u304C**\u9014\u4E2D\u307E\u3067\u5B9F\u884C\u3055\u308C\u305F\u53EF\u80FD\u6027**\u304C\u3042\u308A\u307E\u3059\u3002");log.log(" \u6B21\u30B5\u30A4\u30AF\u30EB\u306E\u524D\u306B git\u30FB\u30EA\u30EA\u30FC\u30B9\u5C65\u6B74\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\uFF08A3: \u72B6\u614B\u3092\u73FE\u5B9F\u3068\u4E00\u81F4\u3055\u305B\u308B\uFF09\u3002")}
266
- const hooks=this.deps.config.operations.releaseHooks;if(hooks!==null&&hooks.line!==null&&skillName===hooks.skill){if(new RegExp(`${hooks.line}:\\s*EXECUTED`).test(contract)){this.releaseLog.record("EXECUTED","max-turns","\u30BF\u30FC\u30F3\u4E0A\u9650\u3067\u6253\u3061\u5207\u3089\u308C\u305F\u304C\u5951\u7D04\u884C\u306FEXECUTED",usedAi)}else{this.releaseLog.record("NOT_EXECUTED","max-turns",`\u30BF\u30FC\u30F3\u4E0A\u9650\u3067\u6253\u3061\u5207\u308A\uFF08\u5951\u7D04\u884C: ${contract===""?"\
267
- \u306A\u3057":contract}\uFF09`,usedAi);await enqueueBlockerRecovery(this.postDeps,contract)}await enqueueReleasePartialMergeRerun(this.postDeps,contract);return}const followUpOnCut=this.deps.config.operations.postSuccessEnqueue.get(skillName);if(followUpOnCut){await enqueueDevVerifyForMerged(this.postDeps,logText,followUpOnCut)}}async claimOne(){const{api,config,log,runner}=this.deps;let attempt=0;for(;;){const res=await api.claim(config.runnerId,config.runId);if(res.ok){const reason=pickString(
268
- res.json,"reason");if(reason==="contended")return{kind:"contended"};if(reason==="claimed"){const item=res.json?.item;if(item&&typeof item==="object")return{kind:"claimed",item};log.log(` \u26A0\uFE0F claim \u304C claimed \u3092\u8FD4\u3057\u307E\u3057\u305F\u304C item \u304C\u3042\u308A\u307E\u305B\u3093\uFF08\u5FDC\u7B54\u306E\u5148\u982D: ${res.raw.slice(0,120)}\uFF09`);return{kind:"undetermined"}}if(reason==="empty")return{kind:"empty"};if(reason==="filtered"){const by=res.json?.filtered_by;
269
- return{kind:"filtered",by:Array.isArray(by)?by.filter(b=>typeof b==="string"):[]}}if(reason!=="runner_not_registered"){log.log(` \u26A0\uFE0F claim \u306E\u5FDC\u7B54\u3092\u89E3\u91C8\u3067\u304D\u307E\u305B\u3093\uFF08reason='${reason}'\uFF09\u3002`);log.log(` **\u30AD\u30E5\u30FC\u304C\u7A7A\u304B\u3069\u3046\u304B\u306F\u5224\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002** \u5FDC\u7B54\u306E\u5148\u982D: ${res.raw.slice(0,120)}`);return{kind:"undetermined"}}}attempt+=1;if(res.status===409||
270
- pickString(res.json,"reason")==="runner_not_registered"){log.log(" \u26A0\uFE0F claim \u304C 409\uFF08\u30E9\u30F3\u30CA\u30FC\u672A\u767B\u9332\u6271\u3044\uFF09\u3002register \u304B\u3089\u3084\u308A\u76F4\u3057\u307E\u3059");runner.registered=false;try{await runner.registerOrThrow()}catch{return{kind:"undetermined"}}if(attempt>=3)return{kind:"undetermined"};continue}if(attempt>=3){log.log(` \u26A0\uFE0F claim API\u304C3\u56DE\u9023\u7D9A\u3067\u5931\u6557\uFF08${describeError(res)}\uFF09\u3002`);
271
- log.log(" **\u30AD\u30E5\u30FC\u304C\u7A7A\u304B\u3069\u3046\u304B\u306F\u5224\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002** \u672A\u51E6\u7406\u306E\u30A2\u30A4\u30C6\u30E0\u304C\u6B8B\u3063\u3066\u3044\u308B\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\u3002");return{kind:"undetermined"}}log.log(` \u26A0\uFE0F claim API\u304C\u5FDC\u7B54\u3057\u307E\u305B\u3093\uFF08${describeError(res)}\uFF09\u3002${attempt}\u56DE\u76EE\u30FB5\u79D2\u5F8C\u306B\u518D\u8A66\u884C`);await this.sleep(5e3)}}};
272
- function writeLogFile(file,text){try{fs6.mkdirSync(path4.dirname(file),{recursive:true});fs6.writeFileSync(file,text)}catch{}}function buildPlanPrompt(config,planSkill,scheduleSection,prefetchSection,outcomeSection=""){return[promptText(config,"plan_preamble",""),config.safeMode?promptText(config,"safe_mode_note",SAFE_MODE_NOTE):"",promptText(config,"non_interactive_note",NON_INTERACTIVE_NOTE),scheduleSection,prefetchSection,outcomeSection,planSkill].filter(s=>s!=="").join("\n\n")}function promptText(config,key,builtin){
273
- return config.serverPrompts?.[key]??builtin}function buildStepPrompt(config,body){const timeoutMin=Math.trunc(config.aiTimeoutSec/60);const softMin=Math.trunc(config.aiTimeoutSec*config.aiSoftDeadlineRatio/100/60);const wrapUpMin=Math.max(0,timeoutMin-softMin);return[renderStepBudget(promptText(config,"step_budget",STEP_BUDGET),{timeoutMin,softMin,wrapUpMin}),config.safeMode?promptText(config,"safe_mode_note",SAFE_MODE_NOTE):"",promptText(config,"non_interactive_note",NON_INTERACTIVE_NOTE),body].
274
- filter(s=>s!=="").join("\n\n")}var STEP_BUDGET=["\u3010\u5B9F\u884C\u6642\u9593\u306E\u4E88\u7B97\u3011\u3053\u306E\u5B9F\u884C\u306F {timeout_min}\u5206 \u3067\u30D7\u30ED\u30BB\u30B9\u304C\u5F37\u5236\u7D42\u4E86\u3055\u308C\u307E\u3059\u3002\u4E88\u544A\u3084\u7336\u4E88\u306F\u3042\u308A\u307E\u305B\u3093\u3002",["- \u958B\u59CB\u304B\u3089 **{soft_min}\u5206** \u3092\u904E\u304E\u305F\u3089\u3001\u4F5C\u696D\u3092\u6253\u3061\u5207\u3063\u3066\u7DE0\u3081\u51E6\u7406\u306B\u5165\u3063\u3066\u304F\u3060\u3055\u3044\uFF08\u30B3\u30DF\u30C3\u30C8 \u2192 push \u2192 PR\u4F5C\u6210 \u2192 \u30BF\u30B9\u30AF\u306E\u30B9\u30C6\u30FC\u30BF\u30B9\u30FB\u62C5\u5F53\u306E\u66F4\u65B0 \u2192 \u5F15\u304D\u7D99\u304E\u30B3\u30E1\u30F3\u30C8\uFF09",
260
+ skillName,result.output)}else if(result.outcome==="max-turns"){await this.runMaxTurnsHooks(skillName,result.output)}await this.maybeEnqueueDueMidcycle()}log.separator();log.log(`Phase 2 \u5B8C\u4E86: ${completed} \u5B8C\u4E86 / ${failed} \u5931\u6557`+(unexecuted>0?` / ${unexecuted} \u672A\u5B9F\u884C`:"")+` (\u8A08 ${stepNum} \u30A2\u30A4\u30C6\u30E0)`);log.separator();return{progress:completed>0,emptyQueue:stepNum===0&&!undetermined,undetermined,stop,deferred:this.deferredIds.size,unexecuted,needsHuman:unexecutedNeedsHuman}}async runCompletionHooks(skillName,logText){
261
+ const{log}=this.deps;const hooks=this.deps.config.operations.releaseHooks;if(hooks!==null&&hooks.line!==null&&skillName===hooks.skill){const parsed=parseReleaseResult(logText,hooks.line);if(!parsed){log.log(` \u26A0\uFE0F ${skillName} \u304C ${hooks.line} \u884C\u3092\u51FA\u529B\u3057\u3066\u3044\u307E\u305B\u3093\uFF08\u51FA\u529B\u5951\u7D04\u9055\u53CD\uFF09\u2192 \u30EA\u30EA\u30FC\u30B9\u672A\u5B9F\u884C\u3068\u3057\u3066\u6271\u3044\u307E\u3059`);return}if(parsed.executed){log.log(` \u2705 \
262
+ \u30EA\u30EA\u30FC\u30B9\u5B9F\u884C\u6E08\u307F: ${parsed.line.slice(0,120)}`);return}log.log(` \u26A0\uFE0F \u30EA\u30EA\u30FC\u30B9\u672A\u5B9F\u884C: ${parsed.phase} \u3067\u4E2D\u6B62 \u2014 ${parsed.reason}`);await enqueueBlockerRecovery(this.postDeps,parsed.line);await enqueueReleasePhase5Recovery(this.postDeps,parsed.line);await enqueueReleasePartialMergeRerun(this.postDeps,parsed.line);return}const followUp=this.deps.config.operations.postSuccessEnqueue.get(skillName);if(followUp){await enqueueDevVerifyForMerged(
263
+ this.postDeps,logText,followUp)}}async runMaxTurnsHooks(skillName,logText){const{log}=this.deps;log.log(" \u4F5C\u696D\u306E\u5927\u534A\u304C\u5B8C\u4E86\u3057\u3066\u3044\u308B\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\u3002\u4EE5\u4E0B\u306E\u672A\u5B9F\u65BD\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044:");log.log(" - TWP\u30BF\u30B9\u30AF\u306E\u30B9\u30C6\u30FC\u30BF\u30B9\u9077\u79FB\uFF08\u9032\u884C\u4E2D\u306E\u307E\u307E\u653E\u7F6E\u3055\u308C\u3066\u3044\u306A\u3044\u304B\uFF09");
264
+ log.log(" - PR\u4F5C\u6210\u6E08\u307F\u306E\u5834\u5408\u306E\u30EC\u30D3\u30E5\u30FC\u4F9D\u983C\u30B3\u30E1\u30F3\u30C8\u30FB\u62C5\u5F53\u8005\u5909\u66F4");log.log(" - \u30A8\u30D3\u30C7\u30F3\u30B9\u6DFB\u4ED8\u30FB\u691C\u8A3C\u30C7\u30FC\u30BF\u306E\u30AF\u30EA\u30FC\u30F3\u30A2\u30C3\u30D7");log.log(" \u6B21\u30B5\u30A4\u30AF\u30EB\u306E\u8A08\u753B\u30D5\u30A7\u30FC\u30BA\u3067 /twp-task-resume \u3068\u3057\u3066\u518D\u6295\u5165\u3055\u308C\u308B\u3053\u3068\u3092\u60F3\u5B9A\u3057\u3066\u3044\u307E\u3059\u3002");
265
+ if(!this.deps.config.operations.contractSkills.has(skillName))return;const contract=lastContractLine(logText,this.deps.config.operations.contractLines.get(skillName)?.line??null);if(contract!==""){log.log(` \u26A0\uFE0F \u30BF\u30FC\u30F3\u4E0A\u9650\u3067\u6253\u3061\u5207\u3089\u308C\u307E\u3057\u305F\u304C\u5951\u7D04\u884C\u306F\u51FA\u3066\u3044\u307E\u3059: ${contract.slice(0,120)}`)}else{log.log(` \u26A0\uFE0F ${skillName} \u304C\u30BF\u30FC\u30F3\u4E0A\u9650\u3067\u6253\u3061\u5207\u3089\u308C\u3001\u5951\u7D04\u884C\u304C\u3042\u308A\u307E\u305B\u3093\u3002`);
266
+ log.log(" develop \u3078\u306E\u30DE\u30FC\u30B8\u30FB\u672C\u756A\u30EA\u30EA\u30FC\u30B9\u304C**\u9014\u4E2D\u307E\u3067\u5B9F\u884C\u3055\u308C\u305F\u53EF\u80FD\u6027**\u304C\u3042\u308A\u307E\u3059\u3002");log.log(" \u6B21\u30B5\u30A4\u30AF\u30EB\u306E\u524D\u306B git\u30FB\u30EA\u30EA\u30FC\u30B9\u5C65\u6B74\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\uFF08A3: \u72B6\u614B\u3092\u73FE\u5B9F\u3068\u4E00\u81F4\u3055\u305B\u308B\uFF09\u3002")}const hooks=this.deps.config.operations.
267
+ releaseHooks;if(hooks!==null&&hooks.line!==null&&skillName===hooks.skill){if(!new RegExp(`${hooks.line}:\\s*EXECUTED`).test(contract)){await enqueueBlockerRecovery(this.postDeps,contract)}await enqueueReleasePartialMergeRerun(this.postDeps,contract);return}const followUpOnCut=this.deps.config.operations.postSuccessEnqueue.get(skillName);if(followUpOnCut){await enqueueDevVerifyForMerged(this.postDeps,logText,followUpOnCut)}}async claimOne(){const{api,config,log,runner}=this.deps;let attempt=0;for(;;){
268
+ const res=await api.claim(config.runnerId,config.runId);if(res.ok){const reason=pickString(res.json,"reason");if(reason==="contended")return{kind:"contended"};if(reason==="claimed"){const item=res.json?.item;if(item&&typeof item==="object")return{kind:"claimed",item};log.log(` \u26A0\uFE0F claim \u304C claimed \u3092\u8FD4\u3057\u307E\u3057\u305F\u304C item \u304C\u3042\u308A\u307E\u305B\u3093\uFF08\u5FDC\u7B54\u306E\u5148\u982D: ${res.raw.slice(0,120)}\uFF09`);return{kind:"undetermined"}}if(reason===
269
+ "empty")return{kind:"empty"};if(reason==="filtered"){const by=res.json?.filtered_by;return{kind:"filtered",by:Array.isArray(by)?by.filter(b=>typeof b==="string"):[]}}if(reason!=="runner_not_registered"){log.log(` \u26A0\uFE0F claim \u306E\u5FDC\u7B54\u3092\u89E3\u91C8\u3067\u304D\u307E\u305B\u3093\uFF08reason='${reason}'\uFF09\u3002`);log.log(` **\u30AD\u30E5\u30FC\u304C\u7A7A\u304B\u3069\u3046\u304B\u306F\u5224\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002** \u5FDC\u7B54\u306E\u5148\u982D: ${res.
270
+ raw.slice(0,120)}`);return{kind:"undetermined"}}}attempt+=1;if(res.status===409||pickString(res.json,"reason")==="runner_not_registered"){log.log(" \u26A0\uFE0F claim \u304C 409\uFF08\u30E9\u30F3\u30CA\u30FC\u672A\u767B\u9332\u6271\u3044\uFF09\u3002register \u304B\u3089\u3084\u308A\u76F4\u3057\u307E\u3059");runner.registered=false;try{await runner.registerOrThrow()}catch{return{kind:"undetermined"}}if(attempt>=3)return{kind:"undetermined"};continue}if(attempt>=3){log.log(` \u26A0\uFE0F claim API\u304C3\u56DE\u9023\u7D9A\u3067\
271
+ \u5931\u6557\uFF08${describeError(res)}\uFF09\u3002`);log.log(" **\u30AD\u30E5\u30FC\u304C\u7A7A\u304B\u3069\u3046\u304B\u306F\u5224\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002** \u672A\u51E6\u7406\u306E\u30A2\u30A4\u30C6\u30E0\u304C\u6B8B\u3063\u3066\u3044\u308B\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\u3002");return{kind:"undetermined"}}log.log(` \u26A0\uFE0F claim API\u304C\u5FDC\u7B54\u3057\u307E\u305B\u3093\uFF08${describeError(res)}\uFF09\u3002${attempt}\u56DE\u76EE\u30FB5\u79D2\u5F8C\u306B\u518D\u8A66\u884C`);
272
+ await this.sleep(5e3)}}};function writeLogFile(file,text){try{fs6.mkdirSync(path4.dirname(file),{recursive:true});fs6.writeFileSync(file,text)}catch{}}function buildPlanPrompt(config,planSkill,scheduleSection,prefetchSection,outcomeSection=""){return[promptText(config,"plan_preamble",""),config.safeMode?promptText(config,"safe_mode_note",SAFE_MODE_NOTE):"",promptText(config,"non_interactive_note",NON_INTERACTIVE_NOTE),scheduleSection,prefetchSection,outcomeSection,planSkill].filter(s=>s!=="").join(
273
+ "\n\n")}function promptText(config,key,builtin){return config.serverPrompts?.[key]??builtin}function buildStepPrompt(config,body){const timeoutMin=Math.trunc(config.aiTimeoutSec/60);const softMin=Math.trunc(config.aiTimeoutSec*config.aiSoftDeadlineRatio/100/60);const wrapUpMin=Math.max(0,timeoutMin-softMin);return[renderStepBudget(promptText(config,"step_budget",STEP_BUDGET),{timeoutMin,softMin,wrapUpMin}),config.safeMode?promptText(config,"safe_mode_note",SAFE_MODE_NOTE):"",promptText(config,"n\
274
+ on_interactive_note",NON_INTERACTIVE_NOTE),body].filter(s=>s!=="").join("\n\n")}var STEP_BUDGET=["\u3010\u5B9F\u884C\u6642\u9593\u306E\u4E88\u7B97\u3011\u3053\u306E\u5B9F\u884C\u306F {timeout_min}\u5206 \u3067\u30D7\u30ED\u30BB\u30B9\u304C\u5F37\u5236\u7D42\u4E86\u3055\u308C\u307E\u3059\u3002\u4E88\u544A\u3084\u7336\u4E88\u306F\u3042\u308A\u307E\u305B\u3093\u3002",["- \u958B\u59CB\u304B\u3089 **{soft_min}\u5206** \u3092\u904E\u304E\u305F\u3089\u3001\u4F5C\u696D\u3092\u6253\u3061\u5207\u3063\u3066\u7DE0\u3081\u51E6\u7406\u306B\u5165\u3063\u3066\u304F\u3060\u3055\u3044\uFF08\u30B3\u30DF\u30C3\u30C8 \u2192 push \u2192 PR\u4F5C\u6210 \u2192 \u30BF\u30B9\u30AF\u306E\u30B9\u30C6\u30FC\u30BF\u30B9\u30FB\u62C5\u5F53\u306E\u66F4\u65B0 \u2192 \u5F15\u304D\u7D99\u304E\u30B3\u30E1\u30F3\u30C8\uFF09",
275
275
  "- \u7DE0\u3081\u51E6\u7406\u306B\u306F10\u5206\u7A0B\u5EA6\u3092\u898B\u8FBC\u3093\u3067\u304F\u3060\u3055\u3044\uFF08{soft_min}\u5206\u6642\u70B9\u3067\u306E\u6B8B\u308A\u306F {wrap_up_min}\u5206\uFF09","- **\u7D4C\u904E\u6642\u9593\u306F `date` \u3067\u5B9F\u6E2C\u3057\u3066\u304F\u3060\u3055\u3044\u3002** \u4F53\u611F\u3067\u300C\u4E88\u7B97\u304C\u5C3D\u304D\u304B\u3051\u3066\u3044\u308B\u300D\u3068\u5224\u65AD\u3057\u306A\u3044\u3053\u3068\u2014\u2014\u5B9F\u6E2C\u305B\u305A\u306B\u65E9\u671F\u96E2\u8131\u3059\u308B\u3068\u3001\u6B8B\u308A\u6642\u9593\u304C\u3042\u308B\u306E\u306B\u5DE5\u7A0B\u304C\u9014\u4E2D\u3067\u6B62\u307E\u308A\u307E\u3059\uFF08\u5B9F\u6E2C\u305B\u305A\u306B\u8FF0\u3079\u305F\u6B8B\u308A\u6642\u9593\u306F\u61B2\u7AE0A3\u9055\u53CD\uFF09",
276
276
  "- \u6B8B\u4F5C\u696D\u306F\u300C\u5B8C\u4E86\u3057\u305F\u7BC4\u56F2\u300D\u3068\u300C\u672A\u7740\u624B\u306E\u7BC4\u56F2\u300D\u3092\u5206\u3051\u3066\u30BF\u30B9\u30AF\u3078\u66F8\u3051\u3070\u3001\u6B21\u306E\u30B5\u30A4\u30AF\u30EB\u3067\u7D99\u7D9A\u3067\u304D\u307E\u3059","- \u30B9\u30B3\u30FC\u30D7\u304C {timeout_min}\u5206 \u306B\u53CE\u307E\u3089\u306A\u3044\u3068\u5224\u65AD\u3057\u305F\u3089\u3001\u5B9F\u88C5\u3092\u7D9A\u3051\u305A\u30BF\u30B9\u30AF\u306E\u5206\u5272\u3092\u63D0\u6848\u3057\u3066\u304F\u3060\u3055\u3044"].
277
277
  join("\n"),"**\u5927\u304D\u306A\u672A\u5B8C\u6210\u3088\u308A\u3001\u5C0F\u3055\u304F\u3066\u3082\u5B8C\u6210\u3057\u3066\u3044\u308B\u72B6\u614B\u3092\u512A\u5148\u3057\u3066\u304F\u3060\u3055\u3044**\uFF08\u61B2\u7AE0A2: \u9593\u306B\u5408\u308F\u306A\u3044\u3068\u304D\u306B\u524A\u308B\u306E\u306F\u30B9\u30B3\u30FC\u30D7\u3067\u3042\u3063\u3066\u62C5\u4FDD\u3067\u306F\u306A\u3044\uFF09\u3002"].join("\n\n");var SAFE_MODE_NOTE=`\u3010\u5B89\u5168\u30E2\u30FC\u30C9\u6709\u52B9\u3011\u672C\u756A\u30EA\u30EA\u30FC\u30B9\u306F\u7981\u6B62\u3067\u3059\u3002\u4EE5\u4E0B\u3092\u7D76\u5BFE\u306B\u5B9F\u884C\u3057\u306A\u3044\u3067\u304F\u3060\u3055\u3044:
@@ -296,14 +296,15 @@ const startedAtMs=now();let warned="";let done=false;const check=()=>{if(done)re
296
296
  decision.key)return;warned=decision.key;handlers.onWarn(decision.reason);return}done=true;const recorded=writeRestartAttempt(opts.stateDir,opts.projectKey,{from:decision.from,to:decision.to,at:new Date(now()).toISOString()},opts.store);if(!recorded){handlers.onWarn(`\u518D\u8D77\u52D5\u8A18\u9332\u3092\u66F8\u3051\u307E\u305B\u3093\u3067\u3057\u305F\uFF08${restartAttemptPath(opts.stateDir,opts.projectKey)}\uFF09\u3002\u540C\u3058\u7248\u30C9\u30EA\u30D5\u30C8\u304C\u89E3\u6D88\u3057\u306A\u3044\u5834\u5408\u3001\u518D\u8D77\u52D5\u3092\u7E70\u308A\u8FD4\u3059\u9632\u6CE2\u5824\u304C\u52B9\u304D\u307E\u305B\u3093`)}
297
297
  handlers.onRestart({from:decision.from,to:decision.to})};const timer=setInterval(check,opts.intervalMs??DRIFT_POLL_MS);timer.unref?.();return{stop:()=>{done=true;clearInterval(timer)},check}}import fs8 from"fs";import path6 from"path";var POLL_MS=1e3;var MAX_STOP_BYTES=4096;var MAX_AT_LENGTH=64;function markerPath(lockDir2,kind){return path6.join(lockDir2,kind)}function requestMarker(lockDir2,kind,pid,deps={}){const target=markerPath(lockDir2,kind);const write=deps.writeFileSync??((p,d)=>fs8.writeFileSync(p,d,{flag:"wx",mode:384}));const now=deps.now??(()=>new Date);clearMarker(lockDir2,kind,deps);try{write(target,`${JSON.stringify({pid,at:now().toISOString()})}
298
298
  `);return{ok:true}}catch(err){const e=err;return{ok:false,reason:e.code??"UNKNOWN"}}}function readMarker(lockDir2,kind,deps={}){const target=markerPath(lockDir2,kind);const read=deps.readFileSync??(p=>fs8.readFileSync(p,"utf8"));const size=deps.statSize??(p=>fs8.statSync(p).size);let raw;try{if(size(target)>MAX_STOP_BYTES)return null;raw=read(target)}catch{return null}if(raw.length>MAX_STOP_BYTES)return null;try{const parsed=JSON.parse(raw);if(typeof parsed!=="object"||parsed===null)return null;const pid=parsed.pid;const at=parsed.at;if(typeof pid!=="number"||!Number.isInteger(pid)||
299
- pid<=0)return null;return{pid,at:sanitizeAt(at)}}catch{return null}}function sanitizeAt(at){if(typeof at!=="string")return"";return at.replace(/[\u0000-\u001f\u007f]/g," ").slice(0,MAX_AT_LENGTH)}function clearMarker(lockDir2,kind,deps={}){const rm=deps.rmSync??(p=>fs8.rmSync(p,{recursive:true,force:true}));try{rm(markerPath(lockDir2,kind))}catch{}}function watchMarker(lockDir2,kind,selfPid,onStop,deps={}){let fired=false;const timer=setInterval(()=>{if(fired)return;const req=readMarker(lockDir2,kind,deps);if(req===null||req.pid!==selfPid)return;fired=true;onStop(req)},deps.intervalMs??POLL_MS);timer.unref?.();return()=>{fired=true;clearInterval(timer)}}function safe(s){return stripTerminalControls(s)}function compactTimestamp(at=new Date){const p2=n=>String(n).padStart(2,"0");return`${at.getFullYear()}${p2(at.getMonth()+1)}${p2(at.getDate())}-${p2(at.getHours())}${p2(at.getMinutes())}${p2(at.getSeconds())}`}async function buildEngine(config,log){if(config.engine==="noop")return new NoopEngine;const{DispatchEngine}=await import("./ai-dispatch-QKGK4P7P.js");const{DEFAULT_PREFLIGHT_HOSTS}=await import("./ai-dispatch-QKGK4P7P.js");const extraHosts=config.
299
+ pid<=0)return null;return{pid,at:sanitizeAt(at)}}catch{return null}}function sanitizeAt(at){if(typeof at!=="string")return"";return at.replace(/[\u0000-\u001f\u007f]/g," ").slice(0,MAX_AT_LENGTH)}function clearMarker(lockDir2,kind,deps={}){const rm=deps.rmSync??(p=>fs8.rmSync(p,{recursive:true,force:true}));try{rm(markerPath(lockDir2,kind))}catch{}}function watchMarker(lockDir2,kind,selfPid,onStop,deps={}){let fired=false;const timer=setInterval(()=>{if(fired)return;const req=readMarker(lockDir2,kind,deps);if(req===null||req.pid!==selfPid)return;fired=true;onStop(req)},deps.intervalMs??POLL_MS);timer.unref?.();return()=>{fired=true;clearInterval(timer)}}function safe(s){return stripTerminalControls(s)}function compactTimestamp(at=new Date){const p2=n=>String(n).padStart(2,"0");return`${at.getFullYear()}${p2(at.getMonth()+1)}${p2(at.getDate())}-${p2(at.getHours())}${p2(at.getMinutes())}${p2(at.getSeconds())}`}async function buildEngine(config,log){if(config.engine==="noop")return new NoopEngine;const{DispatchEngine}=await import("./ai-dispatch-FTZKQHEL.js");const{DEFAULT_PREFLIGHT_HOSTS}=await import("./ai-dispatch-FTZKQHEL.js");const extraHosts=config.
300
300
  operations.preflightHosts;return new DispatchEngine(config.ai,log,{workspace:config.workspace,charterFile:config.charterFile??void 0,charterEnabled:config.charterEnabled,...config.charterPrefix===null?{}:{charterPrefix:config.charterPrefix},...config.charterSuffix===null?{}:{charterSuffix:config.charterSuffix},serverPrompts:()=>config.serverPrompts??{},compileCommand:config.compileCommand??void 0,skillOverlayDir:path7.join(config.stateDir,"skill-overlay",projectFileKey(config.projectId)),launcherBin:config.
301
301
  claudeLauncher.bin,...extraHosts.length>0?{preflightHosts:[...DEFAULT_PREFLIGHT_HOSTS,...extraHosts]}:{}})}function lockDir(config){return path7.join(config.stateDir,`task-loop-${projectFileKey(config.projectId)}.lock.d`)}function runnerIdPersisted(stateDir,env=process.env){if((env.RUNNER_ID?.trim()??"")!=="")return true;const file=env.RUNNER_ID_FILE&&env.RUNNER_ID_FILE.trim()!==""?env.RUNNER_ID_FILE:path7.join(stateDir,"runner-id");return fs9.existsSync(file)}async function runTaskLoop(opts){if(opts.
302
- action==="stop")return await stopLoop(opts);if(opts.action==="plan"){if(opts.planOp!=="submit"){process.stderr.write("plan \u306B\u306F submit \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\n");return 2}const{runPlanSubmit}=await import("./plan-submit-F5VH3T37.js");return runPlanSubmit({file:opts.charterInput,empty:opts.planEmpty===true,check:opts.planCheck===true},{env:process.env,readStdin:()=>fs9.readFileSync(0,"utf8"),stdout:s=>process.stdout.write(s),stderr:s=>process.stderr.write(s)})}
302
+ action==="stop")return await stopLoop(opts);if(opts.action==="plan"){if(opts.planOp!=="submit"){process.stderr.write("plan \u306B\u306F submit \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\n");return 2}const{runPlanSubmit}=await import("./plan-submit-WP25FEYE.js");return runPlanSubmit({file:opts.charterInput,empty:opts.planEmpty===true,check:opts.planCheck===true},{env:process.env,readStdin:()=>fs9.readFileSync(0,"utf8"),stdout:s=>process.stdout.write(s),stderr:s=>process.stderr.write(s)})}
303
303
  const profile=resolveProfile(opts.profile);let creds;try{creds=new AuthSession(profile.name,profile.apiUrl).loadOrThrow()}catch(err){process.stderr.write(`${err.message}
304
- `);return 1}const apiUrl=effectiveApiUrl(profile,creds.api_url);const session=new AuthSession(profile.name,apiUrl);const projectRef=opts.project??process.env.TWP_PROJECT??"";if(projectRef===""){process.stderr.write("--project <\u30AD\u30FC|UUID> \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08TWP_PROJECT \u3067\u3082\u53EF\uFF09\n");return 2}const projectApi=new ProjectApi(apiUrl,session);let project;try{project=await projectApi.resolve(projectRef)}catch(err){process.stderr.write(`${err.
305
- message}
306
- `);return 1}const projectId=project.id;if(opts.action==="setup"){const{runSetup,parseAiList}=await import("./setup-DW2H7BDN.js");let ais;if(opts.ais!==void 0&&opts.ais.length>0){const parsed=parseAiList(opts.ais.join(","));if(parsed.unknown.length>0){process.stderr.write(`--ai \u306B\u672A\u77E5\u306E\u5024\u304C\u3042\u308A\u307E\u3059: ${parsed.unknown.join(" / ")}
304
+ `);return 1}const apiUrl=effectiveApiUrl(profile,creds.api_url);const session=new AuthSession(profile.name,apiUrl);if(opts.action==="capacity"&&opts.capacityOp==="list"){let filterId;if(opts.project!==void 0&&opts.project!==""){try{filterId=(await new ProjectApi(apiUrl,session).resolve(opts.project)).id}catch(err){process.stderr.write(`${err.message}
305
+ `);return 1}}const api2=new AgentLoopApi({apiUrl,projectId:filterId??"",session});const{runCapacityList}=await import("./capacity-list-command-LKOVLAY4.js");return runCapacityList({get:()=>api2.runnersOverview()},{output:opts.output,query:opts.query,includeStopped:opts.includeStopped===true,projectId:filterId})}const projectRef=opts.project??process.env.TWP_PROJECT??"";if(projectRef===""){process.stderr.write("--project <\u30AD\u30FC|UUID> \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08TWP_PROJECT \u3067\u3082\u53EF\uFF09\n");
306
+ return 2}const projectApi=new ProjectApi(apiUrl,session);let project;try{project=await projectApi.resolve(projectRef)}catch(err){process.stderr.write(`${err.message}
307
+ `);return 1}const projectId=project.id;if(opts.action==="setup"){const{runSetup,parseAiList}=await import("./setup-2KAICJYN.js");let ais;if(opts.ais!==void 0&&opts.ais.length>0){const parsed=parseAiList(opts.ais.join(","));if(parsed.unknown.length>0){process.stderr.write(`--ai \u306B\u672A\u77E5\u306E\u5024\u304C\u3042\u308A\u307E\u3059: ${parsed.unknown.join(" / ")}
307
308
  `);return 2}ais=parsed.ais}return runSetup({projectId,projectRef,projectName:project.name===project.id?projectRef:`${project.code} / ${project.name}`,apiUrl,yes:opts.yes===true,...ais!==void 0?{ais}:{},...opts.workspace!==void 0?{workspace:opts.workspace}:{},...opts.aiConfigFile!==void 0?{aiConfigFile:opts.aiConfigFile}:{},...opts.noAiConfigFile===true?{noAiConfigFile:true}:{},...opts.profile!==void 0?{profile:opts.profile}:{}})}if(opts.action==="charter"){if(opts.charterOp===void 0){process.stderr.
308
309
  write("charter \u306B\u306F push / pull / history / diff / revert \u306E\u3044\u305A\u308C\u304B\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\n");return 2}if(isPrivateProjectId(projectId)){process.stderr.write("\u500B\u4EBA\u30BF\u30B9\u30AF\u306E\u30AD\u30E5\u30FC\uFF08--project __private__\uFF09\u306B\u306F\u61B2\u7AE0\u306E\u8A2D\u5B9A\u304C\u3042\u308A\u307E\u305B\u3093\n");return 2}if(opts.charterOp!=="push"&&opts.charterOp!=="pull"){const{runRevisionCommand}=await import("./revision-command-KT7NMRES.js");
309
310
  return runRevisionCommand({api:new AgentLoopApi({apiUrl,projectId,session})},{target:"charter",op:opts.charterOp,from:opts.revisionFrom,to:opts.revisionTo,revision:opts.charterRevision,yes:opts.yes===true,projectRef,profile:opts.profile})}const{runCharterCommand}=await import("./charter-command-A4MFFBGE.js");return runCharterCommand({api:new AgentLoopApi({apiUrl,projectId,session})},{op:opts.charterOp,file:opts.charterInput,out:opts.charterOutput,revision:opts.charterRevision,yes:opts.yes===true,projectRef,
@@ -311,13 +312,13 @@ profile:opts.profile})}if(opts.action==="runner"){if(opts.runnerOp===void 0){pro
311
312
  if(opts.action==="schedule"&&opts.scheduleOp!==void 0){const{runScheduleDefCommand}=await import("./schedule-def-command-OFCA5VH3.js");return runScheduleDefCommand({api:new AgentLoopApi({apiUrl,projectId,session})},{op:opts.scheduleOp,configOp:opts.scheduleConfigOp,id:opts.scheduleId,file:opts.charterInput,out:opts.charterOutput,revision:opts.charterRevision,yes:opts.yes===true,projectRef,profile:opts.profile})}if(opts.action==="settings"){if(opts.settingsOp===void 0){process.stderr.write("settings \u306B\u306F pu\
312
313
  sh / pull \u306E\u3044\u305A\u308C\u304B\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\n");return 2}if(isPrivateProjectId(projectId)){process.stderr.write("\u500B\u4EBA\u30BF\u30B9\u30AF\u306E\u30AD\u30E5\u30FC\uFF08--project __private__\uFF09\u306B\u306F\u30EB\u30FC\u30D7\u8A2D\u5B9A\u304C\u3042\u308A\u307E\u305B\u3093\n");return 2}const{runSettingsCommand}=await import("./settings-command-TEVH2MNY.js");return runSettingsCommand({api:new AgentLoopApi({apiUrl,projectId,session})},{op:opts.settingsOp,
313
314
  file:opts.charterInput,out:opts.charterOutput,revision:opts.charterRevision,yes:opts.yes===true,projectRef,profile:opts.profile})}if(opts.action==="skill"){if(opts.skillOp===void 0){process.stderr.write("skill \u306B\u306F push / pull / list / show / delete / history / diff / revert / check \u306E\u3044\u305A\u308C\u304B\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\n");return 2}if(isPrivateProjectId(projectId)){process.stderr.write("\u500B\u4EBA\u30BF\u30B9\u30AF\u306E\u30AD\u30E5\u30FC\uFF08--project __private__\uFF09\u306B\u306F\u30B9\u30AD\u30EB\u5B9A\u7FA9\u306E\u8A2D\u5B9A\u304C\u3042\u308A\u307E\u305B\u3093\n");
314
- return 2}if(opts.skillOp==="check"){const{runSkillCheck}=await import("./skill-check-JBRUAUID.js");return runSkillCheck({api:new AgentLoopApi({apiUrl,projectId,session})},{configPath:opts.skillConfig,defaultConfigPath:localConfigPath(projectId),output:opts.output})}if(opts.skillOp==="list"||opts.skillOp==="show"||opts.skillOp==="delete"){const{runSkillManageCommand}=await import("./skill-manage-command-E7M7ZSQP.js");return runSkillManageCommand({api:new AgentLoopApi({apiUrl,projectId,session})},{op:opts.
315
+ return 2}if(opts.skillOp==="check"){const{runSkillCheck}=await import("./skill-check-VNUNX6IO.js");return runSkillCheck({api:new AgentLoopApi({apiUrl,projectId,session})},{configPath:opts.skillConfig,defaultConfigPath:localConfigPath(projectId),output:opts.output})}if(opts.skillOp==="list"||opts.skillOp==="show"||opts.skillOp==="delete"){const{runSkillManageCommand}=await import("./skill-manage-command-E7M7ZSQP.js");return runSkillManageCommand({api:new AgentLoopApi({apiUrl,projectId,session})},{op:opts.
315
316
  skillOp,name:opts.skillName,output:opts.output,query:opts.query,revision:opts.charterRevision,yes:opts.yes===true,projectRef,profile:opts.profile})}if(opts.skillOp!=="push"&&opts.skillOp!=="pull"){const{runRevisionCommand}=await import("./revision-command-KT7NMRES.js");return runRevisionCommand({api:new AgentLoopApi({apiUrl,projectId,session})},{target:"skill",op:opts.skillOp,name:opts.skillName,from:opts.revisionFrom,to:opts.revisionTo,revision:opts.charterRevision,yes:opts.yes===true,projectRef,profile:opts.
316
317
  profile})}const{runSkillCommand}=await import("./skill-command-4VMZ2H6A.js");return runSkillCommand({api:new AgentLoopApi({apiUrl,projectId,session})},{op:opts.skillOp,name:opts.skillName,all:opts.skillAll===true,dir:opts.skillDir,revision:opts.charterRevision,yes:opts.yes===true,projectRef,profile:opts.profile})}const config=buildLoopConfig({projectId,projectRef,apiUrl,safeMode:opts.safe,daemon:opts.daemon,...opts.maxCycles!==void 0?{maxCycles:opts.maxCycles}:{},...opts.interval!==void 0?{intervalSec:opts.
317
- interval}:{},forceRunner:opts.forceRunner,...opts.engine!==void 0?{engine:opts.engine}:{},version:opts.version});const api=new AgentLoopApi({apiUrl,projectId,session});if(opts.action==="capacity"){if(opts.capacityOp!=="report"){process.stderr.write("capacity \u306B\u306F report \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\n");return 2}for(const warning of config.warnings)process.stderr.write(`\u26A0\uFE0F ${warning}
318
- `);const{runCapacityReport}=await import("./capacity-report-command-BUCAQ2P4.js");return runCapacityReport({api,projectId,runnerId:config.runnerId,stateDir:config.stateDir,cwd:config.workspace,probe:config.capacityProbe,runnerIdPersisted:runnerIdPersisted(config.stateDir),version:opts.version,platform:runnerPlatform(),stdout:s=>process.stdout.write(s),stderr:s=>process.stderr.write(s)})}if(opts.action==="status"||opts.action==="schedule"){for(const warning of config.warnings)process.stderr.write(`\u26A0\uFE0F ${warning}\
318
+ interval}:{},forceRunner:opts.forceRunner,...opts.engine!==void 0?{engine:opts.engine}:{},version:opts.version});const api=new AgentLoopApi({apiUrl,projectId,session});if(opts.action==="capacity"){if(opts.capacityOp!=="report"){process.stderr.write("capacity \u306B\u306F report / list \u306E\u3044\u305A\u308C\u304B\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\n");return 2}for(const warning of config.warnings)process.stderr.write(`\u26A0\uFE0F ${warning}
319
+ `);const{runCapacityReport}=await import("./capacity-report-command-CENWVTKK.js");return runCapacityReport({api,projectId,runnerId:config.runnerId,stateDir:config.stateDir,cwd:config.workspace,probe:config.capacityProbe,runnerIdPersisted:runnerIdPersisted(config.stateDir),version:opts.version,platform:runnerPlatform(),stdout:s=>process.stdout.write(s),stderr:s=>process.stderr.write(s)})}if(opts.action==="status"||opts.action==="schedule"){for(const warning of config.warnings)process.stderr.write(`\u26A0\uFE0F ${warning}\
319
320
 
320
- `)}if(opts.action==="status")return showStatus(api,config,opts);if(opts.action==="schedule"){const{runScheduleCommand}=await import("./schedule-command-ZOE3NYAA.js");return runScheduleCommand({api,projectApi,config},{now:opts.scheduleNow,counts:opts.scheduleCounts,gate:opts.scheduleGate,verbose:opts.verbose===true})}if(config.engine===""){process.stderr.write(`${new EngineNotConfiguredError().message}
321
+ `)}if(opts.action==="status")return showStatus(api,config,opts);if(opts.action==="schedule"){const{runScheduleCommand}=await import("./schedule-command-4TFAFIAO.js");return runScheduleCommand({api,projectApi,config},{now:opts.scheduleNow,counts:opts.scheduleCounts,gate:opts.scheduleGate,verbose:opts.verbose===true})}if(config.engine===""){process.stderr.write(`${new EngineNotConfiguredError().message}
321
322
  `);return 2}try{assertKnownEngine(config.engine)}catch(err){if(err instanceof UnknownEngineError){process.stderr.write(`${err.message}
322
323
  `);return 2}throw err}fs9.mkdirSync(config.logDir,{recursive:true,mode:448});rotateLogs(config.logDir,config.logRetentionDays);const logFile=path7.join(config.logDir,`agent-loop-${compactTimestamp()}.log`);const log=new LoopLogger(config.runnerId,logFile);for(const warning of config.warnings)log.log(`\u26A0\uFE0F ${warning}`);const lock=new InstanceLock(lockDir(config));const acquired=lock.acquire();if(!acquired.acquired){log.log(`\u274C ${acquired.reason}`);log.log(" \u610F\u56F3\u7684\u306B2\u30D7\u30ED\u30BB\u30B9\u52D5\u304B\u3059\u691C\u8A3C\u3067\u306F TWP_OPS\
323
324
  _STATE_DIR \u3068 RUNNER_ID \u3092\u5206\u3051\u3066\u304F\u3060\u3055\u3044");log.close();return 1}if(acquired.note)log.log(` \u2139\uFE0F ${acquired.note}`);const ownerError=writeLockOwner(lockDir(config),buildLockOwner({pid:process.pid,profile:profile.name,twpHome:twpHomeDir(),projectRef:config.projectRef,projectId:config.projectId}));if(ownerError!==null){log.log(` \u26A0\uFE0F \u30ED\u30C3\u30AF\u306B\u6240\u6709\u8005\u306E\u8A18\u9332\u3092\u66F8\u3051\u307E\u305B\u3093\u3067\u3057\u305F\uFF08${ownerError}\
@@ -333,9 +334,9 @@ log.log("\u4E2D\u65AD\u30B7\u30B0\u30CA\u30EB\u3092\u53D7\u4FE1\u3057\u307E\u305
333
334
  "\u6642\u523B\u4E0D\u660E"}\uFF09\u3002\u7D42\u4E86\u3057\u307E\u3059...`);stopWatcher?.();drainWatcher?.();driftWatcher?.();void shutdown().catch(()=>void 0).then(()=>process.exit(130))});drainWatcher=watchMarker(lockDir(config),"drain",process.pid,req=>{drainWatcher?.();if(loop===null){pendingDrain.value={reason:`stop --drain\u30FB${req.at||"\u6642\u523B\u4E0D\u660E"}`,exitCode:0};log.log(`\u30C9\u30EC\u30A4\u30F3\u8981\u6C42\u3092\u53D7\u3051\u53D6\u308A\u307E\u3057\u305F\uFF08${req.at||"\u6642\u523B\u4E0D\u660E"}\
334
335
  \uFF09\u3002\u8D77\u52D5\u51E6\u7406\u306E\u5B8C\u4E86\u5F8C\u306B\u53CD\u6620\u3057\u307E\u3059\u3002`);return}loop.requestDrain(`stop --drain\u30FB${req.at||"\u6642\u523B\u4E0D\u660E"}`)});if(installed!==null){const watch=watchVersionDrift({runningVersion:opts.version,stateDir:config.stateDir,projectKey:projectFileKey(config.projectId),supervised:autoRestart.supervised,disabled:autoRestart.disabled},{onWarn:reason=>log.log(`\u26A0\uFE0F ${reason}`),onRestart:({from,to})=>{driftWatcher?.();log.
335
336
  log(`\u7248\u30C9\u30EA\u30D5\u30C8\u3092\u691C\u51FA\u3057\u307E\u3057\u305F\uFF08${from} \u2192 ${to}\uFF09\u3002`);log.log(` \u5B9F\u884C\u4E2D\u306E\u30A2\u30A4\u30C6\u30E0\u3092\u5B8C\u8D70\u3055\u305B\u3066\u304B\u3089\u7D42\u4E86\u3057\u307E\u3059\uFF08\u7D42\u4E86\u30B3\u30FC\u30C9 ${EXIT_VERSION_DRIFT}\uFF09\u3002\u518D\u8D77\u52D5\u306F systemd\uFF08Restart=always\uFF09\u304C\u884C\u3044\u307E\u3059`);const reason=`\u7248\u30C9\u30EA\u30D5\u30C8 ${from} \u2192 ${to} \u306B\u3088\u308B\u81EA\u52D5\u518D\u8D77\u52D5`;
336
- if(loop===null)pendingDrain.value={reason,exitCode:EXIT_VERSION_DRIFT};else loop.requestDrain(reason,EXIT_VERSION_DRIFT)}});driftWatcher=watch.stop}try{const{LoopSettingsApplier:LoopSettingsApplier2}=await import("./server-settings-GFWQ5ERV.js");const settings=new LoopSettingsApplier2({api,config,log:m=>log.log(m)});await settings.apply();const{ServerSkillCatalog:ServerSkillCatalog2}=await import("./server-skills-FVYYZ54O.js");const skills=new ServerSkillCatalog2({api,config,log:m=>log.log(m)});await skills.
337
+ if(loop===null)pendingDrain.value={reason,exitCode:EXIT_VERSION_DRIFT};else loop.requestDrain(reason,EXIT_VERSION_DRIFT)}});driftWatcher=watch.stop}try{const{LoopSettingsApplier:LoopSettingsApplier2}=await import("./server-settings-RNJ6RVTE.js");const settings=new LoopSettingsApplier2({api,config,log:m=>log.log(m)});await settings.apply();const{ServerSkillCatalog:ServerSkillCatalog2}=await import("./server-skills-5JESWOTH.js");const skills=new ServerSkillCatalog2({api,config,log:m=>log.log(m)});await skills.
337
338
  refresh();await runner.checkHeartbeatInterval();await runner.registerOrThrow();runner.startHeartbeatWorker();log.log(` heartbeat: ${config.heartbeatIntervalSec}\u79D2\u3054\u3068\u306B\u9001\u4FE1${runner.heartbeatTimeoutServer?`\uFF08\u30B5\u30FC\u30D0\u306E\u6B7B\u6D3B\u3057\u304D\u3044\u5024 ${runner.heartbeatTimeoutServer}\u79D2\uFF09`:""}`);loop=new TaskLoop({api,projectApi,config,log,runner,engine:await buildEngine(config,m=>log.log(m)),settings,skills});if(pendingDrain.value!==null){loop.
338
- requestDrain(pendingDrain.value.reason,pendingDrain.value.exitCode)}exitCode=await loop.run()}catch(err){if(err instanceof RunnerRegistrationError){exitCode=1}else{log.log(`\u26D4 \u4E88\u671F\u3057\u306A\u3044\u30A8\u30E9\u30FC\u3067\u7D42\u4E86\u3057\u307E\u3059: ${err.message}`);exitCode=1}}finally{await shutdown()}return exitCode}async function showStatus(api,config,opts){const{runStatusCommand}=await import("./status-command-PEL5GWIH.js");const lock=lockDir(config);return runStatusCommand(api,
339
+ requestDrain(pendingDrain.value.reason,pendingDrain.value.exitCode)}exitCode=await loop.run()}catch(err){if(err instanceof RunnerRegistrationError){exitCode=1}else{log.log(`\u26D4 \u4E88\u671F\u3057\u306A\u3044\u30A8\u30E9\u30FC\u3067\u7D42\u4E86\u3057\u307E\u3059: ${err.message}`);exitCode=1}}finally{await shutdown()}return exitCode}async function showStatus(api,config,opts){const{runStatusCommand}=await import("./status-command-2FL2SVFR.js");const lock=lockDir(config);return runStatusCommand(api,
339
340
  {projectRef:config.projectRef,projectId:config.projectId,apiUrl:config.apiUrl,lockPath:lock,lockHeld:fs9.existsSync(lock),profile:opts.profile},{output:opts.output,query:opts.query},{out:s=>process.stdout.write(s),err:s=>process.stderr.write(s)})}var STOP_WAIT_MS=18e4;var STOP_POLL_MS=250;function defaultIsAlive(pid){try{process.kill(pid,0);return true}catch(err){return err.code==="EPERM"}}async function stopLoop(opts,deps={}){const platform=deps.platform??process.platform;const isLoopProcess=deps.
340
341
  isLoopProcess??defaultIsLoopProcess;const isAlive=deps.isAlive??defaultIsAlive;const waitMs=deps.waitMs??STOP_WAIT_MS;const pollMs=deps.pollMs??STOP_POLL_MS;const now=deps.now??Date.now;const nap=deps.sleep??(ms=>new Promise(r=>setTimeout(r,ms)));const request=deps.requestMarkerFn??requestMarker;const out=m=>void process.stdout.write(m);const err=m=>void process.stderr.write(m);if(opts.force&&opts.drain){err("\u26A0\uFE0F --force \u3068 --drain \u306F\u540C\u6642\u306B\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\uFF08\u8981\u6C42\u304C\u6B63\u53CD\u5BFE\u3067\u3059\uFF09\u3002\u3069\u3061\u3089\u3082\u5B9F\u884C\u3057\u307E\u305B\u3093\n");
341
342
  return 2}const stateDir=deps.stateDir??loopStateDir();let dirs;try{dirs=fs9.readdirSync(stateDir).filter(d=>/^task-loop-.*\.lock\.d$/.test(d))}catch{dirs=[]}if(opts.project){if(/^[0-9a-f-]{36}$/i.test(opts.project)||ULID_RE.test(opts.project)){dirs=dirs.filter(d=>d===`task-loop-${opts.project}.lock.d`)}else if(isPrivateProjectRef(opts.project)){dirs=dirs.filter(d=>d.startsWith("task-loop-private-"))}else{err(`\u26A0\uFE0F --project \u306F ID\uFF08UUID / ULID\uFF09\u6307\u5B9A\u306E\u3068\u304D\u3060\u3051\u7D5E\u308A\u8FBC\u3081\u307E\u3059\uFF08${safe(
@@ -50,7 +50,7 @@ ${err.hint?`${err.hint}
50
50
  `);return 1}writeErr(`\u30A8\u30E9\u30FC: ${err.message}
51
51
  `);return 1}}async function runLogin(options){return run(async()=>{const profile=resolveProfile(options.profile);const io=makeIo(options.cliVersion);if(options.method==="password"){await passwordLogin(profile,{tenantCode:options.tenant??void 0},process.env,io)}else if(options.method==="token"){await tokenLogin(profile,process.env,io)}else{await browserLogin(profile,process.env,io,{noBrowser:options.noBrowser})}})}async function runLogout(options){return run(async()=>{const profile=resolveProfile(
52
52
  options.profile);const creds=loadCredentials(profile.name);if(!creds){writeOut(`\u30D7\u30ED\u30D5\u30A1\u30A4\u30EB\u300C${profile.name}\u300D\u306F\u30ED\u30B0\u30A4\u30F3\u3057\u3066\u3044\u307E\u305B\u3093\u3002
53
- `);return}const{describeLogoutImpact,findLoopsUsingProfile}=await import("./logout-guard-FCCJSF5V.js");const found=findLoopsUsingProfile(profile.name,options.logoutGuard);if(found.users.length>0||found.undetermined.length>0){writeErr(describeLogoutImpact(profile.name,found,options.force===true));if(options.force!==true)throw new LogoutRefusedError}const apiUrl=effectiveApiUrl(profile,creds.api_url);const revoked=await httpFetch(`${apiUrl}/api/v2/auth/logout`,{method:"POST",headers:{Accept:"applic\
53
+ `);return}const{describeLogoutImpact,findLoopsUsingProfile}=await import("./logout-guard-PEETWT4A.js");const found=findLoopsUsingProfile(profile.name,options.logoutGuard);if(found.users.length>0||found.undetermined.length>0){writeErr(describeLogoutImpact(profile.name,found,options.force===true));if(options.force!==true)throw new LogoutRefusedError}const apiUrl=effectiveApiUrl(profile,creds.api_url);const revoked=await httpFetch(`${apiUrl}/api/v2/auth/logout`,{method:"POST",headers:{Accept:"applic\
54
54
  ation/json",Authorization:`Bearer ${creds.token}`}}).then(res=>res.ok,()=>false);await deleteCredentials(profile.name);writeOut(`\u2705 \u30ED\u30B0\u30A2\u30A6\u30C8\u3057\u307E\u3057\u305F\uFF08\u30D7\u30ED\u30D5\u30A1\u30A4\u30EB: ${profile.name} / \u30C8\u30FC\u30AF\u30F3: ${maskToken(creds.token)}\uFF09
55
55
  `);if(!revoked){writeOut("\u26A0 \u30B5\u30FC\u30D0\u5074\u306E\u30C8\u30FC\u30AF\u30F3\u5931\u52B9\u306B\u5931\u6557\u3057\u307E\u3057\u305F\uFF08\u30AA\u30D5\u30E9\u30A4\u30F3\u7B49\uFF09\u3002TWP \u306E\u300C\u8A2D\u5B9A > CLI\u7AEF\u672B\u300D\u304B\u3089\u3082\u5931\u52B9\u3067\u304D\u307E\u3059\u3002\n")}})}async function runWhoami(options){return run(async()=>{const profile=resolveProfile(options.profile);const structured=options.output!==void 0||options.query!==void 0;let format=null;if(structured){
56
56
  const{resolveOutputFormat,OUTPUT_FORMATS}=await import("./format-F6PPBPY5.js");format=resolveOutputFormat({...options.output!==void 0?{flag:options.output}:{},isTty:process.stdout.isTTY===true});if(format===null){throw new UsageError(`--output \u306B\u300C${options.output??""}\u300D\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093`,`\u6307\u5B9A\u3067\u304D\u308B\u306E\u306F ${OUTPUT_FORMATS.join(" / ")} \u3067\u3059`)}}const stored=loadCredentials(profile.name);const apiUrl=effectiveApiUrl(
@@ -1,7 +1,7 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{customerDocumentSubresources}from"./chunk-NTT2QG3J.js";import{COMPANY_FIELDS,COMPANY_LICENSE,CUSTOMER_LICENSE,customerSubresources,customerWriteOperations,dataOf,levelForbidden}from"./chunk-CZVQS3WP.js";import"./chunk-WTYIFLVB.js";import"./chunk-V64CGX7V.js";import"./chunk-QLENN5DD.js";import"./chunk-RMFLTSOV.js";import{featureLicenseGuidance,licenseForbidden}from"./chunk-4RNL462J.js";import{createFlags,fieldBody,hasAnyField,updateFlags}from"./chunk-CADCERVL.js";
4
- import{repeatedValues}from"./chunk-RX5HWI4L.js";import"./chunk-JJSBBWJ5.js";import{CUSTOMERS_PATH,SALES_COMPANIES_PATH,isExactNumericId}from"./chunk-RSSPNFSK.js";import{isSafePathSegment}from"./chunk-HVZUXLQ4.js";import{ApiError}from"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";import{LIST_FLAGS,LIST_PAGING_HELP,PAGE_NUMBER_LIST_FLAGS,PAGE_NUMBER_PAGING_HELP,STABLE_PAGE_ORDER,envelopePaging,nonEmpty,pageNumberPaging,pageNumberQuery,pageRangeNotes,positiveInteger}from"./chunk-MI6HVYR2.js";
3
+ import{customerDocumentSubresources}from"./chunk-FJEGS55N.js";import{COMPANY_FIELDS,COMPANY_LICENSE,CUSTOMER_LICENSE,customerSubresources,customerWriteOperations,dataOf,levelForbidden}from"./chunk-RMU72S3D.js";import"./chunk-WTYIFLVB.js";import"./chunk-V64CGX7V.js";import"./chunk-QLENN5DD.js";import"./chunk-RMFLTSOV.js";import{featureLicenseGuidance,licenseForbidden}from"./chunk-QUMDKN3U.js";import{createFlags,fieldBody,hasAnyField,updateFlags}from"./chunk-WDQMYRPE.js";
4
+ import{repeatedValues}from"./chunk-RX5HWI4L.js";import"./chunk-JJSBBWJ5.js";import{CUSTOMERS_PATH,SALES_COMPANIES_PATH,isExactNumericId}from"./chunk-2AVQILQQ.js";import{isSafePathSegment}from"./chunk-HVZUXLQ4.js";import{ApiError}from"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";import{LIST_FLAGS,LIST_PAGING_HELP,PAGE_NUMBER_LIST_FLAGS,PAGE_NUMBER_PAGING_HELP,STABLE_PAGE_ORDER,envelopePaging,nonEmpty,pageNumberPaging,pageNumberQuery,pageRangeNotes,positiveInteger}from"./chunk-MI6HVYR2.js";
5
5
  import"./chunk-II5RVJQN.js";import{requireResolved,singleRef,withResolved}from"./chunk-PS5QFKHB.js";import{acknowledgement,isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";import"./chunk-XNLIEUAW.js";import"./chunk-J7QYPKVK.js";import"./chunk-EDF4U5BT.js";import"./chunk-RZVI6PMW.js";import"./chunk-QQRJLH6B.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var CUSTOMER_FLAG_FIELD={kind:"boolean",flag:"--customer",key:"customer_flg",summary:"\u9867\u5BA2\u3068\u3057\u3066\u6271\u3046\u304B\uFF08true / false\uFF09"};var FIELDS=[...COMPANY_FIELDS,CUSTOMER_FLAG_FIELD];var COLUMNS=["id","company_name","company_name_kana","company_short_name","customer_flg","supplier_flg","tel","address1"];var WRITE_FORBIDDEN=levelForbidden(COMPANY_LICENSE,"\u53D6\u5F15\u5148\u306E\u4F5C\u6210\u30FB\u66F4\u65B0\u306B\u306F\u3001\u8CA9\u58F2\u7BA1\u7406\u306E\u6A29\u9650\u304C\u300C\u30E1\u30F3\u30D0\u30FC\u300D\u4EE5\u4E0A\u304B\u3001\u9867\u5BA2\u7BA1\u7406\u306E\u6A29\u9650\u304C\u300C\u7DE8\u96C6\u8005\u300D\u4EE5\u4E0A\u306E\u3069\u3061\u3089\u304B\u304C\u8981\u308A\u307E\u3059\u3002\u30C6\u30CA\u30F3\u30C8\u7BA1\u7406\u8005\u306B\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002");
6
6
  var DELETE_FORBIDDEN=levelForbidden(COMPANY_LICENSE,"\u53D6\u5F15\u5148\u306E\u524A\u9664\u306B\u306F\u3001\u8CA9\u58F2\u7BA1\u7406\u306E\u6A29\u9650\u304C\u300C\u30E1\u30F3\u30D0\u30FC\u300D\u4EE5\u4E0A\u304B\u3001\u9867\u5BA2\u7BA1\u7406\u306E\u6A29\u9650\u304C\u300C\u7BA1\u7406\u8005\u300D\u306E\u3069\u3061\u3089\u304B\u304C\u8981\u308A\u307E\u3059\u3002\u30C6\u30CA\u30F3\u30C8\u7BA1\u7406\u8005\u306B\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002");var REF_HELP="<\u53D6\u5F15\u5148> \u306F\u4F01\u696D\u540D\u30FB\u7565\u79F0\u30FB\u30AB\u30CA\u306E\u5B8C\u5168\u4E00\u81F4\u304B\
7
7
  ID\uFF08twp company list \u306E id \u5217\u306E\u6570\u5B57\uFF09\u3067\u6307\u5B9A\u3057\u307E\u3059\u3002\u9867\u5BA2\u30FB\u4ED5\u5165\u5148\u306E\u3069\u3061\u3089\u3082\u6307\u5B9A\u3067\u304D\u307E\u3059\u3002";function companyPath(input){const id=requireResolved(input,"companyId");if(!isExactNumericId(id))throw new UsageError(`\u53D6\u5F15\u5148 ID \u3092\u30D1\u30B9\u306B\u4F7F\u3048\u307E\u305B\u3093: ${id}`);return`${SALES_COMPANIES_PATH}/${id}`}async function resolveCompany(input,ctx,usage){
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{GLOBAL_FLAGS}from"./chunk-IVFSEXD3.js";import"./chunk-2LOT54OO.js";import{API_TOKEN,DOMAIN_NAMES,HELP_TOKEN,isDomainName}from"./chunk-MLRBDF44.js";import{BUILTIN_COMMANDS,QUEUE_DOMAIN,TASK_LOOP_ACTIONS,TASK_LOOP_QUEUE_ACTIONS,VALUE_FLAGS,rewriteQueueCommand}from"./chunk-VERYHAWV.js";import"./chunk-QQRJLH6B.js";import{OUTPUT_FORMATS}from"./chunk-74BPZOKU.js";import"./chunk-UREA4ZIG.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var EXTRA_TOP_LEVEL=[API_TOKEN,HELP_TOKEN,"completion","configure"];var COMPLETION_SHELLS=["bash","zsh","fish","powershell"];var TOP_LEVEL_FLAGS=["--help","--version","-p","--print","--profile","--mode","--permission-mode","--model","--allowed-tools","--disallowed-tools","--no-tui","--doctor"];var DOMAIN_GLOBAL_FLAGS=[...GLOBAL_FLAGS].filter(flag=>flag.startsWith("--"));function staticValues(flag,ctx){if(flag==="--output")return OUTPUT_FORMATS;if(flag==="--profile")return ctx.profileNames();return void 0}
3
+ import{GLOBAL_FLAGS}from"./chunk-QLDKF6GK.js";import"./chunk-2LOT54OO.js";import{API_TOKEN,DOMAIN_NAMES,HELP_TOKEN,isDomainName}from"./chunk-MLRBDF44.js";import{BUILTIN_COMMANDS,QUEUE_DOMAIN,TASK_LOOP_ACTIONS,TASK_LOOP_QUEUE_ACTIONS,VALUE_FLAGS,rewriteQueueCommand}from"./chunk-EOXTDZTA.js";import"./chunk-QQRJLH6B.js";import{OUTPUT_FORMATS}from"./chunk-74BPZOKU.js";import"./chunk-UREA4ZIG.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var EXTRA_TOP_LEVEL=[API_TOKEN,HELP_TOKEN,"completion","configure"];var COMPLETION_SHELLS=["bash","zsh","fish","powershell"];var TOP_LEVEL_FLAGS=["--help","--version","-p","--print","--profile","--mode","--permission-mode","--model","--allowed-tools","--disallowed-tools","--no-tui","--doctor"];var DOMAIN_GLOBAL_FLAGS=[...GLOBAL_FLAGS].filter(flag=>flag.startsWith("--"));function staticValues(flag,ctx){if(flag==="--output")return OUTPUT_FORMATS;if(flag==="--profile")return ctx.profileNames();return void 0}
4
4
  function positionals(words,takesValue){const out=[];for(let i=0;i<words.length;i++){const word=words[i]??"";if(word==="--"){out.push(...words.slice(i+1));break}if(word.startsWith("-")){if(!word.includes("=")&&takesValue(word))i++;continue}out.push(word)}return out}function byPrefix(candidates,current){const seen=new Set;for(const candidate of candidates){if(candidate.startsWith(current))seen.add(candidate)}return[...seen]}function remainingFlags(flags,words){const used=new Set(words.filter(w=>w.
5
5
  startsWith("--")).map(w=>w.split("=")[0]));return[...flags.filter(f=>f.repeatable===true||!used.has(f.name)).map(f=>f.name),...DOMAIN_GLOBAL_FLAGS.filter(f=>!used.has(f))]}async function complete(rawWords,current,ctx){const queue=rewriteQueueCommand(rawWords);if(queue.moved!==void 0)return[];const words=queue.argv;const previous=words[words.length-1];if(previous!==void 0&&previous.startsWith("--")&&!previous.includes("=")){const values=staticValues(previous,ctx);if(values!==void 0)return byPrefix(
6
6
  values,current)}const eq=current.indexOf("=");if(current.startsWith("--")&&eq>0){const flag=current.slice(0,eq);const values=staticValues(flag,ctx);return values===void 0?[]:byPrefix(values.map(v=>`${flag}=${v}`),current)}const pos=positionals(words,flag=>VALUE_FLAGS.has(flag));const[first,second]=pos;if(first===void 0){if(current.startsWith("-"))return byPrefix([...TOP_LEVEL_FLAGS,...DOMAIN_GLOBAL_FLAGS],current);return byPrefix([...BUILTIN_COMMANDS,...DOMAIN_NAMES.filter(name=>name!==QUEUE_DOMAIN),
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{contractAiReviewResources}from"./chunk-FED2BHMI.js";import"./chunk-V3RZ4RFP.js";import{featureLicenseGuidance,licenseForbidden}from"./chunk-4RNL462J.js";import{repeatedValues}from"./chunk-RX5HWI4L.js";import{isoDate}from"./chunk-JJSBBWJ5.js";import{readBody}from"./chunk-IWYJSQ5I.js";import"./chunk-W4NLJ2YK.js";import{SALES_CONTRACTS_PATH,isExactNumericId,resolveNamed}from"./chunk-RSSPNFSK.js";import"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";
3
+ import{contractAiReviewResources}from"./chunk-Y7QW7MHQ.js";import"./chunk-VRJF6JLR.js";import{featureLicenseGuidance,licenseForbidden}from"./chunk-QUMDKN3U.js";import{repeatedValues}from"./chunk-RX5HWI4L.js";import{isoDate}from"./chunk-JJSBBWJ5.js";import{readBody}from"./chunk-IWYJSQ5I.js";import"./chunk-W4NLJ2YK.js";import{SALES_CONTRACTS_PATH,isExactNumericId,resolveNamed}from"./chunk-2AVQILQQ.js";import"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";
4
4
  import"./chunk-H4CDX4TX.js";import"./chunk-IXT2X5BZ.js";import{LIST_PAGING_HELP,PAGE_NUMBER_LIST_FLAGS,PAGE_NUMBER_PAGING_HELP,STABLE_PAGE_ORDER,nonEmpty,pageNumberPaging,pageNumberQuery,pageRangeNotes}from"./chunk-MI6HVYR2.js";import"./chunk-II5RVJQN.js";import{requireResolved,withResolved}from"./chunk-PS5QFKHB.js";import{acknowledgement,isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";import"./chunk-XNLIEUAW.js";
5
5
  import"./chunk-J7QYPKVK.js";import"./chunk-EDF4U5BT.js";import"./chunk-RZVI6PMW.js";import"./chunk-QQRJLH6B.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var PATH=SALES_CONTRACTS_PATH;var SALES_FORBIDDEN=licenseForbidden(featureLicenseGuidance("\u8CA9\u58F2\u7BA1\u7406"));var DISAMBIGUATION="\u53D6\u5F15\u5951\u7D04\u306F\u898B\u7A4D\u304B\u3089\u4F5C\u308B\u8CA9\u58F2\u7BA1\u7406\u306E\u66F8\u985E\u3067\u3059\uFF08\u660E\u7D30\u30FB\u91D1\u984D\u3092\u6301\u3061\u3001\u627F\u8A8D\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u306B\u4E57\u308A\u307E\u3059\uFF09\u3002\n\u9867\u5BA2\u306B\u7D10\u3065\u3051\u3066\u4FDD\u7BA1\u3059\u308B\u5951\u7D04\u66F8\u306E PDF \u306F\u5225\u7269\u3067\u3001twp customer contract \u3067\u6271\u3044\u307E\u3059\u3002\n\n";
6
6
  var CONTRACT_STATUSES={new:"\u4F5C\u6210\u4E2D",create_completed:"\u4F5C\u6210\u5B8C\u4E86",in_progress:"\u7533\u8ACB\u4E2D",approved:"\u627F\u8A8D\u6E08",rejected:"\u5DEE\u3057\u623B\u3057",submitted:"\u63D0\u793A\u6E08",contracted:"\u5951\u7D04\u7DE0\u7D50\u6E08",deleted:"\u524A\u9664\u6E08"};var RENEWAL_TYPES={auto_renewal:"\u81EA\u52D5\u66F4\u65B0",application_renewal:"\u7533\u8FBC\u306B\u3088\u308B\u66F4\u65B0"};function statusName(code){return CONTRACT_STATUSES[code]??code}function tableHelp(table){
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{cacheNote,createFlags,fieldBody,hasAnyField,idSegment,masterFields,masterItem,masterListOperation,masterRows,referencedDeleteGuidance,resolveRefFields,targetId,updateFlags}from"./chunk-CADCERVL.js";import"./chunk-JJSBBWJ5.js";import{DEPARTMENTS_PATH}from"./chunk-RSSPNFSK.js";import"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";import"./chunk-MI6HVYR2.js";import"./chunk-II5RVJQN.js";import{withResolved}from"./chunk-PS5QFKHB.js";
3
+ import{cacheNote,createFlags,fieldBody,hasAnyField,idSegment,masterFields,masterItem,masterListOperation,masterRows,referencedDeleteGuidance,resolveRefFields,targetId,updateFlags}from"./chunk-WDQMYRPE.js";import"./chunk-JJSBBWJ5.js";import{DEPARTMENTS_PATH}from"./chunk-2AVQILQQ.js";import"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";import"./chunk-MI6HVYR2.js";import"./chunk-II5RVJQN.js";import{withResolved}from"./chunk-PS5QFKHB.js";
4
4
  import{acknowledgement,isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";import"./chunk-J7QYPKVK.js";import"./chunk-EDF4U5BT.js";import"./chunk-RZVI6PMW.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var LABEL="\u90E8\u7F72";var LIST_COLUMNS=["id","code","name","parent_id","level","effective_status","valid_from","valid_to","member_count"];var GET_COLUMNS=["id","code","name","name_short","parent_id","level","sort","effective_status","valid_from","valid_to","description"];var TREE_COLUMNS=["depth","name","code","id","effective_status","valid_to"];var MEMBER_COLUMNS=["id","user_id","position_id","job_title_id","start_date","end_date","is_primary","is_current","effective_status"];var REF_FLAG={name:"\
5
5
  --department",summary:"\u5BFE\u8C61\u306E\u90E8\u7F72\uFF08\u4F4D\u7F6E\u5F15\u6570\u306E\u4EE3\u308F\u308A\u306B\u4F7F\u3048\u308B\uFF09",takesValue:true,placeholder:"<\u90E8\u7F72>"};var REF_HELP="<\u90E8\u7F72> \u306F\u540D\u524D\u30FB\u30B3\u30FC\u30C9\u30FBID \u306E\u3069\u308C\u3067\u3082\u6307\u5B9A\u3067\u304D\u307E\u3059\uFF08\u540D\u524D\u304C\u8907\u6570\u306B\u4E00\u81F4\u3059\u308C\u3070\u5019\u88DC\u3092\u51FA\u3057\u3066\u6B62\u307E\u308A\u307E\u3059\uFF09\u3002\nID \u4EE5\u5916\u306F\u90E8\u7F72\u4E00\u89A7\uFF08\u65E2\u5B9A10\u5206\u30AD\u30E3\u30C3\u30B7\u30E5\u30FB--refresh \u3067\u53D6\u308A\u76F4\u3057\uFF09\u3068\u7167\u5408\u3057\u307E\u3059\u3002";
6
6
  var FIELDS=masterFields(LABEL,[{kind:"text",flag:"--name-short",key:"name_short",label:"\u7565\u79F0",maxChars:50,summary:"\u7565\u79F0"},{kind:"ref",flag:"--parent",key:"parent_id",summary:"\u89AA\u90E8\u7F72\uFF08\u540D\u524D\u30FB\u30B3\u30FC\u30C9\u30FBID\uFF09",placeholder:"<\u90E8\u7F72>",clearFlag:"--no-parent",clearSummary:"\u89AA\u90E8\u7F72\u3092\u5916\u3057\u3066\u6700\u4E0A\u4F4D\u306B\u3059\u308B",resolve:(ctx,ref,flag)=>ctx.resolver.department(ref,flag)},{kind:"integer",flag:"--sor\
@@ -1,4 +1,4 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{depositDomain,depositIdArg,describeDeposit,excerpt,parseAllocationRows,parsePlanBody,planSkeleton,salesAdminForbidden,sendAtomic}from"./chunk-U3EMXP77.js";import"./chunk-QLENN5DD.js";import"./chunk-4RNL462J.js";import"./chunk-RX5HWI4L.js";import"./chunk-JJSBBWJ5.js";import"./chunk-IWYJSQ5I.js";import"./chunk-W4NLJ2YK.js";import"./chunk-RSSPNFSK.js";import"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";
3
+ import{depositDomain,depositIdArg,describeDeposit,excerpt,parseAllocationRows,parsePlanBody,planSkeleton,salesAdminForbidden,sendAtomic}from"./chunk-NMYHFVDR.js";import"./chunk-QLENN5DD.js";import"./chunk-QUMDKN3U.js";import"./chunk-RX5HWI4L.js";import"./chunk-JJSBBWJ5.js";import"./chunk-IWYJSQ5I.js";import"./chunk-W4NLJ2YK.js";import"./chunk-2AVQILQQ.js";import"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";
4
4
  import"./chunk-IXT2X5BZ.js";import"./chunk-MI6HVYR2.js";import"./chunk-II5RVJQN.js";import"./chunk-PS5QFKHB.js";import"./chunk-3ZRMMBP5.js";import"./chunk-VFPY2A23.js";import"./chunk-J7QYPKVK.js";import"./chunk-EDF4U5BT.js";import"./chunk-RZVI6PMW.js";import"./chunk-QQRJLH6B.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";export{depositDomain,depositIdArg,describeDeposit,excerpt,parseAllocationRows,parsePlanBody,planSkeleton,salesAdminForbidden,sendAtomic};
@@ -1,3 +1,3 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{BOOLEAN_FLAGS,BUILTIN_COMMANDS,MOVED_QUEUE_COMMAND_MESSAGE,QUEUE_DOMAIN,TASK_LOOP_ACTIONS,TASK_LOOP_QUEUE_ACTIONS,VALUE_FLAGS,dispatch,resolveRoute,rewriteQueueCommand}from"./chunk-VERYHAWV.js";import"./chunk-QQRJLH6B.js";import"./chunk-VSJBJXZO.js";export{BOOLEAN_FLAGS,BUILTIN_COMMANDS,MOVED_QUEUE_COMMAND_MESSAGE,QUEUE_DOMAIN,TASK_LOOP_ACTIONS,TASK_LOOP_QUEUE_ACTIONS,VALUE_FLAGS,dispatch,resolveRoute,rewriteQueueCommand};
3
+ import{BOOLEAN_FLAGS,BUILTIN_COMMANDS,MOVED_QUEUE_COMMAND_MESSAGE,QUEUE_DOMAIN,TASK_LOOP_ACTIONS,TASK_LOOP_QUEUE_ACTIONS,VALUE_FLAGS,dispatch,resolveRoute,rewriteQueueCommand}from"./chunk-EOXTDZTA.js";import"./chunk-QQRJLH6B.js";import"./chunk-VSJBJXZO.js";export{BOOLEAN_FLAGS,BUILTIN_COMMANDS,MOVED_QUEUE_COMMAND_MESSAGE,QUEUE_DOMAIN,TASK_LOOP_ACTIONS,TASK_LOOP_QUEUE_ACTIONS,VALUE_FLAGS,dispatch,resolveRoute,rewriteQueueCommand};
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{composeDocument,metaLine}from"./chunk-C7MO3RHJ.js";import{repeatedValues}from"./chunk-RX5HWI4L.js";import{charCount,readBody}from"./chunk-IWYJSQ5I.js";import"./chunk-W4NLJ2YK.js";import{DOMAIN_KNOWLEDGES_PATH,DOMAIN_KNOWLEDGE_SLUG_RE}from"./chunk-RSSPNFSK.js";import"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";import"./chunk-IXT2X5BZ.js";import{nonEmpty,positiveInteger}from"./chunk-MI6HVYR2.js";import"./chunk-II5RVJQN.js";
3
+ import{composeDocument,metaLine}from"./chunk-C7MO3RHJ.js";import{repeatedValues}from"./chunk-RX5HWI4L.js";import{charCount,readBody}from"./chunk-IWYJSQ5I.js";import"./chunk-W4NLJ2YK.js";import{DOMAIN_KNOWLEDGES_PATH,DOMAIN_KNOWLEDGE_SLUG_RE}from"./chunk-2AVQILQQ.js";import"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";import"./chunk-IXT2X5BZ.js";import{nonEmpty,positiveInteger}from"./chunk-MI6HVYR2.js";import"./chunk-II5RVJQN.js";
4
4
  import{requireResolved,withResolved}from"./chunk-PS5QFKHB.js";import{acknowledgement,isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiRejectedError,ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";import"./chunk-J7QYPKVK.js";import"./chunk-EDF4U5BT.js";import"./chunk-RZVI6PMW.js";import"./chunk-QQRJLH6B.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var KB_LABEL="\u30CA\u30EC\u30C3\u30B8\u30D9\u30FC\u30B9";var DOC_LABEL="\u8A18\u4E8B";var ACCESS_LEVELS=["tenant","authenticated","public"];var KB_STATUSES=["draft","active","archived"];var KB_NAME_MAX_CHARS=255;var KB_DESCRIPTION_MAX_CHARS=2e3;var DOC_TITLE_MAX_CHARS=255;var DOC_SUMMARY_MAX_CHARS=2e3;var DOC_TAGS_MAX=30;var DOC_TAG_MAX_CHARS=64;var PATH_SEGMENT_RE=/^[A-Za-z0-9][A-Za-z0-9._-]{0,99}$/;var PATH_MAX_BYTES=512;var DOC_BODY_MAX_BYTES=300*1024;var DOC_DEPTH_MAX=20;var KB_LIST_COLUMNS=[
5
5
  "id","slug","name","status","access_level","updated_at"];var KB_GET_COLUMNS=["id","slug","name","status","access_level","description","revision","updated_at","updated_by"];var DOC_LIST_COLUMNS=["path","title","depth","size_bytes","updated_at"];var DOC_GET_COLUMNS=["path","title","summary","tags","revision","size_bytes","updated_at","updated_by"];var KB_ARG="<KB>";var KB_ARG_HELP="<KB> \u306F\u30CA\u30EC\u30C3\u30B8\u30D9\u30FC\u30B9\u306E ID \u304B slug \u3067\u3059\uFF08twp knowledge list \u306E id / slug \u5217\uFF09\u3002";
6
6
  function positional(input,names,usage){const values=input.args.map(arg=>arg.trim());if(values.length<names.length){throw new UsageError(`${names[values.length]}\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044`,usage)}if(values.length>names.length){throw new UsageError(`\u4F4D\u7F6E\u5F15\u6570\u304C\u591A\u3059\u304E\u307E\u3059: ${input.args.slice(names.length).join(" ")}`,usage)}return values}function oneOf(input,flag,allowed){const raw=nonEmpty(input.flags,flag);if(raw===void 0)return void 0;
@@ -1,7 +1,7 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{estimateCaseDocumentResource}from"./chunk-VYIYENEU.js";import{estimateNoRuleResource}from"./chunk-3HOJI3X7.js";import{salesAdminForbidden}from"./chunk-U3EMXP77.js";import"./chunk-NTT2QG3J.js";import"./chunk-CZVQS3WP.js";import{contentTypeFor,inspectLocalFile,issued}from"./chunk-WTYIFLVB.js";import{checkUploadQuota}from"./chunk-V64CGX7V.js";import"./chunk-QLENN5DD.js";import"./chunk-RMFLTSOV.js";import{estimateAiReviewResources}from"./chunk-FED2BHMI.js";
4
- import{estimatePdfOperation}from"./chunk-V3RZ4RFP.js";import{estimateReadOperations,featureLicenseGuidance,licenseForbidden}from"./chunk-4RNL462J.js";import"./chunk-CADCERVL.js";import{repeatedValues}from"./chunk-RX5HWI4L.js";import"./chunk-JJSBBWJ5.js";import{charCount,readBody}from"./chunk-IWYJSQ5I.js";import"./chunk-W4NLJ2YK.js";import{SALES_ESTIMATES_PATH,SALES_ESTIMATE_FORMATS_PATH,SALES_ESTIMATE_NO_RULES_PATH,SALES_INVOICE_NO_RULES_PATH,isExactNumericId}from"./chunk-RSSPNFSK.js";
3
+ import{estimateCaseDocumentResource}from"./chunk-LGJPXLMC.js";import{estimateNoRuleResource}from"./chunk-4VBSSXGA.js";import{salesAdminForbidden}from"./chunk-NMYHFVDR.js";import"./chunk-FJEGS55N.js";import"./chunk-RMU72S3D.js";import{contentTypeFor,inspectLocalFile,issued}from"./chunk-WTYIFLVB.js";import{checkUploadQuota}from"./chunk-V64CGX7V.js";import"./chunk-QLENN5DD.js";import"./chunk-RMFLTSOV.js";import{estimateAiReviewResources}from"./chunk-Y7QW7MHQ.js";
4
+ import{estimatePdfOperation}from"./chunk-VRJF6JLR.js";import{estimateReadOperations,featureLicenseGuidance,licenseForbidden}from"./chunk-QUMDKN3U.js";import"./chunk-WDQMYRPE.js";import{repeatedValues}from"./chunk-RX5HWI4L.js";import"./chunk-JJSBBWJ5.js";import{charCount,readBody}from"./chunk-IWYJSQ5I.js";import"./chunk-W4NLJ2YK.js";import{SALES_ESTIMATES_PATH,SALES_ESTIMATE_FORMATS_PATH,SALES_ESTIMATE_NO_RULES_PATH,SALES_INVOICE_NO_RULES_PATH,isExactNumericId}from"./chunk-2AVQILQQ.js";
5
5
  import{isSafePathSegment}from"./chunk-HVZUXLQ4.js";import{ApiError}from"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";import"./chunk-IXT2X5BZ.js";import{LIST_PAGING_HELP,PAGE_NUMBER_LIST_FLAGS,nonEmpty,pageNumberPaging,pageNumberQuery,pageRangeNotes}from"./chunk-MI6HVYR2.js";import"./chunk-II5RVJQN.js";import{requireResolved,withResolved}from"./chunk-PS5QFKHB.js";import{acknowledgement,isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiResponseError,
6
6
  UsageError}from"./chunk-VFPY2A23.js";import"./chunk-XNLIEUAW.js";import"./chunk-J7QYPKVK.js";import"./chunk-EDF4U5BT.js";import"./chunk-RZVI6PMW.js";import"./chunk-QQRJLH6B.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var PATH=SALES_ESTIMATE_FORMATS_PATH;var LABEL="\u898B\u7A4D\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8";var CONTENT_KEYS=["format_name","start_date","end_date","default_unit","default_tax_rate","default_business_place_id","default_seal_impression_id","default_estimate_no_id","default_invoice_no_id","default_payee_id","default_terms","default_invoice_memo","default_purchase_terms","default_purchase_acceptance_terms","estimate_workflow_id","contract_workflow_id","invoice_workflow_id","purchase_workflow_\
7
7
  id","description","estimate_manage_content","contract_manage_content","invoice_manage_content","sort_order"];var FIELD_NOTES=[["format_name","\u4F5C\u6210\u3067\u5FC5\u9808\u3002\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u540D\uFF08255 \u6587\u5B57\u307E\u3067\uFF09"],["default_unit","\u4F5C\u6210\u3067\u5FC5\u9808\u3002\u660E\u7D30\u306E\u65E2\u5B9A\u306E\u5358\u4F4D\uFF08set / item / unit / hour / day / month / person / person_month / person_day\uFF09"],["default_tax_rate",'\u4F5C\u6210\u3067\u5FC5\u9808\u3002\u65E2\u5B9A\u306E\u7A0E\u7387\uFF08"10" / "8" / \
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import"./chunk-RSSPNFSK.js";import{isSafePathSegment}from"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";import{PAGE_NUMBER_LIST_FLAGS,envelopePaging,nonEmpty,positiveInteger}from"./chunk-MI6HVYR2.js";import"./chunk-II5RVJQN.js";import{isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";import"./chunk-J7QYPKVK.js";import"./chunk-EDF4U5BT.js";import"./chunk-RZVI6PMW.js";
3
+ import"./chunk-2AVQILQQ.js";import{isSafePathSegment}from"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";import{PAGE_NUMBER_LIST_FLAGS,envelopePaging,nonEmpty,positiveInteger}from"./chunk-MI6HVYR2.js";import"./chunk-II5RVJQN.js";import{isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";import"./chunk-J7QYPKVK.js";import"./chunk-EDF4U5BT.js";import"./chunk-RZVI6PMW.js";
4
4
  import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var ORG="/api/v2/organization";var PERIODS_PATH=`${ORG}/evaluation-periods`;var EVALUATIONS_PATH=`${ORG}/evaluations`;var GOAL_SHEETS_PATH=`${ORG}/goal-sheets`;var GOAL_SHEET_STATUSES=["draft","submitted","approved"];var EVALUATION_STATUSES=["in_progress","completed","feedback_ready","feedback_sent"];var PERIOD_FLAG={name:"--period",summary:"\u8A55\u4FA1\u671F\u9593\u306E ID\uFF08twp evaluation period list / current \u3067\u78BA\u8A8D\u3067\u304D\u308B\uFF09",takesValue:true,placeholder:"<\u8A55\u4FA1\u671F\u9593ID\
5
5
  >"};var READ_SCOPE_HELP="\u4E00\u89A7\u306B\u51FA\u308B\u306E\u306F\u3001\u3042\u306A\u305F\u304C\u898B\u3066\u3088\u3044\u5206\u3060\u3051\u3067\u3059\uFF08\u4EBA\u4E8B\u7BA1\u7406\u306E\u7BA1\u7406\u8005\u306F\u5168\u54E1\u5206\u3001\u305D\u308C\u4EE5\u5916\u306F\u8A55\u4FA1\u671F\u9593\u6642\u70B9\u306E\u90E8\u4E0B\u306E\u5206\uFF1D\u81EA\u5206\u81EA\u8EAB\u306E\u5206\u306F\u51FA\u307E\u305B\u3093\uFF09\u3002\n\u6A29\u9650\u304C\u7121\u3044\u4EBA\u306E\u5206\u306F 403 \u3067\u306F\u306A\u304F\u300C\u51FA\u3066\u3053\u306A\u3044\u300D\u306E\u3067\u30010\u4EF6\u3067\u3082\u300C\u305D\u306E\u4EBA\u306E\u5206\u304C\u7121\u3044\u300D\u3068\u306F\u9650\u308A\u307E\u305B\u3093\u3002";
6
6
  var EVALUATION_PAGING_HELP=" \u26A0 \u3053\u306E\u4E00\u89A7\u306F\u30DA\u30FC\u30B8\u756A\u53F7\u3067\u4F4D\u7F6E\u3092\u6307\u5B9A\u3057\u307E\u3059\uFF08--cursor \u306F\u30DA\u30FC\u30B8\u756A\u53F7\u3067\u3059\uFF09\u3002\n \u30B5\u30FC\u30D0\u306F\u4E26\u3073\u9806\u3092\u56FA\u5B9A\u3057\u3066\u3044\u306A\u3044\u306E\u3067\u3001\u8FBF\u3063\u3066\u3044\u308B\u6700\u4E2D\u306B\u30C7\u30FC\u30BF\u304C\u5897\u6E1B\u3059\u308B\u3068\u53D6\u308A\u3053\u307C\u3057\u30FB\u91CD\u8907\u304C\u8D77\u3053\u308A\u5F97\u307E\u3059\u3002";