@tocca-systems/twp-cli 0.58.1 → 0.60.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 +8 -0
- package/dist/{agent-loop-SMUDAYU5.js → agent-loop-DFTHXSGN.js} +1 -1
- package/dist/{ai-dispatch-37MUHKHU.js → ai-dispatch-M42S3SLX.js} +2 -2
- package/dist/{api-command-4OM5AR62.js → api-command-EK36OA7H.js} +1 -1
- package/dist/{app-EGPAWQKR.js → app-IBNHYZ6Q.js} +1 -1
- package/dist/chunk-27BLHO7A.js +17 -0
- package/dist/{chunk-4TKUCEK7.js → chunk-5543BC4H.js} +5 -5
- package/dist/{chunk-JTJWDV5U.js → chunk-AT432SCP.js} +4 -4
- package/dist/{chunk-BIQDCR7S.js → chunk-B4O5MGOV.js} +4 -4
- package/dist/{chunk-TVODNAPX.js → chunk-MPEHKAAL.js} +1 -1
- package/dist/{chunk-LUQ2KE6Y.js → chunk-OLASZWF5.js} +1 -1
- package/dist/{chunk-NXHJYRAM.js → chunk-S5DEP2HA.js} +1 -1
- package/dist/cli.js +7 -7
- package/dist/{commands-ZUGNJWRW.js → commands-5E6DNXCQ.js} +102 -90
- package/dist/{expense-FRSJQ43Y.js → expense-M6CDGLYD.js} +34 -19
- package/dist/{media-ENZ7H2RU.js → media-ZNQZTGNM.js} +1 -1
- package/dist/{registry-CNIB5RKQ.js → registry-4RF6EDQV.js} +1 -1
- package/dist/{run-WR3VZPDK.js → run-37FDHPZD.js} +1 -1
- package/dist/{schedule-command-ONHLWUW6.js → schedule-command-R5KTFAVZ.js} +1 -1
- package/dist/{server-settings-2PCTPCXO.js → server-settings-EINXR7SK.js} +1 -1
- package/dist/{server-skills-IXIOOOC2.js → server-skills-5CKBIIQ4.js} +1 -1
- package/dist/{task-Y4DRBFXE.js → task-XY3SVQJS.js} +1 -1
- package/package.json +1 -1
- package/dist/chunk-BQP25RLN.js +0 -17
|
@@ -6,9 +6,10 @@ _round_trips","total_one_ways","total_amount","updated_at"];var GET_COLUMNS=["id
|
|
|
6
6
|
var ADMIN_FORBIDDEN=body=>body?.error==="permission_denied"?LICENSE:"\u7D4C\u8CBB\u306E\u7BA1\u7406\u8005\u306E\u6A29\u9650\u304C\u5FC5\u8981\u3067\u3059\uFF08\u30C6\u30CA\u30F3\u30C8\u306E\u7BA1\u7406\u8005\u304B\u3001\u7D4C\u8CBB\u306E\u6A29\u9650\u304C\u300C\u7BA1\u7406\u8005\u300D\u306E\u4EBA\u3060\u3051\u304C\u4F7F\u3048\u307E\u3059\uFF09\u3002\u30C6\u30CA\u30F3\u30C8\u7BA1\u7406\u8005\u306B\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044";var MONTH_FLAG={name:"--month",summary:"\u5BFE\u8C61\u306E\u5E74\u6708\uFF08YYYY-\
|
|
7
7
|
MM\uFF09",takesValue:true,placeholder:"<YYYY-MM>"};var ID_FLAG={name:"--id",summary:"\u5BFE\u8C61\u306E\u901A\u52E4\u4EA4\u901A\u8CBB\u306E ID\uFF08\u4F4D\u7F6E\u5F15\u6570\u306E\u4EE3\u308F\u308A\u306B\u4F7F\u3048\u308B\uFF09",takesValue:true,placeholder:"<ID>"};var COMMENT_FLAG={name:"--comment",summary:`\u7533\u8ACB\u306E\u30B3\u30E1\u30F3\u30C8\uFF08${String(COMMENT_MAX)} \u6587\u5B57\u4EE5\u5185\uFF09`,takesValue:true,placeholder:"<\u30B3\u30E1\u30F3\u30C8>"};var OUT_FLAG={name:"--out",summary:"\
|
|
8
8
|
\u66F8\u304D\u51FA\u3057\u5148\u306E\u30D5\u30A1\u30A4\u30EB\u30D1\u30B9\uFF08\u5FC5\u9808\uFF09",takesValue:true,placeholder:"<\u30D1\u30B9>"};var FORCE_FLAG={name:"--force",summary:"\u65E2\u5B58\u306E\u30D5\u30A1\u30A4\u30EB\u3092\u4E0A\u66F8\u304D\u3059\u308B",takesValue:false};var CONTENT_FILE_FLAG={name:"--content-file",summary:"\u65E5\u3054\u3068\u306E\u533A\u5206\u3068\u30B3\u30E1\u30F3\u30C8\u306E JSON \u30D5\u30A1\u30A4\u30EB\uFF08- \u3067\u6A19\u6E96\u5165\u529B\uFF09",takesValue:true,
|
|
9
|
-
placeholder:"<\u30D1\u30B9>"};var SKELETON_FLAG={name:"--generate-cli-skeleton",summary:"--content-file \u306E\u3072\u306A\u5F62\u3092\u51FA\u3057\u3066\u7D42\u4E86\u3059\u308B\uFF08\u4FDD\u5B58\u3057\u306A\u3044\uFF09",takesValue:false};var
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
placeholder:"<\u30D1\u30B9>"};var SKELETON_FLAG={name:"--generate-cli-skeleton",summary:"--content-file \u306E\u3072\u306A\u5F62\u3092\u51FA\u3057\u3066\u7D42\u4E86\u3059\u308B\uFF08\u4FDD\u5B58\u3057\u306A\u3044\uFF09",takesValue:false};var FROM_ATTENDANCE_FLAG={name:"--from-attendance",summary:"\u65E5\u3054\u3068\u306E\u533A\u5206\u3092\u51FA\u52E4\u6253\u523B\u304B\u3089\u57CB\u3081\u308B\uFF08\u753B\u9762\u306E\u300C\u51FA\u52E4\u65E5\u304B\u3089\u53CD\u6620\u300D\u3068\u540C\u3058 API\uFF09",
|
|
10
|
+
takesValue:false};var ID_USAGE=op=>`twp expense commuting ${op} <ID> --yes`;var LIST_USAGE="twp expense commuting list [--limit <\u4EF6\u6570>] | list --all-users [--month <YYYY-MM>] [--status draft|pending|approved|rejected]";var GET_USAGE="twp expense commuting get (--month <YYYY-MM> | <ID>)";var SAVE_USAGE="twp expense commuting save --month <YYYY-MM> (--content-file <\u30D1\u30B9> | --from-attendance | --generate-cli-skeleton [--from-attendance])";var APPLY_USAGE="twp expense commuting apply\
|
|
11
|
+
<ID> [--workflow <\u7533\u8ACB\u66F8>] [--comment <\u30B3\u30E1\u30F3\u30C8>] --yes";var EXPORT_USAGE="twp expense commuting export --month <YYYY-MM> --out <\u30D1\u30B9.csv> [--force] [--include-hidden]";var OPAQUE_400="\u65AD\u3089\u308C\u305F\u7406\u7531\u306F\u30B5\u30FC\u30D0\u304C\u8FD4\u3055\u306A\u3044\u3053\u3068\u304C\u3042\u308A\u307E\u3059\uFF08\u672C\u756A\u3067\u306F\u300C\u30B5\u30FC\u30D0\u30FC\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u300D\u306B\u306A\u308A\u307E\u3059\uFF09\u3002\n \u305D\u306E\u3068\u304D\u306F twp expense commuting get <ID> \u3067\u72B6\u614B\uFF08status\uFF09\u3092\u78BA\u304B\u3081\u3066\u304F\u3060\u3055\u3044\u3002";
|
|
12
|
+
var CONTENT_HELP=`\u5185\u5BB9\uFF08--content-file\uFF09\u306F JSON \u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3067\u3001\u30AD\u30FC\u306F daily_entries \u3068 comment \u3060\u3051\u3067\u3059\u3002
|
|
12
13
|
daily_entries \u306F\u65E5\uFF08"01"\u301C\u6708\u672B\u3002"1" \u306E\u3088\u3046\u306B1\u6841\u3067\u3082\u53EF\uFF09\u2192 \u533A\u5206\uFF08round_trip\uFF1D\u5F80\u5FA9 / one_way\uFF1D\u7247\u9053 / "" \u304B null\uFF1D\u901A\u52E4\u306A\u3057\uFF09\u3002
|
|
13
14
|
\u66F8\u304B\u306A\u304B\u3063\u305F\u65E5\u306F\u300C\u901A\u52E4\u306A\u3057\u300D\u3067\u9001\u308A\u307E\u3059\uFF08\u753B\u9762\u306E\u4FDD\u5B58\u3068\u540C\u3058\u304F\u3001\u6708\u306E\u5168\u65E5\u3092\u9001\u308A\u307E\u3059\uFF09\u3002
|
|
14
15
|
comment \u306F ${String(COMMENT_MAX)} \u6587\u5B57\u4EE5\u5185\uFF08\u7701\u304F\u3068\u4ECA\u306E\u30B3\u30E1\u30F3\u30C8\u3092\u5909\u3048\u307E\u305B\u3093\uFF09\u3002`;function dataOf(body,what){if(!isRecord(body)||!("data"in body)){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["data"]}function rowsOf(body,what){const data=dataOf(
|
|
@@ -21,9 +22,12 @@ includes(key)).map(key=>`${key}\uFF08\u9001\u308C\u306A\u3044\u9805\u76EE\u3067\
|
|
|
21
22
|
test(key)?Number(key):0;const normalized=String(day).padStart(2,"0");if(!/^\d{1,2}$/.test(key)){problems.push(`daily_entries.${key}\uFF08\u65E5\u306F1\u301C2\u6841\u306E\u6570\u5B57\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002\u4F8B: "01" / "1"\uFF09`)}else if(day<1||day>lastDay){problems.push(`daily_entries.${key}\uFF08${month} \u306B\u7121\u3044\u65E5\u3067\u3059\u3002"01"\u301C"${String(lastDay)}" \u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF09`)}else if(seen.has(normalized)){
|
|
22
23
|
problems.push(`daily_entries.${key}\uFF08${normalized} \u65E5\u304C\u91CD\u8907\u3057\u3066\u3044\u307E\u3059\uFF09`)}else if(typeof value!=="string"||!ENTRY_VALUES.includes(value)){problems.push(`daily_entries.${key}\uFF08\u533A\u5206\u306F round_trip / one_way / "" \u306E\u3069\u308C\u304B\u3067\u3059\uFF09`)}else{seen.add(normalized);entries[normalized]=value}}const comment=parsed["comment"];if(comment!==void 0&&comment!==null&&typeof comment!=="string")problems.push("comment\uFF08\u6587\u5B57\u5217\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF09");
|
|
23
24
|
if(typeof comment==="string"&&[...comment].length>COMMENT_MAX)problems.push(`comment\uFF08${String(COMMENT_MAX)} \u6587\u5B57\u3092\u8D85\u3048\u3066\u3044\u307E\u3059\uFF09`);if(problems.length>0){throw new UsageError(`\u901A\u52E4\u4EA4\u901A\u8CBB\u306E\u5185\u5BB9\u306B\u9001\u308C\u306A\u3044\u5024\u304C\u3042\u308A\u307E\u3059\uFF08${source}\uFF09: ${problems.join(", ")}`,CONTENT_HELP)}return{daily_entries:entries,...typeof comment==="string"?{comment}:{}}}function countEntries(entries){const values=Object.
|
|
24
|
-
values(entries);return{roundTrips:values.filter(v=>v==="round_trip").length,oneWays:values.filter(v=>v==="one_way").length}}
|
|
25
|
-
const
|
|
26
|
-
|
|
25
|
+
values(entries);return{roundTrips:values.filter(v=>v==="round_trip").length,oneWays:values.filter(v=>v==="one_way").length}}function draftEntriesOf(body,month){const raw=isRecord(body)?body["daily_entries"]:void 0;if(!isRecord(raw)){throw new ApiResponseError("\u51FA\u52E4\u65E5\u304B\u3089\u306E\u4E0B\u66F8\u304D\u306E\u5FDC\u7B54\u306E\u5F62\u304C\u60F3\u5B9A\u3068\u9055\u3044\u307E\u3059\uFF08daily_entries \u304C\u3042\u308A\u307E\u305B\u3093\uFF09\u3002\u63A5\u7D9A\u5148\u304C\u53E4\u3044\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\u3002")}
|
|
26
|
+
const entries=emptyEntries(month);const problems=[];for(const[day,rawValue]of Object.entries(raw)){const value=rawValue===null?"":rawValue;if(!(day in entries))problems.push(`${day}\uFF08${month} \u306B\u7121\u3044\u65E5\uFF09`);else if(typeof value!=="string"||!ENTRY_VALUES.includes(value))problems.push(`${day}\uFF08\u77E5\u3089\u306A\u3044\u533A\u5206\uFF09`);else entries[day]=value}if(problems.length>0){throw new ApiResponseError(`\u51FA\u52E4\u65E5\u304B\u3089\u306E\u4E0B\u66F8\u304D\u306E\u5FDC\u7B54\u306B\u60F3\u5B9A\u5916\u306E\u5024\u304C\u3042\u308A\u307E\u3059: ${problems.
|
|
27
|
+
join(", ")}\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}return entries}function draftPlan(month){return{method:"GET",path:`${BASE}/${month}/draft-from-attendance`}}function currentEntriesOf(body){const data=dataOf(body,"\u901A\u52E4\u4EA4\u901A\u8CBB");return isRecord(data)&&isRecord(data["daily_entries"])?data["daily_entries"]:{}}function overwrittenDays(current,draft){return Object.entries(current).filter(([day,value])=>typeof value==="string"&&value!==
|
|
28
|
+
""&&(draft[day]??"")!==value).map(([day])=>day).sort()}var BOM=String.fromCharCode(65279);var FORMULA_START=/[=+\-@\t\r]/;var SIGNED_NUMBER=/^[+-]\d+(\.\d+)?([eE][+-]?\d+)?$/;function cellValueAt(body,start,quoted){let value="";for(let i=start;i<body.length;i+=1){const ch=body[i];if(quoted){if(ch==='"'){if(body[i+1]!=='"')break;i+=1}}else if(ch===","||ch==="\n"||ch==="\r"){break}value+=ch}return value}function needsGuard(body,start,quoted){const first=body[start];if(first===void 0||!FORMULA_START.
|
|
29
|
+
test(first))return false;if(first==="+"||first==="-")return!SIGNED_NUMBER.test(cellValueAt(body,start,quoted));return true}function neutralizeCsvFormulas(text){const hasBom=text.startsWith(BOM);const body=hasBom?text.slice(BOM.length):text;let out="";let atFieldStart=true;let quoted=false;for(let i=0;i<body.length;i+=1){const ch=body[i];if(quoted){if(ch==='"'){if(body[i+1]==='"'){out+='""';i+=1;continue}quoted=false}out+=ch;continue}if(atFieldStart){atFieldStart=false;if(ch==='"'){quoted=true;out+=
|
|
30
|
+
ch;const next=body[i+1];if(next!==void 0&&next!=='"'&&needsGuard(body,i+1,true))out+="'";continue}if(ch!=="\r"&&needsGuard(body,i,false))out+="'"}out+=ch;if(ch===","||ch==="\n")atFieldStart=true}return(hasBom?BOM:"")+out}function neutralizeCsvBytes(bytes){let text;try{text=new TextDecoder("utf-8",{fatal:true,ignoreBOM:true}).decode(bytes)}catch{throw new ApiResponseError("\u901A\u52E4\u4EA4\u901A\u8CBB\u306E CSV \u304C UTF-8 \u3068\u3057\u3066\u8AAD\u3081\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002")}
|
|
27
31
|
return new TextEncoder().encode(neutralizeCsvFormulas(text))}function listPlan(input){const status=input.flags.get("--status")?.trim();if(!input.flags.has("--all-users")){if(input.flags.has(MONTH_FLAG.name)||status!==void 0){throw new UsageError("--month \u3068 --status \u306F --all-users\uFF08\u30C6\u30CA\u30F3\u30C8\u5168\u54E1\u306E\u5206\uFF09\u3068\u4E00\u7DD2\u306B\u3060\u3051\u4F7F\u3048\u307E\u3059",LIST_USAGE)}const raw=input.flags.get("--limit");if(raw===void 0)return{method:"GET",path:BASE};
|
|
28
32
|
const limit=/^\d+$/.test(raw.trim())?Number(raw.trim()):0;if(limit<1||limit>LIST_LIMIT_MAX){throw new UsageError(`--limit \u306F 1\u301C${String(LIST_LIMIT_MAX)} \u306E\u6574\u6570\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u53D7\u3051\u53D6\u3063\u305F\u5024: ${raw}\uFF09`,LIST_USAGE)}return{method:"GET",path:BASE,query:{limit}}}if(input.flags.has("--limit"))throw new UsageError("--limit \u306F\u81EA\u5206\u306E\u5206\u306E\u4E00\u89A7\u3060\u3051\u3067\u4F7F\u3048\u307E\u3059\uFF08--all-users \u306F\u8A72\u5F53\u3092\u5168\u4EF6\u8FD4\u3057\u307E\u3059\uFF09",
|
|
29
33
|
LIST_USAGE);if(status!==void 0&&!STATUSES.includes(status)){throw new UsageError(`--status \u306F ${STATUSES.join(" / ")} \u306E\u3069\u308C\u304B\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u53D7\u3051\u53D6\u3063\u305F\u5024: ${status}\uFF09`,LIST_USAGE)}const month=monthFlag(input.flags);return{method:"GET",path:`${BASE}/admin/list`,query:{...month===void 0?{}:{year_month:month},...status===void 0?{}:{status}}}}var listOperation={name:"list",summary:"\u901A\u52E4\u4EA4\u901A\u8CBB\u306E\u4E00\u89A7\uFF08\u81EA\u5206\u306E\u5206\u30FB--all-users \
|
|
@@ -40,25 +44,36 @@ data))throw new ApiResponseError("\u6708\u306E\u52E4\u6020\u60C5\u5831\u306E\u5F
|
|
|
40
44
|
["label","source","state","note"])})}return rows}var attendanceOperation={name:"attendance",summary:"\u6708\u306E\u81EA\u5206\u306E\u52E4\u6020\u60C5\u5831\uFF08\u6709\u7D66\u30FB\u30EA\u30E2\u30FC\u30C8\u30FB\u52E4\u52D9\u5909\u66F4\uFF09\u3092\u65E5\u3054\u3068\u306B\u8868\u793A\u3059\u308B",usage:"twp expense commuting attendance --month <YYYY-MM>",description:"\u753B\u9762\u306E\u65E5\u5225\u901A\u52E4\u533A\u5206\u306B\u4F75\u8A18\u3055\u308C\u308B\u3001\u81EA\u5206\u306E\u52E4\u6020\u60C5\u5831\u3067\u3059\uFF08GET /api/v2/expense/commuting/{YYYY-MM}/attendance\uFF09\u3002\n\u6709\u7D66\uFF08source=paid_leave\uFF09\u30FB\u30EA\u30E2\u30FC\u30C8\uFF08remote\uFF09\u30FB\u52E4\u52D9\u5909\u66F4\uFF08work_change\uFF09\u304C\u3042\
|
|
41
45
|
\u308B\u65E5\u3060\u3051\u304C\u4E26\u3073\u307E\u3059\uFF08\u4F55\u3082\u7121\u3044\u65E5\u306F\u51FA\u307E\u305B\u3093\uFF09\u3002\nstate \u304C pending \u306E\u3082\u306E\u306F\u7533\u8ACB\u4E2D\u3067\u3059\u3002\u65E5\u3054\u3068\u306E\u533A\u5206\u3092\u6C7A\u3081\u308B\u6750\u6599\u3067\u3001\u3053\u306E\u64CD\u4F5C\u306F\u4F55\u3082\u4FDD\u5B58\u3057\u307E\u305B\u3093\u3002\n--output json \u306F\u65E5\u4ED8 \u2192 \u9805\u76EE\u306E\u914D\u5217\uFF08API \u306E data \u305D\u306E\u3082\u306E\uFF09\u3092\u51FA\u3057\u307E\u3059\u3002",
|
|
42
46
|
flags:[MONTH_FLAG],forbidden:USER_FORBIDDEN,plan:input=>({method:"GET",path:`${BASE}/${requiredMonth(input,"twp expense commuting attendance --month <YYYY-MM>")}/attendance`}),summarize:attendanceRows,raw:body=>dataOf(body,"\u6708\u306E\u52E4\u6020\u60C5\u5831"),notes:body=>attendanceRows(body).length===0?["\u3053\u306E\u6708\u306B\u306F\u6709\u7D66\u30FB\u30EA\u30E2\u30FC\u30C8\u30FB\u52E4\u52D9\u5909\u66F4\u304C\u3042\u308A\u307E\u305B\u3093\uFF08\u51FA\u52E4\u65E5\u306E\u4E00\u89A7\u3067\u306F\u306A\u3044\u306E\u3067\u3001\u901A\u5E38\u306E\u51FA\u52E4\u65E5\u306F\u51FA\u307E\u305B\u3093\uFF09"]:
|
|
43
|
-
[]};async function prepareSave(input){const month=requiredMonth(input,SAVE_USAGE);const wantsSkeleton=input.flags.has(SKELETON_FLAG.name);if(wantsSkeleton&&input.flags.has(CONTENT_FILE_FLAG.name)){throw new UsageError("--generate-cli-skeleton \u3068 --content-file \u306F\u540C\u6642\u306B\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093",SAVE_USAGE)}if(
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
return
|
|
47
|
-
|
|
47
|
+
[]};async function prepareSave(input){const month=requiredMonth(input,SAVE_USAGE);const wantsSkeleton=input.flags.has(SKELETON_FLAG.name);if(wantsSkeleton&&input.flags.has(CONTENT_FILE_FLAG.name)){throw new UsageError("--generate-cli-skeleton \u3068 --content-file \u306F\u540C\u6642\u306B\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093",SAVE_USAGE)}if(input.flags.has(FROM_ATTENDANCE_FLAG.name)&&input.flags.has(CONTENT_FILE_FLAG.name)){throw new UsageError("--from-attendance \u3068 --content-file \u306F\u540C\u6642\u306B\u6307\u5B9A\u3067\u304D\u307E\u305B\
|
|
48
|
+
\u3093",`\u51FA\u52E4\u65E5\u304B\u3089\u57CB\u3081\u305F\u3046\u3048\u3067\u624B\u76F4\u3057\u3059\u308B\u306A\u3089\u3001twp expense commuting save --month ${month} --generate-cli-skeleton --from-attendance \u3067\u3072\u306A\u5F62\u3092\u51FA\u3057\u3066\u304B\u3089 --content-file \u3067\u4FDD\u5B58\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}if(wantsSkeleton||input.flags.has(FROM_ATTENDANCE_FLAG.name))return input;const text=await readBody(input,{flag:"--content",fileFlag:CONTENT_FILE_FLAG.name,
|
|
49
|
+
label:"\u901A\u52E4\u4EA4\u901A\u8CBB\u306E\u5185\u5BB9",maxChars:CONTENT_MAX_CHARS,usage:SAVE_USAGE});if(text===void 0){throw new UsageError("\u901A\u52E4\u4EA4\u901A\u8CBB\u306E\u5185\u5BB9\u3092 --content-file <\u30D1\u30B9> \u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",`\u3072\u306A\u5F62\u306F twp expense commuting save --month ${month} --generate-cli-skeleton \u3067\u51FA\u305B\u307E\u3059\u3002`)}const content=parseCommutingContent(text,month,`${CONTENT_FILE_FLAG.name} ${input.flags.
|
|
50
|
+
get(CONTENT_FILE_FLAG.name)??""}`);return withResolved(input,{body:JSON.stringify({year_month:month,...content})})}var DRAFT_PLACEHOLDER="<GET draft-from-attendance \u306E daily_entries\uFF08\u6708\u306E\u5168\u65E5\uFF09>";function savePlan(input){const month=requiredMonth(input,SAVE_USAGE);if(input.flags.has(SKELETON_FLAG.name))return{method:"GET",path:`${BASE}/${month}`};if(input.flags.has(FROM_ATTENDANCE_FLAG.name))return{method:"POST",path:BASE,body:{year_month:month,daily_entries:DRAFT_PLACEHOLDER}};
|
|
51
|
+
return{method:"POST",path:BASE,body:JSON.parse(requireResolved(input,"body"))}}async function executeSave(input,ctx){const month=requiredMonth(input,SAVE_USAGE);const skeleton=input.flags.has(SKELETON_FLAG.name);if(!input.flags.has(FROM_ATTENDANCE_FLAG.name))return{skeleton,month,body:await ctx.send(savePlan(input))};const draft=draftEntriesOf(await ctx.send(draftPlan(month)),month);if(skeleton)return{skeleton,month,body:await ctx.send(savePlan(input)),draft};return{skeleton,month,body:await ctx.
|
|
52
|
+
send({method:"POST",path:BASE,body:{year_month:month,daily_entries:draft}}),draft}}async function previewSave(input,ctx){if(!input.flags.has(FROM_ATTENDANCE_FLAG.name)||input.flags.has(SKELETON_FLAG.name))return{notes:[],warnings:[]};const month=requiredMonth(input,SAVE_USAGE);const draft=draftEntriesOf(await ctx.send(draftPlan(month)),month);const changed=overwrittenDays(currentEntriesOf(await ctx.send({method:"GET",path:`${BASE}/${month}`})),draft);const notes=[`\u51FA\u52E4\u65E5\u304B\u3089\u5F80\u5FA9 ${String(
|
|
53
|
+
countEntries(draft).roundTrips)} \u65E5\u306B\u306A\u308A\u307E\u3059\uFF08\u6253\u523B\u306E\u7121\u3044\u65E5\u30FB\u30EA\u30E2\u30FC\u30C8\u30FB\u5168\u4F11\u306E\u6709\u7D66\u306E\u65E5\u306F\u901A\u52E4\u306A\u3057\uFF09`];if(changed.length===0)return{notes,warnings:[]};return{notes,warnings:[`${month} \u3067\u65E2\u306B\u9078\u3093\u3067\u3042\u308B\u533A\u5206\u304C ${String(changed.length)} \u65E5\u3076\u3093\u5909\u308F\u308A\u307E\u3059\uFF08${changed.join(", ")} \u65E5\uFF09\u3002\u7247\u9053\u306A\u3069\u306E\u624B\u76F4\u3057\u3082\u51FA\u52E4\u65E5\u304B\u3089\u306E\u4E0B\u66F8\u304D\u3067\
|
|
54
|
+
\u7F6E\u304D\u63DB\u308F\u308A\u307E\u3059`]}}function saveResult(value){if(!isRecord(value)||typeof value["skeleton"]!=="boolean"||typeof value["month"]!=="string"){throw new Error("\u5185\u90E8\u30A8\u30E9\u30FC: commuting save \u306E\u5FDC\u7B54\u306B\u5370\u304C\u3042\u308A\u307E\u305B\u3093\uFF08execute \u306E\u914D\u7DDA\u6F0F\u308C\uFF09")}return value}function skeletonOf(result){const data=dataOf(result.body,"\u901A\u52E4\u4EA4\u901A\u8CBB");const entries=emptyEntries(result.month);if(isRecord(
|
|
55
|
+
data)&&isRecord(data["daily_entries"])){for(const[day,value]of Object.entries(data["daily_entries"])){if(day in entries&&typeof value==="string")entries[day]=value}}if(result.draft!==void 0)Object.assign(entries,result.draft);return{daily_entries:entries,comment:isRecord(data)&&typeof data["comment"]==="string"?data["comment"]:""}}var saveOperation={name:"save",summary:"\u6708\u306E\u901A\u52E4\u4EA4\u901A\u8CBB\u3092\u4E0B\u66F8\u304D\u3068\u3057\u3066\u4FDD\u5B58\u3059\u308B\uFF08\u7121\u3051\u308C\u3070\u4F5C\u308A\u3001\u3042\u308C\u3070\u4E0A\u66F8\u304D\uFF09",
|
|
56
|
+
usage:SAVE_USAGE,description:`\u753B\u9762\u306E\u300C\u4FDD\u5B58\u300D\u3068\u540C\u3058\u304F POST /api/v2/expense/commuting \u3092\u9001\u308A\u307E\u3059\uFF08\u540C\u3058\u6708\u304C\u3042\u308C\u3070\u4E0A\u66F8\u304D\u30FB\u7121\u3051\u308C\u3070\u4F5C\u6210\uFF09\u3002
|
|
48
57
|
\u4E0A\u66F8\u304D\u3067\u304D\u308B\u306E\u306F\u4E0B\u66F8\u304D\uFF08draft\uFF09\u3068\u5DEE\u3057\u623B\u3057\uFF08rejected\uFF09\u3060\u3051\u3067\u3001\u5DEE\u3057\u623B\u3057\u306F\u4FDD\u5B58\u3059\u308B\u3068\u4E0B\u66F8\u304D\u306B\u623B\u308A\u307E\u3059\u3002
|
|
49
58
|
\u7533\u8ACB\u4E2D\u30FB\u627F\u8A8D\u6E08\u307F\u306E\u6708\u306F\u30B5\u30FC\u30D0\u304C\u65AD\u308A\u307E\u3059\uFF08\u7D42\u4E86\u30B3\u30FC\u30C9 3\uFF09\u3002\u7247\u9053\u306E\u91D1\u984D\u30FB\u7D4C\u8DEF\u306F\u5951\u7D04\u306E\u901A\u52E4\u60C5\u5831\u304B\u3089\u5165\u308A\u307E\u3059\u3002
|
|
50
59
|
${OPAQUE_400}
|
|
51
60
|
${CONTENT_HELP}
|
|
52
61
|
--generate-cli-skeleton \u306F\u4ECA\u306E\u6708\u306E\u5185\u5BB9\uFF08\u7121\u3051\u308C\u3070\u5168\u65E5\u304C\u7A7A\uFF09\u3092 --content-file \u306E\u5F62\u3067\u51FA\u3057\u307E\u3059\uFF08\u4F55\u3082\u4FDD\u5B58\u3057\u307E\u305B\u3093\uFF09\u3002
|
|
53
62
|
\u4F8B: twp expense commuting save --month 2026-10 --generate-cli-skeleton --output json > commuting.json
|
|
63
|
+
--from-attendance \u306F\u753B\u9762\u306E\u300C\u51FA\u52E4\u65E5\u304B\u3089\u53CD\u6620\u300D\u3068\u540C\u3058\u304F\u3001\u51FA\u52E4\u6253\u523B\u306E\u3042\u308B\u65E5\u3092\u5F80\u5FA9\u306B\u3057\u305F\u4E0B\u66F8\u304D\u3067\u6708\u306E\u5168\u65E5\u3092\u7F6E\u304D\u63DB\u3048\u3066\u4FDD\u5B58\u3057\u307E\u3059
|
|
64
|
+
\uFF08GET /api/v2/expense/commuting/{YYYY-MM}/draft-from-attendance\u3002\u30EA\u30E2\u30FC\u30C8\u30FB\u5168\u4F11\u306E\u6709\u7D66\u30FB\u6253\u523B\u306E\u7121\u3044\u65E5\u306F\u901A\u52E4\u306A\u3057\u3002\u30B3\u30E1\u30F3\u30C8\u306F\u5909\u3048\u307E\u305B\u3093\uFF09\u3002
|
|
65
|
+
\u65E2\u306B\u9078\u3093\u3067\u3042\u308B\u533A\u5206\u304C\u5909\u308F\u308B\u65E5\u304C\u3042\u308C\u3070 --yes \u304C\u8981\u308A\u307E\u3059\uFF08\u753B\u9762\u306E\u4E0A\u66F8\u304D\u78BA\u8A8D\u3068\u540C\u3058\uFF09\u3002--dry-run \u3067\u3082\u4E0B\u66F8\u304D\u3068\u4ECA\u306E\u6708\u306F\u8AAD\u307F\u307E\u3059\u3002
|
|
66
|
+
--generate-cli-skeleton \u3068\u4F75\u305B\u308B\u3068\u3001\u4E0B\u66F8\u304D\u3092\u57CB\u3081\u305F\u3072\u306A\u5F62\u3092\u51FA\u3057\u307E\u3059\uFF08\u7247\u9053\u306E\u65E5\u306A\u3069\u3092\u624B\u76F4\u3057\u3057\u3066\u304B\u3089 --content-file \u3067\u4FDD\u5B58\uFF09\u3002
|
|
54
67
|
\u65E5\u3054\u3068\u306E\u533A\u5206\u3092\u6C7A\u3081\u308B\u6750\u6599\u306F twp expense commuting attendance\uFF08\u6709\u7D66\u30FB\u30EA\u30E2\u30FC\u30C8\u30FB\u52E4\u52D9\u5909\u66F4\u306E\u65E5\uFF09\u3067\u3059\u3002
|
|
55
|
-
\u4FDD\u5B58\u3057\u305F\u3060\u3051\u3067\u306F\u7533\u8ACB\u3055\u308C\u307E\u305B\u3093\u3002\u7533\u8ACB\u306F twp expense commuting apply <ID>\u3002`,flags:[MONTH_FLAG,CONTENT_FILE_FLAG,SKELETON_FLAG],forbidden:USER_FORBIDDEN,prepare:prepareSave,plan:savePlan,plannedNotes
|
|
56
|
-
|
|
57
|
-
skeleton)
|
|
58
|
-
return[
|
|
59
|
-
`\
|
|
60
|
-
|
|
61
|
-
|
|
68
|
+
\u4FDD\u5B58\u3057\u305F\u3060\u3051\u3067\u306F\u7533\u8ACB\u3055\u308C\u307E\u305B\u3093\u3002\u7533\u8ACB\u306F twp expense commuting apply <ID>\u3002`,flags:[MONTH_FLAG,CONTENT_FILE_FLAG,FROM_ATTENDANCE_FLAG,SKELETON_FLAG],forbidden:USER_FORBIDDEN,prepare:prepareSave,plan:savePlan,plannedNotes(input){const fromAttendance=input.flags.has(FROM_ATTENDANCE_FLAG.name);if(input.flags.has(SKELETON_FLAG.name)){return[fromAttendance?"\u5B9F\u884C\u6642\u306F\u3001\u3053\u306E\u524D\u306B\u51FA\u52E4\u65E5\u304B\u3089\u306E\u4E0B\u66F8\u304D\uFF08GET \u2026/draft-from-attendance\uFF09\u3092\u8AAD\u307F\u307E\u3059\u3002\u3069\u3061\u3089\u3082\u8AAD\u3080\u3060\u3051\u3067\u3001\u4F55\u3082\u4FDD\u5B58\
|
|
69
|
+
\u3057\u307E\u305B\u3093":"\u4ECA\u306E\u6708\u306E\u5185\u5BB9\u3092\u8AAD\u3080\u3060\u3051\u3067\u3001\u4F55\u3082\u4FDD\u5B58\u3057\u307E\u305B\u3093"]}return fromAttendance?["\u5B9F\u884C\u6642\u306F\u3001\u3053\u306E\u524D\u306B\u51FA\u52E4\u65E5\u304B\u3089\u306E\u4E0B\u66F8\u304D\uFF08GET \u2026/draft-from-attendance\uFF09\u3092\u8AAD\u307F\u3001\u305D\u306E daily_entries \u3092\u9001\u308A\u307E\u3059"]:[]},preview:previewSave,execute:executeSave,summarize(value){const result=saveResult(
|
|
70
|
+
value);if(result.skeleton)return skeletonOf(result);return pick(recordOf(result.body,"\u901A\u52E4\u4EA4\u901A\u8CBB\u306E\u4FDD\u5B58"),GET_COLUMNS)},raw(value){const result=saveResult(value);return result.skeleton?skeletonOf(result):recordOf(result.body,"\u901A\u52E4\u4EA4\u901A\u8CBB\u306E\u4FDD\u5B58")},notes(value){const result=saveResult(value);if(result.skeleton){const{roundTrips,oneWays}=countEntries(skeletonOf(result)["daily_entries"]);const head=result.draft===void 0?`${result.month} \u306E\
|
|
71
|
+
\u3072\u306A\u5F62\u3067\u3059`:`${result.month} \u306E\u51FA\u52E4\u65E5\u304B\u3089\u57CB\u3081\u305F\u3072\u306A\u5F62\u3067\u3059`;return[`${head}\uFF08\u5F80\u5FA9 ${String(roundTrips)} \u65E5\u30FB\u7247\u9053 ${String(oneWays)} \u65E5\uFF09\u3002daily_entries \u3092\u57CB\u3081\u3066\u304B\u3089 twp expense commuting save --month ${result.month} --content-file <\u30D1\u30B9> \u3067\u4FDD\u5B58\u3057\u3066\u304F\u3060\u3055\u3044`]}const saved=recordOf(result.body,"\u901A\u52E4\u4EA4\u901A\u8CBB\u306E\u4FDD\u5B58");
|
|
72
|
+
const drafted=result.draft===void 0?[]:[`\u51FA\u52E4\u65E5\u304B\u3089\u5F80\u5FA9 ${String(countEntries(result.draft).roundTrips)} \u65E5\u3067\u4FDD\u5B58\u3057\u307E\u3057\u305F`];return[...serverMessage(result.body),...drafted,`\u7533\u8ACB\u306F twp expense commuting apply ${String(saved["id"])} --yes`]}};async function commutingWorkflowId(input,ctx){const ref=input.flags.get("--workflow")?.trim();if(ref!==void 0&&ref!==""){return UUID_RE.test(ref)?ref:(await ctx.resolver.workflow(ref,"--w\
|
|
73
|
+
orkflow",WORKFLOW_CATEGORY)).id}const candidates=await ctx.resolver.applicableWorkflows(WORKFLOW_CATEGORY);if(candidates.length===1)return candidates[0].id;if(candidates.length===0){throw new UsageError(`\u7533\u8ACB\u3067\u304D\u308B\u901A\u52E4\u4EA4\u901A\u8CBB\u306E\u7533\u8ACB\u66F8\u304C\u3042\u308A\u307E\u305B\u3093\uFF08twp workflow applicable --category ${WORKFLOW_CATEGORY} \u304C0\u4EF6\uFF09`,"\u30C6\u30CA\u30F3\u30C8\u306E\u7BA1\u7406\u8005\u306B\u3001\u901A\u52E4\u4EA4\u901A\u8CBB\u306E\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u306E\u8A2D\u5B9A\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002")}
|
|
74
|
+
throw new UsageError(`\u901A\u52E4\u4EA4\u901A\u8CBB\u306E\u7533\u8ACB\u66F8\u304C ${String(candidates.length)} \u4EF6\u3042\u308A\u307E\u3059\u3002--workflow \u3067\u540D\u524D\u304B ID \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044: ${candidates.map(row=>`${row.name}\uFF08${row.id}\uFF09`).join(" / ")}`,APPLY_USAGE)}async function prepareApply(input,ctx){const id=targetId(input,APPLY_USAGE);const comment=input.flags.get(COMMENT_FLAG.name);if(comment!==void 0&&[...comment].length>COMMENT_MAX){
|
|
75
|
+
throw new UsageError(`--comment \u306F ${String(COMMENT_MAX)} \u6587\u5B57\u4EE5\u5185\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044`,APPLY_USAGE)}return withResolved(input,{id,workflowId:await commutingWorkflowId(input,ctx)})}var applyOperation={name:"apply",summary:"\u4FDD\u5B58\u3057\u305F\u901A\u52E4\u4EA4\u901A\u8CBB\u3092\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u3067\u7533\u8ACB\u3059\u308B\uFF08--yes \u304C\u8981\u308B\uFF09",usage:APPLY_USAGE,description:`POST /api/v2/expense/commuti\
|
|
76
|
+
ng/{id}/apply \u3092\u9001\u308A\u307E\u3059\u3002\u7533\u8ACB\u3059\u308B\u3068\u627F\u8A8D\u8005\u3078\u901A\u77E5\u304C\u5C4A\u304D\u3001\u53D6\u308A\u6D88\u3059\u307E\u3067\u7DE8\u96C6\u3067\u304D\u307E\u305B\u3093\u3002
|
|
62
77
|
\u7533\u8ACB\u3059\u308B\u306E\u306F\u4FDD\u5B58\u6E08\u307F\u306E\u5185\u5BB9\u3067\u3059\uFF08\u5148\u306B twp expense commuting save \u3067\u4FDD\u5B58\u3057\u3066\u304F\u3060\u3055\u3044\uFF09\u3002\u4E0B\u66F8\u304D\u30FB\u5DEE\u3057\u623B\u3057\u3060\u3051\u304C\u7533\u8ACB\u3067\u304D\u307E\u3059\u3002
|
|
63
78
|
--workflow \u3092\u7701\u304F\u3068\u3001\u7533\u8ACB\u3067\u304D\u308B\u901A\u52E4\u4EA4\u901A\u8CBB\u306E\u7533\u8ACB\u66F8\u304C1\u3064\u3060\u3051\u306E\u3068\u304D\u305D\u308C\u3092\u4F7F\u3044\u307E\u3059\u3002\u8907\u6570\u3042\u308C\u3070 --workflow \u3067\u9078\u3093\u3067\u304F\u3060\u3055\u3044
|
|
64
79
|
\uFF08\u5019\u88DC\u306F twp workflow applicable --category ${WORKFLOW_CATEGORY}\uFF09\u3002
|
|
@@ -72,4 +87,4 @@ confirmation:"\u53D6\u308A\u6D88\u305B\u306A\u3044\u524A\u9664",method:"DELETE",
|
|
|
72
87
|
\u5217\u306B\u627F\u8A8D\u6E08\u307F\u306E\u533A\u5206\uFF08\u5F80\u5FA9\u30FB\u7247\u9053\uFF09\u304C\u5165\u308A\u307E\u3059\u3002\n\u627F\u8A8D\u6E08\u307F\u3067\u306A\u3044\u4EBA\u3082\u884C\u306F\u51FA\u307E\u3059\uFF08\u65E5\u5225\u306F\u7A7A\uFF09\u3002--include-hidden \u3067\u975E\u8868\u793A\u306E\u30E6\u30FC\u30B6\u30FC\u3082\u542B\u3081\u307E\u3059\u3002\n= + - @ \u3067\u59CB\u307E\u308B\u30BB\u30EB\uFF08+ - \u306F\u6570\u5024\u3092\u9664\u304F\uFF09\u306E\u5148\u982D\u306B ' \u3092\u4ED8\u3051\u3066\u3001\u8868\u8A08\u7B97\u30BD\u30D5\u30C8\u304C\u5F0F\u3068\u3057\u3066\u8AAD\u307E\u306A\u3044\u3088\u3046\u306B\u3057\u307E\u3059\uFF08twp user export \u3068\u540C\u3058\u3002\n \u30B5\u30FC\u30D0\u3082\u540C\u3058\u7121\u5BB3\u5316\u3092\u3057\u3066\u3044\u308B\u306E\u3067\u3001\u65E2\u306B ' \u4ED8\u304D\u306E\u30BB\u30EB\u306B\u306F\u91CD\u306D\u307E\u305B\u3093\uFF09\u3002\n\u65E2\u5B58\u306E\u30D5\u30A1\u30A4\u30EB\u306F\u4E0A\u66F8\u304D\u3057\u307E\u305B\u3093\uFF08\u4E0A\u66F8\u304D\u3059\u308B\u306A\u3089 --force\uFF09\u3002",
|
|
73
88
|
flags:[MONTH_FLAG,OUT_FLAG,FORCE_FLAG,{name:"--include-hidden",summary:"\u975E\u8868\u793A\u306E\u30E6\u30FC\u30B6\u30FC\u3082\u542B\u3081\u308B",takesValue:false}],download:{outFlag:OUT_FLAG.name,forceFlag:FORCE_FLAG.name,transform:neutralizeCsvBytes},forbidden:ADMIN_FORBIDDEN,plan:input=>({method:"GET",path:`${BASE}/admin/export`,query:{year_month:requiredMonth(input,EXPORT_USAGE),...input.flags.has("--include-hidden")?{include_hidden:"1"}:{}}}),summarize:body=>body,raw:body=>body};var commutingResource={
|
|
74
89
|
name:"commuting",summary:"\u901A\u52E4\u4EA4\u901A\u8CBB\uFF08\u6708\u3054\u3068\u306E\u65E5\u5225\u533A\u5206\u306E\u4FDD\u5B58\u30FB\u7533\u8ACB\u30FB\u53D6\u6D88\u30FB\u524A\u9664\u3068\u3001\u7BA1\u7406\u8005\u306E\u4E00\u89A7\u30FBCSV\uFF09",operations:[listOperation,getOperation,attendanceOperation,saveOperation,applyOperation,cancelOperation,deleteOperation,exportOperation]};var expenseDomain={name:"expense",summary:"\u7D4C\u8CBB\uFF08\u901A\u52E4\u4EA4\u901A\u8CBB\uFF09",operations:[],subresources:[
|
|
75
|
-
commutingResource]};export{expenseDomain,neutralizeCsvFormulas,parseCommutingContent};
|
|
90
|
+
commutingResource]};export{draftEntriesOf,expenseDomain,neutralizeCsvFormulas,overwrittenDays,parseCommutingContent};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{parseWaitOptions,waitUntilTerminal}from"./chunk-WVCEKC7V.js";import{checkOutTarget}from"./chunk-
|
|
3
|
+
import{parseWaitOptions,waitUntilTerminal}from"./chunk-WVCEKC7V.js";import{checkOutTarget}from"./chunk-5543BC4H.js";import"./chunk-B4O5MGOV.js";import"./chunk-GFLGXGWE.js";import"./chunk-YXVN6OCH.js";import"./chunk-UFGJSWKU.js";import"./chunk-Q3B65OFC.js";import{contentTypeFor,inspectLocalFile}from"./chunk-I4TR55UF.js";import{checkUploadQuota}from"./chunk-V64CGX7V.js";import"./chunk-GY7KI5E5.js";import{repeatedValues}from"./chunk-RX5HWI4L.js";
|
|
4
4
|
import{LIST_FLAGS,LIST_PAGING_HELP,envelopePaging,nonEmpty,positiveInteger,readEnvelopeCursor,shellQuote}from"./chunk-MI6HVYR2.js";import{readBody}from"./chunk-6LSQCOCJ.js";import"./chunk-VELLV6DJ.js";import{collapsesInUrlPath,isSafePathSegment}from"./chunk-HVZUXLQ4.js";import{ApiError}from"./chunk-JA5A6UJ2.js";import"./chunk-QBGEYQ2I.js";import{requireResolved,singleRef,withResolved}from"./chunk-PS5QFKHB.js";import"./chunk-II5RVJQN.js";import{acknowledgement,
|
|
5
5
|
isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiRejectedError,ApiResponseError,NetworkError,UsageError,WaitTimeoutError}from"./chunk-VFPY2A23.js";import"./chunk-YLM54X35.js";import"./chunk-XNLIEUAW.js";import"./chunk-J7QYPKVK.js";import"./chunk-4VZKNEVN.js";import"./chunk-RZVI6PMW.js";import"./chunk-QZBE4KC2.js";import"./chunk-QQRJLH6B.js";import"./chunk-74BPZOKU.js";import"./chunk-UREA4ZIG.js";import"./chunk-NHYMHCAT.js";
|
|
6
6
|
import"./chunk-VSJBJXZO.js";import crypto2 from"crypto";import fs2 from"fs";import path from"path";var SCOPE_PERSONAL="personal";var SCOPE_PROJECT="project";var UUID=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;var FORBIDDEN_NAME=/[/\\:*?"<>|]/;var NAME_MAX=255;var ROW_COLUMNS=["id","path","name","file_count","subfolder_count","parent_id","updated_at"];var TRASH_COLUMNS=["id","path","name","file_count","subfolder_count","parent_id","deleted_at"];function folderRows(raw){return raw.map(row=>{const id=row["id"];const name=row["name"];const parentId=row["parent_id"];if(typeof id!==
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{loadDomain}from"./chunk-
|
|
3
|
+
import{loadDomain}from"./chunk-B4O5MGOV.js";import"./chunk-VSJBJXZO.js";export{loadDomain};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{CURATED_PAGING_VOCABULARY,buildPrepareContext,checkOutTarget,exitCodeFor,fetchAllPages,outputValue,reportError,requiresYes,resolvePaging,runDomain}from"./chunk-
|
|
3
|
+
import{CURATED_PAGING_VOCABULARY,buildPrepareContext,checkOutTarget,exitCodeFor,fetchAllPages,outputValue,reportError,requiresYes,resolvePaging,runDomain}from"./chunk-5543BC4H.js";import"./chunk-B4O5MGOV.js";import"./chunk-GFLGXGWE.js";import"./chunk-YXVN6OCH.js";import"./chunk-UFGJSWKU.js";import"./chunk-Q3B65OFC.js";import"./chunk-RX5HWI4L.js";import"./chunk-MI6HVYR2.js";import"./chunk-VELLV6DJ.js";import"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";
|
|
4
4
|
import"./chunk-QBGEYQ2I.js";import"./chunk-II5RVJQN.js";import"./chunk-3ZRMMBP5.js";import"./chunk-VFPY2A23.js";import"./chunk-YLM54X35.js";import"./chunk-XNLIEUAW.js";import"./chunk-J7QYPKVK.js";import"./chunk-4VZKNEVN.js";import"./chunk-RZVI6PMW.js";import"./chunk-QZBE4KC2.js";import"./chunk-QQRJLH6B.js";import"./chunk-74BPZOKU.js";import"./chunk-UREA4ZIG.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";export{CURATED_PAGING_VOCABULARY,buildPrepareContext,checkOutTarget,exitCodeFor,fetchAllPages,outputValue,reportError,requiresYes,resolvePaging,runDomain};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{ScheduleApi,collectDue,gateStatus,nowInZone,parseCounts,parseTs}from"./chunk-
|
|
3
|
+
import{ScheduleApi,collectDue,gateStatus,nowInZone,parseCounts,parseTs}from"./chunk-S5DEP2HA.js";import"./chunk-AT432SCP.js";import"./chunk-GY7KI5E5.js";import"./chunk-J7QYPKVK.js";import{stripTerminalControls}from"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";async function runScheduleCommand(deps,opts){const out=deps.out??(t=>void process.stdout.write(stripTerminalControls(t)));const err=deps.err??(t=>void process.stderr.write(stripTerminalControls(t)));const schedules=new ScheduleApi(deps.api);let now;if(opts.now){const parsed=parseTs(opts.now);if(!parsed){err(`--now \u306E\u5F62\u5F0F\u304C\u4E0D\u6B63\u3067\u3059: ${opts.now}\uFF08\u4F8B 2026-08-18T15:30\uFF09
|
|
4
4
|
`);return 2}now=parsed}else{now=nowInZone(deps.config.scheduleTimezone,m=>err(`${m}
|
|
5
5
|
`))}const defs=await schedules.definitions();if(defs.kind==="error"){err(`\u26D4 ${defs.message}
|
|
6
6
|
`);if(opts.gate!==void 0){err("\u5B9A\u7FA9\u304C\u53D6\u308C\u306A\u3044\u305F\u3081\u30B2\u30FC\u30C8\u306F\u8A31\u53EF\u6271\u3044\u306B\u3057\u307E\u3059\n");return 0}return 4}if(opts.gate!==void 0){const{allowed,reason}=gateStatus(opts.gate,now,defs.config.gates);if(allowed)return 0;out(`${reason}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{LoopSettingsApplier,PROMPT_KEYS,formatConfigHash,parseServerSettings,renderStepBudget}from"./chunk-
|
|
3
|
+
import{LoopSettingsApplier,PROMPT_KEYS,formatConfigHash,parseServerSettings,renderStepBudget}from"./chunk-27BLHO7A.js";import"./chunk-HAA3YDV2.js";import"./chunk-AEJHDFXB.js";import"./chunk-N2UVRM3Z.js";import"./chunk-AT432SCP.js";import"./chunk-GY7KI5E5.js";import"./chunk-PMOUHEJQ.js";import"./chunk-J7QYPKVK.js";import"./chunk-5WGOHFAS.js";import"./chunk-RZVI6PMW.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";export{LoopSettingsApplier,PROMPT_KEYS,formatConfigHash,parseServerSettings,renderStepBudget};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{ServerSkillCatalog,expandServerSkills,formatSkillOrigins,parseSkillBody,parseSkillList,prepareSkillOverlay,referencedSkills,stripFrontmatter}from"./chunk-
|
|
3
|
+
import{ServerSkillCatalog,expandServerSkills,formatSkillOrigins,parseSkillBody,parseSkillList,prepareSkillOverlay,referencedSkills,stripFrontmatter}from"./chunk-MPEHKAAL.js";import"./chunk-YJZT3UD3.js";import"./chunk-A4LFG7MW.js";import"./chunk-VRBI2NPI.js";import"./chunk-AT432SCP.js";import"./chunk-GY7KI5E5.js";import"./chunk-VFPY2A23.js";import"./chunk-J7QYPKVK.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";export{ServerSkillCatalog,expandServerSkills,formatSkillOrigins,parseSkillBody,parseSkillList,prepareSkillOverlay,referencedSkills,stripFrontmatter};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{PROJECT_FLAG,TASK_REF_FLAG,TASK_REF_HELP,classifyTaskRef,rejectPrivateSurface,rejectRedundantProject,resolveTaskLocation,taskAttachmentResource,taskSurface,wantsPrivateSurface}from"./chunk-I4TR55UF.js";import"./chunk-V64CGX7V.js";import{createFlags,fieldBody,hasAnyField,updateFlags}from"./chunk-TRNS45SB.js";import{RUNNER_PLATFORMS}from"./chunk-
|
|
3
|
+
import{PROJECT_FLAG,TASK_REF_FLAG,TASK_REF_HELP,classifyTaskRef,rejectPrivateSurface,rejectRedundantProject,resolveTaskLocation,taskAttachmentResource,taskSurface,wantsPrivateSurface}from"./chunk-I4TR55UF.js";import"./chunk-V64CGX7V.js";import{createFlags,fieldBody,hasAnyField,updateFlags}from"./chunk-TRNS45SB.js";import{RUNNER_PLATFORMS}from"./chunk-AT432SCP.js";import{PRIVATE_PROJECT_REF}from"./chunk-GY7KI5E5.js";import{boundedText,decimal,integerInRange,isoDate,priority}from"./chunk-JJSBBWJ5.js";
|
|
4
4
|
import{MANHOUR_DESCRIPTION,MANHOUR_FROM_FLAG,MANHOUR_TO_FLAG,manhourNotes,manhourQuery,manhourRows}from"./chunk-O7XM54CL.js";import{repeatedValues}from"./chunk-RX5HWI4L.js";import{LIST_FLAGS,LIST_PAGING_HELP,envelopePaging,nonEmpty,positiveInteger}from"./chunk-MI6HVYR2.js";import"./chunk-BVREBTDJ.js";import"./chunk-EXT4AIDF.js";import{charCount,readBody}from"./chunk-6LSQCOCJ.js";import{PRIVATE_TASKS_PATH,TASK_MASTERS}from"./chunk-VELLV6DJ.js";import{UUID_RE,
|
|
5
5
|
isSafePathSegment}from"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";import"./chunk-QBGEYQ2I.js";import{requireResolved,singleRef,withResolved}from"./chunk-PS5QFKHB.js";import"./chunk-II5RVJQN.js";import{acknowledgement,isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";import"./chunk-J7QYPKVK.js";import"./chunk-4VZKNEVN.js";import"./chunk-RZVI6PMW.js";import"./chunk-QQRJLH6B.js";
|
|
6
6
|
import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var LIST_COLUMNS=["id","created_at","created_by_name","comment_type","content"];var QUESTION_COLUMN="question";var ANSWER_COLUMN="answer";function summarizeComments(items){const answersByQuestion=new Map;for(const row of items){const answer=isRecord(row)?row["answer_to"]:void 0;if(!isRecord(answer))continue;const target=answer["comment_id"];if(typeof target!=="string"||target==="")continue;answersByQuestion.set(target,selectedKeyText(answer["selected_key"]))}return items.map(row=>{const source=isRecord(
|
package/package.json
CHANGED
package/dist/chunk-BQP25RLN.js
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
|
-
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{DEFAULT_INTERVAL_SEC}from"./chunk-HAA3YDV2.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
|
-
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
|
-
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
|
-
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");
|
|
7
|
-
this.lastWarning=warning;const settings=outcome.settings;config.serverPrompts=settings?.prompts??{};const safeNote=config.serverPrompts.safe_mode_note;const safeWarning=config.safeMode&&safeNote!==void 0?safeNote===""?"\u5B89\u5168\u30E2\u30FC\u30C9\u3067\u8D77\u52D5\u3057\u3066\u3044\u307E\u3059\u304C\u3001\u30B5\u30FC\u30D0\u306E\u30EB\u30FC\u30D7\u8A2D\u5B9A\u304C\u5B89\u5168\u30E2\u30FC\u30C9\u306E\u6CE8\u8A18\u3092\u7A7A\u306B\u3057\u3066\u3044\u307E\u3059\uFF08\u672C\u756A\u30EA\u30EA\u30FC\u30B9\u7981\u6B62\u306E\u6307\u793A\u304C\u30D7\u30ED\u30F3\u30D7\u30C8\u306B\u8F09\u308A\u307E\u305B\u3093\uFF09":
|
|
8
|
-
"\u5B89\u5168\u30E2\u30FC\u30C9\u3067\u8D77\u52D5\u3057\u3066\u3044\u307E\u3059\u3002\u5B89\u5168\u30E2\u30FC\u30C9\u306E\u6CE8\u8A18\u306F\u30B5\u30FC\u30D0\u306E\u30EB\u30FC\u30D7\u8A2D\u5B9A\u306E\u6587\u9762\u306B\u5DEE\u3057\u66FF\u308F\u3063\u3066\u3044\u307E\u3059":"";if(safeWarning!==""&&safeWarning!==this.lastSafeWarning)log(` \u26A0\uFE0F ${safeWarning}`);this.lastSafeWarning=safeWarning;const serverAi=settings!==null&&Object.keys(settings.ai).length>0?settings.ai:null;const layer=serverAi??
|
|
9
|
-
(this.serverAiApplied?{}:null);const r=reloadAiConfig(config.ai,config.aiSource.inline,config.aiSource.file,config.workspace,layer);if(r.status!=="kept"||layer!==null)this.serverAiApplied=serverAi!==null;const aiWarning=r.warnings.join("\n");if(aiWarning!==""&&aiWarning!==this.lastAiWarning){for(const w of r.warnings)log(` \u26A0\uFE0F ${w}`)}else if(aiWarning===""&&this.lastAiWarning!==""&&r.status!=="skipped"){log("AI \u5272\u5F53\u30D5\u30A1\u30A4\u30EB\u3092\u518D\u3073\u8AAD\u3081\u308B\u3088\u3046\u306B\u306A\u308A\u307E\u3057\u305F")}
|
|
10
|
-
this.lastAiWarning=aiWarning;if(r.status==="updated"){log(r.hashBefore===r.hashAfter?`AI \u5272\u5F53\u306E\u5909\u66F4\u3092\u53CD\u6620\u3057\u307E\u3057\u305F\uFF08AI\u5272\u5F53\u30CF\u30C3\u30B7\u30E5 ${r.hashAfter} \u306F\u4E0D\u5909\uFF1D\u9396\u304B\u30B3\u30E1\u30F3\u30C8\u3060\u3051\u306E\u5909\u66F4\uFF09`:`AI \u5272\u5F53\u306E\u5909\u66F4\u3092\u53CD\u6620\u3057\u307E\u3057\u305F\uFF08AI\u5272\u5F53\u30CF\u30C3\u30B7\u30E5 ${r.hashBefore} \u2192 ${r.hashAfter}\uFF09`)}const fromServer=outcome.
|
|
11
|
-
source==="cached"?"cached":"server";this.applyInterval(settings,fromServer);const inline=config.aiSource.inline;const effectiveServerKeys=serverAi===null?[]:Object.keys(serverAi).filter(k=>!(CHAIN_KEYS.includes(k)&&inline!==void 0&&k in inline));const aiOrigin=effectiveServerKeys.length>0?fromServer:inline!==void 0&&Object.keys(inline).length>0||config.ai.fileLayer!==null?"local":"builtin";const charterOrigin=this.charterOrigin(settings,fromServer);const revision=settings?.revision??0;config.configHash=
|
|
12
|
-
formatConfigHash(config.ai.hash(),revision,aiOrigin,charterOrigin);const serverPromptKeys=Object.keys(config.serverPrompts);const summary=`\u30EB\u30FC\u30D7\u8A2D\u5B9A: ${settings===null?"\u30B5\u30FC\u30D0\u5024\u306A\u3057":`${outcome.source==="cached"?"\u76F4\u524D\u306B\u53D6\u5F97\u3057\u305F\u30B5\u30FC\u30D0\u5024":"\u30B5\u30FC\u30D0"} revision ${revision}`}\uFF08AI\u5272\u5F53=${aiOrigin}${effectiveServerKeys.length>0?`\u30FB\u30B5\u30FC\u30D0 ${effectiveServerKeys.length}\u30AD\u30FC`:
|
|
13
|
-
""} \uFF0F \u61B2\u7AE0=${charterOrigin} \uFF0F \u30B5\u30FC\u30D0\u306E\u6587\u9762=${serverPromptKeys.length>0?serverPromptKeys.join(","):"\u306A\u3057"}\uFF09`;if(summary!==this.lastSummary)log(summary);this.lastSummary=summary}applyInterval(settings,fromServer){const{config,log}=this.deps;if(config.intervalSource==="cli")return;const serverSec=settings?.intervalSec??null;const source=serverSec!==null?fromServer:"default";config.intervalSec=serverSec??DEFAULT_INTERVAL_SEC;config.intervalSource=
|
|
14
|
-
source;const line=`INTERVAL: ${config.intervalSec}s\uFF08\u53D6\u5F97\u5143: ${source}\uFF09`;if(line!==this.lastInterval)log(` ${line}`);this.lastInterval=line}charterOrigin(settings,fromServer){const{config}=this.deps;if(!config.charterEnabled)return"off";if(settings!==null&&settings.prompts.charter!==void 0)return fromServer;const file=config.charterFile;if(file===null||file.trim()==="")return"builtin";const resolved=path.isAbsolute(file)?file:path.resolve(config.workspace,file);try{fs.accessSync(
|
|
15
|
-
resolved,fs.constants.R_OK);return fs.statSync(resolved).isFile()?"local":"builtin"}catch{return"builtin"}}async fetch(){if(isPrivateProjectId(this.deps.config.projectId??""))return{settings:null,source:"none",warning:null};const res=await this.deps.api.request("GET","/settings");const parsed=res.ok?parseServerSettings(res):null;if(parsed!==null){this.last=parsed;return{settings:parsed,source:"server",warning:null}}const transient=res.status===null||res.status>=500||res.ok;const reason=stripTerminalControls(
|
|
16
|
-
res.ok?`\u5FDC\u7B54\u3092\u89E3\u91C8\u3067\u304D\u307E\u305B\u3093\uFF08\u5148\u982D: ${res.raw.slice(0,120)}\uFF09`:describeError(res));if(transient&&this.last!==null){return{settings:this.last,source:"cached",warning:`\u30EB\u30FC\u30D7\u8A2D\u5B9A\u3092\u30B5\u30FC\u30D0\u304B\u3089\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\uFF08${reason}\uFF09\u3002\u76F4\u524D\u306B\u53D6\u5F97\u3057\u305F revision ${this.last.revision} \u3067\u8D70\u308A\u307E\u3059`}}return{settings:null,source:"none",warning:`\
|
|
17
|
-
\u30EB\u30FC\u30D7\u8A2D\u5B9A\u3092\u30B5\u30FC\u30D0\u304B\u3089\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\uFF08${reason}\uFF09\u3002\u30ED\u30FC\u30AB\u30EB\u8A2D\u5B9A\uFF08ai_config_file / charter_file\uFF09\u3068\u7D44\u307F\u8FBC\u307F\u65E2\u5B9A\u3067\u8D70\u308A\u307E\u3059`}}};export{PROMPT_KEYS,parseServerSettings,formatConfigHash,renderStepBudget,LoopSettingsApplier};
|