@tocca-systems/twp-cli 0.28.0 → 0.29.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.
@@ -11,6 +11,10 @@
11
11
  `CHANGELOG.md` に残してあります。顧客向けの履歴は public 公開以降を対象とします。
12
12
  -->
13
13
 
14
+ ## 0.29.0
15
+
16
+ 勤怠の管理者向けに、月の残業サマリ(36協定を含む)と締め状況を CLI から参照できるようになりました(`twp attendance overtime` / `twp attendance closings list`)。
17
+
14
18
  ## 0.28.0
15
19
 
16
20
  CLI から打刻(出勤・退勤・休憩・作業の切り替え)ができるようになりました(`twp attendance punch`)。締め済みの月には打刻を送らずに知らせます。
package/README.md CHANGED
@@ -24,7 +24,7 @@ TWP(Tocca Working Platform)を、ターミナルから使うための CLI
24
24
  | **できる** | `twp department` / `twp position` / `twp job-title` による組織マスタ(部署・役職・職位)の一覧・取得・作成・更新・削除と、部署ツリー・部署の所属者の表示。作成・更新・削除は管理者の権限が要ります |
25
25
  | **できる** | `twp inquiry category` による問い合わせカテゴリの一覧・取得・作成・更新(通知先の設定・末尾への並べ替えを含む)。取得・作成・更新は問い合わせ機能の管理者の権限が要ります |
26
26
  | **できる** | `twp media` によるメディアライブラリのファイルのアップロード・一覧・ダウンロード・削除(ゴミ箱へ移す)・一括操作(公開・非公開・アーカイブ・移動・削除・復元・ZIP ダウンロード)、`twp storage get` によるストレージ使用量の確認(管理者) |
27
- | **できる** | `twp attendance` による自分の勤怠の参照(いまの打刻状態・打刻の履歴・月の勤怠表)と打刻 |
27
+ | **できる** | `twp attendance` による自分の勤怠の参照(いまの打刻状態・打刻の履歴・月の勤怠表)と打刻、管理者向けの残業サマリ(36協定を含む)・締め状況の参照 |
28
28
  | **できる** | `twp task-loop` による、TWP のタスクキューを手元の AI CLI に実行させる常駐ループ |
29
29
  | **できる** | `twp agent-loop` による、エージェントループのキューの一覧・投入・更新・先頭への移動・削除と、期間を指定した実行履歴の参照。更新・移動・削除はテナントの管理者の権限が要ります |
30
30
  | **できる** | スラッシュコマンド: `/help` `/mode` `/model` `/clear` `/context` `/doctor` `/exit` `/demo`(動作デモ) `/tasks` `/task` `/projects`。`/tasks` などの TWP 系は `twp task list` と同じ結果を画面に出すだけで、AI は動かしません(クレジットも消費しません)。スラッシュコマンドは TUI の中だけで使えます(`twp -p` では解釈しません) |
@@ -363,6 +363,17 @@ twp attendance punch <clock-in|clock-out|break-start|break-end|switch> [--pr
363
363
  - `twp attendance list` は新しい順です。`twp attendance timesheet` の時間は `H:MM` で、月の合計は stderr に出します。締め済みの月は、締めた時点の集計であることを知らせます
364
364
  - ヘルプは `twp attendance help`
365
365
 
366
+ ### 残業・締め状況を見る(勤怠の管理者)
367
+
368
+ ```bash
369
+ twp attendance overtime [--month <YYYY-MM>] [--agreement36]
370
+ twp attendance closings list [--month <YYYY-MM>] [--include-hidden]
371
+ ```
372
+
373
+ - 勤怠の管理者権限が要ります。権限が無いと、その旨を案内して終了コード 3 で終わります
374
+ - `overtime` は社員別の残業・法定外残業・深夜・休日の時間(`H:MM`)で、合計は stderr に出します。今月はリアルタイムの集計、過去の月は締めた時点の集計です。並ぶのは、その月の締めレコードがあり、表示対象で、有効な契約がある人だけです(載っていない人は残業0という意味ではありません)。`--agreement36` を付けると36協定の月・年の法定外残業と上限に対する割合・警告レベルを出します
375
+ - `closings list` に並ぶのは締め済みの人だけです(締めていない人は出ません)。締めの実行・解除は CLI からはできません(給与の確定に効くため、画面から行ってください)
376
+
366
377
  ### Backlog の課題を読む・書く
367
378
 
368
379
  TWP に登録した Backlog スペースを通して、課題とコメントを読み、課題へ書きます。
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{CommandModelMissingError,MAX_REPORTED_VIOLATIONS,loadCommandModelDomain,loadCommandModelRoutes,validateBody,validateQuery}from"./chunk-NZ7WI4RZ.js";import{NO_REDACT_FLAG,NO_REDACT_NOTICE,exitCodeFor,fetchAllPages,reportError}from"./chunk-B4BZTXCI.js";import{renderOutput}from"./chunk-5Q2CH4E7.js";import{redactSecretValues,withDebug}from"./chunk-YVAN3H5W.js";import{readBody}from"./chunk-HGTG5XQ7.js";import{parseOperationArgs,repeatedValues}from"./chunk-IOGVQVGD.js";
3
+ import{CommandModelMissingError,MAX_REPORTED_VIOLATIONS,loadCommandModelDomain,loadCommandModelRoutes,validateBody,validateQuery}from"./chunk-NZ7WI4RZ.js";import{NO_REDACT_FLAG,NO_REDACT_NOTICE,exitCodeFor,fetchAllPages,reportError}from"./chunk-W6NEYCS3.js";import{renderOutput}from"./chunk-5Q2CH4E7.js";import{redactSecretValues,withDebug}from"./chunk-YVAN3H5W.js";import{readBody}from"./chunk-HGTG5XQ7.js";import{parseOperationArgs,repeatedValues}from"./chunk-IOGVQVGD.js";
4
4
  import{DEFAULT_MAX_ITEMS,DEFAULT_MAX_PAGES,envelopePaging,positiveInteger,readEnvelopeCursor,shellQuote}from"./chunk-G4OO4M44.js";import"./chunk-R6DZCBX4.js";import{ApiError,TwpApiClient,appendQuery}from"./chunk-FTYJZFEK.js";import"./chunk-GMBJTG6A.js";import"./chunk-II5RVJQN.js";import{GLOBAL_OPTIONS_HELP}from"./chunk-TAN5I2DP.js";import{HELP_TOKEN}from"./chunk-2RFWORSA.js";import"./chunk-QQRJLH6B.js";import{AuthSession,NotLoggedInError,SessionExpiredError,
5
5
  loadCredentials}from"./chunk-XNLIEUAW.js";import{httpFetch}from"./chunk-J7QYPKVK.js";import{effectiveApiUrl,resolveConfiguredOutput,resolveProfile}from"./chunk-NERYSBA4.js";import"./chunk-RZVI6PMW.js";import{OUTPUT_FORMATS,resolveOutputFormat}from"./chunk-K2ONOH3L.js";import"./chunk-WVS4W5FY.js";import{stripTerminalControls}from"./chunk-NHYMHCAT.js";import{evaluateQuery}from"./chunk-GDM2QUBL.js";import{EXIT_OK,NetworkError,UsageError}from"./chunk-7WSNIXTQ.js";
6
6
  import"./chunk-VSJBJXZO.js";var MIN_SEGMENT_CHARS=3;var parsedCache=new WeakMap;function splitSegments(path){return path.split("/").filter(segment=>segment!=="")}function parseRoutes(routes){const cached=parsedCache.get(routes);if(cached!==void 0)return cached;const parsed=[];for(const[key,domain]of Object.entries(routes.routes)){const space=key.indexOf(" ");if(space<=0)continue;const template=key.slice(space+1);parsed.push({method:key.slice(0,space),template,domain,segments:splitSegments(template).map(segment=>/^\{[^/{}]+\}$/.
@@ -1212,7 +1212,7 @@ cwd()){const listed=await gitListFiles(cwd2);const raw=listed??await walkFiles(c
1212
1212
  1;const after=/^[^\s]*/.exec(text.slice(cursor))?.[0]??"";return{query,start,end:cursor+after.length}}var TWP_SLASH_ROUTES={"/tasks":{domain:"task",operation:"list"},"/task":{domain:"task",operation:"get"},"/projects":{domain:"project",operation:"list"}};function isTwpSlashCommand(name){return Object.hasOwn(TWP_SLASH_ROUTES,name)}async function runTwpSlashCommand(name,args,deps){const route=TWP_SLASH_ROUTES[name];if(!Object.hasOwn(TWP_SLASH_ROUTES,name)||route===void 0){return{code:2,out:"",err:`\u4E0D\u660E\u306A\u30B3\u30DE\u30F3\u30C9: ${name}
1213
1213
  `}}const parsed=parseArgv([route.domain,route.operation,...args]);if(parsed.command!=="domain"||parsed.domain!==route.domain){return{code:2,out:"",err:`${name}: \u3053\u306E\u5F15\u6570\u306F\u4F7F\u3048\u307E\u305B\u3093\uFF08${args.join(" ")}\uFF09
1214
1214
  `}}if(parsed.unknown.length>0){return{code:2,out:"",err:`\u4E0D\u660E\u306A\u5F15\u6570: ${parsed.unknown.join(" ")}
1215
- `}}let out="";let err="";const io={out:text=>void(out+=text),err:text=>void(err+=text),isTty:true};const globals={profile:parsed.profile??deps.profile,...parsed.output!==void 0?{output:parsed.output}:{},...parsed.query!==void 0?{query:parsed.query}:{},dryRun:parsed.dryRun,debug:parsed.debug,yes:parsed.yes,refresh:parsed.refresh};const{runDomain}=await import("./run-HRN7V7YN.js");try{const code=await runDomain({domain:route.domain,...parsed.operation!==void 0?{operation:parsed.operation}:
1215
+ `}}let out="";let err="";const io={out:text=>void(out+=text),err:text=>void(err+=text),isTty:true};const globals={profile:parsed.profile??deps.profile,...parsed.output!==void 0?{output:parsed.output}:{},...parsed.query!==void 0?{query:parsed.query}:{},dryRun:parsed.dryRun,debug:parsed.debug,yes:parsed.yes,refresh:parsed.refresh};const{runDomain}=await import("./run-UWGDNKDS.js");try{const code=await runDomain({domain:route.domain,...parsed.operation!==void 0?{operation:parsed.operation}:
1216
1216
  {},argv:parsed.domainArgv,help:parsed.domainHelp,globals,version:deps.version,io,...deps.fetchImpl!==void 0?{fetchImpl:deps.fetchImpl}:{}});return{code,out,err}}catch(e){return{code:1,out,err:`${err}${e.message}
1217
1217
  `}}}var GIT_LOG_OUTPUT=["9f3c1a2 feat(ui): \u4E00\u89A7\u306E\u30D5\u30A3\u30EB\u30BF\u3092 URL \u30AF\u30A8\u30EA\u3068\u540C\u671F\u3059\u308B","4b8e0d7 fix(ui): \u4EEE\u60F3\u30B9\u30AF\u30ED\u30FC\u30EB\u306E\u884C\u9AD8\u3055\u3092\u5B9F\u6E2C\u5024\u306B\u5408\u308F\u305B\u308B","c15a99e refactor(api): \u4E00\u89A7\u53D6\u5F97\u306E\u30DA\u30FC\u30B8\u30F3\u30B0\u51E6\u7406\u3092\u5171\u901A\u5316\u3059\u308B","2d70f4b test: \u4E00\u89A7\u30D5\u30A3\u30EB\u30BF\u306E\u56DE\u5E30\u30C6\u30B9\u30C8\u3092\u8FFD\u52A0\u3059\u308B",
1218
1218
  "a6e2b38 fix(api): \u7A7A\u306E\u691C\u7D22\u6761\u4EF6\u3067\u5168\u4EF6\u8FD4\u3089\u306A\u3044\u3088\u3046\u306B\u3059\u308B","7c40d51 chore(deps): \u958B\u767A\u4F9D\u5B58\u3092\u6700\u65B0\u3078\u66F4\u65B0\u3059\u308B","e83b1c6 docs: \u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u624B\u9806\u306B Node 22 \u306E\u524D\u63D0\u3092\u8FFD\u8A18\u3059\u308B","b91f7a4 fix(ui): \u30E2\u30FC\u30C0\u30EB\u306E\u91CD\u306A\u308A\u9806\u3092\u6307\u5B9A\u3059\u308B","5a2c8e0 perf(api): \u4E00\u89A7\u306E N+1 \u3092\u89E3\u6D88\u3059\u308B",
@@ -15,8 +15,24 @@ return notes}function punchType(input){const[kind,...rest]=input.args;if(kind===
15
15
  \uFF09`,"ID \u306F twp task get <\u30AD\u30FC> --query id \u3067\u5206\u304B\u308A\u307E\u3059")}body["task_id"]=task.trim()}const memo=input.flags.get("--memo");if(memo!==void 0){if([...memo].length>MEMO_MAX){throw new UsageError(`--memo \u306F ${MEMO_MAX} \u6587\u5B57\u4EE5\u5185\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08${[...memo].length} \u6587\u5B57\uFF09`,PUNCH_USAGE)}body["memo"]=memo}return body}function punchPlan(input){return{method:"POST",path:"/api/v1/attendance/pun\
16
16
  ch",body:punchBody(input)}}async function assertCurrentMonthOpen(ctx){const sheet=timesheetBody(await ctx.send({method:"GET",path:"/api/v1/attendance/timesheet"}));if(sheet["is_closed"]===true){const at=typeof sheet["closed_at"]==="string"?`\uFF08${sheet["closed_at"]} \u306B\u7DE0\u3081\uFF09`:"";throw new ApiRejectedError(`${String(sheet["year_month"])} \u306F\u7DE0\u3081\u6E08\u307F\u306E\u305F\u3081\u6253\u523B\u3092\u9001\u308A\u307E\u305B\u3093\u3067\u3057\u305F${at}\u3002\u30B5\u30FC\u30D0\u306F\u7DE0\u3081\u6E08\u307F\u306E\u6708\u3078\u306E\u6253\u523B\u3092\u62D2\u5426\u305B\u305A\u7DE0\u3081\u306E\u96C6\
17
17
  \u8A08\u3092\u6D17\u3044\u66FF\u3048\u308B\u306E\u3067\u3001CLI \u304C\u9001\u308B\u524D\u306B\u6B62\u3081\u3066\u3044\u307E\u3059\u3002\u7DE0\u3081\u306E\u89E3\u9664\u306F\u52E4\u6020\u306E\u7BA1\u7406\u8005\u306B\u4F9D\u983C\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}}async function punch(input,ctx){const plan=punchPlan(input);await assertCurrentMonthOpen(ctx);return ctx.send(plan)}function punchRecord(body){const record=isRecord(body)?body["record"]:void 0;if(!isRecord(record)||typeof record["\
18
- type"]!=="string"){throw new ApiResponseError("\u6253\u523B\u306E\u5FDC\u7B54\u306B\u6253\u523B\u8A18\u9332\uFF08type\uFF09\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002")}return record}var attendanceDomain={name:"attendance",summary:"\u81EA\u5206\u306E\u52E4\u6020\uFF08\u6253\u523B\u72B6\u614B\u30FB\u6253\u523B\u5C65\u6B74\u30FB\u52E4\u6020\u8868\u30FB\u6253\u523B\uFF09",operations:[{name:"status",summary:"\u3044\u307E\u306E\u6253\u523B\u72B6\u614B\u3068\u3001\u6B21\u306B\u6253\u3066\u308B\u6253\
19
- \u523B\u3092\u8868\u793A\u3059\u308B",usage:STATUS_USAGE,description:"GET /api/v1/attendance/current \u3092\u8868\u793A\u3057\u307E\u3059\uFF08\u30ED\u30B0\u30A4\u30F3\u3057\u3066\u3044\u308B\u672C\u4EBA\u306E\u5206\uFF09\u3002\navailable_actions \u306F\u3001\u3044\u307E\u306E\u72B6\u614B\u304B\u3089\u6253\u3066\u308B\u6253\u523B\u306E\u7A2E\u985E\u3067\u3059\uFF08clock_in / clock_out / break_start / break_end / switch\uFF09\u3002\n--output json \u306F API \u304C\u8FD4\u3059\u5168\u30D5\u30A3\u30FC\u30EB\u30C9\uFF08\u4ECA\u65E5\u306E\u6253\u523B\u306E\u4E00\u89A7 today_records \u3092\u542B\u3080\uFF09\u3092\u51FA\u3057\u307E\u3059\u3002",
18
+ type"]!=="string"){throw new ApiResponseError("\u6253\u523B\u306E\u5FDC\u7B54\u306B\u6253\u523B\u8A18\u9332\uFF08type\uFF09\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002")}return record}var OVERTIME_USAGE="twp attendance overtime [--month <YYYY-MM>] [--agreement36]";var CLOSINGS_LIST_USAGE="twp attendance closings list [--month <YYYY-MM>] [--include-hidden]";var FORBIDDEN_ADMIN="\u52E4\u6020\u306E\u7BA1\u7406\u8005\u6A29\u9650\uFF08\u52E4\u6020: \u7BA1\u7406\u8005\uFF09\u304C\u5FC5\u8981\u3067\u3059\u3002\u30C6\u30CA\u30F3\u30C8\u306E\u7BA1\u7406\u8005\u306B\u6A29\u9650\u306E\u4ED8\u4E0E\u3092\u4F9D\u983C\u3057\u3066\u304F\u3060\
19
+ \u3055\u3044";var OVERTIME_SCOPE_NOTE="\u5BFE\u8C61\u306F\u3001\u3053\u306E\u6708\u306E\u7DE0\u3081\u30EC\u30B3\u30FC\u30C9\u304C\u3042\u308A\u3001\u8868\u793A\u5BFE\u8C61\u3067\u3001\u6709\u52B9\u306A\u5951\u7D04\u304C\u3042\u308B\u4EBA\u3060\u3051\u3067\u3059\uFF08\u8F09\u3063\u3066\u3044\u306A\u3044\u4EBA\u306F\u6B8B\u696D0\u3068\u3044\u3046\u610F\u5473\u3067\u306F\u3042\u308A\u307E\u305B\u3093\uFF09\u3002";var MONTH_FLAG={name:"--month",summary:"\u5BFE\u8C61\u306E\u5E74\u6708\uFF08YYYY-MM\uFF09",
20
+ takesValue:true,placeholder:"<YYYY-MM>"};var OVERTIME_COLUMNS=["user_name","contract_type_name","overtime","legal_overtime","night_work","holiday_work","total_work","total_work_days","is_overtime_exempt","user_id"];var AGREEMENT36_COLUMNS=["user_name","alert_level","monthly_legal_overtime","monthly_percent","annual_legal_overtime","annual_percent","contract_type_name","user_id"];var CLOSING_COLUMNS=["user_name","closed_at","closed_by","logic_version","user_id","id"];function isAgreement36(input){
21
+ return input.flags.has("--agreement36")}function overtimeBody(body,label){if(!isRecord(body)||!Array.isArray(body["users"])){throw new ApiResponseError(`${label}\u306E\u5FDC\u7B54\u306B users \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}return body}function isAgreement36Body(body){return isRecord(body)&&isRecord(body["limits"])}function summarizeOvertimeUser(user){const row=isRecord(user)?user:{};return pick({user_name:row["\
22
+ user_name"],contract_type_name:row["contract_type_name"],overtime:hoursMinutes(row["overtime_minutes"]),legal_overtime:hoursMinutes(row["legal_overtime_minutes"]),night_work:hoursMinutes(row["night_work_minutes"]),holiday_work:hoursMinutes(row["holiday_work_minutes"]),total_work:hoursMinutes(row["total_work_minutes"]),total_work_days:row["total_work_days"],is_overtime_exempt:row["is_overtime_exempt"],user_id:row["user_id"]},OVERTIME_COLUMNS)}function summarizeAgreement36User(user){const row=isRecord(
23
+ user)?user:{};return pick({user_name:row["user_name"],alert_level:row["alert_level"],monthly_legal_overtime:hoursMinutes(row["monthly_legal_overtime_minutes"]),monthly_percent:row["monthly_percent"],annual_legal_overtime:hoursMinutes(row["annual_legal_overtime_minutes"]),annual_percent:row["annual_percent"],contract_type_name:row["contract_type_name"],user_id:row["user_id"]},AGREEMENT36_COLUMNS)}function summarizeOvertime(body){if(isAgreement36Body(body)){return overtimeBody(body,"36\u5354\u5B9A\u30C0\u30C3\u30B7\u30E5\u30DC\u30FC\u30C9")["\
24
+ users"].map(summarizeAgreement36User)}return overtimeBody(body,"\u6B8B\u696D\u30B5\u30DE\u30EA")["users"].map(summarizeOvertimeUser)}function overtimeNotes(body){if(isAgreement36Body(body)){const sheet2=overtimeBody(body,"36\u5354\u5B9A\u30C0\u30C3\u30B7\u30E5\u30DC\u30FC\u30C9");const limits=sheet2["limits"];const summary=isRecord(sheet2["summary"])?sheet2["summary"]:{};const counts=isRecord(summary["alert_counts"])?summary["alert_counts"]:{};const countText=Object.entries(counts).map(([level,n])=>`${level}\
25
+ ${String(n)}`).join(" / ");return[`${String(sheet2["year_month"])}\uFF08\u5E74\u5EA6\u958B\u59CB ${String(sheet2["fiscal_year_start"])}\uFF09\u306E36\u5354\u5B9A: \u5BFE\u8C61 ${String(summary["total_users"])} \u4EBA`+(countText===""?"":` / ${countText}`),`\u4E0A\u9650: \u6708 ${String(hoursMinutes(limits["monthly_general_minutes"]))}\uFF08\u7279\u5225\u6761\u9805 ${String(hoursMinutes(limits["monthly_special_minutes"]))}\uFF09 / \u5E74 ${String(hoursMinutes(limits["annual_general_minutes"]))}\uFF08\
26
+ \u7279\u5225\u6761\u9805 ${String(hoursMinutes(limits["annual_special_minutes"]))}\uFF09\uFF08\u5168\u9805\u76EE\u306F --output json\uFF09`,OVERTIME_SCOPE_NOTE]}const sheet=overtimeBody(body,"\u6B8B\u696D\u30B5\u30DE\u30EA");const total=isRecord(sheet["total"])?sheet["total"]:{};return[`${String(sheet["year_month"])} \u306E\u5408\u8A08\uFF08${String(total["user_count"])} \u4EBA\uFF09: \u6B8B\u696D ${String(hoursMinutes(total["overtime_minutes"]))} / \u6CD5\u5B9A\u5916\u6B8B\u696D ${String(hoursMinutes(
27
+ total["legal_overtime_minutes"]))} / \u6DF1\u591C ${String(hoursMinutes(total["night_work_minutes"]))} / \u4F11\u65E5 ${String(hoursMinutes(total["holiday_work_minutes"]))}\uFF08\u5168\u9805\u76EE\u306F --output json \u306E total\uFF09`,OVERTIME_SCOPE_NOTE]}function closingsBody(body){if(!isRecord(body)||!Array.isArray(body["closings"])){throw new ApiResponseError("\u7DE0\u3081\u72B6\u6CC1\u306E\u5FDC\u7B54\u306B closings \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002")}
28
+ return body}function closingsNotes(body){const sheet=closingsBody(body);const count=sheet["closings"].length;return[`${String(sheet["year_month"])} \u306B\u7DE0\u3081\u6E08\u307F\u306E\u4EBA: ${String(count)} \u4EBA\uFF08\u7DE0\u3081\u3066\u3044\u306A\u3044\u4EBA\u306F\u4E00\u89A7\u306B\u51FA\u307E\u305B\u3093\uFF09`]}var overtimeOperation={name:"overtime",summary:"\u6708\u306E\u6B8B\u696D\u30B5\u30DE\u30EA\uFF08\u793E\u54E1\u5225\uFF09\u3092\u8868\u793A\u3059\u308B\u3002--agreement36 \u306736\u5354\u5B9A\u306E\u4E0A\u9650\u306B\u5BFE\u3059\u308B\u72B6\u6CC1\uFF08\u7BA1\u7406\u8005\uFF09",
29
+ usage:OVERTIME_USAGE,description:"GET /api/v1/attendance/overtime \u3092\u8868\u793A\u3057\u307E\u3059\u3002--agreement36 \u3092\u4ED8\u3051\u308B\u3068 GET /api/v1/attendance/overtime/agreement36\n\uFF0836\u5354\u5B9A\u306E\u6708\u30FB\u5E74\u306E\u6CD5\u5B9A\u5916\u6B8B\u696D\u3068\u4E0A\u9650\u306B\u5BFE\u3059\u308B\u5272\u5408\u30FB\u8B66\u544A\u30EC\u30D9\u30EB\uFF09\u3092\u8868\u793A\u3057\u307E\u3059\u3002\n\u52E4\u6020\u306E\u7BA1\u7406\u8005\u6A29\u9650\u304C\u5FC5\u8981\u3067\u3059\uFF08\u7121\u3051\u308C\u3070\u7D42\u4E86\u30B3\u30FC\u30C9 3\uFF09\u3002\n--month \u304C\u7121\u3051\u308C\u3070\u4ECA\u6708\u3067\u3059\uFF08\u30C6\u30CA\u30F3\u30C8\u306E\u696D\u52D9\u65E5\u306E\u533A\u5207\u308A\u3067\u30B5\u30FC\u30D0\u304C\u6C7A\u3081\u307E\u3059\uFF09\u3002\u4ECA\u6708\u306F\u30EA\u30A2\u30EB\u30BF\u30A4\u30E0\u306E\u96C6\u8A08\u3001\u904E\u53BB\u306E\u6708\u306F\u7DE0\u3081\u305F\u6642\u70B9\u306E\u96C6\u8A08\u3067\u3059\u3002\n\u4E26\u3076\u306E\u306F\u3001\u305D\u306E\u6708\u306E\u7DE0\u3081\u30EC\u30B3\u30FC\u30C9\u304C\u3042\u308A\u3001\u8868\u793A\u5BFE\u8C61\u3067\u3001\u305D\u306E\u6708\u306B\u6709\u52B9\u306A\u5951\u7D04\u304C\u3042\u308B\u4EBA\u3060\u3051\u3067\u3059\uFF08\u8F09\u3063\u3066\u3044\u306A\u3044\u4EBA\u306F\u300C\u6B8B\u696D0\u300D\u3067\u306F\u3042\u308A\u307E\u305B\u3093\uFF09\u3002\n--output table / text / tsv \u306F\u793E\u54E1\u5225\u306E\u8981\u7D04\u5217\uFF08\u6642\u9593\u306F H:MM\uFF09\u3067\u3001\u5408\u8A08\u30FB\u4E0A\u9650\u306F stderr \u306B\u51FA\u3057\u307E\u3059\u3002\n--output json \u306F API \u304C\u8FD4\u3059\u5168\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u51FA\u3057\u307E\u3059\u3002",
30
+ flags:[MONTH_FLAG,{name:"--agreement36",summary:"36\u5354\u5B9A\u306E\u4E0A\u9650\u306B\u5BFE\u3059\u308B\u72B6\u6CC1\u3092\u8868\u793A\u3059\u308B",takesValue:false}],plan(input){noArgs(input,"overtime");const path=isAgreement36(input)?"/api/v1/attendance/overtime/agreement36":"/api/v1/attendance/overtime";return{method:"GET",path,query:{year_month:monthFlag(input.flags)}}},summarize:summarizeOvertime,raw:body=>overtimeBody(body,isAgreement36Body(body)?"36\u5354\u5B9A\u30C0\u30C3\u30B7\u30E5\u30DC\u30FC\u30C9":
31
+ "\u6B8B\u696D\u30B5\u30DE\u30EA"),notes:overtimeNotes,forbidden:FORBIDDEN_ADMIN};var closingsListOperation={name:"list",summary:"\u6708\u306E\u7DE0\u3081\u72B6\u6CC1\uFF08\u7DE0\u3081\u6E08\u307F\u306E\u4EBA\u306E\u4E00\u89A7\uFF09\u3092\u8868\u793A\u3059\u308B\uFF08\u7BA1\u7406\u8005\uFF09",usage:CLOSINGS_LIST_USAGE,description:"GET /api/v1/attendance/closings \u3092\u8868\u793A\u3057\u307E\u3059\u3002\u52E4\u6020\u306E\u7BA1\u7406\u8005\u6A29\u9650\u304C\u5FC5\u8981\u3067\u3059\uFF08\u7121\u3051\u308C\u3070\u7D42\u4E86\u30B3\u30FC\u30C9 3\uFF09\u3002\n\u4E26\u3076\u306E\u306F\u7DE0\u3081\u6E08\u307F\u306E\u4EBA\u3060\u3051\u3067\u3059\uFF08\u7DE0\u3081\u3066\u3044\u306A\u3044\u4EBA\u306F\u51FA\u307E\u305B\u3093\uFF09\u3002\u4EBA\u6570\u306F stderr \u306B\u51FA\u3057\u307E\u3059\u3002\n--month \u304C\u7121\u3051\u308C\u3070\u4ECA\u6708\u3067\u3059\uFF08\u30C6\u30CA\u30F3\u30C8\u306E\u696D\u52D9\u65E5\u306E\u533A\u5207\u308A\u3067\u30B5\u30FC\u30D0\u304C\u6C7A\u3081\u307E\u3059\uFF09\u3002\n--include-hi\
32
+ dden \u3092\u4ED8\u3051\u308B\u3068\u3001\u7121\u52B9\u5316\u6E08\u307F\u306E\u30E6\u30FC\u30B6\u30FC\u306E\u7DE0\u3081\u3082\u542B\u3081\u307E\u3059\u3002\n\u7DE0\u3081\u306E\u5B9F\u884C\u30FB\u89E3\u9664\u306F\u3067\u304D\u307E\u305B\u3093\uFF08\u7D66\u4E0E\u306E\u78BA\u5B9A\u306B\u52B9\u304F\u305F\u3081\u3001\u753B\u9762\u304B\u3089\u884C\u3063\u3066\u304F\u3060\u3055\u3044\uFF09\u3002\n--output json \u306F API \u304C\u8FD4\u3059\u5168\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u51FA\u3057\u307E\u3059\u3002",
33
+ flags:[MONTH_FLAG,{name:"--include-hidden",summary:"\u7121\u52B9\u5316\u6E08\u307F\u306E\u30E6\u30FC\u30B6\u30FC\u306E\u7DE0\u3081\u3082\u542B\u3081\u308B",takesValue:false}],plan(input){noArgs(input,"closings list");return{method:"GET",path:"/api/v1/attendance/closings",query:{year_month:monthFlag(input.flags),include_hidden:input.flags.has("--include-hidden")?"true":void 0}}},summarize:body=>closingsBody(body)["closings"].map(row=>pick(row,CLOSING_COLUMNS)),raw:body=>closingsBody(body),notes:closingsNotes,
34
+ forbidden:FORBIDDEN_ADMIN};var closingsResource={name:"closings",summary:"\u52E4\u6020\u306E\u7DE0\u3081\u72B6\u6CC1\uFF08\u4E00\u89A7\u306E\u307F\u30FB\u7BA1\u7406\u8005\uFF09",operations:[closingsListOperation]};var attendanceDomain={name:"attendance",summary:"\u52E4\u6020\uFF08\u81EA\u5206\u306E\u6253\u523B\u72B6\u614B\u30FB\u6253\u523B\u5C65\u6B74\u30FB\u52E4\u6020\u8868\u30FB\u6253\u523B\uFF0F\u7BA1\u7406\u8005\u5411\u3051\u306E\u6B8B\u696D\u30B5\u30DE\u30EA\u30FB\u7DE0\u3081\u72B6\u6CC1\uFF09",
35
+ operations:[{name:"status",summary:"\u3044\u307E\u306E\u6253\u523B\u72B6\u614B\u3068\u3001\u6B21\u306B\u6253\u3066\u308B\u6253\u523B\u3092\u8868\u793A\u3059\u308B",usage:STATUS_USAGE,description:"GET /api/v1/attendance/current \u3092\u8868\u793A\u3057\u307E\u3059\uFF08\u30ED\u30B0\u30A4\u30F3\u3057\u3066\u3044\u308B\u672C\u4EBA\u306E\u5206\uFF09\u3002\navailable_actions \u306F\u3001\u3044\u307E\u306E\u72B6\u614B\u304B\u3089\u6253\u3066\u308B\u6253\u523B\u306E\u7A2E\u985E\u3067\u3059\uFF08clock_in / clock_out / break_start / break_end / switch\uFF09\u3002\n--output json \u306F API \u304C\u8FD4\u3059\u5168\u30D5\u30A3\u30FC\u30EB\u30C9\uFF08\u4ECA\u65E5\u306E\u6253\u523B\u306E\u4E00\u89A7 today_records \u3092\u542B\u3080\uFF09\u3092\u51FA\u3057\u307E\u3059\u3002",
20
36
  flags:[],plan(input){noArgs(input,"status");return{method:"GET",path:"/api/v1/attendance/current"}},summarize:summarizeCurrent,raw:body=>currentBody(body)},{name:"list",summary:"\u6253\u523B\u306E\u5C65\u6B74\u3092\u4E00\u89A7\u3059\u308B\uFF08\u65B0\u3057\u3044\u9806\uFF09",usage:LIST_USAGE,description:`GET /api/v1/attendance/records \u3092\u8868\u793A\u3057\u307E\u3059\uFF08\u30ED\u30B0\u30A4\u30F3\u3057\u3066\u3044\u308B\u672C\u4EBA\u306E\u5206\u30FB\u65B0\u3057\u3044\u9806\uFF09\u3002
21
37
  --month \u3068 --date \u306F\u3069\u3061\u3089\u304B\u4E00\u65B9\u3060\u3051\u6307\u5B9A\u3067\u304D\u307E\u3059\u3002\u3069\u3061\u3089\u3082\u7121\u3051\u308C\u3070\u4ECA\u6708\u3067\u3059
22
38
  \uFF08\u300C\u4ECA\u6708\u300D\u306F\u30C6\u30CA\u30F3\u30C8\u306E\u696D\u52D9\u65E5\u306E\u533A\u5207\u308A\u3067\u30B5\u30FC\u30D0\u304C\u6C7A\u3081\u307E\u3059\uFF09\u3002
@@ -28,4 +44,4 @@ flags:[{name:"--month",summary:"\u5BFE\u8C61\u306E\u5E74\u6708\uFF08YYYY-MM\uFF0
28
44
  usage:PUNCH_USAGE,description:"POST /api/v1/attendance/punch \u3092\u9001\u308A\u307E\u3059\uFF08\u30ED\u30B0\u30A4\u30F3\u3057\u3066\u3044\u308B\u672C\u4EBA\u306E\u5206\uFF09\u3002\u6253\u523B\u6642\u523B\u306F\u30B5\u30FC\u30D0\u306E\u6642\u523B\u3067\u3059\u3002\n\u7A2E\u985E: clock-in\uFF08\u51FA\u52E4\uFF09/ clock-out\uFF08\u9000\u52E4\uFF09/ break-start\uFF08\u4F11\u61A9\u958B\u59CB\uFF09/ break-end\uFF08\u4F11\u61A9\u7D42\u4E86\uFF09/ switch\uFF08\u4F5C\u696D\u306E\u5207\u308A\u66FF\u3048\uFF09\u3002\n\u3044\u307E\u6253\u3066\u308B\u7A2E\u985E\u306F twp attendance status \u306E available_actions \u3067\u5206\u304B\u308A\u307E\u3059\u3002\n--project \u306F\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u30B3\u30FC\u30C9\u304B ID\u3001--task \u306F\u30BF\u30B9\u30AF\u306E ID\uFF08UUID\uFF09\u3067\u3059\u3002\n\u9001\u308B\u524D\u306B\u4ECA\u6708\u306E\u52E4\u6020\u8868\uFF08GET /api/v1/attendance/timesheet\uFF09\u3092\u898B\u3066\u3001\u7DE0\u3081\u6E08\u307F\u306A\u3089\u6253\u523B\u3092\u9001\u3089\u305A\u306B\u6B62\u3081\u307E\u3059\uFF08\u7D42\u4E86\u30B3\u30FC\u30C9 3\uFF09\u3002\n--dry-run \u306F\u6253\u523B\u306E\u30EA\u30AF\u30A8\u30B9\u30C8\u3060\u3051\u3092\u8868\u793A\u3057\u307E\u3059\uFF08\u7DE0\u3081\u306E\u78BA\u8A8D\u306F\u9001\u308A\u307E\u305B\u3093\uFF09\u3002\n\u904E\u53BB\u306E\u6642\u523B\u3067\u306E\u6253\u523B\u30FB\u6253\u523B\u306E\u4FEE\u6B63\u306F\u3067\u304D\u307E\u305B\u3093\uFF08\u753B\u9762\u304B\u3089\u884C\u3063\u3066\u304F\u3060\u3055\u3044\uFF09\u3002",
29
45
  flags:[{name:"--project",summary:"\u4F5C\u696D\u3059\u308B\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\uFF08\u30B3\u30FC\u30C9\u307E\u305F\u306F ID\uFF09",takesValue:true,placeholder:"<\u30B3\u30FC\u30C9|ID>"},{name:"--task",summary:"\u4F5C\u696D\u3059\u308B\u30BF\u30B9\u30AF\u306E ID\uFF08UUID\uFF09",takesValue:true,placeholder:"<\u30BF\u30B9\u30AFID>"},{name:"--memo",summary:`\u30E1\u30E2\uFF08${MEMO_MAX} \u6587\u5B57\u4EE5\u5185\uFF09`,takesValue:true,placeholder:"<\u30E1\u30E2>"}],async prepare(input,ctx){
30
46
  punchType(input);const explicit=input.flags.get("--project");if(explicit===void 0)return input;return withResolved(input,{projectId:await ctx.projectId(explicit)})},plan:punchPlan,plannedNotes:()=>["\u5B9F\u884C\u6642\u306F\u3001\u3053\u306E\u524D\u306B\u4ECA\u6708\u306E\u7DE0\u3081\u306E\u78BA\u8A8D\uFF08GET /api/v1/attendance/timesheet\uFF09\u3092\u9001\u308A\u3001\u7DE0\u3081\u6E08\u307F\u306A\u3089\u6253\u523B\u3092\u9001\u308A\u307E\u305B\u3093\u3002"],execute:punch,summarize:body=>{const status=isRecord(
31
- body)&&isRecord(body["status"])?body["status"]:{};return{...pick(punchRecord(body),PUNCH_COLUMNS),status:status["status"]??null,status_label:status["status_label"]??null}},raw:body=>(punchRecord(body),body)}]};export{PUNCH_TYPES,assertCurrentMonthOpen,attendanceDomain,hoursMinutes};
47
+ body)&&isRecord(body["status"])?body["status"]:{};return{...pick(punchRecord(body),PUNCH_COLUMNS),status:status["status"]??null,status_label:status["status_label"]??null}},raw:body=>(punchRecord(body),body)},overtimeOperation],subresources:[closingsResource]};export{PUNCH_TYPES,assertCurrentMonthOpen,attendanceDomain,hoursMinutes};
@@ -18,7 +18,7 @@ ${operationSection}${subSection}
18
18
  ${GLOBAL_OPTIONS_HELP}
19
19
  `}function renderOperationHelp(op,path2){const sections=[`twp ${path2} ${op.name} \u2014 ${op.summary}`,"","\u4F7F\u3044\u65B9:",` ${op.usage}`];if(op.description!==void 0){sections.push("",...op.description.split("\n"))}if(op.destructive===true){sections.push("","\u26A0 \u7834\u58CA\u7684\u306A\u64CD\u4F5C\u3067\u3059\u3002\u5B9F\u884C\u3059\u308B\u306B\u306F --yes \u304C\u5FC5\u8981\u3067\u3059\u3002")}const flags=withCommonFlags(op.flags);if(flags.length>0){sections.push("","\u30AA\u30D7\u30B7\u30E7\u30F3:",
20
20
  alignedList(flags.map(flag=>[flag.takesValue?`${flag.name} ${flag.placeholder??"<\u5024>"}`:flag.name,flag.summary])))}sections.push("",GLOBAL_OPTIONS_HELP,"");return sections.join("\n")}function renderUnknownOperation(resource,path2,attempted){const names=[...resource.operations.map(op=>op.name),...subresourcesOf(resource).map(sub=>`${sub.name} <\u64CD\u4F5C>`)].join(" / ");return attempted===void 0?`twp ${path2} \u306B\u306F\u64CD\u4F5C\u306E\u6307\u5B9A\u304C\u5FC5\u8981\u3067\u3059\uFF08${names}\
21
- \uFF09\u3002\u8A73\u3057\u304F\u306F twp ${path2} ${HELP_TOKEN}`:`twp ${path2} \u306B\u300C${attempted}\u300D\u3068\u3044\u3046\u64CD\u4F5C\u306F\u3042\u308A\u307E\u305B\u3093\uFF08${names}\uFF09\u3002\u8A73\u3057\u304F\u306F twp ${path2} ${HELP_TOKEN}`}var LOADERS={"agent-loop":async()=>(await import("./agent-loop-EKI2OHKK.js")).agentLoopDomain,attendance:async()=>(await import("./attendance-WGT3OMA4.js")).attendanceDomain,backlog:async()=>(await import("./backlog-EJDTUNDB.js")).backlogDomain,department:async()=>(await import("./department-Y5KW5LPI.js")).departmentDomain,inquiry:async()=>(await import("./inquiry-LKAMOBYD.js")).inquiryDomain,"job-title":async()=>(await import("./job-title-XKP7FLV5.js")).jobTitleDomain,media:async()=>(await import("./media-GBU4NPSJ.js")).
21
+ \uFF09\u3002\u8A73\u3057\u304F\u306F twp ${path2} ${HELP_TOKEN}`:`twp ${path2} \u306B\u300C${attempted}\u300D\u3068\u3044\u3046\u64CD\u4F5C\u306F\u3042\u308A\u307E\u305B\u3093\uFF08${names}\uFF09\u3002\u8A73\u3057\u304F\u306F twp ${path2} ${HELP_TOKEN}`}var LOADERS={"agent-loop":async()=>(await import("./agent-loop-EKI2OHKK.js")).agentLoopDomain,attendance:async()=>(await import("./attendance-CHBHNQ5M.js")).attendanceDomain,backlog:async()=>(await import("./backlog-EJDTUNDB.js")).backlogDomain,department:async()=>(await import("./department-Y5KW5LPI.js")).departmentDomain,inquiry:async()=>(await import("./inquiry-LKAMOBYD.js")).inquiryDomain,"job-title":async()=>(await import("./job-title-XKP7FLV5.js")).jobTitleDomain,media:async()=>(await import("./media-GBU4NPSJ.js")).
22
22
  mediaDomain,position:async()=>(await import("./position-SLHMC5JP.js")).positionDomain,project:async()=>(await import("./project-DBNWB47J.js")).projectDomain,storage:async()=>(await import("./storage-ANKKJJJO.js")).storageDomain,task:async()=>(await import("./task-SJDDBUPH.js")).taskDomain,user:async()=>(await import("./user-AKXUBQTP.js")).userDomain};async function loadDomain(name){return LOADERS[name]()}var writeOut=text=>void process.stdout.write(text);var writeErr=text=>void process.stderr.write(text);function line(text){return text===""?"":text.endsWith("\n")?text:`${text}
23
23
  `}function outputValue(operation,format,body){return format==="json"?operation.raw(body):operation.summarize(body)}function requiresYes(operation,yes){return operation.destructive===true&&!yes}function exitCodeForStatus(status){if(status===401)return EXIT_AUTH;if(status===429)return EXIT_API_SERVER;if(status>=400&&status<500)return EXIT_API_CLIENT;return EXIT_API_SERVER}function exitCodeFor(err){if(err instanceof UsageError)return EXIT_USAGE;if(err instanceof NotLoggedInError||err instanceof SessionExpiredError)
24
24
  return EXIT_AUTH;if(err instanceof ApiError)return exitCodeForStatus(err.status);if(err instanceof ApiRejectedError)return EXIT_API_CLIENT;if(err instanceof ApiResponseError||err instanceof NetworkError)return EXIT_API_SERVER;if(err instanceof ResolveError){return err.status===null?EXIT_API_SERVER:exitCodeForStatus(err.status)}return EXIT_FAILURE}function safeText(text){return redactSecrets(stripTerminalControls(text))}function reportError(err,format,code,write=writeErr){const message=safeText(err instanceof
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{parseArgv}from"./chunk-Y6IJYFLZ.js";import"./chunk-NAUH75MM.js";import{GLOBAL_OPTIONS_HELP}from"./chunk-TAN5I2DP.js";import"./chunk-2RFWORSA.js";import"./chunk-QQRJLH6B.js";import"./chunk-VSJBJXZO.js";var VERSION=true?"0.28.0":"0.0.0-dev";var HELP=`twp ${VERSION} \u2014 TWP CLI
4
+ import{parseArgv}from"./chunk-Y6IJYFLZ.js";import"./chunk-NAUH75MM.js";import{GLOBAL_OPTIONS_HELP}from"./chunk-TAN5I2DP.js";import"./chunk-2RFWORSA.js";import"./chunk-QQRJLH6B.js";import"./chunk-VSJBJXZO.js";var VERSION=true?"0.29.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
@@ -148,6 +148,9 @@ import{parseArgv}from"./chunk-Y6IJYFLZ.js";import"./chunk-NAUH75MM.js";import{GL
148
148
  twp attendance timesheet
149
149
  \u6708\u306E\u52E4\u6020\u8868\uFF08\u65E5\u5225\u3068\u6708\u306E\u5408\u8A08\u30FB--month\uFF09
150
150
  twp attendance punch \u6253\u523B\u3059\u308B\uFF08clock-in / clock-out / break-start / break-end / switch\u3002\u7DE0\u3081\u6E08\u307F\u306E\u6708\u306F\u9001\u3089\u306A\u3044\uFF09
151
+ twp attendance overtime \u6708\u306E\u6B8B\u696D\u30B5\u30DE\u30EA\uFF08\u793E\u54E1\u5225\u30FB--month\u30FB--agreement36 \u306736\u5354\u5B9A\u3002\u7BA1\u7406\u8005\uFF09
152
+ twp attendance closings list
153
+ \u6708\u306E\u7DE0\u3081\u72B6\u6CC1\uFF08\u7DE0\u3081\u6E08\u307F\u306E\u4EBA\u306E\u4E00\u89A7\u30FB--month\u3002\u7BA1\u7406\u8005\uFF09
151
154
  twp backlog space list \u9023\u643A\u6E08\u307F\u306E Backlog \u30B9\u30DA\u30FC\u30B9\u3092\u4E00\u89A7\u3059\u308B
152
155
  twp backlog project list
153
156
  Backlog \u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3092\u4E00\u89A7\u3059\u308B
@@ -264,10 +267,10 @@ TUI \u5185:
264
267
  `);process.exit(1)}ignoreEpipe(process.stdout);ignoreEpipe(process.stderr);if(process.env["TWP_AUTO_UPDATE_WORKER"]==="1"){const{runAutoUpdateWorker}=await import("./auto-update-worker-OBFGN6FY.js");await runAutoUpdateWorker().catch(()=>void 0);return}const args=parseArgv(process.argv.slice(2));if(args.command==="version"){process.stdout.write(`${VERSION}
265
268
  `);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(" ")}
266
269
 
267
- ${HELP}`);process.exitCode=2;return}const autoUpdate=await import("./auto-update-CV2MM32C.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-HRN7V7YN.js");process.exitCode=await runDomain({domain:args.domain,...args.operation!==void 0?{operation:args.operation}:{},argv:args.domainArgv,help:args.
268
- 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-THG3XKFL.js");process.exitCode=await runApiCommand({argv:args.domainArgv,help:args.domainHelp,globals:{...args.profile!==void 0?{profile:args.profile}:{},...args.output!==
270
+ ${HELP}`);process.exitCode=2;return}const autoUpdate=await import("./auto-update-CV2MM32C.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-UWGDNKDS.js");process.exitCode=await runDomain({domain:args.domain,...args.operation!==void 0?{operation:args.operation}:{},argv:args.domainArgv,help:args.
271
+ 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-2CR75G2X.js");process.exitCode=await runApiCommand({argv:args.domainArgv,help:args.domainHelp,globals:{...args.profile!==void 0?{profile:args.profile}:{},...args.output!==
269
272
  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-RLKK6N7U.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-XKWUVV3J.js");
270
273
  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-BSJFNPBQ.js");process.exitCode=await runTaskLoop(
271
274
  {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,
272
275
  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-NGQ6G5OG.js");process.exitCode=await runOneShot({prompt:args.prompt??"",fromStdin:args.promptFromStdin,mode:args.mode??"dev",...args.permissionMode!==void 0?{permissionMode:args.permissionMode}:{},allowedTools:args.
273
- 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-P25BMTRI.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();
276
+ 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-HPPRP4NS.js");await startTui({mode:args.mode,permissionMode:args.permissionMode,allowedTools:args.allowedTools,disallowedTools:args.disallowedTools,model:args.model,profile:args.profile,noTui:args.noTui||!process.stdout.isTTY,doctor:args.doctor,version:VERSION})}await main();
@@ -1,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,exitCodeFor,fetchAllPages,outputValue,reportError,requiresYes,resolvePaging,runDomain}from"./chunk-B4BZTXCI.js";import"./chunk-5Q2CH4E7.js";import"./chunk-YVAN3H5W.js";import"./chunk-IOGVQVGD.js";import"./chunk-G4OO4M44.js";import"./chunk-R6DZCBX4.js";import"./chunk-FTYJZFEK.js";import"./chunk-GMBJTG6A.js";import"./chunk-II5RVJQN.js";import"./chunk-TAN5I2DP.js";import"./chunk-2RFWORSA.js";
3
+ import{CURATED_PAGING_VOCABULARY,buildPrepareContext,exitCodeFor,fetchAllPages,outputValue,reportError,requiresYes,resolvePaging,runDomain}from"./chunk-W6NEYCS3.js";import"./chunk-5Q2CH4E7.js";import"./chunk-YVAN3H5W.js";import"./chunk-IOGVQVGD.js";import"./chunk-G4OO4M44.js";import"./chunk-R6DZCBX4.js";import"./chunk-FTYJZFEK.js";import"./chunk-GMBJTG6A.js";import"./chunk-II5RVJQN.js";import"./chunk-TAN5I2DP.js";import"./chunk-2RFWORSA.js";
4
4
  import"./chunk-QQRJLH6B.js";import"./chunk-XNLIEUAW.js";import"./chunk-J7QYPKVK.js";import"./chunk-NERYSBA4.js";import"./chunk-RZVI6PMW.js";import"./chunk-K2ONOH3L.js";import"./chunk-WVS4W5FY.js";import"./chunk-NHYMHCAT.js";import"./chunk-GDM2QUBL.js";import"./chunk-7WSNIXTQ.js";import"./chunk-VSJBJXZO.js";export{CURATED_PAGING_VOCABULARY,buildPrepareContext,exitCodeFor,fetchAllPages,outputValue,reportError,requiresYes,resolvePaging,runDomain};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tocca-systems/twp-cli",
3
- "version": "0.28.0",
3
+ "version": "0.29.0",
4
4
  "description": "TWP CLI — Tocca Working Platform の CLI 型統合インターフェース(AIエージェントハーネス)",
5
5
  "type": "module",
6
6
  "bin": {