@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.
- package/CHANGELOG.public.md +14 -0
- package/README.md +49 -2
- package/dist/{agent-LHNDQMT5.js → agent-QFI6UOVQ.js} +1 -1
- package/dist/{agent-loop-D35USHWR.js → agent-loop-KBQJP5E7.js} +1 -1
- package/dist/{analysis-RFO4E4ZS.js → analysis-MWPZKAUA.js} +1 -1
- package/dist/{announcement-HQ7CQYFI.js → announcement-4PDYMC6K.js} +1 -1
- package/dist/{api-command-NZ4GJ7BW.js → api-command-YCIZ37HT.js} +2 -2
- package/dist/{app-67TGWKPM.js → app-EEHQ46DG.js} +3 -3
- package/dist/{attendance-correct-CRRR4EKL.js → attendance-correct-CSAET72A.js} +1 -1
- package/dist/{attendance-lists-XPCU25OJ.js → attendance-lists-E6WHZPIH.js} +1 -1
- package/dist/{backlog-NU5HHXN2.js → backlog-YQKUID7L.js} +1 -1
- package/dist/{budget-YQHHSX7Q.js → budget-WKPD5GPG.js} +1 -1
- package/dist/{chunk-FEJDU42E.js → chunk-3LWQO2ZK.js} +1 -1
- package/dist/{chunk-NGY4K5VW.js → chunk-3UYVUEV4.js} +1 -1
- package/dist/{chunk-B6WIFZF2.js → chunk-5M7QCXPY.js} +1 -1
- package/dist/{chunk-AKLQMTMW.js → chunk-A56FFATZ.js} +1 -1
- package/dist/{chunk-52HYPBSW.js → chunk-A576CQJW.js} +6 -5
- package/dist/{chunk-6JB4MSDX.js → chunk-ASHN4KFF.js} +1 -1
- package/dist/{chunk-NQJV2X2R.js → chunk-B7GUZW6Z.js} +1 -1
- package/dist/{chunk-F53TSCRD.js → chunk-DDCERTPP.js} +1 -1
- package/dist/{chunk-7GJFKKOJ.js → chunk-DZWIABLW.js} +3 -3
- package/dist/chunk-FNKRVPMV.js +10 -0
- package/dist/{chunk-LXGYOKDY.js → chunk-GIUINGC7.js} +1 -1
- package/dist/chunk-H6DUSCEZ.js +3 -0
- package/dist/{chunk-74WGU5BM.js → chunk-HG7UEH3L.js} +1 -1
- package/dist/{chunk-XZU53BUV.js → chunk-HIJQJXRB.js} +2 -2
- package/dist/{chunk-E7TZU54Y.js → chunk-N33PUUKC.js} +1 -1
- package/dist/chunk-NXHJYRAM.js +50 -0
- package/dist/{chunk-2NP3BLPI.js → chunk-P7LUVC3J.js} +1 -1
- package/dist/{chunk-22OIKHMN.js → chunk-Q76QFEF3.js} +1 -1
- package/dist/{chunk-FACNRXN7.js → chunk-QGX7L6HN.js} +2 -2
- package/dist/{chunk-MKQDUQQ2.js → chunk-QL2YKREQ.js} +1 -1
- package/dist/{chunk-AUAZP2G7.js → chunk-UFGJSWKU.js} +5 -5
- package/dist/{chunk-S36LGDG2.js → chunk-X2P7N7WO.js} +59 -6
- package/dist/{chunk-DBCF4H3V.js → chunk-X6KRLHSG.js} +1 -1
- package/dist/cli.js +19 -8
- package/dist/{commands-5VM6LUB5.js → commands-L6ADDE5N.js} +2 -2
- package/dist/{commands-CVSXWYGR.js → commands-RYRSKDXJ.js} +106 -104
- package/dist/{company-BKULUHIU.js → company-RRWGDHKO.js} +2 -2
- package/dist/{contract-376FE7VC.js → contract-6CR57KCS.js} +2 -2
- package/dist/{department-YKBPBPU6.js → department-JF7KTFQX.js} +1 -1
- package/dist/{deposit-CY5K3ZTM.js → deposit-KXGMK66O.js} +1 -1
- package/dist/{estimate-GPNG6YOJ.js → estimate-ONS2KBM7.js} +3 -3
- package/dist/{evaluation-VRLMQV32.js → evaluation-GKSJ5ZHU.js} +1 -1
- package/dist/{expense-3MT6WHTG.js → expense-32QOHO6C.js} +1 -1
- package/dist/{inquiry-YV433Q7V.js → inquiry-PAPJCGKO.js} +1 -1
- package/dist/{invoice-OSAO4PIO.js → invoice-RJ7M2FY2.js} +2 -2
- package/dist/{job-title-FITZHBR4.js → job-title-B7VMIZ2H.js} +1 -1
- package/dist/{knowledge-YEEAKLQJ.js → knowledge-YPXOGA2U.js} +1 -1
- package/dist/{leave-MWYAL66X.js → leave-4AFSQ2IP.js} +1 -1
- package/dist/{logout-guard-ZQV2OPIO.js → logout-guard-7DAWGOM3.js} +1 -1
- package/dist/{media-ZIAI4GEB.js → media-HMYE2TR7.js} +2 -2
- package/dist/{notification-EAEKDN54.js → notification-CMWQ6JZQ.js} +1 -1
- package/dist/{oneshot-62DOJWOH.js → oneshot-P75VON6Q.js} +1 -1
- package/dist/{position-ZKYGVAAK.js → position-IKF3SR3O.js} +1 -1
- package/dist/project-WHVEIPH5.js +4 -0
- package/dist/{prospect-ASQA5QVD.js → prospect-STAA2UPR.js} +2 -2
- package/dist/{purchase-WLJJSMM6.js → purchase-VCAMBAW7.js} +3 -3
- package/dist/{receivable-FBPROHOV.js → receivable-6A2OVBZN.js} +1 -1
- package/dist/{registry-4QVXMTGW.js → registry-DZH6EYRY.js} +1 -1
- package/dist/{render-R5QZ46GF.js → render-HTS5OJGG.js} +1 -1
- package/dist/{report-HK2NZXHC.js → report-5WTMGPDN.js} +1 -1
- package/dist/{run-KXZBNXJF.js → run-NR7KO6GU.js} +1 -1
- package/dist/{sales-ai-review-IEISLBIH.js → sales-ai-review-7U2EBEYX.js} +1 -1
- package/dist/{sales-master-S3YTUE7J.js → sales-master-E2LDMJIC.js} +2 -2
- package/dist/{sales-numbering-M4KUZAM7.js → sales-numbering-E53EMSMI.js} +1 -1
- package/dist/{schedule-command-QCGEMBVR.js → schedule-command-ONHLWUW6.js} +2 -3
- package/dist/{server-settings-WYHQZV2N.js → server-settings-6NHVHMPS.js} +1 -1
- package/dist/{setup-G24BYLQV.js → setup-SIL2ELR4.js} +1 -1
- package/dist/{skill-45FBIGC5.js → skill-76QF44O3.js} +1 -1
- package/dist/{supplier-payment-MS6YMIT4.js → supplier-payment-HQQVWIQW.js} +2 -2
- package/dist/{support-VSDMFUTY.js → support-I2QTNQTP.js} +1 -1
- package/dist/{task-BTYFJRSC.js → task-RZBH4I6U.js} +51 -12
- package/dist/{user-VFJGLZDR.js → user-XTQNSWP4.js} +2 -2
- package/dist/{worker-agent-YX2KPVQG.js → worker-agent-PDAQVQKO.js} +1 -1
- package/dist/{workflow-OPZYCSDL.js → workflow-TRHRVMUK.js} +1 -1
- package/package.json +1 -1
- package/dist/chunk-EZGN7PTO.js +0 -48
- package/dist/chunk-JY4VWR5O.js +0 -10
- package/dist/chunk-MXKAEPXA.js +0 -3
- 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-
|
|
4
|
-
SALES_ROUNDING_SETTING_PATH,isExactNumericId}from"./chunk-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
4
|
-
resolveNamed}from"./chunk-
|
|
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-
|
|
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
|
|
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(
|
|
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()]:
|
|
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(
|
|
7
|
-
|
|
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-
|
|
4
|
-
readBody}from"./chunk-6LSQCOCJ.js";import{PROJECT_MEMBERS_LIMIT,resolveNamed}from"./chunk-
|
|
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
|
|
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",
|
|
89
|
-
|
|
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-
|
|
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.
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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??"?"}
|