@tocca-systems/twp-cli 0.34.0 → 0.35.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/CHANGELOG.public.md +6 -0
  2. package/README.md +47 -1
  3. package/dist/{ai-dispatch-MFVPYNZ5.js → ai-dispatch-LY6OVZC3.js} +1 -1
  4. package/dist/{api-command-W77HSRUC.js → api-command-AHVUUK3I.js} +3 -3
  5. package/dist/{app-IVIYIONG.js → app-JPJHLNTW.js} +4 -4
  6. package/dist/{auto-update-worker-Y44TD6FD.js → auto-update-worker-73HBKKVT.js} +1 -1
  7. package/dist/{backlog-OQ5JJ6F6.js → backlog-NS2V3WKG.js} +1 -1
  8. package/dist/chunk-523KROGI.js +3 -0
  9. package/dist/{chunk-5Q2CH4E7.js → chunk-6NEQ6PZZ.js} +1 -1
  10. package/dist/{chunk-PWXXCLVZ.js → chunk-77DFFCZF.js} +1 -1
  11. package/dist/chunk-7CQKNDAE.js +20 -0
  12. package/dist/{company-E3VKXS75.js → chunk-A2MX47LP.js} +3 -25
  13. package/dist/{chunk-YVAN3H5W.js → chunk-BUZKNZ45.js} +3 -3
  14. package/dist/{chunk-REPGG75N.js → chunk-DU42VCON.js} +1 -1
  15. package/dist/{chunk-226G6ONZ.js → chunk-FII7YYYZ.js} +1 -1
  16. package/dist/chunk-IWIGE7U4.js +6 -0
  17. package/dist/{chunk-OK4ITT5Y.js → chunk-N4ZW4IVU.js} +2 -2
  18. package/dist/{chunk-M364RN3O.js → chunk-U6RXDDAB.js} +7 -7
  19. package/dist/{chunk-P3RQICAS.js → chunk-VQMR5UTD.js} +1 -1
  20. package/dist/chunk-WQRWQ7IM.js +94 -0
  21. package/dist/{chunk-KRTG6HSA.js → chunk-Z7GNYWCU.js} +1 -1
  22. package/dist/cli.js +41 -9
  23. package/dist/{commands-45VQS3LX.js → commands-M4B3MDUA.js} +3 -3
  24. package/dist/{commands-7ZRA2BHR.js → commands-RQQN7TXW.js} +2 -2
  25. package/dist/company-4O3HA6A2.js +26 -0
  26. package/dist/{completion-EFIZU6YO.js → completion-DGJH42YO.js} +1 -1
  27. package/dist/{department-G4H75GGM.js → department-XRIBRAQE.js} +1 -1
  28. package/dist/{inquiry-4SUKNVMY.js → inquiry-LOH3OKG3.js} +1 -1
  29. package/dist/{job-title-T3P3625A.js → job-title-EMRVK4RO.js} +1 -1
  30. package/dist/{leave-7MXKEOQ2.js → leave-BGDVEHQ7.js} +1 -1
  31. package/dist/{media-TZWSBMCP.js → media-OQRJYMJT.js} +1 -1
  32. package/dist/{notification-CA2LOXPS.js → notification-4DFO464P.js} +1 -1
  33. package/dist/{oneshot-Y7P6SMY2.js → oneshot-QLTXLUSM.js} +1 -1
  34. package/dist/{position-GDOY4TFK.js → position-3NRFWS3E.js} +1 -1
  35. package/dist/prospect-7L2UUNY3.js +107 -0
  36. package/dist/{registry-JYFK6PU7.js → registry-XL6Z2QCB.js} +1 -1
  37. package/dist/{render-K45EOLHX.js → render-W523YEYF.js} +1 -1
  38. package/dist/report-YIOEMKUU.js +73 -0
  39. package/dist/{run-MH6LOFQS.js → run-N5EIN5WQ.js} +2 -2
  40. package/dist/{sales-W2DV7FWL.js → sales-7DTKXDMD.js} +1 -1
  41. package/dist/{task-75VRLRYO.js → task-CBJOR2GF.js} +2 -2
  42. package/dist/{update-MAQJ6VWV.js → update-3D2CMAIV.js} +1 -1
  43. package/dist/{user-VRIXQF5Q.js → user-TNGMHVOJ.js} +1 -1
  44. package/dist/{workflow-OFA6XJOV.js → workflow-XDGT7L6G.js} +1 -1
  45. package/package.json +1 -1
  46. package/dist/chunk-4OKUCLIC.js +0 -3
  47. package/dist/chunk-CKGB7CLM.js +0 -6
  48. package/dist/chunk-FTYJZFEK.js +0 -10
  49. package/dist/chunk-RM4ECBIO.js +0 -80
@@ -0,0 +1,94 @@
1
+ import { createRequire as __twpCreateRequire } from 'node:module';
2
+ const require = __twpCreateRequire(import.meta.url);
3
+ import{ApiError}from"./chunk-7CQKNDAE.js";import{ResolveError,UUID_RE,isSafePathSegment,resolveProjectRef,safeProjectIdPolicy}from"./chunk-GMBJTG6A.js";import{loadProjectConfig,loadUserConfig}from"./chunk-4VZKNEVN.js";import{isTaskKey}from"./chunk-II5RVJQN.js";import{UsageError}from"./chunk-7WSNIXTQ.js";import{twpHomeDir}from"./chunk-RZVI6PMW.js";var BACKLOG_BASE_PATH="/api/v2/integrations/backlog";function assertBacklogPathSegment(value,label){if(!isSafePathSegment(value)){throw new ResolveError(`${label}\u3068\u3057\u3066 URL \u306B\u5165\u308C\u3089\u308C\u306A\u3044\u5024\u304C\u30B5\u30FC\u30D0\u304B\u3089\u8FD4\u308A\u307E\u3057\u305F: ${JSON.stringify(value)}\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}return value}function backlogSpacePath(spaceId,suffix=""){assertBacklogPathSegment(spaceId,
4
+ "Backlog \u30B9\u30DA\u30FC\u30B9 ID");return`${BACKLOG_BASE_PATH}/${encodeURIComponent(spaceId)}${suffix}`}function idString(value){if(typeof value==="number"&&Number.isFinite(value))return String(value);if(typeof value==="string"&&value.trim()!=="")return value.trim();return null}function text(value){return typeof value==="string"&&value.trim()!==""?value.trim():null}function backlogSpaceAliases(spaceUrl){const aliases=[];const trimmed=spaceUrl.trim().replace(/\/+$/,"");if(trimmed==="")return aliases;
5
+ let host;try{host=new URL(trimmed).host}catch{host=trimmed.replace(/^\/+/,"").split("/")[0]??""}if(host==="")return aliases;aliases.push(host);const label=host.split(".")[0];if(label!==void 0&&label!==""&&label!==host)aliases.push(label);return aliases}function backlogSpaceRow(row){const url=text(row["space_url"]);return{id:idString(row["id"]),name:url,code:null,aliases:url!==null?backlogSpaceAliases(url):[]}}function backlogProjectRow(row){return{id:idString(row["id"]),name:text(row["name"]),code:text(
6
+ row["projectKey"])}}function backlogStatusRow(row){return{id:idString(row["id"]),name:text(row["name"]),code:null}}function backlogUserRow(row){return{id:idString(row["id"]),name:text(row["name"]),code:null,aliases:[text(row["userId"]),text(row["mailAddress"])].filter(v=>v!==null)}}var DEFAULT_LOOKUP_SCOPE="\u3053\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8";function fold(value){return value.trim().toLowerCase()}function keysOf(ref){return[ref.id,ref.code,ref.name,...ref.aliases??[]].filter(v=>typeof v==="string"&&v.trim()!=="").map(fold)}function describe(ref){return ref.code!==void 0&&ref.code!==null&&ref.code!==""&&ref.code!==ref.name?`${ref.name}\uFF08${ref.code}\uFF09`:ref.name}async function suggest(input,candidates){try{const{default:fuzzysort}=await import("./fuzzysort-DFVKV4B4.js");
7
+ const indexed=candidates.map(ref=>({hay:keysOf(ref).join(" "),ref}));const hits=fuzzysort.go(input.trim(),indexed,{key:"hay",limit:5,threshold:-1e4});return hits.map(hit=>hit.obj.ref)}catch{return[]}}function listCandidates(candidates,limit=10){const shown=candidates.slice(0,limit).map(describe).join(" / ");return candidates.length>limit?`${shown} \u2026\uFF08\u5168 ${candidates.length} \u4EF6\uFF09`:shown}async function resolveNamed(input,candidates,ctx){const needle=fold(input);if(needle===""){
8
+ throw new UsageError(`${ctx.flag} \u306B\u7A7A\u306E\u5024\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093`)}if(candidates.length===0){throw new UsageError(`${ctx.scope??DEFAULT_LOOKUP_SCOPE}\u306B\u306F${ctx.label}\u304C1\u4EF6\u3082\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u307E\u305B\u3093\uFF08${ctx.flag} ${input}\uFF09`)}const hits=candidates.filter(ref=>keysOf(ref).includes(needle));const distinct=[...new Map(hits.map(ref=>[ref.id,ref])).values()];if(distinct.length===1)return distinct[0];if(distinct.
9
+ length>1){throw new UsageError(`${ctx.flag} \u306E\u300C${input}\u300D\u304C${ctx.label}${distinct.length}\u4EF6\u306B\u4E00\u81F4\u3057\u307E\u3059: ${listCandidates(distinct)}`,`\u3069\u308C\u304B1\u3064\u306B\u6C7A\u307E\u308B\u5024\uFF08ID \u304B\u30B3\u30FC\u30C9\uFF09\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}const near=await suggest(input,candidates);throw new UsageError(`${ctx.flag} \u306E\u300C${input}\u300D\u306B\u4E00\u81F4\u3059\u308B${ctx.label}\u304C\u3042\u308A\u307E\u305B\u3093`,
10
+ near.length>0?`\u3082\u3057\u304B\u3057\u3066: ${listCandidates(near,5)}\uFF08\u5168 ${candidates.length} \u4EF6\uFF09`:`\u6307\u5B9A\u3067\u304D\u308B${ctx.label}: ${listCandidates(candidates)}`)}function usable(value){return typeof value==="string"&&value.trim()!==""?value.trim():null}function resolveDefaultProject(explicit,profileName,env=process.env,cwd=process.cwd()){const fromFlag=usable(explicit);if(fromFlag!==null)return{ref:fromFlag,source:"flag"};const fromEnv=usable(env.TWP_PROJECT);if(fromEnv!==null)return{ref:fromEnv,source:"env"};const fromProjectConfig=usable(loadProjectConfig(cwd).project);if(fromProjectConfig!==null)return{ref:fromProjectConfig,source:"project-config"};const user=loadUserConfig(
11
+ env);const fromProfile=usable(user.profiles?.[profileName]?.project);if(fromProfile!==null)return{ref:fromProfile,source:"user-config"};const fromUser=usable(user.project);if(fromUser!==null)return{ref:fromUser,source:"user-config"};return null}function requireDefaultProject(explicit,profileName,env=process.env,cwd=process.cwd()){const resolved=resolveDefaultProject(explicit,profileName,env,cwd);if(resolved!==null)return resolved;throw new UsageError("\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093",
12
+ '--project <\u30B3\u30FC\u30C9|ID> \u3092\u4ED8\u3051\u308B\u304B\u3001TWP_PROJECT / .twp/config.json / ~/.twp/config.json \u306E "project" \u306B\u65E2\u5B9A\u3092\u8A2D\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002')}import crypto from"crypto";import fs from"fs";import path from"path";var DEFAULT_TTL_MS=10*60*1e3;var CACHE_VERSION=3;function cacheDir(env=process.env){return path.join(twpHomeDir(env),"cache")}function cacheFilePath(key,env=process.env){const digest=crypto.createHash("sha256").update(JSON.stringify([key.profile,key.scope,key.project??""])).digest("hex").slice(0,12);const label=key.scope.replace(/[^A-Za-z0-9._-]/g,"_").slice(0,40);return path.join(cacheDir(env),`${label}-${digest}.json`)}function sameKey(a,b){return a.profile===b.profile&&a.scope===b.scope&&(a.project??
13
+ "")===(b.project??"")}function isOursAndPrivate(target,check){if(process.platform==="win32")return true;try{const st=fs.lstatSync(target);if(st.isSymbolicLink())return false;const uid=process.getuid?.();if(uid!==void 0&&st.uid!==uid)return false;const forbidden=check==="file"?54:18;return(st.mode&forbidden)===0}catch{return false}}function isCacheLocationTrusted(env){const home=twpHomeDir(env);const dir=cacheDir(env);for(const target of[home,dir]){if(fs.existsSync(target)&&!isOursAndPrivate(target,
14
+ "dir"))return false}return true}function readCache(key,options={}){if(options.refresh===true)return null;const env=options.env??process.env;const file=cacheFilePath(key,env);if(!isCacheLocationTrusted(env)||!isOursAndPrivate(file,"file"))return null;let parsed;try{parsed=JSON.parse(fs.readFileSync(file,"utf8"))}catch{return null}if(parsed?.version!==CACHE_VERSION||!parsed.key||!sameKey(parsed.key,key))return null;const fetchedAt=Date.parse(parsed.fetched_at);if(!Number.isFinite(fetchedAt))return null;
15
+ const ttl=options.ttlMs??DEFAULT_TTL_MS;const now=(options.now??Date.now)();if(Math.abs(now-fetchedAt)>ttl)return null;return parsed.value}function writeCache(key,value,options={}){const env=options.env??process.env;const dir=cacheDir(env);const file=cacheFilePath(key,env);const body={version:CACHE_VERSION,key:{profile:key.profile,scope:key.scope,...key.project!==void 0?{project:key.project}:{}},fetched_at:new Date((options.now??Date.now)()).toISOString(),value};if(!isCacheLocationTrusted(env))return;
16
+ const tmp=`${file}.${process.pid}.tmp`;try{fs.mkdirSync(dir,{recursive:true,mode:448});fs.writeFileSync(tmp,`${JSON.stringify(body)}
17
+ `,{mode:384});fs.renameSync(tmp,file)}catch{try{fs.rmSync(tmp,{force:true})}catch{}}}function removeCache(key,options={}){const env=options.env??process.env;if(!isCacheLocationTrusted(env))return;try{fs.rmSync(cacheFilePath(key,env),{force:true})}catch{}}var SELF_REF="me";var PRIVATE_TASKS_PATH="/api/v2/tasks/private";var PRIVATE_MASTERS_CACHE_KEY="__private__";var BACKLOG_SPACES_CACHE_KEY="__backlog__";var BACKLOG_SCOPE_LABEL="\u3053\u306E\u63A5\u7D9A\u5148";var BACKLOG_PROJECT_SCOPE_LABEL="\u3053\u306E Backlog \u30D7\u30ED\u30B8\u30A7\u30AF\u30C8";var PRIVATE_SCOPE_LABEL="\u500B\u4EBA\u30BF\u30B9\u30AF";var TENANT_CACHE_KEY="__tenant__";var TENANT_SCOPE_LABEL="\u3053\u306E\u30C6\u30CA\u30F3\u30C8";var ADMIN_USERS_LIST_PATH="/api/v2/admin/users\
18
+ /list";var DEPARTMENTS_PATH="/api/v2/organization/departments";var POSITIONS_PATH="/api/v2/organization/positions";var JOB_TITLES_PATH="/api/v2/organization/job-titles";var INQUIRY_CATEGORIES_PATH="/api/v2/inquiries/categories";var NOTIFICATIONS_PATH="/api/v2/notifications";var NOTIFICATION_COUNT_MAX_PAGES=20;var NOTIFICATION_COUNT_PAGE_LIMIT=100;var WORKFLOWS_PATH="/api/v2/workflows";var REPORTS_PATH="/api/v2/reports";var SALES_ESTIMATES_PATH="/api/v2/sales/estimates";var SALES_INVOICES_PATH="/\
19
+ api/v2/sales/invoices";var SALES_COMPANIES_PATH="/api/v2/sales/companies";var CUSTOMERS_PATH="/api/v2/customers";var COMPANY_SEARCH_PAGE_LIMIT=100;var COMPANY_SEARCH_MAX_PAGES=10;var CUSTOMER_CHILDREN_PAGE_LIMIT=100;var PROSPECTS_PATH="/api/v2/prospects";var PROSPECT_SEARCH_PAGE_LIMIT=100;var PROSPECT_SEARCH_MAX_PAGES=10;function isExactNumericId(value){return/^[0-9]+$/.test(value)&&String(Number(value))===value}function exactCompanyId(ref,label){if(!isExactNumericId(ref.id)){throw new ResolveError(
20
+ `${label}\u4E00\u89A7\u306E id \u304C\u6574\u6570\u3067\u306F\u3042\u308A\u307E\u305B\u3093\uFF08${ref.id}\uFF09\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}return ref}var ORG_MASTER_LIMIT=1e3;var USER_LIST_MAX_PAGES=100;function isRecord(value){return typeof value==="object"&&value!==null&&!Array.isArray(value)}function str(value){return typeof value==="string"&&value.trim()!==""?value:null}function truthyFlag(value){return value===true||value===1}function rawGetVia(client){
21
+ return async path2=>{try{return{ok:true,status:200,json:await client.request("GET",path2),error:null}}catch(err){if(err instanceof ApiError){return{ok:false,status:err.status,json:err.body,error:err.message}}throw err}}}var TASK_MASTERS={status:{path:"task-statuses",envelope:"data",scope:"task-statuses",label:"\u30B9\u30C6\u30FC\u30BF\u30B9"},type:{path:"task-types",envelope:"data",scope:"task-types",label:"\u7A2E\u5225"},category:{path:"task-categories",envelope:"data",scope:"task-categories",label:"\
22
+ \u30AB\u30C6\u30B4\u30EA"},milestone:{path:"task-milestones",envelope:"data",scope:"task-milestones",label:"\u30DE\u30A4\u30EB\u30B9\u30C8\u30FC\u30F3"},label:{path:"task-labels",envelope:"items",scope:"task-labels",label:"\u30E9\u30D9\u30EB"}};var Resolver=class{constructor(client,options){this.client=client;this.options=options;this.get=rawGetVia(client)}client;options;get;privateMastersInFlight=null;async project(ref){const trimmed=ref.trim();if(trimmed==="")throw new UsageError("\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u30B3\u30FC\u30C9\u304B \
23
+ ID \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044");return resolveProjectRef(trimmed,this.get,safeProjectIdPolicy)}async taskByKey(key){const trimmed=key.trim();if(!isTaskKey(trimmed)){throw new UsageError(`\u30BF\u30B9\u30AF\u30AD\u30FC\u306E\u5F62\u5F0F\u3067\u306F\u3042\u308A\u307E\u305B\u3093: ${key}`,"\u30AD\u30FC\u306F\u300C\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u30B3\u30FC\u30C9-\u756A\u53F7\u300D\u306E\u5F62\u3067\u3059\uFF08\u4F8B: ABC-123\uFF09\u3002")}const res=await this.get(`/\
24
+ api/v2/tasks/resolve-by-key/${encodeURIComponent(trimmed)}`);if(res.status===404){throw new ResolveError(`\u30BF\u30B9\u30AF\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093: ${trimmed}\uFF08\u5B58\u5728\u3057\u306A\u3044\u304B\u3001\u95B2\u89A7\u3067\u304D\u308B\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306B\u3042\u308A\u307E\u305B\u3093\uFF09`,404)}if(!res.ok){throw new ResolveError(`\u30BF\u30B9\u30AF\u30AD\u30FC\u3092\u89E3\u6C7A\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F: ${trimmed}\uFF08HTTP ${res.
25
+ status}\uFF09\u3002\u63A5\u7D9A\u5148\u3068\u30ED\u30B0\u30A4\u30F3\u72B6\u614B\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`,res.status)}const body=isRecord(res.json)?res.json:{};const projectId=str(body["project_id"]);const task=body["task"];if(projectId===null||!isRecord(task)){throw new ResolveError("\u30BF\u30B9\u30AF\u30AD\u30FC\u89E3\u6C7A\u306E\u5FDC\u7B54\u306B project_id / task \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
26
+ res.status)}safeProjectIdPolicy.assertId(projectId);return{projectId,task}}async currentUser(){const res=await this.get("/api/v2/user");if(!res.ok){throw new ResolveError(`\u30ED\u30B0\u30A4\u30F3\u4E2D\u306E\u30E6\u30FC\u30B6\u30FC\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08HTTP ${res.status}\uFF09\u3002twp login \u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`,res.status)}const user=isRecord(res.json)?res.json["user"]:void 0;if(!isRecord(user)||str(user["\
27
+ id"])===null){throw new ResolveError("\u30E6\u30FC\u30B6\u30FC\u53D6\u5F97\u306E\u5FDC\u7B54\u306B user.id \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002",res.status)}return{id:user["id"],name:str(user["name"])??user["id"],email:str(user["email"])}}async status(projectId,input){return resolveNamed(this.applyAlias("status",input),await this.statuses(projectId),{flag:"--status",label:"\u30B9\u30C6\u30FC\u30BF\u30B9"})}async taskType(projectId,input){
28
+ return resolveNamed(this.applyAlias("type",input),await this.taskTypes(projectId),{flag:"--type",label:"\u7A2E\u5225"})}async assignee(projectId,input,flag="--assignee"){if(input.trim().toLowerCase()===SELF_REF)return this.self();const value=this.applyAlias("assignee",input);if(value.trim().toLowerCase()===SELF_REF)return this.self();return resolveNamed(value,await this.members(projectId),{flag,label:"\u30E1\u30F3\u30D0\u30FC"})}async self(){const me=await this.currentUser();return{id:me.id,name:me.
29
+ name,...me.email!==null?{aliases:[me.email]}:{}}}async defaultStatus(projectId){return requireDefault(await this.statuses(projectId),{flag:"--status",label:"\u30B9\u30C6\u30FC\u30BF\u30B9"})}async defaultTaskType(projectId){return requireDefault(await this.taskTypes(projectId),{flag:"--type",label:"\u7A2E\u5225"})}async statuses(projectId){return namedFromRows(await this.taskMasterRows("status",projectId),"\u30B9\u30C6\u30FC\u30BF\u30B9",codedMasterRow)}async taskTypes(projectId){return namedFromRows(
30
+ await this.taskMasterRows("type",projectId),"\u7A2E\u5225",codedMasterRow)}async taskMaster(kind,projectId,input,flag){const spec=TASK_MASTERS[kind];return resolveNamed(input,await this.taskMasterRefs(kind,projectId),{flag,label:spec.label})}async taskMasterRefs(kind,projectId){const spec=TASK_MASTERS[kind];return namedFromRows(await this.taskMasterRows(kind,projectId),spec.label,codedMasterRow)}async privateTaskMaster(envelope,input,flag,label){return resolveNamed(input,await this.privateMasters(
31
+ envelope,label),{flag,label,scope:PRIVATE_SCOPE_LABEL})}async taskMasterRows(kind,projectId){const spec=TASK_MASTERS[kind];return this.cached(spec.scope,projectId,async()=>rawListFrom(await this.get(`/api/v2/projects/${encodeURIComponent(projectId)}/${spec.path}`),spec.envelope,spec.label))}invalidateTaskMaster(kind,projectId){removeCache({profile:this.options.profile,scope:TASK_MASTERS[kind].scope,project:projectId},this.options.env!==void 0?{env:this.options.env}:{})}async privateStatuses(){return this.
32
+ privateMasters("statuses","\u30B9\u30C6\u30FC\u30BF\u30B9")}async privateTaskTypes(){return this.privateMasters("types","\u7A2E\u5225")}async privateStatus(input){return resolveNamed(this.applyAlias("status",input),await this.privateStatuses(),{flag:"--status",label:"\u30B9\u30C6\u30FC\u30BF\u30B9",scope:PRIVATE_SCOPE_LABEL})}async privateTaskType(input){return resolveNamed(this.applyAlias("type",input),await this.privateTaskTypes(),{flag:"--type",label:"\u7A2E\u5225",scope:PRIVATE_SCOPE_LABEL})}async privateDefaultStatus(){
33
+ return requireDefault(await this.privateStatuses(),{flag:"--status",label:"\u30B9\u30C6\u30FC\u30BF\u30B9",scope:PRIVATE_SCOPE_LABEL})}async privateDefaultTaskType(){return requireDefault(await this.privateTaskTypes(),{flag:"--type",label:"\u7A2E\u5225",scope:PRIVATE_SCOPE_LABEL})}async privateTask(ref){const trimmed=ref.trim();const res=await this.get(`${PRIVATE_TASKS_PATH}/${encodeURIComponent(trimmed)}`);if(res.status===404){throw new ResolveError(`\u500B\u4EBA\u30BF\u30B9\u30AF\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093: ${trimmed}`,
34
+ 404)}if(!res.ok){throw new ResolveError(`\u500B\u4EBA\u30BF\u30B9\u30AF\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F: ${trimmed}\uFF08HTTP ${res.status}\uFF09\u3002\u63A5\u7D9A\u5148\u3068\u30ED\u30B0\u30A4\u30F3\u72B6\u614B\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`,res.status)}const task=isRecord(res.json)?res.json["task"]:void 0;if(!isRecord(task)){throw new ResolveError("\u500B\u4EBA\u30BF\u30B9\u30AF\u306E\u5FDC\u7B54\u306B task \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
35
+ res.status)}return task}async primaryAssignment(userId){if(!isSafePathSegment(userId)){throw new ResolveError(`\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`)}const res=await this.get(`/api/v2/organization/users/${encodeURIComponent(userId)}/assignments/primary`);if(res.status===404)return null;if(!res.ok){throw new ResolveError(`\u73FE\u5728\u306E\u4E3B\u6240\u5C5E\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08HTTP ${res.
36
+ status}${res.error?`: ${res.error}`:""}\uFF09\u3002`,res.status)}const assignment=isRecord(res.json)?res.json["assignment"]:void 0;if(!isRecord(assignment)||typeof assignment["id"]!=="string"){throw new ResolveError("\u4E3B\u6240\u5C5E\u306E\u5FDC\u7B54\u306B assignment.id \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002",res.status)}return assignment}async assignments(userId){if(!isSafePathSegment(userId)){throw new ResolveError(
37
+ `\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`)}const res=await this.get(`/api/v2/organization/users/${encodeURIComponent(userId)}/assignments`);if(!res.ok){throw new ResolveError(`\u6240\u5C5E\u306E\u4E00\u89A7\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08HTTP ${res.status}${res.error?`: ${res.error}`:""}\uFF09\u3002`,res.status)}const list=isRecord(
38
+ res.json)?res.json["list"]:void 0;if(!Array.isArray(list)||!list.every(isRecord)){throw new ResolveError("\u6240\u5C5E\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",res.status)}return list}async privateMasters(envelope,label){return namedFromRows(await this.privateMasterRows(envelope,label),label,codedMasterRow)}async privateMasterRows(envelope,label){return this.cached(
39
+ `private-${envelope}`,PRIVATE_MASTERS_CACHE_KEY,async()=>rawListFrom(await this.privateMastersResponse(),envelope,label))}privateMastersResponse(){this.privateMastersInFlight??=this.get(`${PRIVATE_TASKS_PATH}/masters`);return this.privateMastersInFlight}async members(projectId){return this.cached("members",projectId,()=>this.namedList(`/api/v2/projects/${encodeURIComponent(projectId)}/members`,"list","\u30E1\u30F3\u30D0\u30FC",row=>({id:str(row["user_id"]),name:str(row["user_name"]),code:null,aliases:[
40
+ str(row["alias"]),str(row["user_email"])].filter(v=>v!==null)})))}async user(input,flag="<\u30E6\u30FC\u30B6\u30FC>"){const trimmed=input.trim();if(trimmed==="")throw new UsageError(`${flag} \u306B\u7A7A\u306E\u5024\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093`);if(trimmed.toLowerCase()===SELF_REF)return this.self();if(UUID_RE.test(trimmed))return{id:trimmed,name:trimmed};const searched=await this.searchUsers(trimmed);if(searched.refs!==null){const needle=trimmed.toLowerCase();const hits=searched.
41
+ refs.filter(ref=>[ref.id,ref.code,ref.name,...ref.aliases??[]].some(key=>typeof key==="string"&&key.trim().toLowerCase()===needle));if(hits.length>0)return resolveNamed(trimmed,hits,{flag,label:"\u30E6\u30FC\u30B6\u30FC",scope:TENANT_SCOPE_LABEL})}try{return await resolveNamed(trimmed,await this.visibleUsers(),{flag,label:"\u30E6\u30FC\u30B6\u30FC",scope:TENANT_SCOPE_LABEL})}catch(err){if(err instanceof UsageError&&searched.failure!==null){throw new UsageError(`${err.message}\uFF08\u30AD\u30FC\u30EF\u30FC\u30C9\u691C\u7D22\u304C ${searched.
42
+ failure} \u3067\u5931\u6557\u3057\u305F\u305F\u3081\u3001\u8868\u793A\u5BFE\u8C61\u306E\u30E6\u30FC\u30B6\u30FC\u3060\u3051\u3067\u7167\u5408\u3057\u307E\u3057\u305F\uFF09`,err.hint)}throw err}}async searchUsers(keyword){const query=new URLSearchParams({keyword,include_hidden:"true",limit:"100"});const res=await this.get(`${ADMIN_USERS_LIST_PATH}?${query.toString()}`);if(!res.ok)return{refs:null,failure:`HTTP ${res.status}`};return{refs:namedFromRows(rawListFrom(res,"items","\u30E6\u30FC\u30B6\u30FC"),
43
+ "\u30E6\u30FC\u30B6\u30FC",userRow),failure:null}}async visibleUsers(){return this.cached("admin-users-visible",TENANT_CACHE_KEY,async()=>{const rows=[];let cursor=null;for(let page=0;;page++){if(page>=USER_LIST_MAX_PAGES){throw new ResolveError(`\u30E6\u30FC\u30B6\u30FC\u4E00\u89A7\u304C ${USER_LIST_MAX_PAGES} \u30DA\u30FC\u30B8\u3092\u8D85\u3048\u305F\u305F\u3081\u3001\u540D\u524D\u3067\u89E3\u6C7A\u3067\u304D\u307E\u305B\u3093\u3002ID \u304B\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}
44
+ const query=new URLSearchParams({limit:"100"});if(cursor!==null)query.set("cursor",cursor);const res=await this.get(`${ADMIN_USERS_LIST_PATH}?${query.toString()}`);rows.push(...rawListFrom(res,"items","\u30E6\u30FC\u30B6\u30FC"));const body=isRecord(res.json)?res.json:{};if(body["has_more"]===false)break;const next=str(body["next_cursor"]);if(body["has_more"]!==true||next===null){throw new ResolveError("\u30E6\u30FC\u30B6\u30FC\u4E00\u89A7\u306E\u5FDC\u7B54\u306B has_more / next_cursor \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
45
+ res.status)}cursor=next}return namedFromRows(rows,"\u30E6\u30FC\u30B6\u30FC",userRow)})}async department(input,flag="--department"){return resolveNamed(input,await this.departments(),{flag,label:"\u90E8\u7F72",scope:TENANT_SCOPE_LABEL})}async position(input,flag="--position"){return resolveNamed(input,await this.positions(),{flag,label:"\u5F79\u8077",scope:TENANT_SCOPE_LABEL})}async jobTitle(input,flag="--job-title"){return resolveNamed(input,await this.jobTitles(),{flag,label:"\u8077\u4F4D",scope:TENANT_SCOPE_LABEL})}async departments(){
46
+ return this.cached("departments",TENANT_CACHE_KEY,async()=>namedFromRows(masterList(await this.get(`${DEPARTMENTS_PATH}?limit=${ORG_MASTER_LIMIT}`),"\u90E8\u7F72"),"\u90E8\u7F72",codedMasterRow))}async positions(){return this.cached("positions",TENANT_CACHE_KEY,async()=>namedFromRows(masterList(await this.get(`${POSITIONS_PATH}?limit=${ORG_MASTER_LIMIT}`),"\u5F79\u8077"),"\u5F79\u8077",codedMasterRow))}async jobTitles(){return this.cached("job-titles",TENANT_CACHE_KEY,async()=>namedFromRows(masterList(
47
+ await this.get(`${JOB_TITLES_PATH}?limit=${ORG_MASTER_LIMIT}`),"\u8077\u4F4D"),"\u8077\u4F4D",codedMasterRow))}async workflow(input,flag="<\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC>",category){return resolveNamed(input,await this.applicableWorkflows(category),{flag,label:category===void 0?"\u7533\u8ACB\u3067\u304D\u308B\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC":`\u7533\u8ACB\u3067\u304D\u308B\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\uFF08${category}\uFF09`,scope:TENANT_SCOPE_LABEL})}async applicableWorkflows(category){
48
+ const path2=category===void 0?`${WORKFLOWS_PATH}/applicable`:`${WORKFLOWS_PATH}/applicable/${encodeURIComponent(category)}`;const scope=category===void 0?"workflows-applicable":`workflows-applicable-${category}`;return this.cached(scope,TENANT_CACHE_KEY,async()=>{const res=await this.get(path2);const rows=rawListFrom(res,"list","\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC");const sum=isRecord(res.json)?res.json["sum"]:void 0;if(typeof sum==="number"&&sum>rows.length){throw new ResolveError(`\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u4E00\u89A7\u304C ${sum}\
49
+ \u4EF6\u4E2D ${rows.length} \u4EF6\u3067\u5207\u308A\u8A70\u3081\u3089\u308C\u305F\u305F\u3081\u3001\u540D\u524D\u3067\u89E3\u6C7A\u3067\u304D\u307E\u305B\u3093\u3002ID \u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002`,res.status)}return namedFromRows(rows,"\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC",row=>({id:str(row["id"]),name:str(row["name"]),code:null}))})}async reportFormat(input,flag="--format",usableOnly=false){const load=async()=>rawListFrom(await this.get(`${REPORTS_PATH}/format\
50
+ s${usableOnly?"?include_unavailable=false":""}`),"formats","\u30EC\u30DD\u30FC\u30C8\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8");const rows=usableOnly?await load():await this.cached("report-formats",TENANT_CACHE_KEY,load);return resolveNamed(input,namedFromRows(rows,"\u30EC\u30DD\u30FC\u30C8\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8",row=>({id:str(row["id"]),name:str(row["name"]),code:str(row["code"])})),{flag,label:usableOnly?"\u4F5C\u6210\u3067\u304D\u308B\u30EC\u30DD\u30FC\u30C8\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8":
51
+ "\u30EC\u30DD\u30FC\u30C8\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8",scope:TENANT_SCOPE_LABEL})}async company(input,options){const trimmed=input.trim();if(trimmed==="")throw new UsageError(`${options.flag} \u306B\u7A7A\u306E\u5024\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093`);if(isExactNumericId(trimmed))return options.mustExist===true?this.companyById(trimmed,options):{id:trimmed,name:trimmed};if(/^[0-9]+$/.test(trimmed)){throw new UsageError(`${options.flag} \u306E ID \u306F\u5148\u982D\u306B 0 \u3092\u4ED8\u3051\u306A\u3044\u6570\u5B57\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044: ${trimmed}`)}
52
+ const label=options.source==="customer"?"\u9867\u5BA2":"\u53D6\u5F15\u5148";const base=options.source==="customer"?CUSTOMERS_PATH:SALES_COMPANIES_PATH;const rows=[];let truncated=false;for(let page=1;;page+=1){const path2=`${base}?keyword=${encodeURIComponent(trimmed)}&sort_column=id&sort_direction=desc&page_limit=${COMPANY_SEARCH_PAGE_LIMIT}&page_no=${page}`;const res=await this.get(path2);if(res.status===401||res.status===403){throw new ApiError(res.status,isRecord(res.json)?res.json:null,"GET",
53
+ path2)}for(const row of rawListFrom(res,"list",label))rows.push(row);const pageSum=isRecord(res.json)?res.json["page_sum"]:void 0;if(!Number.isInteger(pageSum)){throw new ResolveError(`${label}\u4E00\u89A7\u306E\u5FDC\u7B54\u306B page_sum \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`,res.status)}if(page>=pageSum)break;if(page>=COMPANY_SEARCH_MAX_PAGES){truncated=true;break}}const listCommand=options.source==="customer"?"\
54
+ twp customer list":"twp company list";if(rows.length===0){throw new UsageError(`${options.flag} \u306E\u300C${trimmed}\u300D\u3092\u540D\u524D\u306B\u542B\u3080${label}\u304C\u3042\u308A\u307E\u305B\u3093`,`${label}\u306F ID \u3067\u3082\u6307\u5B9A\u3067\u304D\u307E\u3059\uFF08${listCommand} --keyword <\u8A9E> \u306E id \u5217\uFF09\u3002`)}const refs=namedFromRows(rows,label,row=>({id:str(row["id"]),name:str(row["company_name"]),code:null,aliases:[str(row["company_short_name"]),str(row["compan\
55
+ y_name_kana"])].filter(v=>v!==null)}));const needle=trimmed.toLowerCase();const hits=refs.filter(ref=>[ref.name,...ref.aliases??[]].some(key=>key.trim().toLowerCase()===needle));const ctx={flag:options.flag,label,scope:TENANT_SCOPE_LABEL};if(truncated){throw new UsageError(`${options.flag} \u306E\u300C${trimmed}\u300D\u3092\u540D\u524D\u306B\u542B\u3080${label}\u304C\u591A\u3059\u304E\u308B\u305F\u3081\uFF08${COMPANY_SEARCH_MAX_PAGES*COMPANY_SEARCH_PAGE_LIMIT} \u4EF6\u3092\u8D85\u3048\u3066\uFF09\u4E00\u610F\u306B\u6C7A\u3081\u3089\u308C\u307E\u305B\u3093`,
56
+ `ID \u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08${listCommand} --keyword <\u8A9E> \u306E id \u5217\uFF09\u3002`)}if(hits.length>0)return exactCompanyId(await resolveNamed(trimmed,hits,ctx),label);return exactCompanyId(await resolveNamed(trimmed,refs,ctx),label)}async companyById(id,options){const label=options.source==="customer"?"\u9867\u5BA2":"\u53D6\u5F15\u5148";const path2=`${options.source==="customer"?CUSTOMERS_PATH:SALES_COMPANIES_PATH}/${id}`;const res=await this.get(path2);
57
+ if(res.status===401||res.status===403){throw new ApiError(res.status,isRecord(res.json)?res.json:null,"GET",path2)}if(res.status===404)throw new UsageError(`${options.flag} \u306E ID ${id} \u306E${label}\u306F\u3042\u308A\u307E\u305B\u3093`);if(!res.ok)throw new ResolveError(`${label}\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08HTTP ${res.status}\uFF09\u3002`,res.status);const data=isRecord(res.json)?res.json["data"]:void 0;const name=isRecord(data)?str(data["company_n\
58
+ ame"]):null;if(!isRecord(data)||data["id"]!==id||name===null){throw new ResolveError(`${label}\u306E\u5FDC\u7B54\u306B data.id / company_name \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`,res.status)}return{id,name}}async companyRecord(id){if(!isExactNumericId(id))throw new UsageError(`\u53D6\u5F15\u5148\u306E ID \u306F\u5148\u982D\u306B 0 \u3092\u4ED8\u3051\u306A\u3044\u6570\u5B57\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044: ${id}`);
59
+ const path2=`${SALES_COMPANIES_PATH}/${id}`;const res=await this.get(path2);if(res.status===401||res.status===403){throw new ApiError(res.status,isRecord(res.json)?res.json:null,"GET",path2)}if(res.status===404)return null;if(!res.ok)throw new ResolveError(`\u53D6\u5F15\u5148\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08HTTP ${res.status}\uFF09\u3002`,res.status);const data=isRecord(res.json)?res.json["data"]:void 0;if(!isRecord(res.json)||res.json["result"]!==true||!isRecord(
60
+ data)||data["id"]!==id){throw new ResolveError("\u53D6\u5F15\u5148\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",res.status)}return data}async reportRecord(kind,id,flag){const label=kind==="format"?"\u30EC\u30DD\u30FC\u30C8\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8":"\u30EC\u30DD\u30FC\u30C8";if(!isSafePathSegment(id))throw new UsageError(`${flag} \u306E${label} ID \u3068\u3057\u3066\u4F7F\u3048\u306A\u3044\u5024\u3067\u3059: ${id}`);
61
+ const path2=`${REPORTS_PATH}${kind==="format"?"/formats":""}/${encodeURIComponent(id)}`;const res=await this.get(path2);if(res.status===401||res.status===403){throw new ApiError(res.status,isRecord(res.json)?res.json:null,"GET",path2)}if(res.status===404)throw new UsageError(`${flag} \u306E ID ${id} \u306E${label}\u306F\u3042\u308A\u307E\u305B\u3093`);if(!res.ok)throw new ResolveError(`${label}\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08HTTP ${res.status}\uFF09\u3002`,
62
+ res.status);const data=isRecord(res.json)?res.json[kind]:void 0;if(!isRecord(res.json)||res.json["result"]!==true||!isRecord(data)||data["id"]!==id){throw new ResolveError(`${label}\u306E\u5FDC\u7B54\u306B ${kind}.id \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`,res.status)}return data}async customerChildren(companyId,kind){if(!isExactNumericId(companyId))throw new UsageError(`\u53D6\u5F15\u5148\u306E ID \u306F\u5148\u982D\u306B 0 \u3092\u4ED8\u3051\u306A\u3044\u6570\u5B57\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044: ${companyId}`);
63
+ const label=kind==="contacts"?"\u62C5\u5F53\u8005":"\u5BFE\u5FDC\u5C65\u6B74";const rows=[];let cursor=null;const seenCursors=new Set;for(;;){const query=`limit=${CUSTOMER_CHILDREN_PAGE_LIMIT}${cursor===null?"":`&cursor=${encodeURIComponent(cursor)}`}`;const path2=`${CUSTOMERS_PATH}/${companyId}/${kind}?${query}`;const res=await this.get(path2);if(res.status===401||res.status===403){throw new ApiError(res.status,isRecord(res.json)?res.json:null,"GET",path2)}rows.push(...rawListFrom(res,"items",label));
64
+ const hasMore=isRecord(res.json)?res.json["has_more"]:void 0;const next=isRecord(res.json)?res.json["next_cursor"]:void 0;if(hasMore===false)return rows;if(hasMore!==true||typeof next!=="string"||next===""){throw new ResolveError(`${label}\u4E00\u89A7\u306E\u5FDC\u7B54\u306E has_more / next_cursor \u304C\u8AAD\u3081\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`,res.status)}if(seenCursors.has(next))throw new ResolveError(`${label}\u4E00\u89A7\u306E next_c\
65
+ ursor \u304C\u9032\u307F\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`,res.status);seenCursors.add(next);cursor=next}}async featureLevel(feature){const res=await this.get("/api/v2/user");if(res.status===401||res.status===403){throw new ApiError(res.status,isRecord(res.json)?res.json:null,"GET","/api/v2/user")}if(!res.ok)throw new ResolveError(`\u30ED\u30B0\u30A4\u30F3\u4E2D\u306E\u30E6\u30FC\u30B6\u30FC\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08HTTP ${res.
66
+ status}\uFF09\u3002`,res.status);const user=isRecord(res.json)?res.json["user"]:void 0;if(!isRecord(user))throw new ResolveError("\u30E6\u30FC\u30B6\u30FC\u53D6\u5F97\u306E\u5FDC\u7B54\u306B user \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002",res.status);const permissions=user["feature_permissions"];const level=isRecord(permissions)?permissions[feature]:void 0;return{isAdmin:user["is_admin"]===true,level:typeof level==="s\
67
+ tring"?level:null}}async prospect(input,flag="<\u30A2\u30D7\u30ED\u30FC\u30C1\u5148>"){const trimmed=input.trim();if(trimmed==="")throw new UsageError(`${flag} \u306B\u7A7A\u306E\u5024\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093`);if(UUID_RE.test(trimmed))return{id:trimmed,name:trimmed};const rows=[];let cursor=null;let truncated=false;const seenCursors=new Set;for(let page=1;;page+=1){const query=`keyword=${encodeURIComponent(trimmed)}&limit=${PROSPECT_SEARCH_PAGE_LIMIT}${cursor===null?"":`\
68
+ &cursor=${encodeURIComponent(cursor)}`}`;const path2=`${PROSPECTS_PATH}?${query}`;const res=await this.get(path2);if(res.status===401||res.status===403){throw new ApiError(res.status,isRecord(res.json)?res.json:null,"GET",path2)}rows.push(...rawListFrom(res,"items","\u30A2\u30D7\u30ED\u30FC\u30C1\u5148"));const hasMore=isRecord(res.json)?res.json["has_more"]:void 0;const next=isRecord(res.json)?res.json["next_cursor"]:void 0;if(hasMore===false)break;if(hasMore!==true||typeof next!=="string"||next===
69
+ ""||seenCursors.has(next)){throw new ResolveError("\u30A2\u30D7\u30ED\u30FC\u30C1\u5148\u4E00\u89A7\u306E\u5FDC\u7B54\u306E has_more / next_cursor \u304C\u8AAD\u3081\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002",res.status)}if(page>=PROSPECT_SEARCH_MAX_PAGES){truncated=true;break}seenCursors.add(next);cursor=next}const needle=trimmed.toLowerCase();const hits=rows.filter(row=>str(row["company_name"])?.trim().toLowerCase()===needle);if(hits.
70
+ some(row=>str(row["id"])===null))throw new ResolveError("\u30A2\u30D7\u30ED\u30FC\u30C1\u5148\u4E00\u89A7\u306E\u884C\u306B id \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002");const ids=[...new Set(hits.map(row=>str(row["id"])))];if(truncated){throw new UsageError(`${flag} \u306E\u300C${trimmed}\u300D\u306B\u5F53\u305F\u308B\u30A2\u30D7\u30ED\u30FC\u30C1\u5148\u304C\u591A\u3059\u304E\u308B\u305F\u3081\uFF08${PROSPECT_SEARCH_MAX_PAGES*
71
+ PROSPECT_SEARCH_PAGE_LIMIT} \u4EF6\u3092\u8D85\u3048\u3066\uFF09\u4E00\u610F\u306B\u6C7A\u3081\u3089\u308C\u307E\u305B\u3093`,"ID \u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08twp prospect list --keyword <\u8A9E> \u306E id \u5217\uFF09\u3002")}if(ids.length===1&&ids[0]!==null&&ids[0]!==void 0){if(!isSafePathSegment(ids[0]))throw new ResolveError(`\u30B5\u30FC\u30D0\u304C\u8FD4\u3057\u305F\u30A2\u30D7\u30ED\u30FC\u30C1\u5148\u306E id \u3092\u30D1\u30B9\u306B\u4F7F\u3048\u307E\u305B\u3093: ${ids[0]}\
72
+ \u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`);return{id:ids[0],name:trimmed}}if(ids.length>1){const shown=hits.slice(0,10).map(row=>`${String(row["id"])}\uFF08${[str(row["contact_department"]),str(row["contact_name"])].filter(v=>v!==null).join(" ")||"\u9023\u7D61\u5148\u306A\u3057"}\uFF09`).join(" / ");throw new UsageError(`${flag} \u306E\u300C${trimmed}\u300D\u304C\u30A2\u30D7\u30ED\u30FC\u30C1\u5148${ids.length}\u4EF6\u306B\u4E00\u81F4\u3057\u307E\u3059: ${shown}${hits.
73
+ length>10?` \u2026\uFF08\u5168 ${hits.length} \u4EF6\uFF09`:""}`,"\u540C\u3058\u4F01\u696D\u540D\u306E\u884C\u304C\u8907\u6570\u3042\u308A\u307E\u3059\u3002ID \u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08twp prospect list --keyword <\u8A9E> \u306E id \u5217\uFF09\u3002")}throw new UsageError(`${flag} \u306E\u300C${trimmed}\u300D\u3068\u4F01\u696D\u540D\u304C\u5B8C\u5168\u306B\u4E00\u81F4\u3059\u308B\u30A2\u30D7\u30ED\u30FC\u30C1\u5148\u304C\u3042\u308A\u307E\u305B\u3093`,"\u4F5C\u6210\u3057\u305F\u76F4\u5F8C\u306F\u691C\
74
+ \u7D22\u306B\u51FA\u306A\u3044\u3053\u3068\u304C\u3042\u308A\u307E\u3059\u3002ID \u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08twp prospect list --keyword <\u8A9E> \u306E id \u5217\uFF09\u3002")}async prospectPromotionPreview(id){if(!isSafePathSegment(id))throw new UsageError(`\u30A2\u30D7\u30ED\u30FC\u30C1\u5148\u306E ID \u3068\u3057\u3066\u4F7F\u3048\u306A\u3044\u6587\u5B57\u304C\u542B\u307E\u308C\u3066\u3044\u307E\u3059: ${id}`);const path2=`${PROSPECTS_PATH}/${encodeURIComponent(
75
+ id)}/promotion-preview`;const res=await this.get(path2);if(res.status===401||res.status===403){throw new ApiError(res.status,isRecord(res.json)?res.json:null,"GET",path2)}if(res.status===404)throw new UsageError(`ID ${id} \u306E\u30A2\u30D7\u30ED\u30FC\u30C1\u5148\u306F\u3042\u308A\u307E\u305B\u3093`,"twp prospect list \u3067 ID \u3092\u78BA\u304B\u3081\u3066\u304F\u3060\u3055\u3044\u3002");if(!res.ok)throw new ResolveError(`\u6607\u683C\u306E\u4E0B\u898B\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08HTTP ${res.
76
+ status}\uFF09\u3002`,res.status);const body=res.json;if(!isRecord(body)||body["result"]!==true||typeof body["already_promoted"]!=="boolean"||!Array.isArray(body["customer_matches"])){throw new ResolveError("\u6607\u683C\u306E\u4E0B\u898B\u306E\u5FDC\u7B54\u306B already_promoted / customer_matches \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002",res.status)}return body}async inquiryCategory(input,flag="<\u30AB\u30C6\u30B4\u30EA>"){
77
+ const rows=await this.inquiryCategoryRows();return resolveNamed(input,namedFromRows(rows,"\u554F\u3044\u5408\u308F\u305B\u30AB\u30C6\u30B4\u30EA",inquiryCategoryRow),{flag,label:"\u554F\u3044\u5408\u308F\u305B\u30AB\u30C6\u30B4\u30EA",scope:TENANT_SCOPE_LABEL})}async inquiryCategoryRows(options={}){const load=async()=>rawListFrom(await this.get(INQUIRY_CATEGORIES_PATH),"list","\u554F\u3044\u5408\u308F\u305B\u30AB\u30C6\u30B4\u30EA");if(options.fresh!==true)return this.cached("inquiry-categories",
78
+ TENANT_CACHE_KEY,load);const rows=await load();writeCache({profile:this.options.profile,scope:"inquiry-categories",project:TENANT_CACHE_KEY},rows,{...this.options.env!==void 0?{env:this.options.env}:{},...this.options.ttlMs!==void 0?{ttlMs:this.options.ttlMs}:{},...this.options.now!==void 0?{now:this.options.now}:{}});return rows}invalidateInquiryCategories(){removeCache({profile:this.options.profile,scope:"inquiry-categories",project:TENANT_CACHE_KEY},this.options.env!==void 0?{env:this.options.
79
+ env}:{})}async notificationCategory(input,flag="--category"){const rows=await this.cached("notification-categories",TENANT_CACHE_KEY,async()=>rawListFrom(await this.get(`${NOTIFICATIONS_PATH}/categories`),"categories","\u901A\u77E5\u30AB\u30C6\u30B4\u30EA"));return resolveNamed(input,namedFromRows(rows,"\u901A\u77E5\u30AB\u30C6\u30B4\u30EA",notificationCategoryRow),{flag,label:"\u901A\u77E5\u30AB\u30C6\u30B4\u30EA",scope:TENANT_SCOPE_LABEL})}async notificationUnreadCount(category){if(category===
80
+ null){const res=await this.get(`${NOTIFICATIONS_PATH}/counts`);const count=res.ok&&isRecord(res.json)?res.json["unread_count"]:void 0;if(typeof count!=="number"||!Number.isSafeInteger(count)||count<0){throw new ResolveError(res.ok?"\u901A\u77E5\u4EF6\u6570\u306E\u5FDC\u7B54\u306B unread_count \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002":`\u901A\u77E5\u306E\u672A\u8AAD\u4EF6\u6570\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08HTTP ${res.
81
+ status}\uFF09\u3002\u63A5\u7D9A\u5148\u3068\u30ED\u30B0\u30A4\u30F3\u72B6\u614B\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`,res.status)}return{count,complete:true}}let total=0;let cursor=null;for(let page=0;page<NOTIFICATION_COUNT_MAX_PAGES;page++){const query=new URLSearchParams({read_status:"unread",category,limit:String(NOTIFICATION_COUNT_PAGE_LIMIT)});if(cursor!==null)query.set("cursor",cursor);const res=await this.get(`${NOTIFICATIONS_PATH}?${query.toString()}`);total+=rawListFrom(
82
+ res,"list","\u901A\u77E5").length;const body=res.json;if(body["has_more"]===false)return{count:total,complete:true};if(body["has_more"]!==true||typeof body["next_cursor"]!=="string"||body["next_cursor"]===""){throw new ResolveError("\u901A\u77E5\u4E00\u89A7\u306E\u5FDC\u7B54\u306E has_more / next_cursor \u3092\u89E3\u91C8\u3067\u304D\u307E\u305B\u3093\u3002\u672A\u8AAD\u4EF6\u6570\u3092\u6570\u3048\u3089\u308C\u306A\u3044\u305F\u3081\u4E2D\u65AD\u3057\u307E\u3057\u305F\u3002",res.status)}cursor=
83
+ body["next_cursor"]}return{count:total,complete:false}}async namedList(path2,envelope,label,map){return namedListFrom(await this.get(path2),envelope,label,map)}async cached(scope,projectId,load){const key={profile:this.options.profile,scope,project:projectId};const options={...this.options.env!==void 0?{env:this.options.env}:{},refresh:this.options.refresh,...this.options.ttlMs!==void 0?{ttlMs:this.options.ttlMs}:{},...this.options.now!==void 0?{now:this.options.now}:{}};const hit=readCache(key,
84
+ options);if(hit!==null&&Array.isArray(hit))return hit;const fresh=await load();writeCache(key,fresh,options);return fresh}applyAlias(kind,input){const table=this.options.aliases?.[kind];if(table===void 0)return input;const needle=input.trim().toLowerCase();for(const[from,to]of Object.entries(table)){if(from.trim().toLowerCase()===needle&&typeof to==="string"&&to.trim()!=="")return to}return input}async backlogSpaces(){return this.cached("backlog-spaces",BACKLOG_SPACES_CACHE_KEY,()=>this.namedList(
85
+ `${BACKLOG_BASE_PATH}/spaces`,"spaces","Backlog \u30B9\u30DA\u30FC\u30B9",backlogSpaceRow))}async backlogSpace(ref){return resolveNamed(ref,await this.backlogSpaces(),{flag:"--space",label:"Backlog \u30B9\u30DA\u30FC\u30B9",scope:BACKLOG_SCOPE_LABEL})}async backlogDefaultSpace(){const spaces=await this.backlogSpaces();if(spaces.length===1)return spaces[0];if(spaces.length===0){throw new UsageError("Backlog \u30B9\u30DA\u30FC\u30B9\u304C1\u4EF6\u3082\u767B\u9332\u3055\u308C\u3066\u3044\u307E\u305B\u3093",
86
+ "TWP \u306E\u5916\u90E8\u9023\u643A\u8A2D\u5B9A\u3067 Backlog \u30B9\u30DA\u30FC\u30B9\u3092\u767B\u9332\u3057\u3066\u304F\u3060\u3055\u3044\uFF08twp backlog space list \u3067\u78BA\u8A8D\u3067\u304D\u307E\u3059\uFF09\u3002")}throw new UsageError(`Backlog \u30B9\u30DA\u30FC\u30B9\u304C ${spaces.length} \u4EF6\u767B\u9332\u3055\u308C\u3066\u3044\u308B\u305F\u3081\u3001--space \u30671\u3064\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044`,`twp backlog space list \u3067 ID \u3068\u30B9\u30DA\u30FC\u30B9URL\u3092\u78BA\u8A8D\u3067\u304D\u307E\u3059\u3002`)}async backlogProjects(spaceId){
87
+ return this.cached("backlog-projects",spaceId,()=>this.namedList(backlogSpacePath(spaceId,"/projects"),"projects","Backlog \u30D7\u30ED\u30B8\u30A7\u30AF\u30C8",backlogProjectRow))}async backlogStatuses(spaceId,projectId){return this.cached("backlog-statuses",`${spaceId}/${projectId}`,()=>this.namedList(backlogSpacePath(spaceId,`/projects/${encodeURIComponent(assertBacklogPathSegment(projectId,"Backlog \u30D7\u30ED\u30B8\u30A7\u30AF\u30C8 ID"))}/statuses`),"statuses","Backlog \u30B9\u30C6\u30FC\u30BF\u30B9",
88
+ backlogStatusRow))}async backlogUsers(spaceId,projectId){return this.cached("backlog-users",`${spaceId}/${projectId}`,()=>this.namedList(backlogSpacePath(spaceId,`/projects/${encodeURIComponent(assertBacklogPathSegment(projectId,"Backlog \u30D7\u30ED\u30B8\u30A7\u30AF\u30C8 ID"))}/users`),"users","Backlog \u30E6\u30FC\u30B6\u30FC",backlogUserRow))}get apiClient(){return this.client}};function rawListFrom(res,envelope,label){if(!res.ok){throw new ResolveError(`${label}\u306E\u4E00\u89A7\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08HTTP ${res.
89
+ status}\uFF09\u3002\u63A5\u7D9A\u5148\u3068\u30ED\u30B0\u30A4\u30F3\u72B6\u614B\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`,res.status)}const list=isRecord(res.json)?res.json[envelope]:void 0;if(!Array.isArray(list)){throw new ResolveError(`${label}\u4E00\u89A7\u306E\u5FDC\u7B54\u306B ${envelope} \u914D\u5217\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`,res.status)}return list.map((row,index)=>{if(!isRecord(
90
+ row)){throw new ResolveError(`${label}\u4E00\u89A7\u306E ${index+1} \u4EF6\u76EE\u304C\u60F3\u5B9A\u306E\u5F62\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`,res.status)}return row})}function userRow(row){const email=str(row["email"]);const employeeCode=str(row["employee_code"]);return{id:str(row["user_id"]),name:str(row["user_name"]),code:employeeCode??email,aliases:[email,employeeCode].filter(v=>v!==null)}}function notificationCategoryRow(row){
91
+ return{id:str(row["key"]),name:str(row["name"]),code:str(row["key"])}}function inquiryCategoryRow(row){return{id:str(row["id"]),name:str(row["title"]),code:str(row["category_code"])}}function masterList(res,label){const rows=rawListFrom(res,"list",label);const count=isRecord(res.json)?res.json["count"]:void 0;if(typeof count==="number"&&count>rows.length){throw new ResolveError(`${label}\u4E00\u89A7\u304C ${count} \u4EF6\u4E2D ${rows.length} \u4EF6\u3067\u5207\u308A\u8A70\u3081\u3089\u308C\u305F\u305F\u3081\u3001\u540D\u524D\u3067\u89E3\u6C7A\u3067\u304D\u307E\u305B\u3093\u3002ID \u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002`,
92
+ res.status)}return rows}function codedMasterRow(row){return{id:str(row["id"]),name:str(row["name"]),code:str(row["code"]),isDefault:truthyFlag(row["is_default"])}}function namedListFrom(res,envelope,label,map){return namedFromRows(rawListFrom(res,envelope,label),label,map,res.status??void 0)}function namedFromRows(rows,label,map,status=200){return rows.map((row,index)=>{const mapped=map(row);if(mapped.id===null||mapped.name===null){throw new ResolveError(`${label}\u4E00\u89A7\u306E ${index+1} \u4EF6\u76EE\
93
+ \u306B id / \u540D\u524D\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`,status)}return{id:mapped.id,name:mapped.name,...mapped.code!==void 0?{code:mapped.code}:{},...mapped.aliases!==void 0&&mapped.aliases.length>0?{aliases:mapped.aliases}:{},...mapped.isDefault!==void 0?{isDefault:mapped.isDefault}:{}}})}function requireDefault(candidates,ctx){const hit=candidates.find(ref=>ref.isDefault===true);if(hit!==void 0)return hit;
94
+ throw new UsageError(`${ctx.flag} \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08${ctx.scope??DEFAULT_LOOKUP_SCOPE}\u306B\u306F\u65E2\u5B9A\u306E${ctx.label}\u304C\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093\uFF09`,`\u6307\u5B9A\u3067\u304D\u308B${ctx.label}: ${candidates.map(ref=>ref.name).join(" / ")}\uFF08\u53E4\u3044\u30AD\u30E3\u30C3\u30B7\u30E5\u304C\u6B8B\u3063\u3066\u3044\u308B\u5834\u5408\u306F --refresh \u3067\u53D6\u308A\u76F4\u305B\u307E\u3059\uFF09`)}export{BACKLOG_BASE_PATH,backlogSpacePath,resolveNamed,requireDefaultProject,PRIVATE_TASKS_PATH,BACKLOG_SCOPE_LABEL,BACKLOG_PROJECT_SCOPE_LABEL,DEPARTMENTS_PATH,POSITIONS_PATH,JOB_TITLES_PATH,INQUIRY_CATEGORIES_PATH,NOTIFICATIONS_PATH,WORKFLOWS_PATH,REPORTS_PATH,SALES_ESTIMATES_PATH,SALES_INVOICES_PATH,SALES_COMPANIES_PATH,CUSTOMERS_PATH,PROSPECTS_PATH,isExactNumericId,ORG_MASTER_LIMIT,TASK_MASTERS,Resolver};
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{repeatedValues}from"./chunk-IOGVQVGD.js";import{isoDate}from"./chunk-UDPJ2IGK.js";import{SALES_ESTIMATES_PATH,SALES_INVOICES_PATH,isExactNumericId,resolveNamed}from"./chunk-RM4ECBIO.js";import{LIST_PAGING_HELP,PAGE_NUMBER_LIST_FLAGS,PAGE_NUMBER_PAGING_HELP,STABLE_PAGE_ORDER,nonEmpty,pageNumberPaging,pageNumberQuery,pageRangeNotes}from"./chunk-R53CMVWR.js";import{withResolved}from"./chunk-ZN5EFDH7.js";import{isRecord,pick}from"./chunk-ZWVYVS2A.js";import{
3
+ import{repeatedValues}from"./chunk-IOGVQVGD.js";import{isoDate}from"./chunk-UDPJ2IGK.js";import{SALES_ESTIMATES_PATH,SALES_INVOICES_PATH,isExactNumericId,resolveNamed}from"./chunk-WQRWQ7IM.js";import{LIST_PAGING_HELP,PAGE_NUMBER_LIST_FLAGS,PAGE_NUMBER_PAGING_HELP,STABLE_PAGE_ORDER,nonEmpty,pageNumberPaging,pageNumberQuery,pageRangeNotes}from"./chunk-R53CMVWR.js";import{withResolved}from"./chunk-ZN5EFDH7.js";import{isRecord,pick}from"./chunk-ZWVYVS2A.js";import{
4
4
  ApiResponseError,UsageError}from"./chunk-7WSNIXTQ.js";var ESTIMATE_STATUSES={new:"\u4F5C\u6210\u4E2D",create_completed:"\u4F5C\u6210\u5B8C\u4E86",in_progress:"\u7533\u8ACB\u4E2D",approved:"\u627F\u8A8D\u6E08",submitted:"\u63D0\u793A\u6E08",rejected:"\u5DEE\u3057\u623B\u3057",deleted:"\u524A\u9664\u6E08"};var INVOICE_STATUSES={new:"\u4F5C\u6210\u4E2D",create_completed:"\u4F5C\u6210\u5B8C\u4E86",in_progress:"\u7533\u8ACB\u4E2D",approved:"\u627F\u8A8D\u6E08",rejected:"\u5DEE\u3057\u623B\u3057",submitted:"\u63D0\u793A\u6E08",manager_confirmation:"\u6848\u4EF6\u62C5\u5F53\u8005\
5
5
  _\u6848\u4EF6\u5185\u5BB9\u30FB\u91D1\u984D\u78BA\u8A8D",invoice_issued:"\u8ACB\u6C42\u66F8\u767A\u884C\u6E08",sent_to_client:"\u5148\u65B9\u9001\u4ED8\u6E08",archived:"\u4FDD\u7BA1\u6E08",deleted:"\u524A\u9664\u6E08",cancelled:"\u53D6\u6D88\uFF08\u7121\u52B9\uFF09",lost:"\u5931\u6CE8"};var ALLOCATION_STATUSES={unallocated:"\u672A\u56DE\u53CE",allocated:"\u56DE\u53CE\u6E08"};function statusRefs(table){return Object.entries(table).map(([code,name])=>({id:code,name,code}))}function statusHelp(table){
6
6
  return Object.entries(table).map(([code,name])=>`${code}\uFF08${name}\uFF09`).join(" / ")}function licenseForbidden(guidance){return body=>body?.error==="permission_denied"?guidance:void 0}function featureLicenseGuidance(feature){return`${feature}\u3092\u4F7F\u3046\u6A29\u9650\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u30C6\u30CA\u30F3\u30C8\u304C${feature}\u3092\u5951\u7D04\u3057\u3066\u3044\u306A\u3044\u304B\u3001\u3042\u306A\u305F\u306E${feature}\u306E\u6A29\u9650\u304C\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`}
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-TAN5I2DP.js";import{parseArgv}from"./chunk-P3RQICAS.js";import"./chunk-NAUH75MM.js";import"./chunk-4OKUCLIC.js";import"./chunk-QQRJLH6B.js";import"./chunk-VSJBJXZO.js";var VERSION=true?"0.34.0":"0.0.0-dev";var HELP=`twp ${VERSION} \u2014 TWP CLI
4
+ import{GLOBAL_OPTIONS_HELP}from"./chunk-TAN5I2DP.js";import{parseArgv}from"./chunk-VQMR5UTD.js";import"./chunk-NAUH75MM.js";import"./chunk-523KROGI.js";import"./chunk-QQRJLH6B.js";import"./chunk-VSJBJXZO.js";var VERSION=true?"0.35.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
@@ -277,6 +277,16 @@ import{GLOBAL_OPTIONS_HELP}from"./chunk-TAN5I2DP.js";import{parseArgv}from"./chu
277
277
  \u81EA\u5206\u5B9B\u3066\u306E\u901A\u77E51\u4EF6\u3092\u65E2\u8AAD\u306B\u3059\u308B
278
278
  twp notification read-all
279
279
  \u81EA\u5206\u5B9B\u3066\u306E\u672A\u8AAD\u306E\u901A\u77E5\u3092\u307E\u3068\u3081\u3066\u65E2\u8AAD\u306B\u3059\u308B\uFF08--yes \u304C\u8981\u308B\uFF09
280
+ twp report list \u81EA\u5206\u304C\u66F8\u3044\u305F\u30EC\u30DD\u30FC\u30C8\uFF08\u65E5\u5831\uFF09\u3092\u4E00\u89A7\u3059\u308B\uFF08--format\u30FB--status\u30FB--keyword\uFF09
281
+ twp report get <\u30EC\u30DD\u30FC\u30C8ID>
282
+ \u30EC\u30DD\u30FC\u30C81\u4EF6\u306E\u8A73\u7D30\u3092\u8868\u793A\u3059\u308B\uFF08\u672C\u6587\u30FB\u30B3\u30E1\u30F3\u30C8\u3092\u542B\u3080\uFF09
283
+ twp report create --format <\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8>
284
+ \u30EC\u30DD\u30FC\u30C8\u3092\u4E0B\u66F8\u304D\u3067\u4F5C\u308B\uFF08--content-file\u30FB--generate-cli-skeleton \u3067\u3072\u306A\u5F62\uFF09
285
+ twp report update <\u30EC\u30DD\u30FC\u30C8ID>
286
+ \u63D0\u51FA\u524D\u306E\u30EC\u30DD\u30FC\u30C8\u3092\u66F8\u304D\u63DB\u3048\u308B\uFF08--content-file\uFF09
287
+ twp report submit <\u30EC\u30DD\u30FC\u30C8ID>
288
+ \u30EC\u30DD\u30FC\u30C8\u3092\u63D0\u51FA\u3059\u308B\uFF08\u5FC5\u9808\u9805\u76EE\u304C\u7A7A\u306A\u3089\u9001\u3089\u306A\u3044\uFF09
289
+ twp report format list \u4F7F\u3048\u308B\u30EC\u30DD\u30FC\u30C8\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u3092\u4E00\u89A7\u3059\u308B
280
290
  twp estimate list \u898B\u7A4D\u3092\u4E00\u89A7\u3059\u308B\uFF08--status\u30FB--customer\u30FB--assignee\u30FB--from/--to\uFF09
281
291
  twp estimate get <\u898B\u7A4DID>
282
292
  \u898B\u7A4D1\u4EF6\u306E\u8A73\u7D30\u3092\u8868\u793A\u3059\u308B
@@ -309,6 +319,28 @@ import{GLOBAL_OPTIONS_HELP}from"./chunk-TAN5I2DP.js";import{parseArgv}from"./chu
309
319
  \u5BFE\u5FDC\u5C65\u6B74\u3092\u66F4\u65B0\u3059\u308B\uFF08--customer\uFF09
310
320
  twp customer interaction delete <\u5BFE\u5FDC\u5C65\u6B74ID>
311
321
  \u5BFE\u5FDC\u5C65\u6B74\u3092\u524A\u9664\u3059\u308B\uFF08--customer\u30FB--yes \u304C\u8981\u308B\uFF09
322
+ twp prospect list \u30A2\u30D7\u30ED\u30FC\u30C1\u5148\u3092\u4E00\u89A7\u3059\u308B\uFF08--keyword\u30FB--status\u30FB--assignee\uFF09
323
+ twp prospect get <\u30A2\u30D7\u30ED\u30FC\u30C1\u5148>
324
+ \u30A2\u30D7\u30ED\u30FC\u30C1\u51481\u4EF6\u306E\u8A73\u7D30\u3092\u8868\u793A\u3059\u308B\uFF08ID \u304B\u4F01\u696D\u540D\uFF09
325
+ twp prospect create \u30A2\u30D7\u30ED\u30FC\u30C1\u5148\u3092\u767B\u9332\u3059\u308B\uFF08--name\uFF09
326
+ twp prospect update <\u30A2\u30D7\u30ED\u30FC\u30C1\u5148>
327
+ \u30A2\u30D7\u30ED\u30FC\u30C1\u5148\u306E\u9805\u76EE\u3092\u66F4\u65B0\u3059\u308B\uFF08\u6307\u5B9A\u3057\u305F\u9805\u76EE\u3060\u3051\uFF09
328
+ twp prospect delete <\u30A2\u30D7\u30ED\u30FC\u30C1\u5148>
329
+ \u30A2\u30D7\u30ED\u30FC\u30C1\u5148\u3092\u524A\u9664\u3059\u308B\uFF08\u7BA1\u7406\u8005\u306E\u307F\u30FB--yes \u304C\u8981\u308B\uFF09
330
+ twp prospect import CSV \u3067\u30A2\u30D7\u30ED\u30FC\u30C1\u5148\u3092\u4E00\u62EC\u767B\u9332\u3059\u308B\uFF08--file\u30FB\u30A8\u30E9\u30FC\u884C\u304C\u3042\u308C\u3070\u767B\u9332\u3057\u306A\u3044\uFF09
331
+ twp prospect export \u30A2\u30D7\u30ED\u30FC\u30C1\u5148\u3092 CSV \u306B\u66F8\u304D\u51FA\u3059\uFF08\u7BA1\u7406\u8005\u306E\u307F\u30FB--out\uFF09
332
+ twp prospect check-duplicates
333
+ \u540C\u3058\u4F01\u696D\u306E\u30A2\u30D7\u30ED\u30FC\u30C1\u5148\u30FB\u4F3C\u305F\u9867\u5BA2\u3092\u78BA\u304B\u3081\u308B\uFF08--name\uFF09
334
+ twp prospect promote <\u30A2\u30D7\u30ED\u30FC\u30C1\u5148>
335
+ \u9867\u5BA2\u3078\u6607\u683C\u3059\u308B\uFF08\u7BA1\u7406\u8005\u306E\u307F\u30FB\u53D6\u308A\u6D88\u305B\u306A\u3044\u30FB--yes \u304C\u8981\u308B\uFF09
336
+ twp prospect interaction list
337
+ \u30A2\u30D7\u30ED\u30FC\u30C1\u5148\u306E\u5BFE\u5FDC\u5C65\u6B74\u3092\u4E00\u89A7\u3059\u308B\uFF08--prospect <\u30A2\u30D7\u30ED\u30FC\u30C1\u5148>\uFF09
338
+ twp prospect interaction create
339
+ \u5BFE\u5FDC\u5C65\u6B74\u3092\u767B\u9332\u3059\u308B\uFF08--prospect\u30FB--type\u30FB--date\uFF09
340
+ twp prospect interaction update <\u5BFE\u5FDC\u5C65\u6B74ID>
341
+ \u5BFE\u5FDC\u5C65\u6B74\u3092\u66F4\u65B0\u3059\u308B\uFF08--prospect\uFF09
342
+ twp prospect interaction delete <\u5BFE\u5FDC\u5C65\u6B74ID>
343
+ \u5BFE\u5FDC\u5C65\u6B74\u3092\u524A\u9664\u3059\u308B\uFF08--prospect\u30FB--yes \u304C\u8981\u308B\uFF09
312
344
  twp <\u30C9\u30E1\u30A4\u30F3> help \u305D\u306E\u30C9\u30E1\u30A4\u30F3\u306E\u30D8\u30EB\u30D7
313
345
  twp <\u30C9\u30E1\u30A4\u30F3> <\u64CD\u4F5C> help
314
346
  \u305D\u306E\u64CD\u4F5C\u306E\u30D8\u30EB\u30D7
@@ -344,15 +376,15 @@ TUI \u5185:
344
376
  TWP API \u3092\u547C\u3079\u307E\u3059\u3002TWP API \u306E\u30C4\u30FC\u30EB\u306F\u65E2\u5B9A\u3067\u78BA\u8A8D\u304C\u51FA\u307E\u3059\uFF08-p \u3067\u306F\u62D2\u5426\u3002--allowed-tools \u3067\u540D\u524D\u3092\u8A31\u53EF\uFF09\u3002
345
377
  \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
346
378
  `;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
347
- `);process.exit(1)}ignoreEpipe(process.stdout);ignoreEpipe(process.stderr);if(process.env["TWP_AUTO_UPDATE_WORKER"]==="1"){const{runAutoUpdateWorker}=await import("./auto-update-worker-Y44TD6FD.js");await runAutoUpdateWorker().catch(()=>void 0);return}const[first,...rest]=process.argv.slice(2);if(first==="__complete"||first==="completion"){const completion=await import("./completion-EFIZU6YO.js");if(first==="completion"){process.exitCode=completion.runCompletion(rest,process.stdout,process.stderr);return}
348
- const[{loadDomain},{loadUserConfig}]=await Promise.all([import("./registry-JYFK6PU7.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-JNSBIQM6.js");autoUpdate2.registerRunning();autoUpdate2.onStartup(VERSION);const{runConfigure}=await import("./configure-PIOFJFL5.js");process.exitCode=
379
+ `);process.exit(1)}ignoreEpipe(process.stdout);ignoreEpipe(process.stderr);if(process.env["TWP_AUTO_UPDATE_WORKER"]==="1"){const{runAutoUpdateWorker}=await import("./auto-update-worker-73HBKKVT.js");await runAutoUpdateWorker().catch(()=>void 0);return}const[first,...rest]=process.argv.slice(2);if(first==="__complete"||first==="completion"){const completion=await import("./completion-DGJH42YO.js");if(first==="completion"){process.exitCode=completion.runCompletion(rest,process.stdout,process.stderr);return}
380
+ const[{loadDomain},{loadUserConfig}]=await Promise.all([import("./registry-XL6Z2QCB.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-JNSBIQM6.js");autoUpdate2.registerRunning();autoUpdate2.onStartup(VERSION);const{runConfigure}=await import("./configure-PIOFJFL5.js");process.exitCode=
349
381
  await runConfigure(rest);return}const args=parseArgv(process.argv.slice(2));if(args.command==="version"){process.stdout.write(`${VERSION}
350
382
  `);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(" ")}
351
383
 
352
- ${HELP}`);process.exitCode=2;return}const autoUpdate=await import("./auto-update-JNSBIQM6.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-MH6LOFQS.js");process.exitCode=await runDomain({domain:args.domain,...args.operation!==void 0?{operation:args.operation}:{},argv:args.domainArgv,help:args.
353
- 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-W77HSRUC.js");process.exitCode=await runApiCommand({argv:args.domainArgv,help:args.domainHelp,globals:{...args.profile!==void 0?{profile:args.profile}:{},...args.output!==
354
- 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-MAQJ6VWV.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-7ZRA2BHR.js");
355
- 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-45VQS3LX.js");process.exitCode=await runTaskLoop(
384
+ ${HELP}`);process.exitCode=2;return}const autoUpdate=await import("./auto-update-JNSBIQM6.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-N5EIN5WQ.js");process.exitCode=await runDomain({domain:args.domain,...args.operation!==void 0?{operation:args.operation}:{},argv:args.domainArgv,help:args.
385
+ 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-AHVUUK3I.js");process.exitCode=await runApiCommand({argv:args.domainArgv,help:args.domainHelp,globals:{...args.profile!==void 0?{profile:args.profile}:{},...args.output!==
386
+ 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-3D2CMAIV.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-RQQN7TXW.js");
387
+ 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-M4B3MDUA.js");process.exitCode=await runTaskLoop(
356
388
  {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,
357
- 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-Y7P6SMY2.js");process.exitCode=await runOneShot({prompt:args.prompt??"",fromStdin:args.promptFromStdin,mode:args.mode??"dev",...args.permissionMode!==void 0?{permissionMode:args.permissionMode}:{},allowedTools:args.
358
- 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-IVIYIONG.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();
389
+ 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-QLTXLUSM.js");process.exitCode=await runOneShot({prompt:args.prompt??"",fromStdin:args.promptFromStdin,mode:args.mode??"dev",...args.permissionMode!==void 0?{permissionMode:args.permissionMode}:{},allowedTools:args.
390
+ 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-JPJHLNTW.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,7 +1,7 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{REQUIRE_ZERO_STATUS,ScheduleApi,collectDue,gateStatus,nowInZone,parseCounts,promptSection}from"./chunk-RFBFR567.js";import{InstanceLock,buildLockOwner,defaultIsLoopProcess,writeLockOwner}from"./chunk-3WHC4FSG.js";import{LoopSettingsApplier,renderStepBudget}from"./chunk-VBX44RKP.js";import{EngineNotConfiguredError,NoopEngine,UnknownEngineError,aiUnavailableLabel,assertKnownEngine,failureHint,isAiUnavailable,needsHumanToRestoreAi}from"./chunk-ZOOEH7ZE.js";import{ServerSkillCatalog,
4
- formatSkillOrigins}from"./chunk-L52XJFJR.js";import{AgentLoopApi,describeError,filterByStatus,isPermanent,pick,pickString}from"./chunk-QWSXHHFT.js";import"./chunk-VK2Z4QGC.js";import"./chunk-P4AEFKLM.js";import"./chunk-VRBI2NPI.js";import{claudeConfigDir,resolveDetectDeps}from"./chunk-T4QZO6RQ.js";import{resolveProjectRef,uuidProjectIdPolicy}from"./chunk-GMBJTG6A.js";import{AuthSession}from"./chunk-XNLIEUAW.js";import{httpFetch}from"./chunk-J7QYPKVK.js";
3
+ import{EngineNotConfiguredError,NoopEngine,UnknownEngineError,aiUnavailableLabel,assertKnownEngine,failureHint,isAiUnavailable,needsHumanToRestoreAi}from"./chunk-ZOOEH7ZE.js";import{claudeConfigDir,resolveDetectDeps}from"./chunk-T4QZO6RQ.js";import{REQUIRE_ZERO_STATUS,ScheduleApi,collectDue,gateStatus,nowInZone,parseCounts,promptSection}from"./chunk-RFBFR567.js";import{InstanceLock,buildLockOwner,defaultIsLoopProcess,writeLockOwner}from"./chunk-3WHC4FSG.js";import{LoopSettingsApplier,
4
+ renderStepBudget}from"./chunk-VBX44RKP.js";import{ServerSkillCatalog,formatSkillOrigins}from"./chunk-L52XJFJR.js";import{AgentLoopApi,describeError,filterByStatus,isPermanent,pick,pickString}from"./chunk-QWSXHHFT.js";import"./chunk-VK2Z4QGC.js";import"./chunk-P4AEFKLM.js";import"./chunk-VRBI2NPI.js";import{resolveProjectRef,uuidProjectIdPolicy}from"./chunk-GMBJTG6A.js";import{AuthSession}from"./chunk-XNLIEUAW.js";import{httpFetch}from"./chunk-J7QYPKVK.js";
5
5
  import{compareVersionCores,parseVersionCore}from"./chunk-DXXFUNYN.js";import{effectiveApiUrl,resolveProfile}from"./chunk-4VZKNEVN.js";import{stripTerminalControls}from"./chunk-NHYMHCAT.js";import{duplicateTaskKeyDropReason,excludedKeyInArgs,extractPlanJson,parseOpsCount,parsePlanExcludeKeys,placeholderTaskKey,releaseDeployDropReason,stepToItem,zeroTargetDropReasons}from"./chunk-VCZVITWG.js";import{CapacityReporter,buildLoopConfig,describeOperations,evaluateOwnership,formatHookIds,
6
6
  formatHookWiring,localDate,loopStateDir,runHook,runPrefetch,runPreflight}from"./chunk-QVPU4HHG.js";import{killProcessTree}from"./chunk-N2UVRM3Z.js";import{exclusiveInflightEntries,formatExclusiveEntry,normalizeSkillName,skillOfItem,spawnSyncResolved}from"./chunk-AEJHDFXB.js";import{PRIVATE_PROJECT_REF,isPrivateProjectId,isPrivateProjectRef,privateProjectId,projectFileKey}from"./chunk-GY7KI5E5.js";import{isTaskKey}from"./chunk-II5RVJQN.js";import"./chunk-7WSNIXTQ.js";
7
7
  import{joinFor}from"./chunk-PMOUHEJQ.js";import"./chunk-5WGOHFAS.js";import{twpHomeDir}from"./chunk-RZVI6PMW.js";import"./chunk-VSJBJXZO.js";import fs10 from"fs";import path8 from"path";import fs from"fs";import path from"path";var LoopLogger=class{constructor(runnerId,logFile,out=process.stdout,now=()=>new Date){this.runnerId=runnerId;this.out=out;this.now=now;if(logFile){fs.mkdirSync(path.dirname(logFile),{recursive:true});this.stream=fs.createWriteStream(logFile,{flags:"a"})}}runnerId;out;now;stream=null;log(message){const d=this.now();const ts=`${d.getFullYear()}-${pad(d.getMonth()+1)}-${pad(d.getDate())} ${pad(d.getHours())}:${pad(d.getMinutes())}:${pad(d.getSeconds())}`;const line=`[${ts}] [${this.runnerId}] ${stripTerminalControls(
@@ -312,7 +312,7 @@ const startedAtMs=now();let warned="";let done=false;const check=()=>{if(done)re
312
312
  decision.key)return;warned=decision.key;handlers.onWarn(decision.reason);return}done=true;const recorded=writeRestartAttempt(opts.stateDir,opts.projectKey,{from:decision.from,to:decision.to,at:new Date(now()).toISOString()},opts.store);if(!recorded){handlers.onWarn(`\u518D\u8D77\u52D5\u8A18\u9332\u3092\u66F8\u3051\u307E\u305B\u3093\u3067\u3057\u305F\uFF08${restartAttemptPath(opts.stateDir,opts.projectKey)}\uFF09\u3002\u540C\u3058\u7248\u30C9\u30EA\u30D5\u30C8\u304C\u89E3\u6D88\u3057\u306A\u3044\u5834\u5408\u3001\u518D\u8D77\u52D5\u3092\u7E70\u308A\u8FD4\u3059\u9632\u6CE2\u5824\u304C\u52B9\u304D\u307E\u305B\u3093`)}
313
313
  handlers.onRestart({from:decision.from,to:decision.to})};const timer=setInterval(check,opts.intervalMs??DRIFT_POLL_MS);timer.unref?.();return{stop:()=>{done=true;clearInterval(timer)},check}}import fs9 from"fs";import path7 from"path";var POLL_MS=1e3;var MAX_STOP_BYTES=4096;var MAX_AT_LENGTH=64;function markerPath(lockDir2,kind){return path7.join(lockDir2,kind)}function requestMarker(lockDir2,kind,pid,deps={}){const target=markerPath(lockDir2,kind);const write=deps.writeFileSync??((p,d)=>fs9.writeFileSync(p,d,{flag:"wx",mode:384}));const now=deps.now??(()=>new Date);clearMarker(lockDir2,kind,deps);try{write(target,`${JSON.stringify({pid,at:now().toISOString()})}
314
314
  `);return{ok:true}}catch(err){const e=err;return{ok:false,reason:e.code??"UNKNOWN"}}}function readMarker(lockDir2,kind,deps={}){const target=markerPath(lockDir2,kind);const read=deps.readFileSync??(p=>fs9.readFileSync(p,"utf8"));const size=deps.statSize??(p=>fs9.statSync(p).size);let raw;try{if(size(target)>MAX_STOP_BYTES)return null;raw=read(target)}catch{return null}if(raw.length>MAX_STOP_BYTES)return null;try{const parsed=JSON.parse(raw);if(typeof parsed!=="object"||parsed===null)return null;const pid=parsed.pid;const at=parsed.at;if(typeof pid!=="number"||!Number.isInteger(pid)||
315
- pid<=0)return null;return{pid,at:sanitizeAt(at)}}catch{return null}}function sanitizeAt(at){if(typeof at!=="string")return"";return at.replace(/[\u0000-\u001f\u007f]/g," ").slice(0,MAX_AT_LENGTH)}function clearMarker(lockDir2,kind,deps={}){const rm=deps.rmSync??(p=>fs9.rmSync(p,{recursive:true,force:true}));try{rm(markerPath(lockDir2,kind))}catch{}}function watchMarker(lockDir2,kind,selfPid,onStop,deps={}){let fired=false;const timer=setInterval(()=>{if(fired)return;const req=readMarker(lockDir2,kind,deps);if(req===null||req.pid!==selfPid)return;fired=true;onStop(req)},deps.intervalMs??POLL_MS);timer.unref?.();return()=>{fired=true;clearInterval(timer)}}function safe(s){return stripTerminalControls(s)}function compactTimestamp(at=new Date){const p2=n=>String(n).padStart(2,"0");return`${at.getFullYear()}${p2(at.getMonth()+1)}${p2(at.getDate())}-${p2(at.getHours())}${p2(at.getMinutes())}${p2(at.getSeconds())}`}async function buildEngine(config,log){if(config.engine==="noop")return new NoopEngine;const{DispatchEngine}=await import("./ai-dispatch-MFVPYNZ5.js");const{DEFAULT_PREFLIGHT_HOSTS}=await import("./ai-dispatch-MFVPYNZ5.js");const extraHosts=config.
315
+ pid<=0)return null;return{pid,at:sanitizeAt(at)}}catch{return null}}function sanitizeAt(at){if(typeof at!=="string")return"";return at.replace(/[\u0000-\u001f\u007f]/g," ").slice(0,MAX_AT_LENGTH)}function clearMarker(lockDir2,kind,deps={}){const rm=deps.rmSync??(p=>fs9.rmSync(p,{recursive:true,force:true}));try{rm(markerPath(lockDir2,kind))}catch{}}function watchMarker(lockDir2,kind,selfPid,onStop,deps={}){let fired=false;const timer=setInterval(()=>{if(fired)return;const req=readMarker(lockDir2,kind,deps);if(req===null||req.pid!==selfPid)return;fired=true;onStop(req)},deps.intervalMs??POLL_MS);timer.unref?.();return()=>{fired=true;clearInterval(timer)}}function safe(s){return stripTerminalControls(s)}function compactTimestamp(at=new Date){const p2=n=>String(n).padStart(2,"0");return`${at.getFullYear()}${p2(at.getMonth()+1)}${p2(at.getDate())}-${p2(at.getHours())}${p2(at.getMinutes())}${p2(at.getSeconds())}`}async function buildEngine(config,log){if(config.engine==="noop")return new NoopEngine;const{DispatchEngine}=await import("./ai-dispatch-LY6OVZC3.js");const{DEFAULT_PREFLIGHT_HOSTS}=await import("./ai-dispatch-LY6OVZC3.js");const extraHosts=config.
316
316
  operations.preflightHosts;return new DispatchEngine(config.ai,log,{workspace:config.workspace,charterFile:config.charterFile??void 0,charterEnabled:config.charterEnabled,...config.charterPrefix===null?{}:{charterPrefix:config.charterPrefix},...config.charterSuffix===null?{}:{charterSuffix:config.charterSuffix},serverPrompts:()=>config.serverPrompts??{},compileCommand:config.compileCommand??void 0,skillOverlayDir:path8.join(config.stateDir,"skill-overlay",projectFileKey(config.projectId)),launcherBin:config.
317
317
  claudeLauncher.bin,...extraHosts.length>0?{preflightHosts:[...DEFAULT_PREFLIGHT_HOSTS,...extraHosts]}:{}})}function lockDir(config){return path8.join(config.stateDir,`task-loop-${projectFileKey(config.projectId)}.lock.d`)}async function runTaskLoop(opts){if(opts.action==="stop")return await stopLoop(opts);const profile=resolveProfile(opts.profile);let creds;try{creds=new AuthSession(profile.name,profile.apiUrl).loadOrThrow()}catch(err){process.stderr.write(`${err.message}
318
318
  `);return 1}const apiUrl=effectiveApiUrl(profile,creds.api_url);const session=new AuthSession(profile.name,apiUrl);const projectRef=opts.project??process.env.TWP_PROJECT??"";if(projectRef===""){process.stderr.write("--project <\u30AD\u30FC|UUID> \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08TWP_PROJECT \u3067\u3082\u53EF\uFF09\n");return 2}const projectApi=new ProjectApi(apiUrl,session);let project;try{project=await projectApi.resolve(projectRef)}catch(err){process.stderr.write(`${err.
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{PromptAbortedError,promptHidden,promptText}from"./chunk-L37NS5L2.js";import{ApiError,TwpApiClient,errorListMessages}from"./chunk-FTYJZFEK.js";import{AuthSession,NotLoggedInError,SessionExpiredError,deleteCredentials,loadCredentials,maskToken,saveCredentials}from"./chunk-XNLIEUAW.js";import{httpFetch}from"./chunk-J7QYPKVK.js";import{effectiveApiUrl,resolveProfile}from"./chunk-4VZKNEVN.js";import{stripTerminalControls}from"./chunk-NHYMHCAT.js";import{system32}from"./chunk-N2UVRM3Z.js";
3
+ import{PromptAbortedError,promptHidden,promptText}from"./chunk-L37NS5L2.js";import{ApiError,TwpApiClient,errorListMessages}from"./chunk-7CQKNDAE.js";import{AuthSession,NotLoggedInError,SessionExpiredError,deleteCredentials,loadCredentials,maskToken,saveCredentials}from"./chunk-XNLIEUAW.js";import{httpFetch}from"./chunk-J7QYPKVK.js";import{effectiveApiUrl,resolveProfile}from"./chunk-4VZKNEVN.js";import{stripTerminalControls}from"./chunk-NHYMHCAT.js";import{system32}from"./chunk-N2UVRM3Z.js";
4
4
  import{EXIT_USAGE,UsageError}from"./chunk-7WSNIXTQ.js";import{isWindowsDriveAbsolute}from"./chunk-PMOUHEJQ.js";import"./chunk-RZVI6PMW.js";import"./chunk-VSJBJXZO.js";import os from"os";import{createHash,randomBytes}from"crypto";function generatePkcePair(){const verifier=randomBytes(32).toString("base64url");return{verifier,challenge:computeChallenge(verifier),method:"S256"}}function computeChallenge(verifier){return createHash("sha256").update(verifier,"ascii").digest("base64url")}function generateState(){return randomBytes(16).toString("base64url")}import http from"http";import crypto from"crypto";function safeEqual(a,b){const x=Buffer.from(a,"utf8");const y=Buffer.from(b,"utf8");const len=Math.max(x.length,y.length,1);const px=Buffer.alloc(len);const py=Buffer.alloc(len);x.copy(px);y.copy(py);return crypto.timingSafeEqual(px,py)&&x.length===y.length}var LoginTimeoutError=class extends Error{constructor(timeoutMs){super(`\u30D6\u30E9\u30A6\u30B6\u3067\u306E\u627F\u8A8D\u3092 ${Math.round(timeoutMs/1e3)} \u79D2\u5F85\u3061\u307E\u3057\u305F\u304C\u5B8C\u4E86\u3057\u307E\u305B\u3093\u3067\u3057\u305F\u3002twp login \u3092\u3084\u308A\u76F4\u3057\u3066\u304F\u3060\u3055\
5
5
  \u3044\u3002`)}};var SUCCESS_HTML=`<!doctype html><html lang="ja"><head><meta charset="utf-8"><title>TWP CLI \u30ED\u30B0\u30A4\u30F3\u5B8C\u4E86</title></head>
6
6
  <body style="font-family: sans-serif; text-align: center; padding-top: 4rem; background:#f7f9fc; color:#1b2559">
@@ -55,7 +55,7 @@ ation/json",Authorization:`Bearer ${creds.token}`}}).then(res=>res.ok,()=>false)
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-EEALMOSO.js");const{renderOutput}=await import("./render-K45EOLHX.js");const selected=options.query===void 0?value:await evaluateQuery(options.query,value);const text=renderOutput(selected,format);process.stdout.write(text.endsWith("\n")?text:`${text}
58
+ null};const{evaluateQuery}=await import("./query-EEALMOSO.js");const{renderOutput}=await import("./render-W523YEYF.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??"?"}
@@ -0,0 +1,26 @@
1
+ import { createRequire as __twpCreateRequire } from 'node:module';
2
+ const require = __twpCreateRequire(import.meta.url);
3
+ import{customerSubresources,customerWriteOperations}from"./chunk-A2MX47LP.js";import"./chunk-I6DWJXPC.js";import{featureLicenseGuidance,licenseForbidden}from"./chunk-Z7GNYWCU.js";import"./chunk-IOGVQVGD.js";import"./chunk-FII7YYYZ.js";import"./chunk-UDPJ2IGK.js";import{CUSTOMERS_PATH,SALES_COMPANIES_PATH}from"./chunk-WQRWQ7IM.js";import"./chunk-7CQKNDAE.js";import"./chunk-GMBJTG6A.js";import"./chunk-J7QYPKVK.js";import"./chunk-4VZKNEVN.js";
4
+ import"./chunk-QQRJLH6B.js";import"./chunk-NHYMHCAT.js";import{LIST_PAGING_HELP,PAGE_NUMBER_LIST_FLAGS,PAGE_NUMBER_PAGING_HELP,STABLE_PAGE_ORDER,nonEmpty,pageNumberPaging,pageNumberQuery,pageRangeNotes}from"./chunk-R53CMVWR.js";import"./chunk-II5RVJQN.js";import{requireResolved,withResolved}from"./chunk-ZN5EFDH7.js";import{isRecord,pick}from"./chunk-ZWVYVS2A.js";import{ApiResponseError,UsageError}from"./chunk-7WSNIXTQ.js";import"./chunk-RZVI6PMW.js";
5
+ import"./chunk-VSJBJXZO.js";var LIST_COLUMNS=["id","company_name","company_short_name","customer_flg","supplier_flg","tel"];var COMPANY_GET_COLUMNS=["id","company_name","company_name_kana","company_short_name","company_no","customer_flg","supplier_flg","post_code","address1","address2","address3","tel","website","start_date","end_date"];var COMPANY={name:"company",label:"\u53D6\u5F15\u5148",path:SALES_COMPANIES_PATH,source:"sales",forbidden:licenseForbidden("\u53D6\u5F15\u5148\u3092\u898B\u308B\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\
6
+ \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"),getColumns:COMPANY_GET_COLUMNS};var CUSTOMER={name:"customer",label:"\u9867\u5BA2",path:CUSTOMERS_PATH,source:"customer",forbidden:licenseForbidden(featureLicenseGuidance("\u9867\u5BA2\u7BA1\u7406")),getColumns:[...COMPANY_GET_COLUMNS,"industry","contact_count"]};function envelope(body,what){if(!isRecord(body)||body["\
7
+ 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 detail(body,what){const data=envelope(body,what)["data"];if(!isRecord(data)||typeof data["id"]!=="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`)}
8
+ return data}function listOperation(resource){const paging=pageNumberPaging({label:`${resource.label}\u4E00\u89A7`});const rows=body=>{envelope(body,`${resource.label}\u4E00\u89A7`);return paging.items(body)};const scope=resource.name==="customer"?"\u9867\u5BA2\uFF08\u53D6\u5F15\u5148\u306E\u3046\u3061\u9867\u5BA2\u3068\u3057\u3066\u767B\u9332\u3055\u308C\u305F\u3082\u306E\uFF09\u3092\u767B\u9332\u306E\u65B0\u3057\u3044\u9806\u306B\u4E00\u89A7\u3057\u307E\u3059\u3002\u4ED5\u5165\u5148\u3060\u3051\u306E\u53D6\u5F15\u5148\u306F\u51FA\u307E\u305B\u3093\uFF08twp company list\uFF09\u3002\n":
9
+ "\u53D6\u5F15\u5148\u4F01\u696D\uFF08\u9867\u5BA2\u30FB\u4ED5\u5165\u5148\u306E\u4E21\u65B9\uFF09\u3092\u65B0\u3057\u304F\u767B\u9332\u3057\u305F\u9806\u306B\u4E00\u89A7\u3057\u307E\u3059\u3002\n";return{name:"list",summary:resource.name==="customer"?"\u9867\u5BA2\u3092\u4E00\u89A7\u3059\u308B\uFF08\u767B\u9332\u306E\u65B0\u3057\u3044\u9806\uFF09":"\u53D6\u5F15\u5148\u4F01\u696D\u3092\u4E00\u89A7\u3059\u308B\uFF08\u767B\u9332\u306E\u65B0\u3057\u3044\u9806\uFF09",usage:`twp ${resource.name} list \
10
+ [--keyword <\u8A9E>] [--all] [--limit <\u4EF6\u6570>]`,description:scope+`--keyword \u306F\u4F01\u696D\u540D\u30FB\u7565\u79F0\u30FB\u30AB\u30CA\u306E\u90E8\u5206\u4E00\u81F4\u3067\u3059\u3002
11
+ \u7D5E\u308A\u8FBC\u307F\u5168\u4F53\u306E\u4EF6\u6570\u306F stderr \u306B\u51FA\u307E\u3059\u3002
12
+
13
+ --output json \u306F API \u304C\u8FD4\u3059\u5168\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u51FA\u3057\u307E\u3059\u3002
14
+ --output table / text / tsv \u306F\u8981\u7D04\u5217\uFF08${LIST_COLUMNS.join(" / ")}\uFF09\u3067\u3059\u3002
15
+
16
+ `+LIST_PAGING_HELP+"\n"+PAGE_NUMBER_PAGING_HELP,flags:[...PAGE_NUMBER_LIST_FLAGS,{name:"--keyword",summary:"\u4F01\u696D\u540D\u30FB\u7565\u79F0\u30FB\u30AB\u30CA\u306E\u8A9E\u3067\u7D5E\u308A\u8FBC\u3080\uFF08\u90E8\u5206\u4E00\u81F4\uFF09",takesValue:true,placeholder:"<\u8A9E>"}],paging,forbidden:resource.forbidden,plan(input){if(input.args.length>0){throw new UsageError(`list \u306F\u4F4D\u7F6E\u5F15\u6570\u3092\u53D6\u308A\u307E\u305B\u3093: ${input.args.join(" ")}`,`twp ${resource.name} lis\
17
+ t help`)}const{page_no,page_limit}=pageNumberQuery(input);return{method:"GET",path:resource.path,query:{keyword:nonEmpty(input.flags,"--keyword"),...STABLE_PAGE_ORDER,page_limit,page_no}}},summarize:body=>rows(body).map(row=>pick(row,LIST_COLUMNS)),raw:rows,notes:body=>[...pageRangeNotes(body),...isRecord(body)&&typeof body["sum"]==="number"?[`\u8A72\u5F53 ${body["sum"]} \u4EF6`]:[]]}}async function prepareGet(input,ctx,resource){const[raw,...rest]=input.args;const usage=`twp ${resource.name} ge\
18
+ t help`;if(raw===void 0||raw.trim()==="")throw new UsageError(`${resource.label}\u306E\u540D\u524D\u304B ID \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044`,usage);if(rest.length>0){throw new UsageError(`get \u304C\u53D7\u3051\u53D6\u308C\u308B${resource.label}\u306F1\u3064\u3060\u3051\u3067\u3059: ${rest.join(" ")}`,'\u7A7A\u767D\u3092\u542B\u3080\u540D\u524D\u306F\u5F15\u7528\u7B26\u3067\u56F2\u3093\u3067\u304F\u3060\u3055\u3044\uFF08\u4F8B: "\u682A\u5F0F\u4F1A\u793E \u30B5\u30F3\u30D7\u30EB"\uFF09\u3002')}
19
+ const ref=await ctx.resolver.company(raw,{flag:`<${resource.label}>`,source:resource.source});return withResolved(input,{companyId:ref.id})}function getOperation(resource){const what=resource.label;return{name:"get",summary:`${what}1\u4EF6\u306E\u8A73\u7D30\u3092\u8868\u793A\u3059\u308B`,usage:`twp ${resource.name} get <${what}>`,description:`<${what}> \u306F\u4F01\u696D\u540D\u30FB\u7565\u79F0\u30FB\u30AB\u30CA\u306E\u5B8C\u5168\u4E00\u81F4\u304B ID\uFF08twp ${resource.name} list \u306E id \u5217\u306E\u6570\u5B57\uFF09\u3067\u6307\u5B9A\u3057\
20
+ \u307E\u3059\u3002
21
+ \u540D\u524D\u306F\u30B5\u30FC\u30D0\u306E\u691C\u7D22\u3067\u5019\u88DC\u3092\u5F15\u3044\u3066\u7167\u5408\u3057\u307E\u3059\u3002\u4E00\u81F4\u3057\u306A\u3051\u308C\u3070\u8FD1\u3044\u5019\u88DC\u3092\u51FA\u3057\u3066\u6B62\u307E\u308A\u3001\u540C\u540D\u304C\u8907\u6570\u3042\u308C\u3070 ID \u3067\u6307\u5B9A\u3059\u308B\u3088\u3046\u6C42\u3081\u307E\u3059\u3002
22
+ \u6570\u5B57\u3060\u3051\u306E\u5024\u306F ID \u3068\u3057\u3066\u6271\u3044\u307E\u3059\uFF08\u793E\u540D\u304C\u6570\u5B57\u3060\u3051\u306E\u4F01\u696D\u306F ID \u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF09\u3002
23
+
24
+ `+(resource.name==="customer"?"--output json \u306F\u9867\u5BA2\u306E\u5168\u30D5\u30A3\u30FC\u30EB\u30C9\u306B\u3001\u62C5\u5F53\u8005\u6570\uFF08contact_count\uFF09\u3068\u76F4\u8FD15\u4EF6\u306E\u5BFE\u5FDC\u5C65\u6B74\uFF08recent_interactions\uFF09\u3092\u8DB3\u3057\u3066\u51FA\u3057\u307E\u3059\u3002":"--output json \u306F\u53D6\u5F15\u5148\u306E\u5168\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u51FA\u3057\u307E\u3059\u3002"),flags:[],forbidden:resource.forbidden,prepare:(input,ctx)=>prepareGet(input,
25
+ ctx,resource),plan:input=>({method:"GET",path:`${resource.path}/${encodeURIComponent(requireResolved(input,"companyId"))}`}),summarize:body=>pick(detail(body,what),resource.getColumns),raw:body=>detail(body,what)}}function buildDomain(resource,summary){return{name:resource.name,summary,operations:[listOperation(resource),getOperation(resource)]}}var companyDomain=buildDomain(COMPANY,"\u53D6\u5F15\u5148\u4F01\u696D\uFF08\u4E00\u89A7\u30FB\u8A73\u7D30\uFF09");var customerRead=buildDomain(CUSTOMER,
26
+ "");var customerDomain={name:CUSTOMER.name,summary:"\u9867\u5BA2\uFF08\u4E00\u89A7\u30FB\u8A73\u7D30\u30FB\u767B\u9332\u30FB\u66F4\u65B0\u30FB\u524A\u9664\u3068\u4E00\u62EC\u524A\u9664\u30FB\u62C5\u5F53\u8005\u30FB\u5BFE\u5FDC\u5C65\u6B74\uFF09",operations:[...customerRead.operations,...customerWriteOperations],subresources:customerSubresources};export{companyDomain,customerDomain};
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{BUILTIN_COMMANDS,GLOBAL_FLAGS,TASK_LOOP_ACTIONS,VALUE_FLAGS}from"./chunk-P3RQICAS.js";import"./chunk-NAUH75MM.js";import{API_TOKEN,DOMAIN_NAMES,HELP_TOKEN,isDomainName}from"./chunk-4OKUCLIC.js";import"./chunk-QQRJLH6B.js";import{OUTPUT_FORMATS}from"./chunk-K2ONOH3L.js";import"./chunk-WVS4W5FY.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var EXTRA_TOP_LEVEL=[API_TOKEN,HELP_TOKEN,"completion","configure"];var COMPLETION_SHELLS=["bash","zsh","fish","powershell"];var TOP_LEVEL_FLAGS=["--help","--version","-p","--print","--profile","--mode","--permission-mode","--model","--allowed-tools","--disallowed-tools","--no-tui","--doctor"];var DOMAIN_GLOBAL_FLAGS=[...GLOBAL_FLAGS].filter(flag=>flag.startsWith("--"));function staticValues(flag,ctx){if(flag==="--output")return OUTPUT_FORMATS;if(flag==="--profile")return ctx.profileNames();return void 0}
3
+ import{BUILTIN_COMMANDS,GLOBAL_FLAGS,TASK_LOOP_ACTIONS,VALUE_FLAGS}from"./chunk-VQMR5UTD.js";import"./chunk-NAUH75MM.js";import{API_TOKEN,DOMAIN_NAMES,HELP_TOKEN,isDomainName}from"./chunk-523KROGI.js";import"./chunk-QQRJLH6B.js";import{OUTPUT_FORMATS}from"./chunk-K2ONOH3L.js";import"./chunk-WVS4W5FY.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var EXTRA_TOP_LEVEL=[API_TOKEN,HELP_TOKEN,"completion","configure"];var COMPLETION_SHELLS=["bash","zsh","fish","powershell"];var TOP_LEVEL_FLAGS=["--help","--version","-p","--print","--profile","--mode","--permission-mode","--model","--allowed-tools","--disallowed-tools","--no-tui","--doctor"];var DOMAIN_GLOBAL_FLAGS=[...GLOBAL_FLAGS].filter(flag=>flag.startsWith("--"));function staticValues(flag,ctx){if(flag==="--output")return OUTPUT_FORMATS;if(flag==="--profile")return ctx.profileNames();return void 0}
4
4
  function positionals(words,takesValue){const out=[];for(let i=0;i<words.length;i++){const word=words[i]??"";if(word==="--"){out.push(...words.slice(i+1));break}if(word.startsWith("-")){if(!word.includes("=")&&takesValue(word))i++;continue}out.push(word)}return out}function byPrefix(candidates,current){const seen=new Set;for(const candidate of candidates){if(candidate.startsWith(current))seen.add(candidate)}return[...seen]}function remainingFlags(flags,words){const used=new Set(words.filter(w=>w.
5
5
  startsWith("--")).map(w=>w.split("=")[0]));return[...flags.filter(f=>f.repeatable===true||!used.has(f.name)).map(f=>f.name),...DOMAIN_GLOBAL_FLAGS.filter(f=>!used.has(f))]}async function complete(words,current,ctx){const previous=words[words.length-1];if(previous!==void 0&&previous.startsWith("--")&&!previous.includes("=")){const values=staticValues(previous,ctx);if(values!==void 0)return byPrefix(values,current)}const eq=current.indexOf("=");if(current.startsWith("--")&&eq>0){const flag=current.
6
6
  slice(0,eq);const values=staticValues(flag,ctx);return values===void 0?[]:byPrefix(values.map(v=>`${flag}=${v}`),current)}const pos=positionals(words,flag=>VALUE_FLAGS.has(flag));const[first,second]=pos;if(first===void 0){if(current.startsWith("-"))return byPrefix([...TOP_LEVEL_FLAGS,...DOMAIN_GLOBAL_FLAGS],current);return byPrefix([...BUILTIN_COMMANDS,...DOMAIN_NAMES,...EXTRA_TOP_LEVEL],current)}if(first==="completion")return pos.length===1?byPrefix(COMPLETION_SHELLS,current):[];if(first==="con\
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{cacheNote,createFlags,fieldBody,hasAnyField,idSegment,masterFields,masterItem,masterListOperation,masterRows,referencedDeleteGuidance,resolveRefFields,targetId,updateFlags}from"./chunk-226G6ONZ.js";import"./chunk-UDPJ2IGK.js";import{DEPARTMENTS_PATH}from"./chunk-RM4ECBIO.js";import"./chunk-FTYJZFEK.js";import"./chunk-GMBJTG6A.js";import"./chunk-J7QYPKVK.js";import"./chunk-4VZKNEVN.js";import"./chunk-NHYMHCAT.js";import"./chunk-R53CMVWR.js";
3
+ import{cacheNote,createFlags,fieldBody,hasAnyField,idSegment,masterFields,masterItem,masterListOperation,masterRows,referencedDeleteGuidance,resolveRefFields,targetId,updateFlags}from"./chunk-FII7YYYZ.js";import"./chunk-UDPJ2IGK.js";import{DEPARTMENTS_PATH}from"./chunk-WQRWQ7IM.js";import"./chunk-7CQKNDAE.js";import"./chunk-GMBJTG6A.js";import"./chunk-J7QYPKVK.js";import"./chunk-4VZKNEVN.js";import"./chunk-NHYMHCAT.js";import"./chunk-R53CMVWR.js";
4
4
  import"./chunk-II5RVJQN.js";import{withResolved}from"./chunk-ZN5EFDH7.js";import{acknowledgement,isRecord,pick}from"./chunk-ZWVYVS2A.js";import{ApiResponseError,UsageError}from"./chunk-7WSNIXTQ.js";import"./chunk-RZVI6PMW.js";import"./chunk-VSJBJXZO.js";var LABEL="\u90E8\u7F72";var LIST_COLUMNS=["id","code","name","parent_id","level","effective_status","valid_from","valid_to","member_count"];var GET_COLUMNS=["id","code","name","name_short","parent_id","level","sort","effective_status","valid_from","valid_to","description"];var TREE_COLUMNS=["depth","name","code","id","effective_status","valid_to"];var MEMBER_COLUMNS=["id","user_id","position_id","job_title_id","start_date","end_date","is_primary","is_current","effective_status"];var REF_FLAG={name:"\
5
5
  --department",summary:"\u5BFE\u8C61\u306E\u90E8\u7F72\uFF08\u4F4D\u7F6E\u5F15\u6570\u306E\u4EE3\u308F\u308A\u306B\u4F7F\u3048\u308B\uFF09",takesValue:true,placeholder:"<\u90E8\u7F72>"};var REF_HELP="<\u90E8\u7F72> \u306F\u540D\u524D\u30FB\u30B3\u30FC\u30C9\u30FBID \u306E\u3069\u308C\u3067\u3082\u6307\u5B9A\u3067\u304D\u307E\u3059\uFF08\u540D\u524D\u304C\u8907\u6570\u306B\u4E00\u81F4\u3059\u308C\u3070\u5019\u88DC\u3092\u51FA\u3057\u3066\u6B62\u307E\u308A\u307E\u3059\uFF09\u3002\nID \u4EE5\u5916\u306F\u90E8\u7F72\u4E00\u89A7\uFF08\u65E2\u5B9A10\u5206\u30AD\u30E3\u30C3\u30B7\u30E5\u30FB--refresh \u3067\u53D6\u308A\u76F4\u3057\uFF09\u3068\u7167\u5408\u3057\u307E\u3059\u3002";
6
6
  var FIELDS=masterFields(LABEL,[{kind:"text",flag:"--name-short",key:"name_short",label:"\u7565\u79F0",maxChars:50,summary:"\u7565\u79F0"},{kind:"ref",flag:"--parent",key:"parent_id",summary:"\u89AA\u90E8\u7F72\uFF08\u540D\u524D\u30FB\u30B3\u30FC\u30C9\u30FBID\uFF09",placeholder:"<\u90E8\u7F72>",clearFlag:"--no-parent",clearSummary:"\u89AA\u90E8\u7F72\u3092\u5916\u3057\u3066\u6700\u4E0A\u4F4D\u306B\u3059\u308B",resolve:(ctx,ref,flag)=>ctx.resolver.department(ref,flag)},{kind:"integer",flag:"--sor\
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{repeatedValues}from"./chunk-IOGVQVGD.js";import{booleanText,boundedText}from"./chunk-UDPJ2IGK.js";import{INQUIRY_CATEGORIES_PATH}from"./chunk-RM4ECBIO.js";import"./chunk-FTYJZFEK.js";import{UUID_RE,isSafePathSegment}from"./chunk-GMBJTG6A.js";import"./chunk-J7QYPKVK.js";import"./chunk-4VZKNEVN.js";import"./chunk-QQRJLH6B.js";import"./chunk-NHYMHCAT.js";import"./chunk-II5RVJQN.js";import{requireResolved,singleRef,withResolved}from"./chunk-ZN5EFDH7.js";
3
+ import{repeatedValues}from"./chunk-IOGVQVGD.js";import{booleanText,boundedText}from"./chunk-UDPJ2IGK.js";import{INQUIRY_CATEGORIES_PATH}from"./chunk-WQRWQ7IM.js";import"./chunk-7CQKNDAE.js";import{UUID_RE,isSafePathSegment}from"./chunk-GMBJTG6A.js";import"./chunk-J7QYPKVK.js";import"./chunk-4VZKNEVN.js";import"./chunk-QQRJLH6B.js";import"./chunk-NHYMHCAT.js";import"./chunk-II5RVJQN.js";import{requireResolved,singleRef,withResolved}from"./chunk-ZN5EFDH7.js";
4
4
  import{isRecord,pick}from"./chunk-ZWVYVS2A.js";import{ApiResponseError,UsageError}from"./chunk-7WSNIXTQ.js";import"./chunk-RZVI6PMW.js";import"./chunk-VSJBJXZO.js";var LABEL="\u554F\u3044\u5408\u308F\u305B\u30AB\u30C6\u30B4\u30EA";var LIST_COLUMNS=["id","category_code","title","sort","is_active","notification_user_count"];var GET_COLUMNS=["id","category_code","title","description","sort","is_active","notification_users"];var FORBIDDEN=`\u7BA1\u7406\u8005\u306E\u6A29\u9650\u304C\u5FC5\u8981\u3067\u3059\u3002${LABEL}\u306E\u8A73\u7D30\u30FB\u4F5C\u6210\u30FB\u66F4\u65B0\u306F\u554F\u3044\u5408\u308F\u305B\u6A5F\u80FD\u306E\u7BA1\u7406\u8005\u3060\u3051\u304C\u884C\u3048\u307E\u3059`;
5
5
  var SORT_LAST="last";var CODE_RE=/^[a-zA-Z0-9_-]+$/;var REF_HELP="<\u30AB\u30C6\u30B4\u30EA> \u306F\u30AB\u30C6\u30B4\u30EA\u30B3\u30FC\u30C9\u30FB\u540D\u524D\uFF08title\uFF09\u30FBID \u306E\u3069\u308C\u3067\u3082\u6307\u5B9A\u3067\u304D\u307E\u3059\uFF08\u540D\u524D\u304C\u8907\u6570\u306B\u4E00\u81F4\u3059\u308C\u3070\u5019\u88DC\u3092\u51FA\u3057\u3066\u6B62\u307E\u308A\u307E\u3059\uFF09\u3002\nID \u4EE5\u5916\u306F\u30AB\u30C6\u30B4\u30EA\u4E00\u89A7\uFF08\u65E2\u5B9A10\u5206\u30AD\u30E3\u30C3\u30B7\u30E5\u30FB--refresh \u3067\u53D6\u308A\u76F4\u3057\uFF09\u3068\u7167\u5408\u3057\u307E\u3059\u3002";
6
6
  var NOTIFY_HELP="--notify \u306F\u901A\u77E5\u5148\u306E\u30E6\u30FC\u30B6\u30FC\u3067\u3001\u8907\u6570\u56DE\u6307\u5B9A\u3067\u304D\u307E\u3059\u3002\u30E6\u30FC\u30B6\u30FC\u306F ID\u30FB\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\u30FB\u793E\u54E1\u756A\u53F7\u30FB\u6C0F\u540D\u3067\u6307\u5B9A\u3067\u304D\u307E\u3059\n\uFF08ID \u4EE5\u5916\u306F\u30C6\u30CA\u30F3\u30C8\u306E\u30E6\u30FC\u30B6\u30FC\u4E00\u89A7\u3068\u7167\u5408\u3057\u307E\u3059\u3002\u7D44\u7E54\u7BA1\u7406\u8005\u3067\u306A\u3044\u5834\u5408\u306F ID \u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF09\u3002";
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{STATUS_VALUES,flatMasterDomain}from"./chunk-226G6ONZ.js";import"./chunk-UDPJ2IGK.js";import{JOB_TITLES_PATH}from"./chunk-RM4ECBIO.js";import"./chunk-FTYJZFEK.js";import"./chunk-GMBJTG6A.js";import"./chunk-J7QYPKVK.js";import"./chunk-4VZKNEVN.js";import"./chunk-NHYMHCAT.js";import"./chunk-R53CMVWR.js";import"./chunk-II5RVJQN.js";import"./chunk-ZN5EFDH7.js";import"./chunk-ZWVYVS2A.js";import"./chunk-7WSNIXTQ.js";import"./chunk-RZVI6PMW.js";
3
+ import{STATUS_VALUES,flatMasterDomain}from"./chunk-FII7YYYZ.js";import"./chunk-UDPJ2IGK.js";import{JOB_TITLES_PATH}from"./chunk-WQRWQ7IM.js";import"./chunk-7CQKNDAE.js";import"./chunk-GMBJTG6A.js";import"./chunk-J7QYPKVK.js";import"./chunk-4VZKNEVN.js";import"./chunk-NHYMHCAT.js";import"./chunk-R53CMVWR.js";import"./chunk-II5RVJQN.js";import"./chunk-ZN5EFDH7.js";import"./chunk-ZWVYVS2A.js";import"./chunk-7WSNIXTQ.js";import"./chunk-RZVI6PMW.js";
4
4
  import"./chunk-VSJBJXZO.js";var jobTitleDomain=flatMasterDomain({name:"job-title",label:"\u8077\u4F4D",path:JOB_TITLES_PATH,itemKey:"job_title",summary:"\u8077\u4F4D\u30DE\u30B9\u30BF\uFF08\u4E00\u89A7\u30FB\u53D6\u5F97\u30FB\u4F5C\u6210\u30FB\u66F4\u65B0\u30FB\u524A\u9664\uFF09",listColumns:["id","code","name","sort_order","status","position_id","base_selling_price","base_cost_price"],getColumns:["id","code","name","name_short","sort_order","status","position_id","base_selling_price","base_cost_price","description"],fields:[
5
5
  {kind:"text",flag:"--name-short",key:"name_short",label:"\u7565\u79F0",maxChars:50,summary:"\u7565\u79F0"},{kind:"integer",flag:"--sort-order",key:"sort_order",label:"\u8868\u793A\u9806",min:0,max:9999,summary:"\u8868\u793A\u9806\uFF080\u301C9999\uFF09"},{kind:"enum",flag:"--status",key:"status",values:STATUS_VALUES,summary:"\u72B6\u614B\uFF08active: \u6709\u52B9 / inactive: \u7121\u52B9\uFF09"},{kind:"text",flag:"--description",key:"description",label:"\u8AAC\u660E",maxChars:1e3,summary:"\u8AAC\u660E"},
6
6
  {kind:"integer",flag:"--base-selling-price",key:"base_selling_price",label:"\u57FA\u6E96\u58F2\u4FA1",min:0,summary:"\u57FA\u6E96\u58F2\u4FA1\uFF080\u4EE5\u4E0A\u306E\u6574\u6570\uFF09"},{kind:"integer",flag:"--base-cost-price",key:"base_cost_price",label:"\u57FA\u6E96\u539F\u4FA1",min:0,summary:"\u57FA\u6E96\u539F\u4FA1\uFF080\u4EE5\u4E0A\u306E\u6574\u6570\uFF09"},{kind:"text",flag:"--skill-requirements",key:"skill_requirements",label:"\u30B9\u30AD\u30EB\u8981\u4EF6",maxChars:5e3,summary:"\u30B9\u30AD\u30EB\u8981\u4EF6"},
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{USER_REF_FLAG,USER_REF_HELP,userPath}from"./chunk-2M2JQ23W.js";import"./chunk-RM4ECBIO.js";import"./chunk-FTYJZFEK.js";import"./chunk-GMBJTG6A.js";import"./chunk-J7QYPKVK.js";import"./chunk-4VZKNEVN.js";import"./chunk-NHYMHCAT.js";import"./chunk-II5RVJQN.js";import{requireResolved,singleRef,withResolved}from"./chunk-ZN5EFDH7.js";import{isRecord,pick}from"./chunk-ZWVYVS2A.js";import{ApiResponseError,UsageError}from"./chunk-7WSNIXTQ.js";
3
+ import{USER_REF_FLAG,USER_REF_HELP,userPath}from"./chunk-2M2JQ23W.js";import"./chunk-WQRWQ7IM.js";import"./chunk-7CQKNDAE.js";import"./chunk-GMBJTG6A.js";import"./chunk-J7QYPKVK.js";import"./chunk-4VZKNEVN.js";import"./chunk-NHYMHCAT.js";import"./chunk-II5RVJQN.js";import{requireResolved,singleRef,withResolved}from"./chunk-ZN5EFDH7.js";import{isRecord,pick}from"./chunk-ZWVYVS2A.js";import{ApiResponseError,UsageError}from"./chunk-7WSNIXTQ.js";
4
4
  import"./chunk-RZVI6PMW.js";import"./chunk-VSJBJXZO.js";var LIST_USAGE="twp leave list";var GRANTS_USAGE="twp leave grants [<\u30E6\u30FC\u30B6\u30FC> | --user <\u30E6\u30FC\u30B6\u30FC>]";var USAGE_COLUMNS=["used_date","type_label","days","hours","status_label","reason","is_post_application","id"];var GRANT_COLUMNS=["grant_date","type_label","days","remaining_days","remaining_hours","expiry_date","status_label","reason","id"];function noArgs(input,operation){if(input.args.length>0){throw new UsageError(`${operation} \u306F\u4F4D\u7F6E\u5F15\u6570\u3092\u53D7\u3051\u53D6\u308A\u307E\u305B\u3093: ${input.
5
5
  args.join(" ")}`,`twp leave ${operation} help`)}}function summaryBody(body){if(!isRecord(body)||!isRecord(body["summary"])){throw new ApiResponseError("\u6709\u7D66\u30B5\u30DE\u30EA\u306E\u5FDC\u7B54\u306B summary \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002")}return body}function usagesBody(body){if(!isRecord(body)||!Array.isArray(body["usages"])){throw new ApiResponseError("\u6709\u7D66\u306E\u53D6\u5F97\u5C65\u6B74\u306E\u5FDC\u7B54\u306B usages \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002")}
6
6
  return body}function grantsBody(body){if(!isRecord(body)||!Array.isArray(body["grants"])){throw new ApiResponseError("\u6709\u7D66\u306E\u4ED8\u4E0E\u5C65\u6B74\u306E\u5FDC\u7B54\u306B grants \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002")}return body}function listBody(body){const combined=isRecord(body)?body:{};return{summary:summaryBody(combined["summary"]),usages:usagesBody(combined["usages"])}}async function list(input,ctx){
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{contentTypeFor}from"./chunk-EVR3OFVS.js";import{checkUploadQuota}from"./chunk-DDKZ5IPT.js";import"./chunk-RM4ECBIO.js";import"./chunk-FTYJZFEK.js";import{isSafePathSegment}from"./chunk-GMBJTG6A.js";import"./chunk-J7QYPKVK.js";import"./chunk-4VZKNEVN.js";import"./chunk-NHYMHCAT.js";import"./chunk-GY7KI5E5.js";import{LIST_FLAGS,LIST_PAGING_HELP,envelopePaging,nonEmpty,positiveInteger}from"./chunk-R53CMVWR.js";import"./chunk-II5RVJQN.js";
3
+ import{contentTypeFor}from"./chunk-EVR3OFVS.js";import{checkUploadQuota}from"./chunk-DDKZ5IPT.js";import"./chunk-WQRWQ7IM.js";import"./chunk-7CQKNDAE.js";import{isSafePathSegment}from"./chunk-GMBJTG6A.js";import"./chunk-J7QYPKVK.js";import"./chunk-4VZKNEVN.js";import"./chunk-NHYMHCAT.js";import"./chunk-GY7KI5E5.js";import{LIST_FLAGS,LIST_PAGING_HELP,envelopePaging,nonEmpty,positiveInteger}from"./chunk-R53CMVWR.js";import"./chunk-II5RVJQN.js";
4
4
  import{requireResolved,singleRef,withResolved}from"./chunk-ZN5EFDH7.js";import{isRecord,pick}from"./chunk-ZWVYVS2A.js";import{ApiRejectedError,ApiResponseError,UsageError}from"./chunk-7WSNIXTQ.js";import"./chunk-RZVI6PMW.js";import"./chunk-VSJBJXZO.js";import crypto from"crypto";import fs from"fs";import path from"path";var SCOPE_PERSONAL="personal";var SCOPE_PROJECT="project";var LIST_COLUMNS=["id","file_name","content_type","file_size","folder_id","public_status","updated_at"];var UPLOAD_COLUMNS=["id","file_name","content_type","file_size","folder_id","scope","content_hash"];var FILE_FLAG={name:"--file",summary:"\u30A2\u30C3\u30D7\u30ED\u30FC\u30C9\u3059\u308B\u30ED\u30FC\u30AB\u30EB\u30D5\u30A1\u30A4\u30EB\u306E\u30D1\u30B9\uFF08\u5FC5\u9808\uFF09",takesValue:true,placeholder:"<\u30D1\u30B9>"};var NAME_FLAG={
5
5
  name:"--name",summary:"\u4FDD\u5B58\u3059\u308B\u30D5\u30A1\u30A4\u30EB\u540D\uFF08\u7701\u7565\u6642\u306F\u30ED\u30FC\u30AB\u30EB\u306E\u30D5\u30A1\u30A4\u30EB\u540D\u3002\u540C\u540D\u304C\u3042\u308B\u3068\u30B5\u30FC\u30D0\u304C\u5225\u540D\u306B\u3057\u307E\u3059\uFF09",takesValue:true,placeholder:"<\u30D5\u30A1\u30A4\u30EB\u540D>"};var CONTENT_TYPE_FLAG={name:"--content-type",summary:"Content-Type\uFF08\u7701\u7565\u6642\u306F\u62E1\u5F35\u5B50\u304B\u3089\u63A8\u5B9A\u3002\u4E0D\u660E\u306A\u3089 application/octet-stream\uFF09",
6
6
  takesValue:true,placeholder:"<\u578B>"};var FOLDER_FLAG={name:"--folder",summary:"\u30D5\u30A9\u30EB\u30C0ID\uFF08\u7701\u7565\u6642\u306F\u30B9\u30B3\u30FC\u30D7\u306E\u6700\u4E0A\u4F4D\uFF09",takesValue:true,placeholder:"<\u30D5\u30A9\u30EB\u30C0ID>"};var MEDIA_PROJECT_FLAG={name:"--project",summary:"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u30D5\u30A1\u30A4\u30EB\u3092\u5BFE\u8C61\u306B\u3059\u308B\uFF08\u30B3\u30FC\u30C9\u307E\u305F\u306F ID\uFF09\u3002\u7701\u7565\u6642\u306F\u81EA\u5206\u306E\u500B\u4EBA\u30D5\u30A1\u30A4\u30EB",
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{boundedText}from"./chunk-UDPJ2IGK.js";import{NOTIFICATIONS_PATH}from"./chunk-RM4ECBIO.js";import"./chunk-FTYJZFEK.js";import{isSafePathSegment}from"./chunk-GMBJTG6A.js";import"./chunk-J7QYPKVK.js";import"./chunk-4VZKNEVN.js";import"./chunk-NHYMHCAT.js";import{LIST_FLAGS,LIST_PAGING_HELP,envelopePaging,nonEmpty,positiveInteger}from"./chunk-R53CMVWR.js";import"./chunk-II5RVJQN.js";import{requireResolved,withResolved}from"./chunk-ZN5EFDH7.js";
3
+ import{boundedText}from"./chunk-UDPJ2IGK.js";import{NOTIFICATIONS_PATH}from"./chunk-WQRWQ7IM.js";import"./chunk-7CQKNDAE.js";import{isSafePathSegment}from"./chunk-GMBJTG6A.js";import"./chunk-J7QYPKVK.js";import"./chunk-4VZKNEVN.js";import"./chunk-NHYMHCAT.js";import{LIST_FLAGS,LIST_PAGING_HELP,envelopePaging,nonEmpty,positiveInteger}from"./chunk-R53CMVWR.js";import"./chunk-II5RVJQN.js";import{requireResolved,withResolved}from"./chunk-ZN5EFDH7.js";
4
4
  import{isRecord,pick}from"./chunk-ZWVYVS2A.js";import{ApiResponseError,UsageError}from"./chunk-7WSNIXTQ.js";import"./chunk-RZVI6PMW.js";import"./chunk-VSJBJXZO.js";var LABEL="\u901A\u77E5";var LIST_COLUMNS=["id","datetime","category_name","status_name","title"];var GET_COLUMNS=["id","datetime","category","category_name","status_name","read_time","title","content","url"];var CATEGORY_FLAG={name:"--category",summary:"\u901A\u77E5\u30AB\u30C6\u30B4\u30EA\u3067\u7D5E\u308A\u8FBC\u3080\uFF08\u30AD\u30FC\u304B\u540D\u524D\u3002twp notification categories \u3067\u4E00\u89A7\u3067\u304D\u308B\uFF09",takesValue:true,placeholder:"<\u30AB\u30C6\u30B4\u30EA>"};var CATEGORY_HELP="\
5
5
  --category \u306F\u30AB\u30C6\u30B4\u30EA\u306E\u30AD\u30FC\uFF08workflow_approval\uFF09\u304B\u540D\u524D\uFF08\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u627F\u8A8D\u4F9D\u983C\uFF09\u3067\u6307\u5B9A\u3067\u304D\u307E\u3059\u3002\n\u30AB\u30C6\u30B4\u30EA\u4E00\u89A7\u3068\u7167\u5408\u3059\u308B\u306E\u3067\u3001\u6253\u3061\u9593\u9055\u3048\u305F\u30AB\u30C6\u30B4\u30EA\u3092\u300C0\u4EF6\u300D\u3068\u3057\u3066\u8FD4\u3059\u3053\u3068\u306F\u3042\u308A\u307E\u305B\u3093\uFF08\u4E00\u89A7\u306F\u65E2\u5B9A10\u5206\u30AD\u30E3\u30C3\u30B7\u30E5\u30FB--refresh \u3067\u53D6\u308A\u76F4\u3057\uFF09\u3002";
6
6
  async function resolveCategory(input,ctx){const raw=nonEmpty(input.flags,CATEGORY_FLAG.name);if(raw===void 0)return input;return withResolved(input,{category:(await ctx.resolver.notificationCategory(raw.trim())).id})}function noArgs(input,op){if(input.args.length>0){throw new UsageError(`${op} \u306F\u4F4D\u7F6E\u5F15\u6570\u3092\u53D6\u308A\u307E\u305B\u3093: ${input.args.join(" ")}`,`twp notification ${op} help`)}}function notificationId(input,op){const[raw,...rest]=input.args;const id=raw?.trim()??
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{activateModeFiles,activatePermissionSettings,buildResidentSet,buildSystemPrompt,createAuditLogger,createTwpToolkit,currentBranch,displayCwd,residentInputs,runTurn}from"./chunk-OK4ITT5Y.js";import"./chunk-NZ7WI4RZ.js";import"./chunk-YVAN3H5W.js";import"./chunk-RM4ECBIO.js";import"./chunk-FTYJZFEK.js";import"./chunk-GMBJTG6A.js";import{RelayError,createRuntime,pickModel}from"./chunk-PWXXCLVZ.js";import"./chunk-D233KKXW.js";import"./chunk-XNLIEUAW.js";
3
+ import{activateModeFiles,activatePermissionSettings,buildResidentSet,buildSystemPrompt,createAuditLogger,createTwpToolkit,currentBranch,displayCwd,residentInputs,runTurn}from"./chunk-N4ZW4IVU.js";import"./chunk-NZ7WI4RZ.js";import"./chunk-BUZKNZ45.js";import"./chunk-WQRWQ7IM.js";import"./chunk-7CQKNDAE.js";import"./chunk-GMBJTG6A.js";import{RelayError,createRuntime,pickModel}from"./chunk-77DFFCZF.js";import"./chunk-XNLIEUAW.js";import"./chunk-D233KKXW.js";
4
4
  import"./chunk-J7QYPKVK.js";import{checkMinSupportedVersion,enforceMinSupportedVersion,floorNeedsRefresh}from"./chunk-DXXFUNYN.js";import"./chunk-4VZKNEVN.js";import{getMode}from"./chunk-NAUH75MM.js";import{stripTerminalControls}from"./chunk-NHYMHCAT.js";import"./chunk-N2UVRM3Z.js";import"./chunk-II5RVJQN.js";import"./chunk-7WSNIXTQ.js";import"./chunk-PMOUHEJQ.js";import"./chunk-RZVI6PMW.js";import"./chunk-VSJBJXZO.js";async function runOneShot(opts,deps={}){const out=deps.out??(text=>void process.stdout.write(stripTerminalControls(text)));const err=deps.err??(text=>void process.stderr.write(stripTerminalControls(text)));activateModeFiles(err);const permissionLayers=activatePermissionSettings(err,{...opts.allowedTools?{allowedTools:opts.allowedTools}:{},...opts.disallowedTools?{disallowedTools:opts.disallowedTools}:{}});const prompt=opts.fromStdin?await(deps.readStdin??readStdin)():opts.prompt;if(prompt.trim()===
5
5
  ""){err('\u30D7\u30ED\u30F3\u30D7\u30C8\u304C\u7A7A\u3067\u3059\u3002`twp -p "\u8CEA\u554F"`\uFF08`-p -` \u3067\u6A19\u6E96\u5165\u529B\uFF09\n');return 2}const runtime=deps.runtime??createRuntime({...opts.profile!==void 0?{profile:opts.profile}:{},...opts.model!==void 0?{model:opts.model}:{},cliVersion:opts.version});const cachedFloor=runtime.loadCachedFloor();if(await checkMinSupportedVersion({current:opts.version,cachedFloor:cachedFloor.minSupportedVersion,refresh:async()=>(await runtime.loadCatalog()).
6
6
  minSupportedVersion,write:err})){return 1}if(!runtime.loggedIn){err("\u30ED\u30B0\u30A4\u30F3\u3057\u3066\u3044\u307E\u305B\u3093\u3002`twp login` \u3092\u5B9F\u884C\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n");return 1}let model=runtime.configuredModel??"";let catalog=null;if(model===""){catalog=await runtime.loadCatalog();const picked=pickModel(catalog,void 0);model=picked.model;if(catalog.source!=="server"){err(`\u26A0 \u30E2\u30C7\u30EB\u4E00\u89A7\u3092\u53D6\u5F97\u3067\u304D\u306A\u304B\u3063\u305F\u305F\u3081 ${model}\
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{STATUS_VALUES,booleanQuery,flatMasterDomain}from"./chunk-226G6ONZ.js";import"./chunk-UDPJ2IGK.js";import{POSITIONS_PATH}from"./chunk-RM4ECBIO.js";import"./chunk-FTYJZFEK.js";import"./chunk-GMBJTG6A.js";import"./chunk-J7QYPKVK.js";import"./chunk-4VZKNEVN.js";import"./chunk-NHYMHCAT.js";import"./chunk-R53CMVWR.js";import"./chunk-II5RVJQN.js";import"./chunk-ZN5EFDH7.js";import"./chunk-ZWVYVS2A.js";import"./chunk-7WSNIXTQ.js";
3
+ import{STATUS_VALUES,booleanQuery,flatMasterDomain}from"./chunk-FII7YYYZ.js";import"./chunk-UDPJ2IGK.js";import{POSITIONS_PATH}from"./chunk-WQRWQ7IM.js";import"./chunk-7CQKNDAE.js";import"./chunk-GMBJTG6A.js";import"./chunk-J7QYPKVK.js";import"./chunk-4VZKNEVN.js";import"./chunk-NHYMHCAT.js";import"./chunk-R53CMVWR.js";import"./chunk-II5RVJQN.js";import"./chunk-ZN5EFDH7.js";import"./chunk-ZWVYVS2A.js";import"./chunk-7WSNIXTQ.js";
4
4
  import"./chunk-RZVI6PMW.js";import"./chunk-VSJBJXZO.js";var positionDomain=flatMasterDomain({name:"position",label:"\u5F79\u8077",path:POSITIONS_PATH,itemKey:"position",summary:"\u5F79\u8077\u30DE\u30B9\u30BF\uFF08\u4E00\u89A7\u30FB\u53D6\u5F97\u30FB\u4F5C\u6210\u30FB\u66F4\u65B0\u30FB\u524A\u9664\uFF09",listColumns:["id","code","name","rank","is_manager","status","user_count"],getColumns:["id","code","name","name_short","rank","is_manager","status","description"],fields:[{kind:"text",flag:"--name-short",key:"name_short",label:"\u7565\u79F0",maxChars:50,
5
5
  summary:"\u7565\u79F0"},{kind:"integer",flag:"--rank",key:"rank",label:"\u30E9\u30F3\u30AF",min:0,max:9999,summary:"\u30E9\u30F3\u30AF\uFF080\u301C9999\u3002\u5927\u304D\u3044\u307B\u3069\u4E0A\u4F4D\uFF09"},{kind:"boolean",flag:"--manager",key:"is_manager",summary:"\u7BA1\u7406\u8077\u304B\uFF08true / false\uFF09"},{kind:"boolean",flag:"--can-view-personal-info",key:"can_view_personal_info",summary:"\u90E8\u4E0B\u306E\u500B\u4EBA\u60C5\u5831\u3092\u95B2\u89A7\u3067\u304D\u308B\u304B\uFF08true / false\uFF09"},
6
6
  {kind:"boolean",flag:"--can-view-emergency-contact",key:"can_view_emergency_contact",summary:"\u90E8\u4E0B\u306E\u7DCA\u6025\u9023\u7D61\u5148\u3092\u95B2\u89A7\u3067\u304D\u308B\u304B\uFF08true / false\uFF09"},{kind:"boolean",flag:"--can-view-work-tel",key:"can_view_work_tel",summary:"\u90E8\u4E0B\u306E\u696D\u52D9\u7528\u96FB\u8A71\u756A\u53F7\u3092\u95B2\u89A7\u3067\u304D\u308B\u304B\uFF08true / false\uFF09"},{kind:"enum",flag:"--status",key:"status",values:STATUS_VALUES,summary:"\u72B6\u614B\uFF08active: \u6709\