@tocca-systems/twp-cli 0.53.0 → 0.55.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 (81) hide show
  1. package/CHANGELOG.public.md +14 -0
  2. package/README.md +49 -2
  3. package/dist/{agent-LHNDQMT5.js → agent-QFI6UOVQ.js} +1 -1
  4. package/dist/{agent-loop-D35USHWR.js → agent-loop-KBQJP5E7.js} +1 -1
  5. package/dist/{analysis-RFO4E4ZS.js → analysis-MWPZKAUA.js} +1 -1
  6. package/dist/{announcement-HQ7CQYFI.js → announcement-4PDYMC6K.js} +1 -1
  7. package/dist/{api-command-NZ4GJ7BW.js → api-command-YCIZ37HT.js} +2 -2
  8. package/dist/{app-67TGWKPM.js → app-EEHQ46DG.js} +3 -3
  9. package/dist/{attendance-correct-CRRR4EKL.js → attendance-correct-CSAET72A.js} +1 -1
  10. package/dist/{attendance-lists-XPCU25OJ.js → attendance-lists-E6WHZPIH.js} +1 -1
  11. package/dist/{backlog-NU5HHXN2.js → backlog-YQKUID7L.js} +1 -1
  12. package/dist/{budget-YQHHSX7Q.js → budget-WKPD5GPG.js} +1 -1
  13. package/dist/{chunk-FEJDU42E.js → chunk-3LWQO2ZK.js} +1 -1
  14. package/dist/{chunk-NGY4K5VW.js → chunk-3UYVUEV4.js} +1 -1
  15. package/dist/{chunk-B6WIFZF2.js → chunk-5M7QCXPY.js} +1 -1
  16. package/dist/{chunk-AKLQMTMW.js → chunk-A56FFATZ.js} +1 -1
  17. package/dist/{chunk-52HYPBSW.js → chunk-A576CQJW.js} +6 -5
  18. package/dist/{chunk-6JB4MSDX.js → chunk-ASHN4KFF.js} +1 -1
  19. package/dist/{chunk-NQJV2X2R.js → chunk-B7GUZW6Z.js} +1 -1
  20. package/dist/{chunk-F53TSCRD.js → chunk-DDCERTPP.js} +1 -1
  21. package/dist/{chunk-7GJFKKOJ.js → chunk-DZWIABLW.js} +3 -3
  22. package/dist/chunk-FNKRVPMV.js +10 -0
  23. package/dist/{chunk-LXGYOKDY.js → chunk-GIUINGC7.js} +1 -1
  24. package/dist/chunk-H6DUSCEZ.js +3 -0
  25. package/dist/{chunk-74WGU5BM.js → chunk-HG7UEH3L.js} +1 -1
  26. package/dist/{chunk-XZU53BUV.js → chunk-HIJQJXRB.js} +2 -2
  27. package/dist/{chunk-E7TZU54Y.js → chunk-N33PUUKC.js} +1 -1
  28. package/dist/chunk-NXHJYRAM.js +50 -0
  29. package/dist/{chunk-2NP3BLPI.js → chunk-P7LUVC3J.js} +1 -1
  30. package/dist/{chunk-22OIKHMN.js → chunk-Q76QFEF3.js} +1 -1
  31. package/dist/{chunk-FACNRXN7.js → chunk-QGX7L6HN.js} +2 -2
  32. package/dist/{chunk-MKQDUQQ2.js → chunk-QL2YKREQ.js} +1 -1
  33. package/dist/{chunk-AUAZP2G7.js → chunk-UFGJSWKU.js} +5 -5
  34. package/dist/{chunk-S36LGDG2.js → chunk-X2P7N7WO.js} +59 -6
  35. package/dist/{chunk-DBCF4H3V.js → chunk-X6KRLHSG.js} +1 -1
  36. package/dist/cli.js +19 -8
  37. package/dist/{commands-5VM6LUB5.js → commands-L6ADDE5N.js} +2 -2
  38. package/dist/{commands-CVSXWYGR.js → commands-RYRSKDXJ.js} +106 -104
  39. package/dist/{company-BKULUHIU.js → company-RRWGDHKO.js} +2 -2
  40. package/dist/{contract-376FE7VC.js → contract-6CR57KCS.js} +2 -2
  41. package/dist/{department-YKBPBPU6.js → department-JF7KTFQX.js} +1 -1
  42. package/dist/{deposit-CY5K3ZTM.js → deposit-KXGMK66O.js} +1 -1
  43. package/dist/{estimate-GPNG6YOJ.js → estimate-ONS2KBM7.js} +3 -3
  44. package/dist/{evaluation-VRLMQV32.js → evaluation-GKSJ5ZHU.js} +1 -1
  45. package/dist/{expense-3MT6WHTG.js → expense-32QOHO6C.js} +1 -1
  46. package/dist/{inquiry-YV433Q7V.js → inquiry-PAPJCGKO.js} +1 -1
  47. package/dist/{invoice-OSAO4PIO.js → invoice-RJ7M2FY2.js} +2 -2
  48. package/dist/{job-title-FITZHBR4.js → job-title-B7VMIZ2H.js} +1 -1
  49. package/dist/{knowledge-YEEAKLQJ.js → knowledge-YPXOGA2U.js} +1 -1
  50. package/dist/{leave-MWYAL66X.js → leave-4AFSQ2IP.js} +1 -1
  51. package/dist/{logout-guard-ZQV2OPIO.js → logout-guard-7DAWGOM3.js} +1 -1
  52. package/dist/{media-ZIAI4GEB.js → media-HMYE2TR7.js} +2 -2
  53. package/dist/{notification-EAEKDN54.js → notification-CMWQ6JZQ.js} +1 -1
  54. package/dist/{oneshot-62DOJWOH.js → oneshot-P75VON6Q.js} +1 -1
  55. package/dist/{position-ZKYGVAAK.js → position-IKF3SR3O.js} +1 -1
  56. package/dist/project-WHVEIPH5.js +4 -0
  57. package/dist/{prospect-ASQA5QVD.js → prospect-STAA2UPR.js} +2 -2
  58. package/dist/{purchase-WLJJSMM6.js → purchase-VCAMBAW7.js} +3 -3
  59. package/dist/{receivable-FBPROHOV.js → receivable-6A2OVBZN.js} +1 -1
  60. package/dist/{registry-4QVXMTGW.js → registry-DZH6EYRY.js} +1 -1
  61. package/dist/{render-R5QZ46GF.js → render-HTS5OJGG.js} +1 -1
  62. package/dist/{report-HK2NZXHC.js → report-5WTMGPDN.js} +1 -1
  63. package/dist/{run-KXZBNXJF.js → run-NR7KO6GU.js} +1 -1
  64. package/dist/{sales-ai-review-IEISLBIH.js → sales-ai-review-7U2EBEYX.js} +1 -1
  65. package/dist/{sales-master-S3YTUE7J.js → sales-master-E2LDMJIC.js} +2 -2
  66. package/dist/{sales-numbering-M4KUZAM7.js → sales-numbering-E53EMSMI.js} +1 -1
  67. package/dist/{schedule-command-QCGEMBVR.js → schedule-command-ONHLWUW6.js} +2 -3
  68. package/dist/{server-settings-WYHQZV2N.js → server-settings-6NHVHMPS.js} +1 -1
  69. package/dist/{setup-G24BYLQV.js → setup-SIL2ELR4.js} +1 -1
  70. package/dist/{skill-45FBIGC5.js → skill-76QF44O3.js} +1 -1
  71. package/dist/{supplier-payment-MS6YMIT4.js → supplier-payment-HQQVWIQW.js} +2 -2
  72. package/dist/{support-VSDMFUTY.js → support-I2QTNQTP.js} +1 -1
  73. package/dist/{task-BTYFJRSC.js → task-RZBH4I6U.js} +51 -12
  74. package/dist/{user-VFJGLZDR.js → user-XTQNSWP4.js} +2 -2
  75. package/dist/{worker-agent-YX2KPVQG.js → worker-agent-PDAQVQKO.js} +1 -1
  76. package/dist/{workflow-OPZYCSDL.js → workflow-TRHRVMUK.js} +1 -1
  77. package/package.json +1 -1
  78. package/dist/chunk-EZGN7PTO.js +0 -48
  79. package/dist/chunk-JY4VWR5O.js +0 -10
  80. package/dist/chunk-MXKAEPXA.js +0 -3
  81. package/dist/project-5MHCPDVC.js +0 -4
@@ -1,7 +1,7 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{salesAdminForbidden}from"./chunk-FACNRXN7.js";import{featureLicenseGuidance,licenseForbidden}from"./chunk-B6WIFZF2.js";import{booleanText,boundedText}from"./chunk-OTIR4GES.js";import{repeatedValues}from"./chunk-RX5HWI4L.js";import{LIST_PAGING_HELP,PAGE_NUMBER_LIST_FLAGS,nonEmpty,pageNumberPaging,pageNumberQuery,pageRangeNotes}from"./chunk-MI6HVYR2.js";import{SALES_ESTIMATE_FORMATS_PATH,SALES_ESTIMATE_NO_RULES_PATH,SALES_INVOICE_NO_RULES_PATH,SALES_PURCHASE_NO_RULES_PATH,
4
- SALES_ROUNDING_SETTING_PATH,isExactNumericId}from"./chunk-FEJDU42E.js";import{requireResolved,withResolved}from"./chunk-PS5QFKHB.js";import{acknowledgement,isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";var INT_MAX=2147483647;var MEMBER_FORBIDDEN=licenseForbidden(featureLicenseGuidance("\u8CA9\u58F2\u7BA1\u7406"));function envelope(body,what){if(!isRecord(body)||body["result"]!==true)throw new ApiResponseError(`${what}\u306E\u5FDC\u7B54\u306E\u5F62\u304C\u60F3\u5B9A\u3068\u9055\u3044\u307E\u3059\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`);return body}function recordOf(body,what){const data=envelope(body,what)["data"];if(!isRecord(data)||typeof data["id"]!==
3
+ import{salesAdminForbidden}from"./chunk-QGX7L6HN.js";import{featureLicenseGuidance,licenseForbidden}from"./chunk-5M7QCXPY.js";import{booleanText,boundedText}from"./chunk-OTIR4GES.js";import{repeatedValues}from"./chunk-RX5HWI4L.js";import{LIST_PAGING_HELP,PAGE_NUMBER_LIST_FLAGS,nonEmpty,pageNumberPaging,pageNumberQuery,pageRangeNotes}from"./chunk-MI6HVYR2.js";import{SALES_ESTIMATE_FORMATS_PATH,SALES_ESTIMATE_NO_RULES_PATH,SALES_INVOICE_NO_RULES_PATH,SALES_PURCHASE_NO_RULES_PATH,
4
+ SALES_ROUNDING_SETTING_PATH,isExactNumericId}from"./chunk-3LWQO2ZK.js";import{requireResolved,withResolved}from"./chunk-PS5QFKHB.js";import{acknowledgement,isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";var INT_MAX=2147483647;var MEMBER_FORBIDDEN=licenseForbidden(featureLicenseGuidance("\u8CA9\u58F2\u7BA1\u7406"));function envelope(body,what){if(!isRecord(body)||body["result"]!==true)throw new ApiResponseError(`${what}\u306E\u5FDC\u7B54\u306E\u5F62\u304C\u60F3\u5B9A\u3068\u9055\u3044\u307E\u3059\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`);return body}function recordOf(body,what){const data=envelope(body,what)["data"];if(!isRecord(data)||typeof data["id"]!==
5
5
  "string")throw new ApiResponseError(`${what}\u306E\u5FDC\u7B54\u306B data.id \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`);return data}function serverMessage(body){const message=isRecord(body)?body["message"]:void 0;return typeof message==="string"&&message!==""?[message]:[]}function text(value){return typeof value==="string"||typeof value==="number"?String(value):""}function integerValue(flag,raw,min,max=INT_MAX){const trimmed=raw.
6
6
  trim();const value=/^\d+$/.test(trimmed)?Number(trimmed):Number.NaN;if(!Number.isSafeInteger(value)||value<min||value>max)throw new UsageError(`${flag} \u306F ${min} \u4EE5\u4E0A ${max} \u4EE5\u4E0B\u306E\u6574\u6570\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044: ${raw}`);return value}var RULE_COLUMNS=["id","rule_name","prefix","digit_count","current_number","count_up_num","next_number","sort_order"];function nextNumber(rule,purchaseFormat){const current=rule["current_number"];const step=rule["\
7
7
  count_up_num"]??1;const digits=rule["digit_count"];if(typeof current!=="number"||typeof step!=="number"||typeof digits!=="number")return void 0;const width=purchaseFormat&&digits===0?4:digits;const padded=String(current+step).padStart(width,"0");const prefix=rule["prefix"];if(purchaseFormat)return`${prefix===null||prefix===void 0?"2000":text(prefix)}${padded}`;return typeof prefix==="string"&&prefix!==""&&prefix!=="0"?`${prefix}${padded}`:padded}function withNext(spec,row){const next=nextNumber(
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{DEFAULT_INTERVAL_SEC}from"./chunk-52HYPBSW.js";import{CHAIN_KEYS,reloadAiConfig}from"./chunk-AEJHDFXB.js";import{describeError}from"./chunk-JTJWDV5U.js";import{isPrivateProjectId}from"./chunk-GY7KI5E5.js";import{stripTerminalControls}from"./chunk-NHYMHCAT.js";import fs from"fs";import path from"path";var PROMPT_KEYS=["charter","charter_prefix","charter_suffix","plan_preamble","step_budget","non_interactive_note","safe_mode_note"];function parseServerSettings(res){const json=res.json;if(json===null||typeof json!=="object"||Array.isArray(json))return null;const top=json;const data=top["data"];const b=data!==null&&typeof data==="object"&&!Array.isArray(data)&&"revision"in data?data:top;const revision=b["revision"];if(typeof revision!=="number"||!Number.isInteger(revision)||revision<0)return null;
3
+ import{DEFAULT_INTERVAL_SEC}from"./chunk-A576CQJW.js";import{CHAIN_KEYS,reloadAiConfig}from"./chunk-AEJHDFXB.js";import{describeError}from"./chunk-JTJWDV5U.js";import{isPrivateProjectId}from"./chunk-GY7KI5E5.js";import{stripTerminalControls}from"./chunk-NHYMHCAT.js";import fs from"fs";import path from"path";var PROMPT_KEYS=["charter","charter_prefix","charter_suffix","plan_preamble","step_budget","non_interactive_note","safe_mode_note"];function parseServerSettings(res){const json=res.json;if(json===null||typeof json!=="object"||Array.isArray(json))return null;const top=json;const data=top["data"];const b=data!==null&&typeof data==="object"&&!Array.isArray(data)&&"revision"in data?data:top;const revision=b["revision"];if(typeof revision!=="number"||!Number.isInteger(revision)||revision<0)return null;
4
4
  const rawAi=b["ai"];const ai=rawAi!==null&&typeof rawAi==="object"&&!Array.isArray(rawAi)?Object.fromEntries(Object.entries(rawAi).filter(([,v])=>v!==null&&v!==void 0)):{};const prompts={};const rawPrompts=b["prompts"];if(rawPrompts!==null&&typeof rawPrompts==="object"&&!Array.isArray(rawPrompts)){for(const key of PROMPT_KEYS){const v=rawPrompts[key];if(typeof v==="string")prompts[key]=v}}const rawLoop=b["loop"];const rawInterval=rawLoop!==null&&typeof rawLoop==="object"&&!Array.isArray(rawLoop)?
5
5
  rawLoop["interval_sec"]:void 0;const intervalSec=typeof rawInterval==="number"&&Number.isInteger(rawInterval)&&rawInterval>0?rawInterval:null;return{revision,ai,prompts,intervalSec}}function formatConfigHash(aiHash,revision,ai,charter){return`${aiHash};r=${revision};ai=${ai};charter=${charter}`}function renderStepBudget(template,vars){return template.replaceAll("{timeout_min}",String(vars.timeoutMin)).replaceAll("{soft_min}",String(vars.softMin)).replaceAll("{wrap_up_min}",String(vars.wrapUpMin))}
6
6
  var LoopSettingsApplier=class{constructor(deps){this.deps=deps}deps;last=null;lastWarning="";lastAiWarning="";lastSummary="";serverAiApplied=false;lastSafeWarning="";lastInterval="";async apply(){const{config,log}=this.deps;const outcome=await this.fetch();const warning=outcome.warning??"";if(warning!==""&&warning!==this.lastWarning)log(` \u26A0\uFE0F ${warning}`);else if(warning===""&&this.lastWarning!=="")log("\u30EB\u30FC\u30D7\u8A2D\u5B9A\u3092\u30B5\u30FC\u30D0\u304B\u3089\u518D\u3073\u53D6\u5F97\u3067\u304D\u308B\u3088\u3046\u306B\u306A\u308A\u307E\u3057\u305F");
@@ -0,0 +1,50 @@
1
+ import { createRequire as __twpCreateRequire } from 'node:module';
2
+ const require = __twpCreateRequire(import.meta.url);
3
+ import{describeError,normalizeRequiredPlatforms}from"./chunk-JTJWDV5U.js";import{httpFetch}from"./chunk-J7QYPKVK.js";var DAY_KEYS=["mon","tue","wed","thu","fri","sat","sun"];function wallClock(year,month1,day,hour=0,minute=0,second=0){return new Date(Date.UTC(year,month1-1,day,hour,minute,second,0))}function nowInZone(timezone,warn,at=new Date){try{const fmt=new Intl.DateTimeFormat("en-US",{timeZone:timezone,hourCycle:"h23",year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"});const parts={};for(const p of fmt.formatToParts(at)){if(p.type!=="literal")parts[p.type]=p.value}
4
+ const y=Number(parts["year"]);const mo=Number(parts["month"]);const d=Number(parts["day"]);const h=Number(parts["hour"]);const mi=Number(parts["minute"]);const s=Number(parts["second"]);if([y,mo,d,h,mi,s].some(v=>!Number.isFinite(v)))throw new Error("\u5F62\u5F0F\u4E0D\u660E");return wallClock(y,mo,d,h,mi,s)}catch(err){warn?.(`\u26A0\uFE0F \u30BF\u30A4\u30E0\u30BE\u30FC\u30F3 ${timezone} \u3092\u89E3\u6C7A\u3067\u304D\u307E\u305B\u3093\uFF08${err.message}\uFF09\u3002\u30DE\u30B7\u30F3\u306E\u30ED\u30FC\u30AB\u30EB\u6642\u523B\u3067\u5224\u5B9A\u3057\u307E\u3059\u2014\u2014\u30B5\u30FC\u30D0\u306E\u5C65\u6B74\u3068\u305A\u308C\u308B\u3068\u67A0\u306E\u5224\u5B9A\u304C\u58CA\u308C\u307E\u3059`);
5
+ return wallClock(at.getFullYear(),at.getMonth()+1,at.getDate(),at.getHours(),at.getMinutes(),at.getSeconds())}}function parseTs(value){if(value===null||value===void 0||value==="")return null;const text=String(value).trim().replace(/ /g,"T");const attempts=[[19,/^(\d{4})-(\d{1,2})-(\d{1,2})T(\d{1,2}):(\d{1,2}):(\d{1,2})$/],[16,/^(\d{4})-(\d{1,2})-(\d{1,2})T(\d{1,2}):(\d{1,2})$/],[10,/^(\d{4})-(\d{1,2})-(\d{1,2})$/]];for(const[width,re]of attempts){const m=re.exec(text.slice(0,width));if(!m)continue;
6
+ const[,y,mo,d,h,mi,s]=m;const hh=Number(h??0);const mm=Number(mi??0);const ss=Number(s??0);if(hh>23||mm>59||ss>59)continue;const date=wallClock(Number(y),Number(mo),Number(d),hh,mm,ss);if(date.getUTCFullYear()!==Number(y)||date.getUTCMonth()+1!==Number(mo)||date.getUTCDate()!==Number(d)){continue}return date}return null}function num(value,fallback,cast="int"){if(value===null||value===void 0||value==="")return fallback;if(typeof value==="boolean")return value?1:0;if(typeof value==="number"){if(!Number.
7
+ isFinite(value))return cast==="float"?value:fallback;return cast==="int"?Math.trunc(value):value}if(typeof value!=="string")return fallback;const text=value.trim();if(cast==="int"){return/^[+-]?\d+$/.test(text)?Number(text):fallback}if(!/^[+-]?(\d+\.?\d*|\.\d+)(e[+-]?\d+)?$/i.test(text))return fallback;const n=Number(text);return Number.isFinite(n)?n:fallback}function parseHhmm(value,fallback=[0,0]){if(value===null||value===void 0||value===""||value===0||value===false){return fallback}const parts=String(
8
+ value).split(":");const h=parts[0]===void 0?NaN:intOrNaN(parts[0]);if(Number.isNaN(h))return fallback;if(parts.length<=1)return[h,0];const m=intOrNaN(parts[1]??"");if(Number.isNaN(m))return fallback;return[h,m]}function intOrNaN(text){const t=text.trim();return/^[+-]?\d+$/.test(t)?Number(t):NaN}function atTime(day,hhmm){const base=Date.UTC(day.getUTCFullYear(),day.getUTCMonth(),day.getUTCDate(),0,0,0,0);return new Date(base+hhmm[0]*36e5+hhmm[1]*6e4)}function addDays(day,days){return new Date(day.
9
+ getTime()+days*864e5)}function addHours(day,hours){return new Date(day.getTime()+hours*36e5)}function normDays(days){const out=[];if(!Array.isArray(days))return out;for(const d of days){const k=String(d).trim().toLowerCase().slice(0,3);if(DAY_KEYS.includes(k))out.push(k)}return out}function dowKey(dt){const idx=(dt.getUTCDay()+6)%7;return DAY_KEYS[idx]}function daysInMonth(year,month1){return new Date(Date.UTC(year,month1,0)).getUTCDate()}function monthDay(year,month1,daySpec){const last=daysInMonth(
10
+ year,month1);if(String(daySpec).toLowerCase()==="last")return last;const parsed=typeof daySpec==="number"?Math.trunc(daySpec):intOrNaN(String(daySpec??""));const d=Number.isNaN(parsed)?1:parsed;return Math.min(Math.max(d,1),last)}function prevMonth(year,month1){return month1===1?[year-1,12]:[year,month1-1]}function nextMonth(year,month1){return month1===12?[year+1,1]:[year,month1+1]}function priorityRank(p){const text=String(p??"").replace(/^[Pp]+/,"");const body=text===""?"2":text;return num(body,
11
+ 2,"float")}var p2=n=>String(n).padStart(2,"0");function fmtDate(d){return`${d.getUTCFullYear()}-${p2(d.getUTCMonth()+1)}-${p2(d.getUTCDate())}`}function fmtMonth(d){return`${d.getUTCFullYear()}-${p2(d.getUTCMonth()+1)}`}function fmtDateHour(d){return`${fmtDate(d)}T${p2(d.getUTCHours())}`}function fmtMonthDayTime(d){return`${p2(d.getUTCMonth()+1)}/${p2(d.getUTCDate())} ${p2(d.getUTCHours())}:${p2(d.getUTCMinutes())}`}var ACTIVE_STATUSES=["enqueued","completed"];function isActiveStatus(status){return ACTIVE_STATUSES.includes(status)}function flag(obj,key,fallback){if(!(key in obj))return fallback;const v=obj[key];if(v===null||v===void 0)return false;if(typeof v==="string")return v!=="";if(typeof v==="number")return v!==0;if(Array.isArray(v))return v.length>0;return Boolean(v)}function gateWindowsMatch(win,now){const days=normDays(win.days);if(days.length>0&&!days.includes(dowKey(now)))return false;const frm=win.from;const to=win.to;if(!frm&&!to)return true;const[fh,fm]=parseHhmm(frm,[0,0]);const[th,tm]=parseHhmm(to,[24,0]);const cur=now.getUTCHours()*60+now.getUTCMinutes();const start=fh*60+fm;const end=th*60+tm;if(end<=start)return cur>=start||cur<end;return start<=cur&&cur<end}function applicableGates(skill,gates){const out=[];for(const g of gates??[]){if(!flag(g,"\
12
+ enabled",true))continue;const skills=g.skills??[];if(skills.includes("*")||skills.includes(skill))out.push(g)}return out}function gateStatus(skill,now,gates){const applied=applicableGates(skill,gates);if(applied.length===0)return{allowed:true,reason:""};for(const g of applied){for(const win of g.deny??[]){if(gateWindowsMatch(win,now)){return{allowed:false,reason:`${g.id??"gate"}: \u9664\u5916\u6642\u9593\u5E2F\u306B\u8A72\u5F53\uFF08${describeWindow(win)}\uFF09`}}}}const allowSpecs=[];for(const g of applied){
13
+ for(const win of g.allow??[])allowSpecs.push([g,win])}if(allowSpecs.length===0)return{allowed:true,reason:""};for(const[,win]of allowSpecs){if(gateWindowsMatch(win,now))return{allowed:true,reason:""}}const descs=allowSpecs.map(([,w])=>describeWindow(w)).join(", ");const gateIds=[...new Set(allowSpecs.map(([g])=>g.id??"gate"))].sort().join("/");return{allowed:false,reason:`${gateIds}: \u8A31\u53EF\u6642\u9593\u5E2F\u5916\uFF08\u8A31\u53EF=${descs}\uFF09`}}function describeWindow(win){const days=normDays(
14
+ win.days);const d=days.length>0?days.join("/"):"\u5168\u66DC\u65E5";const frm=win.from||"00:00";const to=win.to||"24:00";return`${d} ${frm}-${to}`}function gatedSkills(config,now){const gates=config.gates??[];const skills=[];for(const g of gates){if(!flag(g,"enabled",true))continue;for(const s of g.skills??[]){if(!skills.includes(s))skills.push(s)}}const out=[];for(const s of skills){const{allowed,reason}=gateStatus(s,now,gates);if(!allowed)out.push([s,reason])}return out}function currentWindow(sch,now,warn){const when=sch.when??{};const wtype=String(when.type??"daily").toLowerCase();const after=parseHhmm(when.after,[0,0]);if(wtype==="daily"){const ws=atTime(now,after);if(now.getTime()<ws.getTime())return{key:null,start:null};return{key:`d:${fmtDate(ws)}`,start:ws}}if(wtype==="weekly"){const days=normDays(when.days);const targets=days.length>0?days:["mon"];let best=null;for(let back=0;back<8;back++){const day=addDays(now,-back);if(!targets.includes(dowKey(day)))continue;
15
+ const ws=atTime(day,after);if(ws.getTime()<=now.getTime()){best=ws;break}}if(best===null)return{key:null,start:null};return{key:`w:${fmtDate(best)}`,start:best}}if(wtype==="monthly"){let y=now.getUTCFullYear();let m=now.getUTCMonth()+1;let d=monthDay(y,m,when.day??1);let ws=atTime(wallClock(y,m,d),after);if(now.getTime()<ws.getTime()){[y,m]=prevMonth(y,m);d=monthDay(y,m,when.day??1);ws=atTime(wallClock(y,m,d),after)}return{key:`m:${fmtMonth(ws)}`,start:ws}}if(wtype==="interval"){return{key:`i:${fmtDateHour(
16
+ now)}`,start:now}}warn?.(`# \u672A\u77E5\u306E when.type=${formatRepr(when.type)}\uFF08id=${sch.id??"None"}\uFF09\u3002\u3053\u306E\u67A0\u306F\u4E00\u5EA6\u3082\u767A\u706B\u3057\u307E\u305B\u3093\u3002\u6709\u52B9\u306A\u5024: daily / weekly / monthly / interval`);return{key:null,start:null}}function pyStr(value){if(value===void 0||value===null)return"None";if(typeof value==="boolean")return value?"True":"False";return String(value)}function formatRepr(value){if(value===void 0||value===null)return"\
17
+ None";if(typeof value==="string")return`'${value}'`;if(typeof value==="boolean")return value?"True":"False";return String(value)}function nextWindowStart(sch,now,history){const when=sch.when??{};const wtype=String(when.type??"daily").toLowerCase();const after=parseHhmm(when.after,[0,0]);if(wtype==="daily"){const ws=atTime(now,after);return now.getTime()<ws.getTime()?ws:addDays(ws,1)}if(wtype==="weekly"){const days=normDays(when.days);const targets=days.length>0?days:["mon"];for(let ahead=0;ahead<
18
+ 8;ahead++){const day=addDays(now,ahead);if(!targets.includes(dowKey(day)))continue;const ws=atTime(day,after);if(ws.getTime()>now.getTime())return ws}return null}if(wtype==="monthly"){let y=now.getUTCFullYear();let m=now.getUTCMonth()+1;let d=monthDay(y,m,when.day??1);const ws=atTime(wallClock(y,m,d),after);if(ws.getTime()>now.getTime())return ws;[y,m]=nextMonth(y,m);d=monthDay(y,m,when.day??1);return atTime(wallClock(y,m,d),after)}if(wtype==="interval"){const hours=num(when.every_hours,24,"floa\
19
+ t");let last=null;for(const row of sch.id===void 0?[]:history){if(row.schedule_id!==sch.id||!isActiveStatus(row.status))continue;const ts=parseTs(row.ts);if(ts&&(last===null||ts.getTime()>last.getTime()))last=ts}if(last===null)return now;return addHours(last,hours)}return null}function describeWhen(sch){const when=sch.when??{};const wtype=String(when.type??"daily").toLowerCase();const after=when.after||"00:00";if(wtype==="daily")return`\u6BCE\u65E5 ${after}\u4EE5\u964D`;if(wtype==="weekly"){const days=normDays(
20
+ when.days);const targets=days.length>0?days:["mon"];return`\u6BCE\u9031 ${targets.join("/")} ${after}\u4EE5\u964D`}if(wtype==="monthly"){return`\u6BCE\u6708 ${pyStr("day"in when?when.day:1)}\u65E5 ${after}\u4EE5\u964D`}if(wtype==="interval"){return`\u524D\u56DE\u304B\u3089${pyStr("every_hours"in when?when.every_hours:24)}h\u7D4C\u904E`}return wtype}function parseRequireZeroStatuses(value){const out=Object.create(null);if(value===null||typeof value!=="object"||Array.isArray(value))return out;for(const[key,statusId]of Object.entries(value)){if(typeof statusId!=="string"||statusId.trim()==="")continue;out[key]=statusId.trim()}return out}function requireZeroStatusId(statuses,key){if(!statuses||!Object.prototype.hasOwnProperty.call(statuses,key))return null;return statuses[key]??null}function terminalStatusByItem(rows){const out=new Map;let anon=0;
21
+ for(const r of rows){let item=r.item_id||"";if(!item){anon+=1;item=`_anon${anon}`}out.set(item,r.status||"")}return out}function rotationArgs(sch,history,windowCounts,currentWindowKey=null){const rot=sch.args_rotation;if(!rot||rot.length===0)return truthyStr(sch.args);const sid=sch.id??"";if(Object.prototype.hasOwnProperty.call(windowCounts,sid)){let n=windowCounts[sid];if(currentWindowKey&&history.some(r=>r.schedule_id===sid&&r.window_key===currentWindowKey)){n-=1}return pyStr(rot[Math.max(0,n)%
22
+ rot.length])}let windows=new Set(history.filter(r=>r.schedule_id===sid&&r.window_key&&r.window_key!==currentWindowKey).map(r=>r.window_key));const hasWindow=history.some(r=>r.schedule_id===sid&&r.window_key);if(!hasWindow){windows=new Set(history.map((r,i)=>[r,i]).filter(([r])=>r.schedule_id===sid&&r.status==="enqueued").map(([,i])=>String(i)))}return pyStr(rot[windows.size%rot.length])}function isDue(sch,now,history,safeMode=false,warn){const sid=sch.id??"";if(!flag(sch,"enabled",true)){return{
23
+ due:false,reason:"\u7121\u52B9\u5316\u3055\u308C\u3066\u3044\u308B\uFF08enabled=false\uFF09",windowKey:""}}if(!sch.skill)return{due:false,reason:"skill \u304C\u672A\u8A2D\u5B9A",windowKey:""};if(safeMode&&!flag(sch,"safe_mode_ok",true)){return{due:false,reason:"\u5B89\u5168\u30E2\u30FC\u30C9\u3067\u306F\u5BFE\u8C61\u5916\uFF08safe_mode_ok=false\uFF09",windowKey:""}}const when=sch.when??{};const wtype=String(when.type??"daily").toLowerCase();const maxAttempts=num(sch.max_attempts_per_window,2);const everyHoursText=pyStr(
24
+ "every_hours"in when?when.every_hours:24);const{key,start:ws}=currentWindow(sch,now,warn);if(!key)return{due:false,reason:"\u67A0\u304C\u307E\u3060\u958B\u3044\u3066\u3044\u306A\u3044",windowKey:""};if(wtype==="interval"){const hours=num(when.every_hours,24,"float");const cutoff=addHours(now,-hours);const started=new Map;const rowsByItem=new Map;let anon=0;for(const r of history){if(r.schedule_id!==sid)continue;const ts=parseTs(r.ts);if(!ts)continue;let item=r.item_id||"";if(!item){anon+=1;item=
25
+ `_anon${anon}`}const list=rowsByItem.get(item);if(list)list.push(r);else rowsByItem.set(item,[r]);if(r.status==="enqueued"||!started.has(item))started.set(item,ts)}const recent=[];for(const[item,rowsI]of rowsByItem){const st=started.get(item);if(!st||st.getTime()<cutoff.getTime())continue;recent.push(...rowsI)}const terminal2=terminalStatusByItem(recent);let recentActive=0;let recentFailed=0;for(const st of terminal2.values()){if(isActiveStatus(st))recentActive+=1;else if(st==="failed")recentFailed+=
26
+ 1}if(recentActive){return{due:false,reason:`\u76F4\u8FD1${everyHoursText}h\u4EE5\u5185\u306B\u5B9F\u884C\u6E08\u307F`,windowKey:key}}if(recentFailed>=maxAttempts){return{due:false,reason:`\u76F4\u8FD1${everyHoursText}h\u4EE5\u5185\u306B${recentFailed}\u56DE\u5931\u6557\uFF08\u4E0A\u9650${maxAttempts}\uFF09`,windowKey:key}}return{due:true,reason:`\u524D\u56DE\u5B9F\u884C\u304B\u3089${everyHoursText}h\u4EE5\u4E0A\u7D4C\u904E`,windowKey:key}}const rows=history.filter(r=>r.schedule_id===sid&&r.window_key===
27
+ key);const terminal=terminalStatusByItem(rows);for(const st of terminal.values()){if(isActiveStatus(st)){return{due:false,reason:`\u3053\u306E\u67A0\uFF08${key}\uFF09\u3067\u65E2\u306B\u5B9F\u884C\u6E08\u307F`,windowKey:key}}}let failed=0;for(const st of terminal.values())if(st==="failed")failed+=1;if(failed>=maxAttempts){return{due:false,reason:`\u3053\u306E\u67A0\u3067${failed}\u56DE\u5931\u6557\uFF08\u4E0A\u9650${maxAttempts}\uFF09`,windowKey:key}}if(!flag(sch,"catch_up",true)){const grace=num(
28
+ sch.grace_minutes,120);if(ws&&now.getTime()-ws.getTime()>grace*6e4){return{due:false,reason:`\u67A0\u958B\u59CB\u304B\u3089${grace}\u5206\u8D85\u904E\uFF08catch_up=false\uFF09`,windowKey:key}}}let label=`\u67A0 ${key} \u304C\u958B\u3044\u3066\u304A\u308A\u672A\u5B9F\u884C`;if(failed)label+=`\uFF08${failed}\u56DE\u5931\u6557\u306E\u305F\u3081\u518D\u8A66\u884C\uFF09`;return{due:true,reason:label,windowKey:key}}function parseCounts(spec){const out={};for(const part of(spec??"").split(",")){const idx=part.
29
+ indexOf("=");if(idx<0)continue;const k=part.slice(0,idx).trim();const v=part.slice(idx+1).trim();if(k&&/^\d+$/.test(v))out[k]=Number(v)}return out}async function requireZeroBlocked(sch,counts,fetchCount,statuses,warn){const raw=sch.require_zero??[];const keys=typeof raw==="string"?[raw]:raw;const over=[];for(const k of keys){let n=Object.prototype.hasOwnProperty.call(counts,k)?counts[k]:void 0;if(n===void 0||n===null){const statusId=requireZeroStatusId(statuses,k);if(statusId===null){warn?.(`req\
30
+ uire_zero \u306E\u30AD\u30FC\u300C${k}\u300D\u306B\u5BFE\u5FDC\u3059\u308B\u30B9\u30C6\u30FC\u30BF\u30B9\u304C\u30B5\u30FC\u30D0\u8A2D\u5B9A require_zero_statuses \u306B\u3042\u308A\u307E\u305B\u3093\u3002\u3053\u306E\u67A0\u306F\u4EF6\u6570\u3092\u5224\u5B9A\u3067\u304D\u306A\u3044\u305F\u3081\u767A\u706B\u3057\u307E\u305B\u3093`);n=null}else{n=fetchCount?await fetchCount(k,statusId):null}if(n!==null&&n!==void 0)counts[k]=n}if(n===null||n===void 0||n<0)over.push(`${k}=\u5224\u5B9A\u4E0D\u80FD`);else if(n)
31
+ over.push(`${k}=${n}\u4EF6`)}return over.length>0?`${over.join(" / ")} \u304C\u6B8B\u3063\u3066\u3044\u308B\u305F\u3081\u67A0\u3092\u6368\u3066\u308B`:null}var RELEASE_STALE_HOURS=4;async function fetchRunningReleases(endpoint,env=process.env,fetchImpl=httpFetch){if(!endpoint)return{ids:[],unavailable:false};const apiKey=endpoint.apiKeyEnv?env[endpoint.apiKeyEnv]??"":"";if(endpoint.apiKeyEnv&&!apiKey)return{ids:[],unavailable:false};const headers={"Content-Type":"application/json"};if(apiKey)headers[endpoint.
32
+ header]=apiKey;let rows;try{const res=await fetchImpl(`${endpoint.url}${endpoint.path}`,{headers,signal:AbortSignal.timeout(2e4)});if(!res.ok)return{ids:[],unavailable:true};rows=await res.json()}catch{return{ids:[],unavailable:true}}if(rows&&!Array.isArray(rows)&&typeof rows==="object"){const obj=rows;if("items"in obj)rows=obj["items"];else if("data"in obj)rows=obj["data"]}if(!Array.isArray(rows))return{ids:[],unavailable:true};const limit=Date.now()-RELEASE_STALE_HOURS*36e5;const ids=[];for(const r of rows){
33
+ if(!r||typeof r!=="object")continue;const row=r;if(row["status"]!=="running")continue;const started=parseAiopsUtc(String(row["created_at"]??""));if(started!==null&&started<limit)continue;ids.push(`#${String(row["id"])}`)}return{ids,unavailable:false}}function parseAiopsUtc(raw){const m=/^(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})$/.exec(raw);if(!m)return null;const[,y,mo,d,h,mi,sec]=m;return Date.UTC(Number(y),Number(mo)-1,Number(d),Number(h),Number(mi),Number(sec))}function releaseRunningBlocked(skill,running,exclusiveSkills){
34
+ if(!exclusiveSkills.has(skill))return null;if(running.unavailable)return"\u30EA\u30EA\u30FC\u30B9\u72B6\u6CC1\u3092\u5224\u5B9A\u3067\u304D\u306A\u3044\u305F\u3081\u67A0\u3092\u6368\u3066\u308B";if(running.ids.length>0)return`${running.ids.join(",")} \u304C\u5B9F\u884C\u4E2D\u306E\u305F\u3081\u67A0\u3092\u6368\u3066\u308B`;return null}async function collectDue(input){const{config,now,history,windowCounts,safeMode,warn,verbose}=input;const gates=config.gates??[];const counts=input.counts??{};const exclusiveSkills=input.
35
+ exclusiveSkills??new Set;const statusEndpoint=input.statusEndpoint??null;let running=null;const items=[];for(const sch of config.schedules??[]){const{due,reason,windowKey}=isDue(sch,now,history,safeMode,warn);const sid="id"in sch?pyStr(sch.id):"?";if(!due){verbose?.(` skip ${pad28(sid)} ${reason}`);continue}const skill=String(sch.skill);const gate=gateStatus(skill,now,gates);if(!gate.allowed){verbose?.(` hold ${pad28(sid)} \u6642\u9593\u5E2F\u30B2\u30FC\u30C8: ${gate.reason}`);continue}const blocked=await requireZeroBlocked(
36
+ sch,counts,input.fetchCount,config.require_zero_statuses,warn);if(blocked){verbose?.(` hold ${pad28(sid)} \u4EF6\u6570\u30B2\u30FC\u30C8: ${blocked}`);continue}if(exclusiveSkills.has(skill)){running??=await(input.fetchRunning??(()=>fetchRunningReleases(statusEndpoint)))();const held=releaseRunningBlocked(skill,running,exclusiveSkills);if(held){verbose?.(` hold ${pad28(sid)} \u30EA\u30EA\u30FC\u30B9\u6392\u4ED6: ${held}`);continue}}items.push({scheduleId:sid,skill,args:rotationArgs(sch,history,
37
+ windowCounts,windowKey),priority:truthyStr("priority"in sch?sch.priority:"P3")||"P3",label:sch.label||`\u5B9A\u671F: /twp-${skill}`,windowKey,reason,requiredPlatforms:normalizeRequiredPlatforms(sch.required_platforms),order:num(sch.order,50,"float")})}items.sort((a,b)=>{const pa=priorityRank(a.priority);const pb=priorityRank(b.priority);if(pa!==pb)return pa-pb;return a.order-b.order});let limit=num(config.max_per_cycle,2);if(limit===0&&config.max_per_cycle!==void 0&&config.max_per_cycle!==null){
38
+ warn?.("# max_per_cycle=0 \u306F\u7121\u5236\u9650\u3067\u306F\u306A\u304F\u8A2D\u5B9A\u30DF\u30B9\u3068\u307F\u306A\u3057\u65E2\u5B9A(2)\u3092\u4F7F\u3044\u307E\u3059\u3002\u7121\u5236\u9650\u306B\u3057\u305F\u3044\u5834\u5408\u306F -1 \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002");limit=2}let out=items;if(limit>0&&items.length>limit){for(const held of items.slice(limit)){verbose?.(` hold ${pad28(held.scheduleId)} max_per_cycle=${limit} \u306E\u305F\u3081\u6B21\u30B5\u30A4\u30AF\u30EB\u3078`)}
39
+ out=items.slice(0,limit)}return out.map(({order:_order,...row})=>row)}function truthyStr(v){if(v===null||v===void 0||v===false||v===0||v==="")return"";return String(v)}function pad28(s){return s.padEnd(28)}function promptSection(config,now,history,enqueuedLines,includeUpcoming=true){const blocked=gatedSkills(config,now);const upcoming=[];for(const sch of config.schedules??[]){if(!flag(sch,"enabled",true))continue;const nxt=nextWindowStart(sch,now,history);if(!nxt)continue;upcoming.push([nxt,sch])}
40
+ upcoming.sort((a,b)=>a[0].getTime()-b[0].getTime());const out=["\u3010\u5B9A\u671F\u30B9\u30B1\u30B8\u30E5\u30FC\u30EB\uFF08scripts/ops-schedule.json\uFF09\u3011"];if(enqueuedLines.length>0){out.push("\u4ECA\u30B5\u30A4\u30AF\u30EB\u306E\u5B9A\u671F\u5B9F\u884C\u5206\u3068\u3057\u3066\u3001\u4EE5\u4E0B\u306F**\u30B9\u30AF\u30EA\u30D7\u30C8\u304C\u65E2\u306B\u30AD\u30E5\u30FC\u3078\u6295\u5165\u6E08\u307F**\u3067\u3059\u3002steps \u306B\u91CD\u8907\u3057\u3066\u542B\u3081\u306A\u3044\u3067\u304F\u3060\u3055\u3044\uFF08\u91CD\u8907\u3059\u308B\u3068\u30AD\u30E5\u30FC\u306B\u4E8C\u91CD\u767B\u9332\u3055\u308C\u307E\u3059\uFF09:");
41
+ out.push(...enqueuedLines)}else{out.push("\u4ECA\u30B5\u30A4\u30AF\u30EB\u3067\u767A\u706B\u3057\u305F\u5B9A\u671F\u30BF\u30B9\u30AF\u306F\u3042\u308A\u307E\u305B\u3093\u3002")}if(blocked.length>0){out.push("");out.push("\u73FE\u5728\u6642\u523B\u306F\u4EE5\u4E0B\u306E\u30B9\u30AD\u30EB\u306E\u5B9F\u884C\u6642\u9593\u5E2F\u5916\u3067\u3059\u3002**steps \u306B\u542B\u3081\u306A\u3044\u3067\u304F\u3060\u3055\u3044**:");for(const[skill,reason]of blocked)out.push(`- ${skill} \u2014 ${reason}`)}if(includeUpcoming&&
42
+ upcoming.length>0){out.push("");out.push("\u5B9A\u671F\u30BF\u30B9\u30AF\u306E\u6B21\u56DE\u767A\u706B\u4E88\u5B9A\uFF08\u53C2\u8003\u3002\u8A08\u753B\u306B\u542B\u3081\u308B\u5FC5\u8981\u306F\u3042\u308A\u307E\u305B\u3093\uFF09:");for(const[nxt,sch]of upcoming.slice(0,8)){const whenTxt=nxt.getTime()<=now.getTime()?"\u767A\u706B\u5F85\u3061\uFF08\u6B21\u30B5\u30A4\u30AF\u30EB\u4EE5\u964D\u306B\u81EA\u52D5\u6295\u5165\uFF09":fmtMonthDayTime(nxt);out.push(`- ${whenTxt} ${sch.label||`/twp-${String(
43
+ sch.skill)}`}\uFF08${describeWhen(sch)}\uFF09`)}}out.push("");out.push("\u5B9A\u671F\u30BF\u30B9\u30AF\u306F\u6642\u9593\u30D9\u30FC\u30B9\u3067\u30B9\u30AF\u30EA\u30D7\u30C8\u304C\u7BA1\u7406\u3057\u3066\u3044\u307E\u3059\u3002\u300C\u524D\u56DE\u5B9F\u884C\u304B\u3089\u6642\u9593\u304C\u7D4C\u3063\u305F\u304B\u300D\u3092\u63A8\u6E2C\u3057\u3066\u8A08\u753B\u306B\u5165\u308C\u308B\u5FC5\u8981\u306F\u3042\u308A\u307E\u305B\u3093\u3002");return out.join("\n")}var ScheduleApi=class{constructor(api){this.api=api}api;async definitions(){const res=await this.api.request("GET","/schedules/definitions");if(!res.ok)return fetchError("\u5B9A\u671F\u30B9\u30B1\u30B8\u30E5\u30FC\u30EB\u306E\u5B9A\u7FA9\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093",res);const body=res.json??{};const schedules=body["schedules"];if(!Array.isArray(schedules)){return{kind:"error",message:`\u5B9A\u7FA9\u306E\u5FDC\u7B54\u306B schedules \u914D\u5217\u304C\u3042\u308A\u307E\u305B\u3093\uFF08\u5FDC\u7B54\u306E\u5148\u982D: ${res.
44
+ raw.slice(0,120)}\uFF09`,status:res.status}}const gates=Array.isArray(body["gates"])?body["gates"]:[];return{kind:"ok",config:{schedules,gates,max_per_cycle:body["max_per_cycle"],require_zero_statuses:parseRequireZeroStatuses(body["require_zero_statuses"]),warnings:Array.isArray(body["warnings"])?body["warnings"]:[]}}}async history(since){const suffix=since?`/schedules/history?since=${encodeURIComponent(since)}`:"/schedules/history";const res=await this.api.request("GET",suffix);if(!res.ok)return fetchError(
45
+ "\u5B9A\u671F\u30B9\u30B1\u30B8\u30E5\u30FC\u30EB\u306E\u5C65\u6B74\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093",res);const body=res.json??{};const rows=body["rows"];if(!Array.isArray(rows)){return{kind:"error",message:`\u5C65\u6B74\u306E\u5FDC\u7B54\u306B rows \u914D\u5217\u304C\u3042\u308A\u307E\u305B\u3093\uFF08\u5FDC\u7B54\u306E\u5148\u982D: ${res.raw.slice(0,120)}\uFF09`,status:res.status}}if(body["truncated"]===true||body["reason"]==="history_truncated"){return{kind:"error",message:"\u5C65\u6B74\
46
+ \u306E\u8D70\u67FB\u304C\u6253\u3061\u5207\u3089\u308C\u307E\u3057\u305F\uFF08\u5224\u5B9A\u306B\u4F7F\u3048\u307E\u305B\u3093\uFF09",status:res.status}}const windowCounts={};const counts=body["window_counts"];if(counts&&typeof counts==="object"){for(const[k,v]of Object.entries(counts)){if(typeof v==="number"){if(Number.isInteger(v))windowCounts[k]=v}else if(/^-?\d+$/.test(String(v))){windowCounts[k]=Number(String(v))}}}const normalized=rows.map(r=>{const row=r??{};return{ts:str(row["ts"]),schedule_id:str(
47
+ row["schedule_id"]),window_key:str(row["window_key"]),status:str(row["status"]),item_id:str(row["item_id"]),args:str(row["args"])}});return{kind:"ok",history:{rows:normalized,windowCounts,timezone:str(body["timezone"])}}}async claim(scheduleId,body){const res=await this.api.request("POST",`/schedules/${encodeURIComponent(scheduleId)}/claim`,{window_key:body.windowKey,runner_id:body.runnerId,run_id:body.runId,args:body.args});if(!res.ok)return"error";const claimed=res.json?.["claimed"];return claimed===
48
+ true?"claimed":"taken"}async record(scheduleId,body){const payload={status:body.status};if(body.windowKey)payload["window_key"]=body.windowKey;if(body.itemId)payload["item_id"]=body.itemId;if(body.runnerId)payload["runner_id"]=body.runnerId;const res=await this.api.request("POST",`/schedules/${encodeURIComponent(scheduleId)}/record`,payload);if(!res.ok)return{ok:false,detail:describeError(res)};const json=res.json??{};if(json["recorded"]===false&&json["reason"]!=="already_recorded"){return{ok:false,
49
+ detail:`reason=${str(json["reason"])||"unknown"}`}}return{ok:true,detail:""}}async recordByItem(itemId,status,runnerId){const payload={status,item_id:itemId};if(runnerId)payload["runner_id"]=runnerId;const res=await this.api.request("POST","/schedules/record",payload);if(!res.ok)return fetchError("\u5B9F\u884C\u7D50\u679C\u3092\u8A18\u9332\u3067\u304D\u307E\u305B\u3093",res);const json=res.json??{};if(json["recorded"]===true){const state=json["state"]??{};return{kind:"recorded",scheduleId:str(state["\
50
+ schedule_id"])}}if(json["reason"]==="state_not_found")return{kind:"not_scheduled"};return{kind:"error",message:`\u8A18\u9332\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08reason=${str(json["reason"])||"unknown"}\uFF09`,status:res.status}}};function fetchError(prefix,res){return{kind:"error",message:`${prefix}\uFF08${describeError(res)}\uFF09`,status:res.status}}function str(v){if(v===null||v===void 0)return"";return typeof v==="string"?v:String(v)}export{nowInZone,parseTs,gateStatus,parseCounts,collectDue,promptSection,ScheduleApi};
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{contentTypeFor,inspectLocalFile,issued}from"./chunk-VOMCTG6N.js";import{checkUploadQuota}from"./chunk-V64CGX7V.js";import{createFlags,fieldBody,hasAnyField,updateFlags}from"./chunk-MKQDUQQ2.js";import{readCsvFileText}from"./chunk-QLENN5DD.js";import{featureLicenseGuidance}from"./chunk-B6WIFZF2.js";import{LIST_FLAGS,LIST_PAGING_HELP,envelopePaging,nonEmpty,positiveInteger}from"./chunk-MI6HVYR2.js";import{CUSTOMERS_PATH,SALES_COMPANIES_PATH,isExactNumericId}from"./chunk-FEJDU42E.js";
3
+ import{contentTypeFor,inspectLocalFile,issued}from"./chunk-VOMCTG6N.js";import{checkUploadQuota}from"./chunk-V64CGX7V.js";import{createFlags,fieldBody,hasAnyField,updateFlags}from"./chunk-QL2YKREQ.js";import{readCsvFileText}from"./chunk-QLENN5DD.js";import{featureLicenseGuidance}from"./chunk-5M7QCXPY.js";import{LIST_FLAGS,LIST_PAGING_HELP,envelopePaging,nonEmpty,positiveInteger}from"./chunk-MI6HVYR2.js";import{CUSTOMERS_PATH,SALES_COMPANIES_PATH,isExactNumericId}from"./chunk-3LWQO2ZK.js";
4
4
  import{isSafePathSegment}from"./chunk-GMBJTG6A.js";import{ApiError,errorListMessages}from"./chunk-JA5A6UJ2.js";import{requireResolved,singleRef,withResolved}from"./chunk-PS5QFKHB.js";import{acknowledgement,isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiRejectedError,ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";import fs from"fs";import path from"path";function levelForbidden(licenseGuidance,levelGuidance){return body=>body?.error==="permission_denied"?licenseGuidance:levelGuidance}var COMPANY_LICENSE="\u53D6\u5F15\u5148\u3092\u6271\u3046\u306B\u306F\u8CA9\u58F2\u7BA1\u7406\u304B\u9867\u5BA2\u7BA1\u7406\u306E\u6A29\u9650\u304C\u8981\u308A\u307E\u3059\u304C\u3001\u3069\u3061\u3089\u3082\u3042\u308A\u307E\u305B\u3093\u3002\u30C6\u30CA\u30F3\u30C8\u304C\u3069\u3061\u3089\u3082\u5951\u7D04\u3057\u3066\u3044\u306A\u3044\u304B\u3001\u3042\u306A\u305F\u306E\u6A29\u9650\u304C\u3069\u3061\u3089\u3082\u300C\u306A\u3057\u300D\u306B\u306A\u3063\u3066\u3044\u307E\u3059\u3002\u30C6\u30CA\u30F3\u30C8\u7BA1\u7406\u8005\u306B\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002";
5
5
  var CUSTOMER_LICENSE=featureLicenseGuidance("\u9867\u5BA2\u7BA1\u7406");var COMPANY_WRITE_FORBIDDEN=levelForbidden(COMPANY_LICENSE,"\u9867\u5BA2\u306E\u4F5C\u6210\u30FB\u66F4\u65B0\u306B\u306F\u3001\u9867\u5BA2\u7BA1\u7406\u306E\u6A29\u9650\u304C\u300C\u7DE8\u96C6\u8005\u300D\u4EE5\u4E0A\u304B\u3001\u8CA9\u58F2\u7BA1\u7406\u306E\u6A29\u9650\u304C\u300C\u30E1\u30F3\u30D0\u30FC\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 LEVEL_LABELS={admin:"\u7BA1\u7406\u8005",editor:"\u7DE8\u96C6\u8005",viewer:"\u95B2\u89A7\u8005",none:"\u306A\u3057"};var CHILD_DELETE_NEEDS="\u62C5\u5F53\u8005\u30FB\u5BFE\u5FDC\u5C65\u6B74\u306E\u524A\u9664\u306B\u306F\u9867\u5BA2\u7BA1\u7406\u306E\u6A29\u9650\u304C\u300C\u7BA1\u7406\u8005\u300D\u3067\u3042\u308B\u3053\u3068\u304C\u8981\u308A\u307E\u3059";var CUSTOMER_DELETE_FORBIDDEN=levelForbidden(COMPANY_LICENSE,"\u9867\u5BA2\u306E\u524A\u9664\u306B\u306F\u3001\u4F01\u696D\u306E\u524A\u9664\u306B\u9867\u5BA2\u7BA1\u7406\u306E\u300C\u7BA1\u7406\u8005\u300D\u304B\u8CA9\u58F2\u7BA1\u7406\u306E\u300C\u30E1\u30F3\u30D0\u30FC\u300D\u4EE5\u4E0A\u3001\u62C5\u5F53\u8005\u30FB\u5BFE\u5FDC\u5C65\u6B74\u306E\u524A\u9664\u306B\u9867\u5BA2\u7BA1\u7406\u306E\u300C\u7BA1\u7406\u8005\u300D\u304C\u8981\u308A\u307E\u3059\u3002\u30C6\u30CA\u30F3\u30C8\u7BA1\u7406\u8005\
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{featureLicenseGuidance}from"./chunk-B6WIFZF2.js";import{nonEmpty}from"./chunk-MI6HVYR2.js";import{isExactNumericId}from"./chunk-FEJDU42E.js";import{UsageError}from"./chunk-VFPY2A23.js";var PDF_PATH="/api/v2/sales/pdf";var FEATURE_DENIED="\u3053\u306E\u6A5F\u80FD\u306B\u30A2\u30AF\u30BB\u30B9\u3059\u308B\u6A29\u9650\u304C\u3042\u308A\u307E\u305B\u3093\u3002";function salesFeatureDenied(body){return body?.error==="permission_denied"||body?.error==="forbidden"&&body.error_description===FEATURE_DENIED}function pdfForbidden(body){if(salesFeatureDenied(body))return featureLicenseGuidance("\u8CA9\u58F2\u7BA1\u7406");const reason=body?.error;if(typeof reason==="string"&&reason.endsWith(
3
+ import{featureLicenseGuidance}from"./chunk-5M7QCXPY.js";import{nonEmpty}from"./chunk-MI6HVYR2.js";import{isExactNumericId}from"./chunk-3LWQO2ZK.js";import{UsageError}from"./chunk-VFPY2A23.js";var PDF_PATH="/api/v2/sales/pdf";var FEATURE_DENIED="\u3053\u306E\u6A5F\u80FD\u306B\u30A2\u30AF\u30BB\u30B9\u3059\u308B\u6A29\u9650\u304C\u3042\u308A\u307E\u305B\u3093\u3002";function salesFeatureDenied(body){return body?.error==="permission_denied"||body?.error==="forbidden"&&body.error_description===FEATURE_DENIED}function pdfForbidden(body){if(salesFeatureDenied(body))return featureLicenseGuidance("\u8CA9\u58F2\u7BA1\u7406");const reason=body?.error;if(typeof reason==="string"&&reason.endsWith(
4
4
  "\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\u51FA\u529B\u3067\u304D\u307E\u3059\uFF09`}return void 0}var ESTIMATE={name:"estimate",label:"\u898B\u7A4D",noExample:"EST0000063",
5
5
  defaultKind:"estimate",kinds:{estimate:{segment:"estimate",label:"\u898B\u7A4D\u66F8"},order:{segment:"order",label:"\u6CE8\u6587\u66F8"},"order-acceptance":{segment:"order-acceptance",label:"\u6CE8\u6587\u8ACB\u66F8"}}};var INVOICE={name:"invoice",label:"\u8ACB\u6C42",noExample:"INV0000170",defaultKind:"invoice",kinds:{invoice:{segment:"invoice",label:"\u8ACB\u6C42\u66F8"},delivery:{segment:"delivery",label:"\u7D0D\u54C1\u66F8"},inspection:{segment:"inspection",label:"\u691C\u53CE\u66F8"}}};var PURCHASE={
6
6
  name:"purchase",label:"\u4ED5\u5165",defaultKind:"order",kinds:{order:{segment:"purchase-order",label:"\u6CE8\u6587\u66F8"},"order-acceptance":{segment:"purchase-order-acceptance",label:"\u6CE8\u6587\u8ACB\u66F8"}}};var OUT_FLAG={name:"--out",summary:"\u66F8\u304D\u51FA\u3057\u5148\u306E\u30D5\u30A1\u30A4\u30EB\u30D1\u30B9\uFF08\u5FC5\u9808\uFF09",takesValue:true,placeholder:"<\u30D1\u30B9.pdf>"};var FORCE_FLAG={name:"--force",summary:"\u65E2\u5B58\u306E\u30D5\u30A1\u30A4\u30EB\u3092\u4E0A\u66F8\u304D\u3059\u308B",
@@ -1,7 +1,7 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{readCsvFileText}from"./chunk-QLENN5DD.js";import{featureLicenseGuidance,invoiceFilters}from"./chunk-B6WIFZF2.js";import{boundedText,isoDate}from"./chunk-OTIR4GES.js";import{repeatedValues}from"./chunk-RX5HWI4L.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{readBody}from"./chunk-6LSQCOCJ.js";import{SALES_DEPOSITS_PATH,isExactNumericId,
4
- resolveNamed}from"./chunk-FEJDU42E.js";import{ApiError}from"./chunk-JA5A6UJ2.js";import{requireResolved,withResolved}from"./chunk-PS5QFKHB.js";import{acknowledgement,isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";var PATH=SALES_DEPOSITS_PATH;function salesAdminForbidden(what){return body=>body?.error==="permission_denied"?featureLicenseGuidance("\u8CA9\u58F2\u7BA1\u7406"):`${what}\u306B\u306F\u8CA9\u58F2\u7BA1\u7406\u306E\u6A29\u9650\u304C\u300C\u7BA1\u7406\u8005\u300D\u3067\u3042\u308B\u3053\u3068\u304C\u8981\u308A\u307E\u3059\u3002\u30C6\u30CA\u30F3\u30C8\u7BA1\u7406\u8005\u306B\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`}var FORBIDDEN=salesAdminForbidden("\u5165\u91D1");var ALLOCATION_STATUSES={
3
+ import{readCsvFileText}from"./chunk-QLENN5DD.js";import{featureLicenseGuidance,invoiceFilters}from"./chunk-5M7QCXPY.js";import{boundedText,isoDate}from"./chunk-OTIR4GES.js";import{repeatedValues}from"./chunk-RX5HWI4L.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{readBody}from"./chunk-6LSQCOCJ.js";import{SALES_DEPOSITS_PATH,isExactNumericId,
4
+ resolveNamed}from"./chunk-3LWQO2ZK.js";import{ApiError}from"./chunk-JA5A6UJ2.js";import{requireResolved,withResolved}from"./chunk-PS5QFKHB.js";import{acknowledgement,isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";var PATH=SALES_DEPOSITS_PATH;function salesAdminForbidden(what){return body=>body?.error==="permission_denied"?featureLicenseGuidance("\u8CA9\u58F2\u7BA1\u7406"):`${what}\u306B\u306F\u8CA9\u58F2\u7BA1\u7406\u306E\u6A29\u9650\u304C\u300C\u7BA1\u7406\u8005\u300D\u3067\u3042\u308B\u3053\u3068\u304C\u8981\u308A\u307E\u3059\u3002\u30C6\u30CA\u30F3\u30C8\u7BA1\u7406\u8005\u306B\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`}var FORBIDDEN=salesAdminForbidden("\u5165\u91D1");var ALLOCATION_STATUSES={
5
5
  allocated:"\u5F15\u5F53\u6E08",shortage:"\u672A\u5165\u91D1\u6709",excess:"\u5165\u91D1\u8D85\u904E\u6709",transfer_fee_resolved:"\u624B\u6570\u6599\u51E6\u7406\u6E08"};var EXCESS_REASONS={transfer_fee:"\u632F\u8FBC\u624B\u6570\u6599",agency_fee:"\u4EE3\u884C\u624B\u6570\u6599\uFF08\u53E3\u5EA7\u632F\u66FF \u57FA\u672C\u5229\u7528\u6599\uFF09",partial:"\u4E00\u90E8\u5165\u91D1",offset:"\u76F8\u6BBA",overpayment:"\u904E\u5165\u91D1",other:"\u305D\u306E\u4ED6"};var EXCESS_TAX_CATEGORIES={taxable_purchase_10:"\
6
6
  \u8AB2\u7A0E\u4ED5\u5165 10%",not_applicable:"\u5BFE\u8C61\u5916"};var BULK_MAX_ROWS=100;var PLAN_MAX_ITEMS=50;var PLAN_MAX_ALLOCATIONS=100;var FILE_MAX_BYTES=1024*1024;var EXCESS_NOTE_MAX_CHARS=255;var PLAN_MEMO_MAX_CHARS=1e3;var CONTENT_MAX_CHARS=1e6;var LIST_COLUMNS=["id","deposit_date","company_name","payee_name","deposit_amount","allocated_amount","unallocated_amount","allocation_status"];var GET_COLUMNS=[...LIST_COLUMNS,"memo","excess_reason","excess_amount","excess_note","excess_tax_categ\
7
7
  ory","excess_tax_amount"];var ALLOCATION_COLUMNS=["id","invoice_id","invoice_no","invoice_title","invoice_date","allocated_amount","invoice_remaining_amount"];function labelsHelp(table){return Object.entries(table).map(([code,name])=>`${code}\uFF08${name}\uFF09`).join(" / ")}function refsOf(table){return Object.entries(table).map(([code,name])=>({id:code,name,code}))}function usageOf(op){return`twp deposit ${op} help`}function yen(value){return typeof value==="number"?`${value.toLocaleString("ja\
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{booleanText,boundedText,isoDate}from"./chunk-OTIR4GES.js";import{nonEmpty,positiveInteger}from"./chunk-MI6HVYR2.js";import{ORG_MASTER_LIMIT}from"./chunk-FEJDU42E.js";import{ULID_RE,UUID_RE,isSafePathSegment}from"./chunk-GMBJTG6A.js";import{requireResolved,singleRef,withResolved}from"./chunk-PS5QFKHB.js";import{acknowledgement,isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";var CLEAR_DATE="none";function placeholderOf(field){switch(field.kind){case"text":return`<${field.label}>`;case"integer":return"<\u6574\u6570>";case"boolean":return"<true|false>";case"enum":return`<${field.values.join("|")}>`;case"date":return`<YYYY-MM-DD|${CLEAR_DATE}>`;case"ref":return field.placeholder}}function createFlags(fields){return fields.map(field=>({name:field.flag,summary:field.summary,takesValue:true,placeholder:placeholderOf(field)}))}function updateFlags(fields){const flags=[];for(const field of fields){
3
+ import{booleanText,boundedText,isoDate}from"./chunk-OTIR4GES.js";import{nonEmpty,positiveInteger}from"./chunk-MI6HVYR2.js";import{ORG_MASTER_LIMIT}from"./chunk-3LWQO2ZK.js";import{ULID_RE,UUID_RE,isSafePathSegment}from"./chunk-GMBJTG6A.js";import{requireResolved,singleRef,withResolved}from"./chunk-PS5QFKHB.js";import{acknowledgement,isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";var CLEAR_DATE="none";function placeholderOf(field){switch(field.kind){case"text":return`<${field.label}>`;case"integer":return"<\u6574\u6570>";case"boolean":return"<true|false>";case"enum":return`<${field.values.join("|")}>`;case"date":return`<YYYY-MM-DD|${CLEAR_DATE}>`;case"ref":return field.placeholder}}function createFlags(fields){return fields.map(field=>({name:field.flag,summary:field.summary,takesValue:true,placeholder:placeholderOf(field)}))}function updateFlags(fields){const flags=[];for(const field of fields){
4
4
  flags.push({name:field.flag,summary:field.summary,takesValue:true,placeholder:placeholderOf(field)});if(field.kind==="ref")flags.push({name:field.clearFlag,summary:field.clearSummary,takesValue:false})}return flags}function integerValue(field,raw){const trimmed=raw.trim();const value=/^\d+$/.test(trimmed)?Number(trimmed):Number.NaN;const tooLarge=field.max!==void 0&&value>field.max;if(!Number.isSafeInteger(value)||value<field.min||tooLarge){const range=field.max!==void 0?`${field.min} \u4EE5\u4E0A ${field.
5
5
  max} \u4EE5\u4E0B`:`${field.min} \u4EE5\u4E0A`;throw new UsageError(`${field.flag} \u306F ${range}\u306E\u6574\u6570\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044: ${raw}`,`${field.label}\u3092\u6574\u6570\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}return value}function fieldBody(input,fields){const body={};for(const field of fields){switch(field.kind){case"text":{const value=boundedText(input,field.flag,{maxChars:field.maxChars,label:field.label});if(value!==void 0)body[field.
6
6
  key]=value;break}case"integer":{const raw=input.flags.get(field.flag);if(raw!==void 0)body[field.key]=integerValue(field,raw);break}case"boolean":{const raw=input.flags.get(field.flag);if(raw!==void 0)body[field.key]=booleanText(field.flag,raw);break}case"enum":{const raw=input.flags.get(field.flag);if(raw===void 0)break;const value=raw.trim().toLowerCase();if(!field.values.includes(value)){throw new UsageError(`${field.flag} \u306B\u300C${raw}\u300D\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093`,
@@ -1,10 +1,10 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{stripTerminalControls}from"./chunk-NHYMHCAT.js";var SENSITIVE_HEADERS=new Set(["authorization","proxy-authorization","cookie","set-cookie","x-api-key","x-auth-token","x-vercel-protection-bypass"]);var REDACTED="***\uFF08\u4F0F\u5B57\uFF09";var SECRET_KEY_PATTERN="[A-Za-z0-9_-]*(?:token|secret|password|passwd|api[_-]?key|credential|signature|tempauth|upload_?url)[A-Za-z0-9_-]*";var NOT_SECRET_FLAGS="(?:starting-token)";var NOT_SECRET_QUERY="(?:skiptoken)";function redactSecrets(text){return text.replace(/\bBearer\s+[^\s"'`,;)\]}]+/gi,`Bearer ${REDACTED}`).
4
- replace(/(\/v2\/(?:admin\/)?invitations\/)[A-Za-z0-9_-]{16,}/g,`$1${REDACTED}`).replace(new RegExp(`("${SECRET_KEY_PATTERN}"\\s*:\\s*)"(?:[^"\\\\]|\\\\.)*"`,"gi"),`$1"${REDACTED}"`).replace(new RegExp(`([?&](?!${NOT_SECRET_QUERY}=)${SECRET_KEY_PATTERN}=)[^&\\s"'\`,;)\\]}]+`,"gi"),`$1${REDACTED}`).replace(new RegExp(`(--(?!${NOT_SECRET_FLAGS}(?:=|\\s))${SECRET_KEY_PATTERN}(?:=|\\s+))('[^']*'|"[^"]*"|[A-Za-z0-9_.~+/=|:%-]+)`,"gi"),`$1${REDACTED}`)}var SECRET_KEY_NAME=new RegExp(`^${SECRET_KEY_PATTERN}\
5
- $`,"i");function redactSecretValues(value){if(Array.isArray(value))return value.map(item=>redactSecretValues(item));if(value!==null&&typeof value==="object"){const out={};for(const[key,item]of Object.entries(value)){out[key]=SECRET_KEY_NAME.test(key)?REDACTED:redactSecretValues(item)}return out}return value}function formatHeaders(headers){if(!headers)return[];const entries=headers instanceof Headers?[...headers.entries()]:Array.isArray(headers)?headers:Object.entries(headers);return entries.map(
6
- ([name,value])=>{const shown=SENSITIVE_HEADERS.has(name.toLowerCase())?REDACTED:redactSecrets(String(value));return` ${name.toLowerCase()}: ${shown}`})}var BODY_LIMIT=4e3;function omitAttachmentBytes(body){return body.replace(/"contentBytes":"([A-Za-z0-9+/=]*)"/g,(_,b64)=>`"contentBytes":"\uFF08base64 ${b64.length} \u6587\u5B57\u30FB\u51FA\u529B\u3057\u306A\u3044\uFF09"`)}function formatBody(raw){const safe=omitAttachmentBytes(redactSecrets(stripTerminalControls(raw)));return safe.length>BODY_LIMIT?
7
- `${safe.slice(0,BODY_LIMIT)}
3
+ import{stripTerminalControls}from"./chunk-NHYMHCAT.js";var SENSITIVE_HEADERS=new Set(["authorization","proxy-authorization","cookie","set-cookie","x-api-key","x-auth-token","x-vercel-protection-bypass"]);var REDACTED="***\uFF08\u4F0F\u5B57\uFF09";var SECRET_KEY_PATTERN="[A-Za-z0-9_-]*(?:token|secret|password|passwd|api[_-]?key|credential|signature|tempauth|upload_?url)[A-Za-z0-9_-]*";var NOT_SECRET_FLAGS="(?:starting-token)";var NOT_SECRET_QUERY="(?:skiptoken)";function redactSecrets(text){return text.replace(/\bBearer\s+[^\s"'`,;)\]}\\]+/gi,`Bearer\
4
+ ${REDACTED}`).replace(/(\/v2\/(?:admin\/)?invitations\/)[A-Za-z0-9_-]{16,}/g,`$1${REDACTED}`).replace(new RegExp(`("${SECRET_KEY_PATTERN}"\\s*:\\s*)"(?:[^"\\\\]|\\\\.)*"`,"gi"),`$1"${REDACTED}"`).replace(new RegExp(`([?&](?!${NOT_SECRET_QUERY}=)${SECRET_KEY_PATTERN}=)[^&\\s"'\`,;)\\]}\\\\]+`,"gi"),`$1${REDACTED}`).replace(new RegExp(`(--(?!${NOT_SECRET_FLAGS}(?:=|\\s))${SECRET_KEY_PATTERN}(?:=|\\s+))('[^']*'|"[^"]*"|[A-Za-z0-9_.~+/=|:%-]+)`,"gi"),`$1${REDACTED}`)}var SECRET_KEY_NAME=new RegExp(
5
+ `^${SECRET_KEY_PATTERN}$`,"i");function redactSecretValues(value){if(Array.isArray(value))return value.map(item=>redactSecretValues(item));if(value!==null&&typeof value==="object"){const out={};for(const[key,item]of Object.entries(value)){out[key]=SECRET_KEY_NAME.test(key)?REDACTED:redactSecretValues(item)}return out}if(typeof value==="string")return redactSecrets(value);return value}function formatHeaders(headers){if(!headers)return[];const entries=headers instanceof Headers?[...headers.entries()]:
6
+ Array.isArray(headers)?headers:Object.entries(headers);return entries.map(([name,value])=>{const shown=SENSITIVE_HEADERS.has(name.toLowerCase())?REDACTED:redactSecrets(String(value));return` ${name.toLowerCase()}: ${shown}`})}var BODY_LIMIT=4e3;function omitAttachmentBytes(body){return body.replace(/"contentBytes":"([A-Za-z0-9+/=]*)"/g,(_,b64)=>`"contentBytes":"\uFF08base64 ${b64.length} \u6587\u5B57\u30FB\u51FA\u529B\u3057\u306A\u3044\uFF09"`)}function formatBody(raw){const safe=omitAttachmentBytes(
7
+ redactSecrets(stripTerminalControls(raw)));return safe.length>BODY_LIMIT?`${safe.slice(0,BODY_LIMIT)}
8
8
  \u2026\uFF08\u4EE5\u964D ${safe.length-BODY_LIMIT} \u6587\u5B57\u3092\u7701\u7565\uFF09`:safe}function isTextualContentType(contentType){if(contentType===null)return false;return/^\s*(text\/|application\/(json|xml|javascript|x-www-form-urlencoded)|application\/[\w.+-]*\+(json|xml))/i.test(contentType)}function withDebug(inner,options={}){const write=options.write??(text=>void process.stderr.write(text));const now=options.now??(()=>Date.now());return async(input,init)=>{const method=init?.method??
9
9
  "GET";const lines=[`[debug] \u2192 ${method} ${redactSecrets(input)}`,...formatHeaders(init?.headers)];if(options.omitBodies!==void 0&&init?.body!==void 0&&init.body!==null)lines.push(` \uFF08\u672C\u6587\u306F${options.omitBodies}\u305F\u3081\u51FA\u529B\u3057\u306A\u3044\uFF09`);else if(typeof init?.body==="string")lines.push(` ${formatBody(init.body)}`);else if(init?.body instanceof Uint8Array)lines.push(` \uFF08\u672C\u6587\u306F ${init.body.byteLength} \u30D0\u30A4\u30C8\u306E\u30D0\u30A4\u30C8\u5217\u3002\u51FA\u529B\u3057\u306A\u3044\uFF09`);
10
10
  write(`${lines.join("\n")}
@@ -1,7 +1,7 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{boundedText,isoDate}from"./chunk-OTIR4GES.js";import{FROM_FLAG,MANHOUR_DESCRIPTION,MANHOUR_FROM_FLAG,MANHOUR_TO_FLAG,MONTH_FLAG,TO_FLAG,dataOf,listIn,manhourNotes,manhourQuery,manhourRows,monthRange,rangeNotes,recordOf,workloadDistributionNotes,workloadDistributionRows}from"./chunk-F53TSCRD.js";import{LIST_FLAGS,LIST_PAGING_HELP,envelopePaging,nonEmpty,positiveInteger}from"./chunk-MI6HVYR2.js";import{USER_REF_FLAG,USER_REF_HELP,userPath}from"./chunk-DBCF4H3V.js";import{
4
- readBody}from"./chunk-6LSQCOCJ.js";import{PROJECT_MEMBERS_LIMIT,resolveNamed}from"./chunk-FEJDU42E.js";import{collapsesInUrlPath,safeProjectIdPolicy}from"./chunk-GMBJTG6A.js";import{requireResolved,singleRef,withResolved}from"./chunk-PS5QFKHB.js";import{isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";var PROJECT_FLAG={name:"--project",summary:"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u30B3\u30FC\u30C9\u307E\u305F\u306F ID\uFF08\u7701\u7565\u6642\u306F TWP_PROJECT / .twp/config.json / ~/.twp/config.json\uFF09",takesValue:true,placeholder:"<\u30B3\u30FC\u30C9|ID>"};var ROLE_FLAG={name:"--role",summary:"\u5F79\u5272\uFF08member / manager \u306A\u3069\u30FB\u5024\u306F\u30B5\u30FC\u30D0\u304C\u691C\u67FB\u3059\u308B\uFF09",takesValue:true,placeholder:"<\u5F79\u5272>"};var START_DATE_FLAG={name:"\
3
+ import{createFlags,fieldBody,hasAnyField,resolveRefFields,updateFlags}from"./chunk-QL2YKREQ.js";import{boundedText,isoDate}from"./chunk-OTIR4GES.js";import{FROM_FLAG,MANHOUR_DESCRIPTION,MANHOUR_FROM_FLAG,MANHOUR_TO_FLAG,MONTH_FLAG,TO_FLAG,dataOf,listIn,manhourNotes,manhourQuery,manhourRows,monthRange,rangeNotes,recordOf,workloadDistributionNotes,workloadDistributionRows}from"./chunk-DDCERTPP.js";import{LIST_FLAGS,LIST_PAGING_HELP,envelopePaging,nonEmpty,positiveInteger}from"./chunk-MI6HVYR2.js";
4
+ import{USER_REF_FLAG,USER_REF_HELP,userPath}from"./chunk-X6KRLHSG.js";import{readBody}from"./chunk-6LSQCOCJ.js";import{PROJECT_MEMBERS_LIMIT,resolveNamed}from"./chunk-3LWQO2ZK.js";import{collapsesInUrlPath,safeProjectIdPolicy}from"./chunk-GMBJTG6A.js";import{requireResolved,singleRef,withResolved}from"./chunk-PS5QFKHB.js";import{isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";var PROJECT_FLAG={name:"--project",summary:"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u30B3\u30FC\u30C9\u307E\u305F\u306F ID\uFF08\u7701\u7565\u6642\u306F TWP_PROJECT / .twp/config.json / ~/.twp/config.json\uFF09",takesValue:true,placeholder:"<\u30B3\u30FC\u30C9|ID>"};var ROLE_FLAG={name:"--role",summary:"\u5F79\u5272\uFF08member / manager \u306A\u3069\u30FB\u5024\u306F\u30B5\u30FC\u30D0\u304C\u691C\u67FB\u3059\u308B\uFF09",takesValue:true,placeholder:"<\u5F79\u5272>"};var START_DATE_FLAG={name:"\
5
5
  --start-date",summary:"\u53C2\u753B\u958B\u59CB\u65E5\uFF08YYYY-MM-DD\uFF09",takesValue:true,placeholder:"<YYYY-MM-DD>"};var END_DATE_FLAG={name:"--end-date",summary:"\u53C2\u753B\u7D42\u4E86\u65E5\uFF08YYYY-MM-DD\uFF09",takesValue:true,placeholder:"<YYYY-MM-DD>"};var PERIOD_FILE_FLAG={name:"--period-file",summary:"\u7A3C\u50CD\u671F\u9593\uFF08assignment_periods\uFF09\u306E JSON \u914D\u5217\u30D5\u30A1\u30A4\u30EB\uFF08- \u3067\u6A19\u6E96\u5165\u529B\uFF09",takesValue:true,placeholder:"<\u30D1\u30B9>"};
6
6
  var MEMO_FLAG={name:"--memo",summary:"\u30E1\u30E2\uFF0810,000 \u6587\u5B57\u307E\u3067\uFF09",takesValue:true,placeholder:"<\u6587\u5B57\u5217>"};var CLEAR_FLAG={name:"--clear",summary:"\u5225\u540D\u3092\u6D88\u3059",takesValue:false};var MEMO_MAX_CHARS=1e4;var PERIOD_FILE_MAX_CHARS=2e5;var ALIAS_MAX_CHARS=255;var PERIOD_KEYS=["id","start_date","end_date","daily_hours","total_hours","input_mode"];var PERIOD_REQUIRED=["start_date","end_date","daily_hours"];var ROLE_HELP="--role \u306E\u5024\u306F\u30B5\u30FC\u30D0\u304C\u691C\u67FB\u3057\u307E\u3059\uFF08CLI\
7
7
  \u306F\u691C\u67FB\u3057\u307E\u305B\u3093\uFF09\u30022026-10-01 \u6642\u70B9\u306E\u5024\u306F\n member\uFF08\u30E1\u30F3\u30D0\u30FC\uFF09/ manager\uFF08\u7BA1\u7406\u8005\uFF09/ approver\uFF08\u7BA1\u7406\u8005\uFF08\u627F\u8A8D\u8005\uFF09\uFF09/ manager_no_punch\uFF08\u7BA1\u7406\u8005\uFF08\u6253\u523B\u7121\uFF09\uFF09\u3067\u3059\u3002\n \u5024\u306F\u5897\u3048\u308B\u3053\u3068\u304C\u3042\u308A\u307E\u3059\u3002\u4ECA\u306E\u30E1\u30F3\u30D0\u30FC\u306E\u5024\u306F twp project members \u306E role \u5217\u3067\u78BA\u304B\u3081\u3089\u308C\u307E\u3059\u3002";
@@ -83,16 +83,69 @@ flags:[STATUS_FLAG],async prepare(input,ctx){processStatus(input,PROCESS_LIST_US
83
83
  raw:body=>processRows(body),notes:body=>{const count=isRecord(body)?body["count"]:void 0;const shown=processRows(body).length;return typeof count==="number"&&count>shown?[`\u5DE5\u7A0B\u306F ${String(count)} \u4EF6\u3042\u308A\u307E\u3059\u304C\u3001${String(shown)} \u4EF6\u3060\u3051\u3092\u8868\u793A\u3057\u3066\u3044\u307E\u3059\uFF08\u30B5\u30FC\u30D0\u306E\u4E0A\u9650\uFF09\u3002`]:[]}},{name:"create",summary:"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306B\u5DE5\u7A0B\u3092\u767B\u9332\u3059\u308B\uFF08\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u7BA1\u7406\u8005\uFF09",
84
84
  usage:PROCESS_CREATE_USAGE,description:"POST /api/v2/projects/{id}/processes\u3002\u7701\u7565\u3059\u308B\u3068\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306F\u65E2\u5B9A\u3067\u3059\u3002\n--process \u3067\u5DE5\u7A0B\u30DE\u30B9\u30BF\u3092\u6307\u5B9A\u3057\u307E\u3059\uFF08\u540D\u524D\u30FB\u30B3\u30FC\u30C9\u30FBID\u3002\u5019\u88DC\u306F twp api /api/v2/project/processes \u3067\u78BA\u8A8D\u3067\u304D\u307E\u3059\uFF09\u3002\n\u767B\u9332\u3067\u304D\u308B\u306E\u306F\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u7BA1\u7406\u8005\u3068\u30C6\u30CA\u30F3\u30C8\u7BA1\u7406\u8005\u3067\u3059\u3002\u72B6\u614B\u306E\u65E2\u5B9A\u306F active\u3001\u4E26\u3073\u9806\u306E\u65E2\u5B9A\u306F 0 \u3067\u3059\uFF08\u30B5\u30FC\u30D0\u304C\u6C7A\u3081\u307E\u3059\uFF09\u3002\n\u4E26\u3073\u66FF\u3048\uFF08reorder\uFF09\u30FB\u66F4\u65B0\u30FB\u524A\u9664\u306F\u3053\u306E\u30B3\u30DE\u30F3\u30C9\u306B\u306F\u3042\u308A\u307E\u305B\u3093\u3002\n\u767B\u9332\u306E\u5FDC\u7B54\u306B\u306F\u5DE5\u7A0B\u30DE\u30B9\u30BF\u306E\u540D\u524D\u30FB\u30B3\u30FC\u30C9\u304C\u5165\u308A\u307E\u305B\u3093\uFF08process_id \u3060\u3051\u3002\u540D\u524D\u306F twp project process list \u3067\u78BA\u8A8D\u3067\u304D\u307E\u3059\u3002\u4E00\u89A7\u306F\u5DE5\u7A0B\u30DE\u30B9\u30BF\u3092\u5F15\u3044\u3066\u88DC\u3044\u307E\u3059\uFF09\u3002",
85
85
  flags:[PROCESS_FLAG,DESCRIPTION_FLAG,SORT_ORDER_FLAG,STATUS_FLAG],forbidden:processCreateForbidden,async prepare(input,ctx){const process=nonEmpty(input.flags,PROCESS_FLAG.name);if(process===void 0)throw new UsageError("--process \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",PROCESS_CREATE_USAGE);createBody(withResolved(input,{processId:"-"}));const withProject=await projectArg(input,ctx,PROCESS_CREATE_USAGE);return withResolved(withProject,{processId:(await ctx.resolver.processMaster(
86
- process,PROCESS_FLAG.name)).id})},plan:input=>({method:"POST",path:projectPath(input,"processes"),body:createBody(input)}),summarize:body=>pick(processItem(body),PROCESS_COLUMNS),raw:body=>processItem(body)}]};var projectAnalysisOperations=[riskOperation,profitOperation];var LIST_COLUMNS=["id","code","name","status","effective_status"];var GET_COLUMNS=["id","code","name","status","effective_status","display_flg","closed_flg","task_enabled_flg","start_date","end_date","created_at","updated_at"];var MEMBER_COLUMNS2=["user_id","user_name","user_email","role","alias","department_name"];function memberItems(body){const list=isRecord(body)?body["list"]:void 0;if(!Array.isArray(list)){throw new ApiResponseError("\u30E1\u30F3\u30D0\u30FC\u4E00\u89A7\u306E\u5FDC\u7B54\u306B list \u914D\u5217\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002")}
86
+ process,PROCESS_FLAG.name)).id})},plan:input=>({method:"POST",path:projectPath(input,"processes"),body:createBody(input)}),summarize:body=>pick(processItem(body),PROCESS_COLUMNS),raw:body=>processItem(body)}]};var projectAnalysisOperations=[riskOperation,profitOperation];var NAME_MAX_CHARS=255;var CODE_MAX_CHARS=255;var MEMO_MAX_CHARS2=Number.POSITIVE_INFINITY;var PROJECTS_PATH="/api/v2/projects";function userRefField(flag,key,label){return{kind:"ref",flag,key,summary:`${label}\uFF08\u30E6\u30FC\u30B6\u30FC\u3002me\u30FBID\u30FB\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\u30FB\u793E\u54E1\u756A\u53F7\u30FB\u6C0F\u540D\uFF09`,placeholder:"<\u30E6\u30FC\u30B6\u30FC>",clearFlag:`--no-${flag.slice(2)}`,clearSummary:`${label}\u3092\u5916\u3059`,resolve:(ctx,ref,flagName)=>ctx.
87
+ resolver.user(ref,flagName)}}var FIELDS=[{kind:"text",flag:"--name",key:"name",label:"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u540D",maxChars:NAME_MAX_CHARS,summary:`\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u540D\uFF08${NAME_MAX_CHARS} \u6587\u5B57\u4EE5\u5185\uFF09`},{kind:"text",flag:"--code",key:"code",label:"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u30B3\u30FC\u30C9",maxChars:CODE_MAX_CHARS,summary:"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u30B3\u30FC\u30C9\uFF08\u30BF\u30B9\u30AF\u30AD\u30FC\u306E\u63A5\u982D\u8F9E\u306B\u306A\u308B\uFF09"},
88
+ {kind:"date",flag:"--start-date",key:"start_date",summary:"\u958B\u59CB\u65E5\uFF08YYYY-MM-DD\u30FBnone \u3067\u6D88\u3059\uFF09"},{kind:"date",flag:"--end-date",key:"end_date",summary:"\u7D42\u4E86\u65E5\uFF08YYYY-MM-DD\u30FBnone \u3067\u6D88\u3059\uFF09\u3002\u904E\u53BB\u65E5\u306B\u3059\u308B\u3068\u30AF\u30ED\u30FC\u30BA\u3001\u4ECA\u65E5\u4EE5\u964D\u304B none \u3067\u30A2\u30AF\u30C6\u30A3\u30D6\u306B\u306A\u308B"},userRefField("--manager","project_manager_id","\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u30DE\u30CD\u30FC\u30B8\u30E3\u30FC"),
89
+ userRefField("--leader","project_leader_id","\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u30EA\u30FC\u30C0\u30FC"),{kind:"ref",flag:"--department",key:"department_id",summary:"\u4E3B\u5E79\u90E8\u7F72\uFF08\u540D\u524D\u30FB\u30B3\u30FC\u30C9\u30FBID\uFF09",placeholder:"<\u90E8\u7F72>",clearFlag:"--no-department",clearSummary:"\u4E3B\u5E79\u90E8\u7F72\u3092\u5916\u3059",resolve:(ctx,ref,flag)=>ctx.resolver.department(ref,flag)},{kind:"boolean",flag:"--visible",key:"display_flg",summary:"\u4E00\u89A7\u306B\u8868\u793A\u3059\u308B\u304B\uFF08true /\
90
+ false\uFF09"},{kind:"boolean",flag:"--tasks-enabled",key:"task_enabled_flg",summary:"\u30BF\u30B9\u30AF\u7BA1\u7406\u3092\u4F7F\u3046\u304B\uFF08true / false\uFF09"},{kind:"boolean",flag:"--punch-disabled",key:"punch_disabled_flg",summary:"\u6253\u523B\u306E\u5BFE\u8C61\u304B\u3089\u5916\u3059\u304B\uFF08true / false\uFF09\u3002\u8AB2\u984C\u30FB\u30BF\u30B9\u30AF\u7BA1\u7406\u3060\u3051\u306B\u4F7F\u3046\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u5411\u3051"},{kind:"integer",flag:"--default-due-days",
91
+ key:"default_due_days",label:"\u65E2\u5B9A\u306E\u671F\u65E5",min:1,max:365,summary:"\u30BF\u30B9\u30AF\u4F5C\u6210\u6642\u306E\u65E2\u5B9A\u306E\u671F\u65E5\uFF08\u4F5C\u6210\u65E5\u304B\u3089\u4F55\u65E5\u5F8C\u304B\u30FB1\u301C365\uFF09"}];var CREATE_FIELDS=FIELDS.filter(field=>field.key!=="default_due_days");var MEMO_FLAGS=[{name:"--memo",summary:"\u30E1\u30E2\u3092\u76F4\u63A5\u6307\u5B9A\u3059\u308B\uFF08--memo-file \u3068\u306E\u4F75\u7528\u306F\u30A8\u30E9\u30FC\uFF09",takesValue:true,placeholder:"\
92
+ <\u6587\u5B57\u5217>"},{name:"--memo-file",summary:"\u30E1\u30E2\u3092\u30D5\u30A1\u30A4\u30EB\u304B\u3089\u8AAD\u3080\uFF08- \u3067\u6A19\u6E96\u5165\u529B\uFF09\u3002\u6539\u884C\u30FBMarkdown \u3092\u58CA\u3055\u306A\u3044",takesValue:true,placeholder:"<\u30D1\u30B9|->"}];var CLEAR_FLAGS=[{flag:{name:"--no-memo",summary:"\u30E1\u30E2\u3092\u6D88\u3059",takesValue:false},key:"memo",conflicts:["--memo","--memo-file"]},{flag:{name:"--no-default-due-days",summary:"\u30BF\u30B9\u30AF\u4F5C\u6210\u6642\u306E\u65E2\u5B9A\u306E\u671F\u65E5\u3092\u5916\u3059",
93
+ takesValue:false},key:"default_due_days",conflicts:["--default-due-days"]}];var COLUMNS=["id","code","name","status","start_date","end_date","display_flg","task_enabled_flg","updated_at"];var STATUS_HELP="\u30B9\u30C6\u30FC\u30BF\u30B9\uFF08active / closed\uFF09\u306F\u7D42\u4E86\u65E5\u304B\u3089\u81EA\u52D5\u3067\u6C7A\u307E\u308A\u307E\u3059\uFF08\u6307\u5B9A\u306F\u3067\u304D\u307E\u305B\u3093\uFF09\u3002\n\u65E9\u304F\u7D42\u3048\u308B\u3068\u304D\u306F --end-date \u3092\u904E\u53BB\u65E5\u306B\u3001\u518D\u958B\u3059\u308B\u3068\u304D\u306F\u4ECA\u65E5\u4EE5\u964D\u306E\u65E5\u4ED8\u304B none \u306B\u3057\u3066\u304F\u3060\u3055\u3044\u3002";
94
+ var REF_HELP="\u30E6\u30FC\u30B6\u30FC\uFF08--manager / --leader\uFF09\u306F me\u30FBID\u30FB\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\u30FB\u793E\u54E1\u756A\u53F7\u30FB\u6C0F\u540D\u3067\u3001\u90E8\u7F72\u306F\u540D\u524D\u30FB\u30B3\u30FC\u30C9\u30FBID \u3067\u6307\u5B9A\u3067\u304D\u307E\u3059\n\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\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\u3084\u793E\u54E1\u756A\u53F7\u3067\u6307\u5B9A\u3059\u308B\u3068\u4E00\u610F\u306B\u6C7A\u307E\u308A\u307E\u3059\u3002";
95
+ var CREATE_FORBIDDEN="\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u4F5C\u6210\u306B\u306F\u3001\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u6A5F\u80FD\u306E\u6A29\u9650\u304C\u300C\u7BA1\u7406\u8005\u300D\u3067\u3042\u308B\u3053\u3068\u304C\u8981\u308A\u307E\u3059\u3002\u30C6\u30CA\u30F3\u30C8\u7BA1\u7406\u8005\u306B\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002";var UPDATE_FORBIDDEN="\u3053\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3092\u66F4\u65B0\u3059\u308B\u6A29\u9650\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u6A5F\u80FD\u306E\u6A29\u9650\u304C\u300C\u7DE8\u96C6\u8005\u300D\u4EE5\u4E0A\u3067\u3001\u304B\u3064\u305D\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u30DE\u30CD\u30FC\u30B8\u30E3\u30FC\u3067\u3042\u308B\u304B\u3001\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u6A5F\u80FD\u306E\u6A29\u9650\u304C\u300C\u7BA1\u7406\u8005\u300D\u3067\u3042\u308B\u3053\u3068\u304C\u8981\u308A\u307E\u3059\u3002";
96
+ function readMemo(input,usage){return readBody(input,{flag:"--memo",fileFlag:"--memo-file",label:"\u30E1\u30E2",maxChars:MEMO_MAX_CHARS2,usage})}function checkCode(input){const code=input.flags.get("--code");if(code!==void 0&&collapsesInUrlPath(code.trim())){throw new UsageError(`\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u30B3\u30FC\u30C9\u3068\u3057\u3066\u4F7F\u3048\u306A\u3044\u5024\u3067\u3059: ${code}`,"\u30C9\u30C3\u30C8\u3060\u3051\u306E\u5024\u306F URL \u306E\u30D1\u30B9\u8981\u7D20\u3068\u3057\u3066\u6D88\u3048\u3066\u3057\u307E\u3046\u305F\u3081\u3001twp project get \u306A\u3069\u3067\u5F15\u3051\u306A\u304F\u306A\u308A\u307E\u3059\u3002")}}
97
+ function projectBody(input,fields){const body=fieldBody(input,fields);for(const clear of CLEAR_FLAGS)if(input.flags.has(clear.flag.name))body[clear.key]=null;const memo=input.resolved?.["memo"];if(memo!==void 0)body["memo"]=memo;return body}async function prepareFields(input,ctx,usage,fields){checkCode(input);fieldBody(input,fields);for(const clear of CLEAR_FLAGS){if(input.flags.has(clear.flag.name)&&clear.conflicts.some(flag=>input.flags.has(flag))){throw new UsageError(`${clear.flag.name} \u3068 ${clear.
98
+ conflicts.join(" / ")} \u306F\u540C\u6642\u306B\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093`,"\u3069\u3061\u3089\u304B\u4E00\u65B9\u3060\u3051\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002")}}const memo=await readMemo(input,usage);const withRefs=await resolveRefFields(input,ctx,fields);return memo===void 0?withRefs:withResolved(withRefs,{memo})}function projectOf(body,label){const project=isRecord(body)?body["project"]:void 0;if(!isRecord(project)){throw new ApiResponseError(`${label}\
99
+ \u306E\u5FDC\u7B54\u306B project \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}return project}var CREATE_USAGE="twp project create --name <\u540D\u524D> --code <\u30B3\u30FC\u30C9> [\u9805\u76EE\u2026]";var createOperation2={name:"create",summary:"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3092\u4F5C\u6210\u3059\u308B\uFF08\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u6A5F\u80FD\u306E\u7BA1\u7406\u8005\uFF09",usage:CREATE_USAGE,description:`\
100
+ POST /api/v2/projects\u3002--name \u3068 --code \u304C\u5FC5\u9808\u3067\u3059\u3002\u4F5C\u6210\u3057\u305F\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E id \u3068\u30B3\u30FC\u30C9\u304C\u8FD4\u308A\u307E\u3059\u3002
101
+ \u30B3\u30FC\u30C9\u306F\u30BF\u30B9\u30AF\u30AD\u30FC\u306E\u63A5\u982D\u8F9E\u306B\u306A\u308A\u307E\u3059\uFF08\u30B3\u30FC\u30C9 ABC \u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u30BF\u30B9\u30AF\u306F ABC-1, ABC-2, \u2026\uFF09\u3002
102
+ \u30B3\u30FC\u30C9\u306B\u4F7F\u3048\u308B\u6587\u5B57\u3068\u91CD\u8907\u306F\u30B5\u30FC\u30D0\u304C\u5224\u5B9A\u3057\u307E\u3059\uFF08\u4F7F\u3048\u306A\u3051\u308C\u3070\u30B5\u30FC\u30D0\u306E\u7406\u7531\u3092\u305D\u306E\u307E\u307E\u51FA\u3057\u3066\u6B62\u307E\u308A\u307E\u3059\uFF09\u3002
103
+
104
+ ${STATUS_HELP}
105
+
106
+ ${REF_HELP}
107
+
108
+ \u30E1\u30E2\u306F --memo-file \u3092\u4E3B\u7D4C\u8DEF\u306B\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u6539\u884C\u30FBMarkdown \u304C\u30B7\u30A7\u30EB\u3067\u58CA\u308C\u307E\u305B\u3093\uFF09\u3002--memo-file - \u3067\u6A19\u6E96\u5165\u529B\u304B\u3089\u8AAD\u3081\u307E\u3059\u3002
109
+ \u30BF\u30B9\u30AF\u306E\u65E2\u5B9A\u306E\u671F\u65E5\uFF08--default-due-days\uFF09\u306F\u4F5C\u6210\u6642\u306B\u306F\u4FDD\u5B58\u3055\u308C\u306A\u3044\u305F\u3081\u3001\u4F5C\u6210\u5F8C\u306B twp project update \u3067\u8A2D\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002
110
+
111
+ \u4F8B:
112
+ twp project create --name "\u793E\u5185\u30DD\u30FC\u30BF\u30EB\u5237\u65B0" --code PORTAL --start-date 2026-11-01 --end-date 2027-03-31
113
+ twp project create --name "\u554F\u3044\u5408\u308F\u305B\u5BFE\u5FDC" --code SUPPORT --manager me --memo-file memo.md`,forbidden:CREATE_FORBIDDEN,flags:[...createFlags(CREATE_FIELDS),...MEMO_FLAGS],async prepare(input,ctx){if(input.args.length>0)throw new UsageError(`create \u306F\u4F4D\u7F6E\u5F15\u6570\u3092\u53D6\u308A\u307E\u305B\u3093: ${input.args.join(" ")}`,"twp project create help");if((input.flags.get("--name")??"").trim()==="")throw new UsageError("--name \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",
114
+ CREATE_USAGE);if((input.flags.get("--code")??"").trim()==="")throw new UsageError("--code \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",CREATE_USAGE);return prepareFields(input,ctx,CREATE_USAGE,CREATE_FIELDS)},plan:input=>({method:"POST",path:PROJECTS_PATH,body:projectBody(input,CREATE_FIELDS)}),summarize:body=>pick(projectOf(body,"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u4F5C\u6210"),COLUMNS),raw:body=>projectOf(body,"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u4F5C\u6210")};var UPDATE_USAGE="\
115
+ twp project update <ID|\u30B3\u30FC\u30C9> [\u9805\u76EE\u2026]";var updateOperation2={name:"update",summary:"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u9805\u76EE\u3092\u66F4\u65B0\u3059\u308B\uFF08\u6307\u5B9A\u3057\u305F\u9805\u76EE\u3060\u3051\u3092\u5909\u3048\u308B\uFF09",usage:UPDATE_USAGE,description:`PUT /api/v2/projects/{id}\u3002\u6307\u5B9A\u3057\u305F\u9805\u76EE\u3060\u3051\u3092\u5909\u3048\u307E\u3059\uFF08\u6307\u5B9A\u3057\u306A\u304B\u3063\u305F\u9805\u76EE\u306F\u5909\u308F\u308A\u307E\u305B\u3093\uFF09\u3002
116
+ \u5909\u3048\u308B\u9805\u76EE\u30921\u3064\u3082\u6307\u5B9A\u3057\u306A\u3044\u3068\u30A8\u30E9\u30FC\u306B\u306A\u308A\u307E\u3059\u3002<ID|\u30B3\u30FC\u30C9> \u306F\u7701\u7565\u3067\u304D\u307E\u305B\u3093\uFF08\u65E2\u5B9A\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306F\u4F7F\u3044\u307E\u305B\u3093\uFF09\u3002
117
+
118
+ \u5024\u3092\u5916\u3059\u3068\u304D: \u65E5\u4ED8\u306F none\uFF08--end-date none\uFF09\u3001\u30E6\u30FC\u30B6\u30FC\u30FB\u90E8\u7F72\u306F --no-manager / --no-leader / --no-department\u3001\u30E1\u30E2\u306F --no-memo\u3001\u65E2\u5B9A\u306E\u671F\u65E5\u306F --no-default-due-days\u3002
119
+
120
+ --code \u3067\u30B3\u30FC\u30C9\u3092\u5909\u3048\u308B\u3068\u3001\u30B5\u30FC\u30D0\u304C\u3053\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u30BF\u30B9\u30AF\u306E\u30AD\u30FC\u3092\u5168\u4EF6\u66F8\u304D\u63DB\u3048\u307E\u3059\uFF08ABC-12 \u2192 NEW-12\uFF09\u3002
121
+ \u5916\u90E8\u306B\u8CBC\u3063\u305F\u30AD\u30FC\u3084\u30D6\u30E9\u30F3\u30C1\u540D\u306F\u8FFD\u968F\u3057\u307E\u305B\u3093\u3002\u9001\u308B\u524D\u306B\u5F71\u97FF\u3059\u308B\u4EF6\u6570\u3092\u78BA\u304B\u3081\u3066\u51FA\u3057\u3001--yes \u304C\u7121\u3051\u308C\u3070\u9001\u308A\u307E\u305B\u3093
122
+ \uFF08--dry-run \u3067\u4EF6\u6570\u3060\u3051\u78BA\u304B\u3081\u3089\u308C\u307E\u3059\uFF09\u3002\u30BF\u30B9\u30AF\u304C\u591A\u3059\u304E\u308B\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306F\u30B5\u30FC\u30D0\u304C\u30B3\u30FC\u30C9\u306E\u5909\u66F4\u3092\u65AD\u308A\u307E\u3059\u3002
123
+
124
+ ${STATUS_HELP}
125
+
126
+ ${REF_HELP}
127
+
128
+ \u4F8B:
129
+ twp project update PORTAL --name "\u793E\u5185\u30DD\u30FC\u30BF\u30EB\u5237\u65B0\uFF08\u7B2C2\u671F\uFF09" --end-date 2027-06-30
130
+ twp project update PORTAL --end-date none --no-leader
131
+ twp project update PORTAL --code PORTAL2 --dry-run`,forbidden:UPDATE_FORBIDDEN,flags:[...updateFlags(FIELDS),...MEMO_FLAGS,...CLEAR_FLAGS.map(clear=>clear.flag)],async prepare(input,ctx){if(!hasAnyField(input,FIELDS)&&!["--memo","--memo-file",...CLEAR_FLAGS.map(clear=>clear.flag.name)].some(flag=>input.flags.has(flag))){throw new UsageError("\u5909\u3048\u308B\u9805\u76EE\u30921\u3064\u4EE5\u4E0A\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044","twp project update help")}const ref=singleRef(input,
132
+ {flag:"<ID|\u30B3\u30FC\u30C9>",label:"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8",usage:UPDATE_USAGE});if(collapsesInUrlPath(ref)){throw new UsageError(`\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E UUID \u304B\u30B3\u30FC\u30C9\u3068\u3057\u3066\u4F7F\u3048\u306A\u3044\u5024\u3067\u3059: ${ref}`,"\u30C9\u30C3\u30C8\u3060\u3051\u306E\u5024\u306F URL \u306E\u30D1\u30B9\u8981\u7D20\u3068\u3057\u3066\u6D88\u3048\u3066\u3057\u307E\u3046\u305F\u3081\u53D7\u3051\u4ED8\u3051\u307E\u305B\u3093\u3002")}const prepared=await prepareFields(
133
+ {...input,args:[]},ctx,UPDATE_USAGE,FIELDS);const project=await ctx.resolver.project(ref);return withResolved(prepared,{projectId:project.id,...project.code!==project.id?{currentCode:project.code}:{}})},plan:input=>({method:"PUT",path:`${PROJECTS_PATH}/${encodeURIComponent(requireResolved(input,"projectId"))}`,body:projectBody(input,FIELDS)}),async preview(input,ctx){const raw=input.flags.get("--code");if(raw===void 0)return{notes:[],warnings:[]};const next=raw.trim();const current=input.resolved?.["\
134
+ currentCode"];if(current===next)return{notes:[`\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u30B3\u30FC\u30C9\u306F ${next} \u306E\u307E\u307E\u3067\u3059\uFF08\u30BF\u30B9\u30AF\u30AD\u30FC\u306F\u5909\u308F\u308A\u307E\u305B\u3093\uFF09\u3002`],warnings:[]};const projectId=requireResolved(input,"projectId");const preview=await ctx.send({method:"GET",path:`${PROJECTS_PATH}/${encodeURIComponent(projectId)}/code-change-preview`,query:{code:next}});return codeChangePreview(preview,next)},summarize:body=>pick(
135
+ projectOf(body,"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u66F4\u65B0"),COLUMNS),raw:body=>projectOf(body,"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u66F4\u65B0")};function codeChangePreview(body,next){const count=isRecord(body)?body["task_count"]:void 0;const changeable=isRecord(body)?body["changeable"]:void 0;if(typeof count!=="number"||typeof changeable!=="boolean"){throw new ApiResponseError("\u30B3\u30FC\u30C9\u5909\u66F4\u306E\u5F71\u97FF\u30D7\u30EC\u30D3\u30E5\u30FC\u306E\u5FDC\u7B54\u306B task_count / changeable \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002")}
136
+ const current=isRecord(body)&&typeof body["current_code"]==="string"?body["current_code"]:"\uFF08\u4E0D\u660E\uFF09";if(!changeable){const max=isRecord(body)&&typeof body["max_tasks"]==="number"?`\uFF08\u4E0A\u9650 ${body["max_tasks"]} \u4EF6\uFF09`:"";throw new UsageError(`\u3053\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306F\u30BF\u30B9\u30AF\u304C ${count} \u4EF6\u3042\u308B\u305F\u3081\u3001\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u30B3\u30FC\u30C9\u3092\u5909\u66F4\u3067\u304D\u307E\u305B\u3093${max}\
137
+ \u3002`,"\u30B3\u30FC\u30C9\u3092\u5909\u3048\u305A\u306B\u3001\u540D\u524D\uFF08--name\uFF09\u3060\u3051\u3092\u5909\u3048\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u3059\u3002")}if(current===next)return{notes:[`\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u30B3\u30FC\u30C9\u306F ${next} \u306E\u307E\u307E\u3067\u3059\uFF08\u30BF\u30B9\u30AF\u30AD\u30FC\u306F\u5909\u308F\u308A\u307E\u305B\u3093\uFF09\u3002`],warnings:[]};if(count===0)return{notes:[`\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u30B3\u30FC\u30C9\u3092 ${current}\
138
+ \u304B\u3089 ${next} \u306B\u5909\u3048\u307E\u3059\uFF08\u30BF\u30B9\u30AF\u304C\u7121\u3044\u305F\u3081\u3001\u66F8\u304D\u63DB\u308F\u308B\u30AD\u30FC\u306F\u3042\u308A\u307E\u305B\u3093\uFF09\u3002`],warnings:[]};return{notes:[],warnings:[`\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u30B3\u30FC\u30C9\u3092 ${current} \u304B\u3089 ${next} \u306B\u5909\u3048\u308B\u3068\u3001\u3053\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u30BF\u30B9\u30AF ${count} \u4EF6\u306E\u30AD\u30FC\u304C\u66F8\u304D\u63DB\u308F\u308A\u307E\u3059\uFF08${current}\
139
+ -1 \u2192 ${next}-1\uFF09\u3002\u5916\u90E8\u306B\u8CBC\u3063\u305F\u30AD\u30FC\u3084\u30D6\u30E9\u30F3\u30C1\u540D\u306F\u8FFD\u968F\u3057\u307E\u305B\u3093\u3002`]}}var projectWriteOperations=[createOperation2,updateOperation2];var LIST_COLUMNS=["id","code","name","status","effective_status"];var GET_COLUMNS=["id","code","name","status","effective_status","display_flg","closed_flg","task_enabled_flg","start_date","end_date","created_at","updated_at"];var MEMBER_COLUMNS2=["user_id","user_name","user_email","role","alias","department_name"];function memberItems(body){const list=isRecord(body)?body["list"]:void 0;if(!Array.isArray(list)){throw new ApiResponseError("\u30E1\u30F3\u30D0\u30FC\u4E00\u89A7\u306E\u5FDC\u7B54\u306B list \u914D\u5217\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002")}
87
140
  return list}var listPaging=envelopePaging({label:"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u4E00\u89A7"});function listItems(body){return listPaging.items(body)}function projectObject(body){const project=isRecord(body)?body["project"]:void 0;if(!isRecord(project)){throw new ApiResponseError("\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u8A73\u7D30\u306E\u5FDC\u7B54\u306B project \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002")}return project}
88
- var MANHOURS_USAGE="twp project manhours [<ID|\u30B3\u30FC\u30C9>] [--from <YYYY-MM-DD>] [--to <YYYY-MM-DD>]";var projectDomain={name:"project",summary:"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u4E00\u89A7\u30FB\u8A73\u7D30\u30FB\u30E1\u30F3\u30D0\u30FC\u306E\u30A2\u30B5\u30A4\u30F3\u30FB\u5DE5\u6570\u30FB\u30EA\u30B9\u30AF\u5206\u6790\u30FB\u53CE\u652F\u5206\u6790\u30FB\u5DE5\u7A0B",operations:[{name:"list",summary:"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3092\u4E00\u89A7\u3059\u308B",usage:"tw\
89
- p project list [--all] [--limit <\u4EF6\u6570>] [--cursor <\u30AB\u30FC\u30BD\u30EB>] [--keyword <\u8A9E>] [--status <\u72B6\u614B>]",description:"--output json \u306F API \u304C\u8FD4\u3059\u5168\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u51FA\u3057\u307E\u3059\u3002\n--output table / text / tsv \u306F\u8981\u7D04\u5217\uFF08id / code / name / status / effective_status\uFF09\u3067\u3059\u3002\n\u6B32\u3057\u3044\u5217\u3060\u3051\u3092\u6A5F\u68B0\u51E6\u7406\u3057\u305F\u3044\u3068\u304D\u306F --query \u3067\u9078\u3093\u3067\u304F\u3060\u3055\u3044\uFF08--query \u306F\u751F\u30C7\u30FC\u30BF\u306B\u5BFE\u3057\u3066\u8A55\u4FA1\u3055\u308C\u307E\u3059\uFF09\u3002\n\n"+
141
+ var MANHOURS_USAGE="twp project manhours [<ID|\u30B3\u30FC\u30C9>] [--from <YYYY-MM-DD>] [--to <YYYY-MM-DD>]";var projectDomain={name:"project",summary:"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u4E00\u89A7\u30FB\u8A73\u7D30\u30FB\u4F5C\u6210\u30FB\u66F4\u65B0\u30FB\u30E1\u30F3\u30D0\u30FC\u306E\u30A2\u30B5\u30A4\u30F3\u30FB\u5DE5\u6570\u30FB\u30EA\u30B9\u30AF\u5206\u6790\u30FB\u53CE\u652F\u5206\u6790\u30FB\u5DE5\u7A0B",operations:[{name:"list",summary:"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3092\u4E00\u89A7\u3059\u308B",
142
+ usage:"twp project list [--all] [--limit <\u4EF6\u6570>] [--cursor <\u30AB\u30FC\u30BD\u30EB>] [--keyword <\u8A9E>] [--status <\u72B6\u614B>]",description:"--output json \u306F API \u304C\u8FD4\u3059\u5168\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u51FA\u3057\u307E\u3059\u3002\n--output table / text / tsv \u306F\u8981\u7D04\u5217\uFF08id / code / name / status / effective_status\uFF09\u3067\u3059\u3002\n\u6B32\u3057\u3044\u5217\u3060\u3051\u3092\u6A5F\u68B0\u51E6\u7406\u3057\u305F\u3044\u3068\u304D\u306F --query \u3067\u9078\u3093\u3067\u304F\u3060\u3055\u3044\uFF08--query \u306F\u751F\u30C7\u30FC\u30BF\u306B\u5BFE\u3057\u3066\u8A55\u4FA1\u3055\u308C\u307E\u3059\uFF09\u3002\n\n"+
90
143
  LIST_PAGING_HELP,flags:[...LIST_FLAGS,{name:"--keyword",summary:"\u30B3\u30FC\u30C9\u30FB\u540D\u79F0\u306E\u90E8\u5206\u4E00\u81F4\u3067\u7D5E\u308A\u8FBC\u3080",takesValue:true,placeholder:"<\u8A9E>"},{name:"--status",summary:"\u30B9\u30C6\u30FC\u30BF\u30B9\u3067\u7D5E\u308A\u8FBC\u3080\uFF08\u4F8B: active\uFF09",takesValue:true,placeholder:"<\u72B6\u614B>"}],paging:listPaging,plan(input){if(input.args.length>0){throw new UsageError(`list \u306F\u4F4D\u7F6E\u5F15\u6570\u3092\u53D6\u308A\u307E\u305B\u3093: ${input.
91
144
  args.join(" ")}`,"twp project list help")}return{method:"GET",path:"/api/v2/projects",query:{limit:positiveInteger(input.flags,"--limit"),cursor:nonEmpty(input.flags,"--cursor"),keyword:nonEmpty(input.flags,"--keyword"),status:nonEmpty(input.flags,"--status")}}},summarize:body=>listItems(body).map(row=>pick(row,LIST_COLUMNS)),raw:body=>listItems(body)},{name:"get",summary:"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C81\u4EF6\u306E\u8A73\u7D30\u3092\u8868\u793A\u3059\u308B",usage:"twp project get <ID|\u30B3\u30FC\u30C9>",
92
145
  description:'ID\uFF08UUID / ULID\uFF09\u306A\u3089\u305D\u306E\u307E\u307E\u3001\u305D\u308C\u4EE5\u5916\u306F\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u30B3\u30FC\u30C9\u3068\u3057\u3066\u89E3\u6C7A\u3057\u307E\u3059\uFF081\u5F80\u5FA9\uFF09\u3002\n\u30B3\u30FC\u30C9\u304C\u898B\u3064\u304B\u3089\u306A\u3044\u5834\u5408\u3001\u30B5\u30FC\u30D0\u306F\u300C\u5B58\u5728\u3057\u306A\u3044\u300D\u3068\u300C\u95B2\u89A7\u6A29\u9650\u304C\u7121\u3044\u300D\u3092\u610F\u56F3\u7684\u306B\u533A\u5225\u3057\u307E\u305B\u3093\u3002\n\u30B3\u30FC\u30C9\u304C literally "help" \u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3092\u5F15\u304F\u3068\u304D\u3060\u3051 `twp project get -- help` \u3068\u66F8\u304D\u307E\u3059\n\uFF08\u5148\u982D\u306E help \u306F\u30D8\u30EB\u30D7\u8981\u6C42\u3068\u3057\u3066\u89E3\u91C8\u3055\u308C\u308B\u305F\u3081\uFF09\u3002',
93
146
  flags:[],plan(input){const[rawRef,...rest]=input.args;const ref=rawRef?.trim()??"";if(ref===""){throw new UsageError("\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E UUID \u304B\u30B3\u30FC\u30C9\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044","twp project get help")}if(rest.length>0){throw new UsageError(`get \u304C\u53D7\u3051\u53D6\u308C\u308B\u5F15\u6570\u306F1\u3064\u3060\u3051\u3067\u3059: ${rest.join(" ")}`,"twp project get help")}if(collapsesInUrlPath(ref)){throw new UsageError(`\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\
94
147
  \u306E UUID \u304B\u30B3\u30FC\u30C9\u3068\u3057\u3066\u4F7F\u3048\u306A\u3044\u5024\u3067\u3059: ${ref}`,"\u30C9\u30C3\u30C8\u3060\u3051\u306E\u5024\u306F URL \u306E\u30D1\u30B9\u8981\u7D20\u3068\u3057\u3066\u6D88\u3048\u3066\u3057\u307E\u3046\u305F\u3081\u53D7\u3051\u4ED8\u3051\u307E\u305B\u3093\u3002")}return safeProjectIdPolicy.isDirectId(ref)?{method:"GET",path:`/api/v2/projects/${encodeURIComponent(ref)}`}:{method:"GET",path:`/api/v2/projects/by-code/${encodeURIComponent(ref)}`}},summarize:body=>pick(
95
- projectObject(body),GET_COLUMNS),raw:body=>projectObject(body)},{name:"members",summary:"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u30E1\u30F3\u30D0\u30FC\u3092\u4E00\u89A7\u3059\u308B",usage:"twp project members [<ID|\u30B3\u30FC\u30C9>]",description:"\u7701\u7565\u3059\u308B\u3068\u65E2\u5B9A\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\uFF08TWP_PROJECT / .twp/config.json / ~/.twp/config.json\uFF09\u3092\u4F7F\u3044\u307E\u3059\u3002\n\u3053\u306E API \u306F\u30DA\u30FC\u30B8\u30F3\u30B0\u3092\u6301\u305F\u306A\u3044\u306E\u3067\u3001\u4EF6\u6570\uFF0810,000 \u4EF6\uFF09\u3092\u660E\u793A\u3057\u30661\u56DE\u3067\u5F15\u304D\u307E\u3059\uFF08--all / --limit \u306F\u3042\u308A\u307E\u305B\u3093\uFF09\u3002\n\u3053\u3053\u306B\u51FA\u308B user_id / user_email \u306F twp task list --assignee \u306B\u305D\u306E\u307E\u307E\u6E21\u305B\u307E\u3059\u3002",
148
+ projectObject(body),GET_COLUMNS),raw:body=>projectObject(body)},...projectWriteOperations,{name:"members",summary:"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u30E1\u30F3\u30D0\u30FC\u3092\u4E00\u89A7\u3059\u308B",usage:"twp project members [<ID|\u30B3\u30FC\u30C9>]",description:"\u7701\u7565\u3059\u308B\u3068\u65E2\u5B9A\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\uFF08TWP_PROJECT / .twp/config.json / ~/.twp/config.json\uFF09\u3092\u4F7F\u3044\u307E\u3059\u3002\n\u3053\u306E API \u306F\u30DA\u30FC\u30B8\u30F3\u30B0\u3092\u6301\u305F\u306A\u3044\u306E\u3067\u3001\u4EF6\u6570\uFF0810,000 \u4EF6\uFF09\u3092\u660E\u793A\u3057\u30661\u56DE\u3067\u5F15\u304D\u307E\u3059\uFF08--all / --limit \u306F\u3042\u308A\u307E\u305B\u3093\uFF09\u3002\n\u3053\u3053\u306B\u51FA\u308B user_id / user_email \u306F twp task list --assignee \u306B\u305D\u306E\u307E\u307E\u6E21\u305B\u307E\u3059\u3002",
96
149
  flags:[],async prepare(input,ctx){const[ref,...rest]=input.args;if(rest.length>0){throw new UsageError(`members \u304C\u53D7\u3051\u53D6\u308C\u308B\u5F15\u6570\u306F1\u3064\u3060\u3051\u3067\u3059: ${rest.join(" ")}`,"twp project members help")}return withResolved(input,{projectId:await ctx.projectId(ref)})},plan(input){const projectId=requireResolved(input,"projectId");return{method:"GET",path:`/api/v2/projects/${encodeURIComponent(projectId)}/members`,query:{limit:PROJECT_MEMBERS_LIMIT}}},summarize:body=>memberItems(
97
150
  body).map(row=>pick(row,MEMBER_COLUMNS2)),raw:body=>memberItems(body),notes:body=>memberItems(body).length>=PROJECT_MEMBERS_LIMIT?[`${PROJECT_MEMBERS_LIMIT} \u4EF6\u3067\u6253\u3061\u5207\u3089\u308C\u3066\u3044\u308B\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\uFF08\u30B5\u30FC\u30D0\u306F\u53C2\u753B\u65E5\u6642\u306E\u65B0\u3057\u3044\u9806\u306B\u8FD4\u3057\u307E\u3059\uFF09\u3002`]:[]},{name:"mine",summary:"\u81EA\u5206\u304C\u30E1\u30F3\u30D0\u30FC\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3092\u4E00\u89A7\u3059\u308B\uFF08\u5F79\u5272\u30FB\u53C2\u753B\u671F\u9593\u3064\u304D\uFF09",
98
151
  usage:"twp project mine",description:"GET /api/v2/me/projects\u3002\u3053\u306E API \u306F\u30DA\u30FC\u30B8\u30F3\u30B0\u3092\u6301\u305F\u305A\u3001\u5E38\u306B\u5168\u4EF6\u3092\u8FD4\u3057\u307E\u3059\u3002\nmember_start_date / member_end_date \u306F\u81EA\u5206\u306E\u53C2\u753B\u671F\u9593\u3067\u3059\uFF08start_date / end_date \u306F\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u671F\u9593\uFF09\u3002\n\u7A3C\u50CD\u671F\u9593\uFF08assignment_periods\uFF09\u306F --output json \u304B --query \u3067\u8AAD\u3081\u307E\u3059\u3002",
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{dateFlag,monthFlag}from"./chunk-EXT4AIDF.js";import{readBody}from"./chunk-6LSQCOCJ.js";import{ATTENDANCE_REPORTS_PATH,ATTENDANCE_REPORT_MASTER_PATHS,resolveNamed}from"./chunk-FEJDU42E.js";import{isSafePathSegment}from"./chunk-GMBJTG6A.js";import{ApiError}from"./chunk-JA5A6UJ2.js";import{requireResolved,singleRef,withResolved}from"./chunk-PS5QFKHB.js";import{acknowledgement,isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiRejectedError,ApiResponseError,
3
+ import{dateFlag,monthFlag}from"./chunk-EXT4AIDF.js";import{readBody}from"./chunk-6LSQCOCJ.js";import{ATTENDANCE_REPORTS_PATH,ATTENDANCE_REPORT_MASTER_PATHS,resolveNamed}from"./chunk-3LWQO2ZK.js";import{isSafePathSegment}from"./chunk-GMBJTG6A.js";import{ApiError}from"./chunk-JA5A6UJ2.js";import{requireResolved,singleRef,withResolved}from"./chunk-PS5QFKHB.js";import{acknowledgement,isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiRejectedError,ApiResponseError,
4
4
  UsageError}from"./chunk-VFPY2A23.js";var USER_REF_HELP="<\u30E6\u30FC\u30B6\u30FC> \u306F ID\u30FB\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\u30FB\u793E\u54E1\u756A\u53F7\u30FB\u6C0F\u540D\u30FBme\uFF08\u81EA\u5206\uFF09\u306E\u3069\u308C\u3067\u3082\u6307\u5B9A\u3067\u304D\u307E\u3059\u3002\n\u6C0F\u540D\u306F\u5B8C\u5168\u4E00\u81F4\u30671\u4EBA\u306B\u7D5E\u308C\u305F\u3068\u304D\u3060\u3051\u53D7\u3051\u4ED8\u3051\u307E\u3059\uFF08\u540C\u59D3\u540C\u540D\u306A\u3089\u5019\u88DC\u3092\u51FA\u3057\u3066\u6B62\u307E\u308B\u306E\u3067\u3001\n\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\u304B\u793E\u54E1\u756A\u53F7\u3067\u6307\u5B9A\u3057\u76F4\u3057\u3066\u304F\u3060\u3055\u3044\uFF09\u3002ID \u4EE5\u5916\u306F\u3001\u30C6\u30CA\u30F3\u30C8\u306E\u30E6\u30FC\u30B6\u30FC\u4E00\u89A7\n\uFF08\u65E2\u5B9A10\u5206\u30AD\u30E3\u30C3\u30B7\u30E5\u30FB--refresh \u3067\u53D6\u308A\u76F4\u3057\uFF09\u3068\u7167\u5408\u3057\u307E\u3059\u3002\n\u8868\u793A\u30D5\u30E9\u30B0\u3092\u5916\u3057\u305F\u30E6\u30FC\u30B6\u30FC\u306F\u793E\u54E1\u756A\u53F7\u3067\u306F\u5F15\u3051\u307E\u305B\u3093\u3002\u7D44\u7E54\u7BA1\u7406\u8005\u3067\u306A\u3044\u5834\u5408\u306F ID \u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002";
5
5
  function userPath(input,suffix=""){const userId=requireResolved(input,"userId");if(!isSafePathSegment(userId)){throw new ApiResponseError(`\u30B5\u30FC\u30D0\u304C\u8FD4\u3057\u305F\u30E6\u30FC\u30B6\u30FC ID \u3092\u30D1\u30B9\u306B\u4F7F\u3048\u307E\u305B\u3093: ${userId}\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}return`${encodeURIComponent(userId)}${suffix}`}var USER_REF_FLAG={name:"--user",summary:"\u5BFE\u8C61\u306E\u30E6\u30FC\u30B6\u30FC\uFF08\u4F4D\u7F6E\u5F15\u6570\u306E\u4EE3\u308F\u308A\u306B\u4F7F\u3048\u308B\uFF09",
6
6
  takesValue:true,placeholder:"<\u30E6\u30FC\u30B6\u30FC>"};async function prepareUser(input,ctx,usage){const ref=singleRef(input,{flag:"--user",label:"\u30E6\u30FC\u30B6\u30FC",usage});const user=await ctx.resolver.user(ref);return withResolved(input,{userId:user.id})}var REPORT_LIST_USAGE="twp attendance report list [--month <YYYY-MM> | --from <YYYY-MM-DD> --to <YYYY-MM-DD>] [--user <\u30E6\u30FC\u30B6\u30FC>]";var REPORT_GET_USAGE="twp attendance report get <ID>";var REPORT_REASONS_USAGE="twp attendance report reasons";var REPORT_CREATE_USAGE="twp attendance report create (--date <YYYY-MM-DD> | --from <YYYY-MM-DD> --to <YYYY-MM-DD>) --category <\u533A\u5206> --reason <\u7406\u7531> [--detail <\u7406\u7531\u8A73\u7D30>] [--start-time <HH:MM>] [--end-time <HH:MM>] [--note <\u9023\u7D61\u5185\u5BB9> | --note-file <\u30D1\u30B9>]\
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-YLM54X35.js";import{parseArgv}from"./chunk-ZVEMJWRR.js";import"./chunk-NAUH75MM.js";import"./chunk-6A2JSS76.js";import"./chunk-QQRJLH6B.js";import"./chunk-VSJBJXZO.js";var VERSION=true?"0.53.0":"0.0.0-dev";var HELP=`twp ${VERSION} \u2014 TWP CLI
4
+ import{GLOBAL_OPTIONS_HELP}from"./chunk-YLM54X35.js";import{parseArgv}from"./chunk-ZVEMJWRR.js";import"./chunk-NAUH75MM.js";import"./chunk-6A2JSS76.js";import"./chunk-QQRJLH6B.js";import"./chunk-VSJBJXZO.js";var VERSION=true?"0.55.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
@@ -119,6 +119,9 @@ import{GLOBAL_OPTIONS_HELP}from"./chunk-YLM54X35.js";import{parseArgv}from"./chu
119
119
  \u671F\u9593\u3092\u6307\u5B9A\u3057\u3066\u5B9F\u884C\u5C65\u6B74\u3092\u4E00\u89A7\u3059\u308B\uFF08--since \u304C\u8981\u308B\uFF09
120
120
  twp project list \u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3092\u4E00\u89A7\u3059\u308B
121
121
  twp project get <\u53C2\u7167> \u30D7\u30ED\u30B8\u30A7\u30AF\u30C81\u4EF6\u306E\u8A73\u7D30\u3092\u8868\u793A\u3059\u308B
122
+ twp project create \u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3092\u4F5C\u6210\u3059\u308B\uFF08--name / --code \u304C\u5FC5\u9808\u30FB\u7BA1\u7406\u8005\uFF09
123
+ twp project update <\u53C2\u7167>
124
+ \u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u9805\u76EE\u3092\u66F4\u65B0\u3059\u308B\uFF08\u6307\u5B9A\u3057\u305F\u9805\u76EE\u3060\u3051\u3002--code \u306F\u30BF\u30B9\u30AF\u30AD\u30FC\u3082\u66F8\u304D\u63DB\u3048\u308B\uFF09
122
125
  twp project members \u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u30E1\u30F3\u30D0\u30FC\u3092\u4E00\u89A7\u3059\u308B
123
126
  twp project mine \u81EA\u5206\u304C\u30E1\u30F3\u30D0\u30FC\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3092\u4E00\u89A7\u3059\u308B
124
127
  twp project manhours \u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u5DE5\u6570\u3092\u30E6\u30FC\u30B6\u30FC\u3054\u3068\u306B\u8868\u793A\u3059\u308B\uFF08--from/--to \u306F YYYY-MM-DD\u30FB\u7BA1\u7406\u8005\uFF09
@@ -164,6 +167,14 @@ import{GLOBAL_OPTIONS_HELP}from"./chunk-YLM54X35.js";import{parseArgv}from"./chu
164
167
  \u30D5\u30A1\u30A4\u30EB\u3092\u6DFB\u4ED8\u3059\u308B\uFF08--file \u5FC5\u9808\u30FB3\u5F80\u5FA9\u30921\u30B3\u30DE\u30F3\u30C9\u3067\uFF09
165
168
  twp task attachment download <\u6DFB\u4ED8ID>
166
169
  \u6DFB\u4ED8\u3092\u30D5\u30A1\u30A4\u30EB\u3078\u66F8\u304D\u51FA\u3059\uFF08--out \u5FC5\u9808\uFF09
170
+ twp task link list <\u30AD\u30FC>
171
+ \u30BF\u30B9\u30AF\u306E\u30EA\u30F3\u30AF\uFF08\u95A2\u9023\u30FB\u524D\u63D0\uFF09\u3092\u4E00\u89A7\u3059\u308B
172
+ twp task link create <\u30AD\u30FC>
173
+ \u30EA\u30F3\u30AF\u3092\u5F35\u308B\uFF08--target \u5FC5\u9808\u30FB\u524D\u63D0\u306A\u3089 --type blocked_by\uFF09
174
+ twp task link update <\u30AD\u30FC>
175
+ \u524D\u63D0\u306E\u5145\u8DB3\u6761\u4EF6\u3092\u5DEE\u3057\u66FF\u3048\u308B\uFF08--target \u3068 --satisfied-status\uFF09
176
+ twp task link delete <\u30AD\u30FC>
177
+ \u30EA\u30F3\u30AF\u3092\u524A\u9664\u3059\u308B\uFF08--target \u3068 --yes \u304C\u8981\u308B\uFF09
167
178
  twp task status list --status \u306B\u6E21\u305B\u308B\u30B9\u30C6\u30FC\u30BF\u30B9\u3092\u4E00\u89A7\u3059\u308B\uFF08\u65E2\u5B9A\u306F is_default\uFF09
168
179
  twp task status create \u30B9\u30C6\u30FC\u30BF\u30B9\u3092\u4F5C\u6210\u3059\u308B\uFF08--name \u5FC5\u9808\uFF09
169
180
  twp task status update <\u30B9\u30C6\u30FC\u30BF\u30B9>
@@ -1097,14 +1108,14 @@ TUI \u5185:
1097
1108
  \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
1098
1109
  `;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
1099
1110
  `);process.exit(1)}ignoreEpipe(process.stdout);ignoreEpipe(process.stderr);if(process.env["TWP_AUTO_UPDATE_WORKER"]==="1"){const{runAutoUpdateWorker}=await import("./auto-update-worker-VG77U4UA.js");await runAutoUpdateWorker().catch(()=>void 0);return}const[first,...rest]=process.argv.slice(2);if(first==="__complete"||first==="completion"){const completion=await import("./completion-RWWCIR6G.js");if(first==="completion"){process.exitCode=completion.runCompletion(rest,process.stdout,process.stderr);return}
1100
- const[{loadDomain},{loadUserConfig}]=await Promise.all([import("./registry-4QVXMTGW.js"),import("./config-3CNEQ7KN.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-YMI3F44R.js");autoUpdate2.registerRunning();autoUpdate2.onStartup(VERSION);const{runConfigure}=await import("./configure-QU6JK65I.js");process.exitCode=
1111
+ const[{loadDomain},{loadUserConfig}]=await Promise.all([import("./registry-DZH6EYRY.js"),import("./config-3CNEQ7KN.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-YMI3F44R.js");autoUpdate2.registerRunning();autoUpdate2.onStartup(VERSION);const{runConfigure}=await import("./configure-QU6JK65I.js");process.exitCode=
1101
1112
  await runConfigure(rest);return}const args=parseArgv(process.argv.slice(2));if(args.command==="version"){process.stdout.write(`${VERSION}
1102
1113
  `);return}if(args.command==="help"){process.stdout.write(HELP);return}if(args.unknown.length>0){process.stderr.write(`\u4E0D\u660E\u306A\u5F15\u6570: ${args.unknown.join(" ")}
1103
1114
 
1104
- ${HELP}`);process.exitCode=2;return}const autoUpdate=await import("./auto-update-YMI3F44R.js");autoUpdate.registerRunning();if(args.command==="task-loop"){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-KXZBNXJF.js");process.exitCode=await runDomain({domain:args.domain,...args.operation!==void 0?{operation:args.operation}:{},argv:args.domainArgv,help:args.
1105
- 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-NZ4GJ7BW.js");process.exitCode=await runApiCommand({argv:args.domainArgv,help:args.domainHelp,globals:{...args.profile!==void 0?{profile:args.profile}:{},...args.output!==
1106
- 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-NCAVUXSX.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-5VM6LUB5.js");
1107
- 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-CVSXWYGR.js");process.exitCode=await runTaskLoop(
1115
+ ${HELP}`);process.exitCode=2;return}const autoUpdate=await import("./auto-update-YMI3F44R.js");autoUpdate.registerRunning();if(args.command==="task-loop"){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-NR7KO6GU.js");process.exitCode=await runDomain({domain:args.domain,...args.operation!==void 0?{operation:args.operation}:{},argv:args.domainArgv,help:args.
1116
+ 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-YCIZ37HT.js");process.exitCode=await runApiCommand({argv:args.domainArgv,help:args.domainHelp,globals:{...args.profile!==void 0?{profile:args.profile}:{},...args.output!==
1117
+ 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-NCAVUXSX.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-L6ADDE5N.js");
1118
+ 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-RYRSKDXJ.js");process.exitCode=await runTaskLoop(
1108
1119
  {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,charterOp:args.charterOp,charterInput:args.charterFile,charterOutput:args.charterOut,charterRevision:args.charterRevision,
1109
- skillOp:args.skillOp,skillName:args.skillName,skillAll:args.skillAll,skillDir:args.skillDir,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-62DOJWOH.js");process.exitCode=await runOneShot({prompt:args.prompt??"",fromStdin:args.promptFromStdin,mode:args.mode??"dev",...args.permissionMode!==void 0?{permissionMode:args.permissionMode}:{},allowedTools:args.
1110
- allowedTools,disallowedTools:args.disallowedTools,...args.model!==void 0?{model:args.model}:{},...args.profile!==void 0?{profile:args.profile}:{},version:VERSION});return}const{startTui}=await import("./app-67TGWKPM.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();
1120
+ skillOp:args.skillOp,skillName:args.skillName,skillAll:args.skillAll,skillDir:args.skillDir,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-P75VON6Q.js");process.exitCode=await runOneShot({prompt:args.prompt??"",fromStdin:args.promptFromStdin,mode:args.mode??"dev",...args.permissionMode!==void 0?{permissionMode:args.permissionMode}:{},allowedTools:args.
1121
+ allowedTools,disallowedTools:args.disallowedTools,...args.model!==void 0?{model:args.model}:{},...args.profile!==void 0?{profile:args.profile}:{},version:VERSION});return}const{startTui}=await import("./app-EEHQ46DG.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();
@@ -50,12 +50,12 @@ ${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-ZQV2OPIO.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-7DAWGOM3.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-NMW6Y2E5.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(
57
57
  profile,stored?.api_url);const session=new AuthSession(profile.name,apiUrl);const client=new TwpApiClient(apiUrl,session,httpFetch,options.cliVersion);const me=await client.get("/api/v2/user");const user=me.user;const creds=loadCredentials(profile.name);if(format!==null){const value={id:user?.id??null,name:user?.name??null,email:user?.email??null,tenant_code:user?.tenant_code??null,role:user?.role??null,is_admin:user?.is_admin??null,profile:profile.name,api_url:apiUrl,expires_at:creds?.token_expires_at??
58
- null};const{evaluateQuery}=await import("./query-XEOVFI4D.js");const{renderOutput}=await import("./render-R5QZ46GF.js");const selected=options.query===void 0?value:await evaluateQuery(options.query,value);const text=renderOutput(selected,format);process.stdout.write(text.endsWith("\n")?text:`${text}
58
+ null};const{evaluateQuery}=await import("./query-XEOVFI4D.js");const{renderOutput}=await import("./render-HTS5OJGG.js");const selected=options.query===void 0?value:await evaluateQuery(options.query,value);const text=renderOutput(selected,format);process.stdout.write(text.endsWith("\n")?text:`${text}
59
59
  `);return}writeOut(`\u30E6\u30FC\u30B6\u30FC: ${user?.name??"?"}\uFF08${user?.email??"?"}\uFF09
60
60
  `);writeOut(`ID: ${user?.id??"?"}
61
61
  `);writeOut(`\u30C6\u30CA\u30F3\u30C8: ${user?.tenant_code??"?"}