@tocca-systems/twp-cli 0.97.2 → 0.99.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 (354) hide show
  1. package/CHANGELOG.public.md +12 -0
  2. package/README.md +18 -3
  3. package/command-model/_routes.json +113 -1
  4. package/command-model/account-lock.json +1 -1
  5. package/command-model/accounting-master.json +4 -4
  6. package/command-model/address.json +1 -1
  7. package/command-model/agent-loop.json +28 -28
  8. package/command-model/agent.json +11 -11
  9. package/command-model/ai-chat-history.json +3 -3
  10. package/command-model/ai-task-copilot.json +1 -1
  11. package/command-model/ai-token-usage.json +8 -8
  12. package/command-model/ai-training-admin.json +15 -0
  13. package/command-model/ai-training-attempt-admin.json +7 -0
  14. package/command-model/ai-training-attempt.json +1 -1
  15. package/command-model/ai-training-program.json +2 -2
  16. package/command-model/analysis-alert-threshold.json +1 -1
  17. package/command-model/analysis-page-access-rule.json +3 -3
  18. package/command-model/analysis.json +3 -3
  19. package/command-model/announcement.json +6 -6
  20. package/command-model/api-key.json +5 -5
  21. package/command-model/api-usage.json +3 -3
  22. package/command-model/attendance-report-category.json +5 -5
  23. package/command-model/attendance-report-reason-detail.json +5 -5
  24. package/command-model/attendance-report-reason.json +5 -5
  25. package/command-model/attendance-report.json +3 -3
  26. package/command-model/attendance-timesheet.json +3 -3
  27. package/command-model/attendance.json +1 -1
  28. package/command-model/audit-log.json +3 -3
  29. package/command-model/auth.json +3 -3
  30. package/command-model/authorize.json +1 -1
  31. package/command-model/auto-charge.json +3 -3
  32. package/command-model/badge.json +4 -4
  33. package/command-model/billing.json +5 -5
  34. package/command-model/budget.json +8 -8
  35. package/command-model/business-place.json +2 -2
  36. package/command-model/capacity.json +4 -4
  37. package/command-model/cash-flow.json +1 -1
  38. package/command-model/catalog.json +7 -7
  39. package/command-model/chat-channel.json +9 -9
  40. package/command-model/chat-mention-group.json +3 -3
  41. package/command-model/chat-message.json +8 -8
  42. package/command-model/chat-presence.json +3 -3
  43. package/command-model/chat-scheduled-message.json +1 -1
  44. package/command-model/chat-tenant-connection.json +2 -2
  45. package/command-model/chat.json +1 -1
  46. package/command-model/cli-auth.json +1 -1
  47. package/command-model/cli-tool-catalog.json +1 -1
  48. package/command-model/cms-tag.json +5 -5
  49. package/command-model/commuting-expense.json +7 -7
  50. package/command-model/company-case-document.json +1 -1
  51. package/command-model/company-contract-document.json +4 -4
  52. package/command-model/company.json +4 -4
  53. package/command-model/config.json +2 -2
  54. package/command-model/container-agent-schedule.json +3 -3
  55. package/command-model/contract.json +4 -4
  56. package/command-model/credit.json +16 -15
  57. package/command-model/cross-project-report.json +1 -1
  58. package/command-model/customer-campaign.json +4 -4
  59. package/command-model/customer-contact.json +2 -2
  60. package/command-model/customer-interaction.json +4 -4
  61. package/command-model/customer-people.json +3 -3
  62. package/command-model/customer.json +3 -3
  63. package/command-model/cycle-time-analysis.json +1 -1
  64. package/command-model/dashboard-calendar.json +1 -1
  65. package/command-model/department.json +7 -7
  66. package/command-model/deposit-plan.json +2 -2
  67. package/command-model/deposit.json +3 -3
  68. package/command-model/desktop-release.json +2 -2
  69. package/command-model/domain-knowledge-doc.json +3 -2
  70. package/command-model/domain-knowledge.json +6 -4
  71. package/command-model/dynamo-attachment.json +5 -5
  72. package/command-model/dynamo-cms.json +12 -12
  73. package/command-model/dynamo-inquiry.json +9 -9
  74. package/command-model/dynamo-support.json +3 -3
  75. package/command-model/equipment-category.json +1 -1
  76. package/command-model/equipment.json +8 -8
  77. package/command-model/estimate-case-document.json +5 -5
  78. package/command-model/estimate-format.json +4 -4
  79. package/command-model/estimate-no-rule.json +2 -2
  80. package/command-model/estimate.json +8 -8
  81. package/command-model/evaluation-pdf.json +1 -1
  82. package/command-model/evaluation-period.json +5 -5
  83. package/command-model/evaluation.json +7 -7
  84. package/command-model/expense-report.json +10 -10
  85. package/command-model/expense-settings.json +1 -1
  86. package/command-model/external-integration-proxy.json +30 -30
  87. package/command-model/faq-notion-import.json +4 -4
  88. package/command-model/faq.json +4 -4
  89. package/command-model/favorite.json +1 -1
  90. package/command-model/feedback.json +7 -7
  91. package/command-model/fiscal-year-setting.json +4 -4
  92. package/command-model/floor-map.json +2 -2
  93. package/command-model/follow-up-message-template.json +2 -2
  94. package/command-model/goal-sheet.json +4 -4
  95. package/command-model/google-auth.json +1 -1
  96. package/command-model/hearing-auth.json +2 -2
  97. package/command-model/hearing-invitation.json +1 -1
  98. package/command-model/hearing-session.json +4 -4
  99. package/command-model/hearing.json +11 -11
  100. package/command-model/holiday.json +6 -6
  101. package/command-model/hr-checklist-template.json +4 -4
  102. package/command-model/hr-checklist.json +2 -2
  103. package/command-model/hr-qualification.json +2 -2
  104. package/command-model/html-editor.json +1 -1
  105. package/command-model/index.json +27 -7
  106. package/command-model/inquiry-routing.json +5 -5
  107. package/command-model/invoice-auto-template.json +4 -4
  108. package/command-model/invoice-no-rule.json +2 -2
  109. package/command-model/invoice.json +6 -6
  110. package/command-model/job-title.json +7 -7
  111. package/command-model/knowledge-qa.json +1 -1
  112. package/command-model/knowledge-recommendation-feedback.json +1 -1
  113. package/command-model/knowledge-recommendation.json +1 -1
  114. package/command-model/license-assignment.json +4 -4
  115. package/command-model/license-type.json +5 -5
  116. package/command-model/license.json +5 -5
  117. package/command-model/login-history.json +2 -2
  118. package/command-model/man-hour.json +2 -2
  119. package/command-model/master-announcement.json +2 -2
  120. package/command-model/master-billing.json +3 -3
  121. package/command-model/master-pricing.json +4 -4
  122. package/command-model/master-product.json +5 -5
  123. package/command-model/master-support.json +6 -6
  124. package/command-model/master-tenant.json +9 -9
  125. package/command-model/media-file-comment.json +1 -1
  126. package/command-model/media-file-version.json +4 -4
  127. package/command-model/media-file.json +16 -15
  128. package/command-model/media-folder.json +5 -5
  129. package/command-model/media-published-file.json +7 -0
  130. package/command-model/media-sharing-settings.json +7 -0
  131. package/command-model/meeting-category.json +4 -4
  132. package/command-model/meeting-pdf.json +1 -1
  133. package/command-model/meeting-template.json +4 -4
  134. package/command-model/meeting.json +9 -9
  135. package/command-model/member.json +1 -1
  136. package/command-model/microsoft-auth.json +1 -1
  137. package/command-model/microsoft-graph-proxy-v2.json +22 -22
  138. package/command-model/milli-credit.json +8 -8
  139. package/command-model/ms365-calendar-o-auth.json +2 -2
  140. package/command-model/music-generation.json +5 -5
  141. package/command-model/my-ai-training.json +2 -2
  142. package/command-model/my-task.json +4 -4
  143. package/command-model/my-training.json +4 -4
  144. package/command-model/news-perspective.json +2 -2
  145. package/command-model/note-category.json +3 -3
  146. package/command-model/note-comment.json +1 -1
  147. package/command-model/note-reaction.json +1 -1
  148. package/command-model/note-subscription.json +2 -2
  149. package/command-model/note.json +5 -5
  150. package/command-model/notification-recipient-rule.json +2 -2
  151. package/command-model/notification.json +6 -6
  152. package/command-model/notion-import.json +4 -4
  153. package/command-model/o-auth-client.json +4 -4
  154. package/command-model/ojt-approval-inbox.json +6 -0
  155. package/command-model/ojt-assignment.json +29 -0
  156. package/command-model/ojt-checklist.json +18 -0
  157. package/command-model/ojt-permission.json +9 -0
  158. package/command-model/ojt-plan.json +15 -0
  159. package/command-model/ojt-progress.json +6 -0
  160. package/command-model/ojt-report.json +12 -0
  161. package/command-model/ojt-role-dashboard.json +7 -0
  162. package/command-model/ojt-structure-change.json +14 -0
  163. package/command-model/onboarding-template.json +12 -12
  164. package/command-model/operating-hours.json +1 -1
  165. package/command-model/org-chart.json +1 -1
  166. package/command-model/organization-announcement-category.json +3 -3
  167. package/command-model/organization-announcement.json +5 -5
  168. package/command-model/payee.json +2 -2
  169. package/command-model/policy-employee.json +3 -3
  170. package/command-model/policy.json +7 -7
  171. package/command-model/position.json +5 -5
  172. package/command-model/private-agent-loop.json +18 -18
  173. package/command-model/private-task.json +8 -8
  174. package/command-model/process.json +5 -5
  175. package/command-model/profit-analysis.json +2 -2
  176. package/command-model/profit-summary.json +1 -1
  177. package/command-model/project-assignment.json +1 -1
  178. package/command-model/project-auto-assign-settings.json +7 -0
  179. package/command-model/project-cost.json +4 -4
  180. package/command-model/project-custom-field.json +4 -4
  181. package/command-model/project-digest.json +2 -2
  182. package/command-model/project-evaluation.json +5 -5
  183. package/command-model/project-health.json +3 -3
  184. package/command-model/project-inventory-continuation.json +1 -1
  185. package/command-model/project-inventory-overview.json +1 -1
  186. package/command-model/project-inventory-request.json +1 -1
  187. package/command-model/project-inventory-settings.json +1 -1
  188. package/command-model/project-member.json +3 -3
  189. package/command-model/project-overview.json +8 -0
  190. package/command-model/project-process.json +5 -5
  191. package/command-model/project-profit-analysis.json +1 -1
  192. package/command-model/project-quality-check-corrective-task.json +1 -1
  193. package/command-model/project-quality-check-record.json +1 -1
  194. package/command-model/project-quality-check-scope.json +1 -1
  195. package/command-model/project-quality-check-status.json +2 -2
  196. package/command-model/project-repository.json +2 -2
  197. package/command-model/project-revenue.json +5 -5
  198. package/command-model/project-status-report-project.json +1 -1
  199. package/command-model/project-status-report-settings.json +1 -1
  200. package/command-model/project-task-analytics.json +1 -1
  201. package/command-model/project-task-category.json +2 -2
  202. package/command-model/project-task-comment.json +2 -2
  203. package/command-model/project-task-form-options.json +1 -1
  204. package/command-model/project-task-group.json +3 -3
  205. package/command-model/project-task-label.json +2 -2
  206. package/command-model/project-task-link.json +2 -2
  207. package/command-model/project-task-milestone.json +4 -4
  208. package/command-model/project-task-rule.json +6 -6
  209. package/command-model/project-task-status.json +2 -2
  210. package/command-model/project-task-template.json +4 -4
  211. package/command-model/project-task-type.json +2 -2
  212. package/command-model/project-task-version.json +4 -4
  213. package/command-model/project-task-watcher.json +1 -1
  214. package/command-model/project-task.json +15 -15
  215. package/command-model/project-team-chat.json +2 -2
  216. package/command-model/project-template.json +5 -5
  217. package/command-model/project.json +7 -7
  218. package/command-model/prospect-promotion.json +1 -1
  219. package/command-model/prospect.json +7 -7
  220. package/command-model/public-pricing.json +6 -0
  221. package/command-model/purchase-ai-field-mapping.json +3 -3
  222. package/command-model/purchase-document.json +5 -5
  223. package/command-model/purchase-no-rule.json +2 -2
  224. package/command-model/purchase.json +4 -4
  225. package/command-model/push-subscription.json +1 -1
  226. package/command-model/qualification-import.json +2 -2
  227. package/command-model/qualification.json +4 -4
  228. package/command-model/quality-check-item.json +4 -4
  229. package/command-model/rag.json +1 -1
  230. package/command-model/rating-criteria.json +2 -2
  231. package/command-model/receivable-closing.json +2 -2
  232. package/command-model/receivable.json +2 -2
  233. package/command-model/received-invoice.json +3 -3
  234. package/command-model/recreation-club.json +4 -4
  235. package/command-model/report-format-order.json +2 -2
  236. package/command-model/report-saved-tab.json +3 -3
  237. package/command-model/report.json +25 -25
  238. package/command-model/retrospective.json +7 -7
  239. package/command-model/risk-analysis.json +1 -1
  240. package/command-model/role-template.json +3 -3
  241. package/command-model/sales-ai-review-reason-list.json +1 -1
  242. package/command-model/sales-default-recipient-set.json +2 -2
  243. package/command-model/sales-pdf.json +9 -9
  244. package/command-model/sales-recent-recipient.json +1 -1
  245. package/command-model/sales-rounding-setting.json +1 -1
  246. package/command-model/sales-setting.json +4 -4
  247. package/command-model/sales.json +3 -3
  248. package/command-model/saved-tab.json +3 -3
  249. package/command-model/saved-task-filter.json +1 -1
  250. package/command-model/seal-impression.json +2 -2
  251. package/command-model/segment.json +5 -5
  252. package/command-model/sidebar-badge-setting.json +1 -1
  253. package/command-model/skill-analytics.json +4 -4
  254. package/command-model/skill-category.json +4 -4
  255. package/command-model/skill-evaluation-export.json +1 -1
  256. package/command-model/skill-evaluation-record.json +1 -1
  257. package/command-model/skill-micro-feedback.json +2 -2
  258. package/command-model/skill-role-assignment.json +1 -1
  259. package/command-model/skill.json +5 -5
  260. package/command-model/sns-connection.json +2 -2
  261. package/command-model/sns-draft.json +6 -0
  262. package/command-model/sns-media.json +8 -0
  263. package/command-model/sns-post.json +14 -0
  264. package/command-model/staff-kpi-setting.json +2 -2
  265. package/command-model/staff-kpi.json +3 -3
  266. package/command-model/staffing-board-cell.json +1 -1
  267. package/command-model/staffing-board-note.json +1 -1
  268. package/command-model/staffing-board-snapshot.json +3 -3
  269. package/command-model/staffing-board-tentative-assignment.json +3 -3
  270. package/command-model/staffing-board-tentative-import.json +1 -1
  271. package/command-model/staffing-plan.json +5 -5
  272. package/command-model/statutory-rate-set.json +5 -5
  273. package/command-model/storage.json +5 -5
  274. package/command-model/subscription.json +2 -2
  275. package/command-model/supplier-payment-schedule.json +2 -2
  276. package/command-model/supplier-payment.json +2 -2
  277. package/command-model/survey-tracker.json +3 -3
  278. package/command-model/survey.json +18 -18
  279. package/command-model/task-analysis.json +1 -1
  280. package/command-model/task-branch.json +4 -4
  281. package/command-model/task-recurrence.json +2 -2
  282. package/command-model/task-wiki-link.json +2 -2
  283. package/command-model/teams-link.json +1 -1
  284. package/command-model/teams-sso.json +6 -0
  285. package/command-model/tenant-ai-key.json +6 -6
  286. package/command-model/tenant-egress-policy.json +5 -5
  287. package/command-model/tenant-email-settings.json +1 -1
  288. package/command-model/tenant-git-hub-settings.json +3 -3
  289. package/command-model/tenant-rag-settings.json +4 -4
  290. package/command-model/tenant-rate-override.json +1 -1
  291. package/command-model/tenant-registration.json +1 -1
  292. package/command-model/tenant-search.json +1 -1
  293. package/command-model/tenant-settings.json +13 -13
  294. package/command-model/terms.json +2 -2
  295. package/command-model/test-execution.json +3 -3
  296. package/command-model/test-scenario.json +5 -5
  297. package/command-model/training-attendance.json +5 -5
  298. package/command-model/training-master.json +3 -3
  299. package/command-model/training-session.json +5 -5
  300. package/command-model/unified-search.json +2 -2
  301. package/command-model/update-record.json +2 -2
  302. package/command-model/user-api-key.json +5 -5
  303. package/command-model/user-assignment-calendar.json +1 -1
  304. package/command-model/user-assignment.json +11 -11
  305. package/command-model/user-contract-type.json +5 -5
  306. package/command-model/user-contract.json +2 -2
  307. package/command-model/user-group.json +3 -3
  308. package/command-model/user-info.json +1 -1
  309. package/command-model/user-invitation.json +4 -4
  310. package/command-model/user-list-display-setting.json +1 -1
  311. package/command-model/user-list-item-order.json +1 -1
  312. package/command-model/user-management.json +9 -9
  313. package/command-model/user-qualification.json +1 -1
  314. package/command-model/user-recent-work.json +1 -1
  315. package/command-model/user-shortcut-setting.json +1 -1
  316. package/command-model/user-skill-profile.json +3 -3
  317. package/command-model/user.json +11 -11
  318. package/command-model/video-generation.json +7 -7
  319. package/command-model/well-known.json +2 -2
  320. package/command-model/whisper.json +2 -2
  321. package/command-model/wiki-collection.json +4 -4
  322. package/command-model/wiki-notion-import.json +3 -3
  323. package/command-model/wiki-template.json +4 -4
  324. package/command-model/wiki.json +9 -9
  325. package/command-model/worker-agent-run.json +4 -4
  326. package/command-model/worker-agent.json +7 -7
  327. package/command-model/workflow-ai-review.json +1 -1
  328. package/command-model/workflow-analysis.json +1 -1
  329. package/command-model/workflow-approval-delegation.json +3 -3
  330. package/command-model/workflow-approval.json +4 -4
  331. package/command-model/workflow-attachment-pdf-preview.json +1 -1
  332. package/command-model/workflow-comment-attachment.json +3 -3
  333. package/command-model/workflow-estimate-input.json +4 -4
  334. package/command-model/workflow-instance.json +6 -6
  335. package/command-model/workflow-tracker.json +5 -5
  336. package/command-model/workflow.json +7 -7
  337. package/command-model/workload-alert.json +2 -2
  338. package/dist/{api-command-STY4LFJG.js → api-command-VDEHGVMH.js} +1 -1
  339. package/dist/{app-XFKEG3JB.js → app-3RAQDCXW.js} +2 -2
  340. package/dist/{chunk-QKTEMDDP.js → chunk-C6AOVOVD.js} +48 -19
  341. package/dist/{chunk-NZ7WI4RZ.js → chunk-CDAU3M7F.js} +4 -4
  342. package/dist/{chunk-6HBZRMDD.js → chunk-FZ55A6NN.js} +8 -8
  343. package/dist/{chunk-T6ARS4Y3.js → chunk-HOCPACZF.js} +1 -1
  344. package/dist/{chunk-BEUPNDJE.js → chunk-SLZ3KVFA.js} +3 -3
  345. package/dist/cli.js +10 -6
  346. package/dist/{media-GXTZJ5L4.js → media-J475DUVM.js} +1 -1
  347. package/dist/{oneshot-JAA46MUA.js → oneshot-ZG65R6KG.js} +1 -1
  348. package/dist/project-XOQNM7DP.js +4 -0
  349. package/dist/{registry-E4TNSUNA.js → registry-5ACTRYN2.js} +1 -1
  350. package/dist/{run-7Q3XLJFT.js → run-CX7LUVBB.js} +1 -1
  351. package/dist/{staffing-board-5K35Z4O5.js → staffing-board-S6VXUPEX.js} +32 -29
  352. package/dist/{user-ECG5E32W.js → user-6IYB3OJE.js} +5 -4
  353. package/package.json +1 -1
  354. package/dist/project-2MWLBXAB.js +0 -4
@@ -10,41 +10,44 @@ const current=`${String(now.getFullYear())}-${String(now.getMonth()+1).padStart(
10
10
  usage);range={from:month,to:month,defaulted:false}}else if(from===void 0&&to===void 0){range=defaultBoardRange(now)}else if(from===void 0||to===void 0){throw new UsageError("--from \u3068 --to \u306F\u4E21\u65B9\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF081\u304B\u6708\u3060\u3051\u306A\u3089 --month\uFF09",usage)}else{range={from,to,defaulted:false}}if(range.from>range.to)throw new UsageError(`--from\uFF08${range.from}\uFF09\u304C --to\uFF08${range.to}\uFF09\u3088\u308A\u5F8C\u306B\u306A\u3063\u3066\u3044\u307E\u3059`,
11
11
  usage);if(monthsBetween(range.from,range.to).length>MAX_MONTHS){throw new UsageError(`\u671F\u9593\u306F${String(MAX_MONTHS)}\u304B\u6708\u307E\u3067\u3067\u3059\uFF08${range.from} \u301C ${range.to}\uFF09`,usage)}return range}function boardRangeNotes(range){return range.defaulted?[`\u671F\u9593\u306E\u6307\u5B9A\u304C\u7121\u3044\u306E\u3067\u753B\u9762\u306E\u521D\u671F\u8868\u793A\u3068\u540C\u3058\u7FCC\u6708\u304B\u3089${String(DEFAULT_MONTHS)}\u304B\u6708\uFF08${range.from} \u301C ${range.
12
12
  to}\u30FB\u3053\u306E\u7AEF\u672B\u306E\u6642\u8A08\uFF09\u306B\u3057\u307E\u3059\u3002`]:[]}var UNIT_FLAG={name:"--unit",summary:"\u8868\u793A\u5358\u4F4D\uFF08hours\uFF1D\u6642\u9593\u30FB\u65E2\u5B9A / fte\uFF1D\u4EBA\u6708 / percent\uFF1D\u5272\u5408\uFF09\u3002table / text / tsv \u3060\u3051\u306B\u52B9\u304F",takesValue:true,placeholder:"<hours|fte|percent>"};var BY_PROJECT_FLAG={name:"--by-project",summary:"\u30E1\u30F3\u30D0\u30FC\xD7\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u884C\u3067\u51FA\u3059\uFF08\u753B\u9762\u3067\u884C\u3092\u958B\u3044\u305F\u5185\u8A33\uFF09",
13
- takesValue:false};var INCLUDE_TENTATIVE_FLAG={name:"--include-tentative",summary:"\u4EEE\u30A2\u30B5\u30A4\u30F3\u3092\u5408\u8A08\u306B\u8DB3\u3059\uFF08\u753B\u9762\u306E\u300C\u4EEE\u30A2\u30B5\u30A4\u30F3\u3092\u542B\u3081\u308B\u300D\u5207\u66FF\uFF09",takesValue:false};var SHOW_USAGE="twp staffing-board show [--month <YYYY-MM> | --from <YYYY-MM> --to <YYYY-MM>] [--unit hours|fte|percent] [--by-project] [--include-tentative] [--user <\u30E6\u30FC\u30B6\u30FC>] [--department <\u90E8\u7F72>]";
14
- function unitOf(input){const raw=input.flags.get(UNIT_FLAG.name)?.trim()??"hours";if(raw!=="hours"&&raw!=="fte"&&raw!=="percent"){throw new UsageError(`--unit \u306F hours / fte / percent \u306E\u3044\u305A\u308C\u304B\u3067\u3059\uFF08\u53D7\u3051\u53D6\u3063\u305F\u5024: ${raw}\uFF09`,SHOW_USAGE)}return raw}function formatBoardValue(hours,standardHours,unit){const standard=typeof standardHours==="number"?standardHours:0;switch(unit){case"fte":return standard>0?(hours/standard).toFixed(2):"-";case"\
15
- percent":return standard>0?`${(hours/standard*100).toFixed(0)}%`:"-";default:return`${hours.toFixed(1)}h`}}function num(value){return typeof value==="number"&&Number.isFinite(value)?value:0}function monthIndex(entries){const out=new Map;if(!Array.isArray(entries))return out;for(const entry of entries){if(isRecord(entry)&&typeof entry["year_month"]==="string")out.set(entry["year_month"],entry)}return out}var VIEW_KEY="__twp_staffing_board_view";function viewOf(body){const view=recordOf(isRecord(body)?
16
- body[VIEW_KEY]:void 0);return{unit:view["unit"]??"hours",byProject:view["byProject"]===true,excludedProjectIds:Array.isArray(view["excludedProjectIds"])?view["excludedProjectIds"]:[],tentatives:Array.isArray(view["tentatives"])?view["tentatives"]:null}}function boardMonthHours(user,ym,view){const excluded=new Set(view.excludedProjectIds);const assigned=num(monthIndex(user["by_month"]).get(ym)?.["assigned_hours"]);let excludedHours=0;const projects=Array.isArray(user["projects"])?user["projects"].
17
- map(recordOf):[];for(const project of projects){const id=project["project_id"];if(project["is_unassigned"]===true||typeof id!=="string"||!excluded.has(id))continue;const cell=monthIndex(project["by_month"]).get(ym);if(cell!==void 0&&cell["is_estimated"]!==true)excludedHours+=num(cell["hours"])}const base=Math.max(0,assigned-excludedHours);if(view.tentatives===null)return base;const tentative=view.tentatives.filter(t=>t["user_id"]===user["user_id"]&&!(typeof t["project_id"]==="string"&&excluded.has(
18
- t["project_id"]))).reduce((sum,t)=>sum+num(recordOf(t["monthly_hours"])[ym]),0);return base+tentative}function boardRows(body){const view=viewOf(body);const months=responseMonths(body);return listIn(body,"users","\u8981\u54E1\u8ABF\u6574\u30DC\u30FC\u30C9").map(user=>{const byMonth=monthIndex(user["by_month"]);const cells={};let total=0;for(const ym of months){const m=byMonth.get(ym);if(m===void 0){cells[ym]=null;continue}const hours=boardMonthHours(user,ym,view);total+=hours;const estimated=num(
19
- m["estimated_hours"]);const showEstimated=estimated>0&&(view.unit==="hours"||num(m["standard_hours"])>0);cells[ym]=`${formatBoardValue(hours,m["standard_hours"],view.unit)}${showEstimated?` (+\u63A8\u5B9A ${formatBoardValue(estimated,m["standard_hours"],view.unit)})`:""}`}return{department_name:user["department_name"]??null,user_name:user["user_name"]??null,...cells,total_hours:Math.round(total*10)/10,user_id:user["user_id"]??null}})}function boardProjectRows(body){const view=viewOf(body);const excluded=new Set(
20
- view.excludedProjectIds);const months=responseMonths(body);const rows=[];for(const user of listIn(body,"users","\u8981\u54E1\u8ABF\u6574\u30DC\u30FC\u30C9")){const standards=monthIndex(user["by_month"]);const projects=Array.isArray(user["projects"])?user["projects"].map(recordOf):[];for(const project of projects){const byMonth=monthIndex(project["by_month"]);const cells={};for(const ym of months){const m=byMonth.get(ym);const hours=num(m?.["hours"]);cells[ym]=m===void 0||hours<=0?null:`${formatBoardValue(
21
- hours,standards.get(ym)?.["standard_hours"],view.unit)}${m["is_estimated"]===true?" (\u63A8\u5B9A)":""}`}const id=project["project_id"];rows.push({user_name:user["user_name"]??null,project_name:project["project_name"]??null,...cells,excluded:typeof id==="string"&&excluded.has(id),unassigned:project["is_unassigned"]===true,user_id:user["user_id"]??null,project_id:id??null})}}return rows}function shownTentatives(body,tentatives){const users=new Set(listIn(body,"users","\u8981\u54E1\u8ABF\u6574\u30DC\u30FC\u30C9").
22
- map(u=>u["user_id"]));return tentatives.filter(t=>users.has(t["user_id"])).length}function showPlan(input){noArgs(input,SHOW_USAGE);const range=boardRange(input,SHOW_USAGE);unitOf(input);return{method:"GET",path:BOARD_PATH,query:{start_ym:range.from,end_ym:range.to,user_id:resolvedOrUndefined(input,"userId"),department_id:resolvedOrUndefined(input,"departmentId")}}}var showOperation={name:"show",summary:"\u8981\u54E1\u8ABF\u6574\u30DC\u30FC\u30C9\u306E\u8868\uFF08\u30E1\u30F3\u30D0\u30FC\xD7\u6708\u306E\u30A2\u30B5\u30A4\u30F3\u5DE5\u6570\uFF09\u3092\u8868\u793A\u3059\u308B",
13
+ takesValue:false};var INCLUDE_TENTATIVE_FLAG={name:"--include-tentative",summary:"\u4EEE\u30A2\u30B5\u30A4\u30F3\u3092\u5408\u8A08\u306B\u8DB3\u3059\uFF08\u753B\u9762\u306E\u300C\u4EEE\u30A2\u30B5\u30A4\u30F3\u3092\u542B\u3081\u308B\u300D\u5207\u66FF\uFF09",takesValue:false};var INCLUDE_HIDDEN_FLAG={name:"--include-hidden",summary:"\u30DC\u30FC\u30C9\u3067\u975E\u8868\u793A\u306E\u30E1\u30F3\u30D0\u30FC\uFF08\u65E2\u5B9A\u306F\u6B63\u793E\u54E1\u4EE5\u5916\u30FB\u624B\u52D5\u3067\u975E\u8868\u793A\u306B\u3057\u305F\u4EBA\uFF09\u3082\u542B\u3081\u308B\uFF08\u753B\u9762\u306E\u300C\u975E\u8868\u793A\u306E\u30E1\u30F3\u30D0\u30FC\u3082\u8868\u793A\u3059\u308B\u300D\uFF09",
14
+ takesValue:false};var SHOW_USAGE="twp staffing-board show [--month <YYYY-MM> | --from <YYYY-MM> --to <YYYY-MM>] [--unit hours|fte|percent] [--by-project] [--include-tentative] [--include-hidden] [--user <\u30E6\u30FC\u30B6\u30FC>] [--department <\u90E8\u7F72>]";function unitOf(input){const raw=input.flags.get(UNIT_FLAG.name)?.trim()??"hours";if(raw!=="hours"&&raw!=="fte"&&raw!=="percent"){throw new UsageError(`--unit \u306F hours / fte / percent \u306E\u3044\u305A\u308C\u304B\u3067\u3059\uFF08\u53D7\u3051\u53D6\u3063\u305F\u5024: ${raw}\
15
+ \uFF09`,SHOW_USAGE)}return raw}function formatBoardValue(hours,standardHours,unit){const standard=typeof standardHours==="number"?standardHours:0;switch(unit){case"fte":return standard>0?(hours/standard).toFixed(2):"-";case"percent":return standard>0?`${(hours/standard*100).toFixed(0)}%`:"-";default:return`${hours.toFixed(1)}h`}}function num(value){return typeof value==="number"&&Number.isFinite(value)?value:0}function monthIndex(entries){const out=new Map;if(!Array.isArray(entries))return out;for(const entry of entries){
16
+ if(isRecord(entry)&&typeof entry["year_month"]==="string")out.set(entry["year_month"],entry)}return out}var VIEW_KEY="__twp_staffing_board_view";function viewOf(body){const view=recordOf(isRecord(body)?body[VIEW_KEY]:void 0);return{unit:view["unit"]??"hours",byProject:view["byProject"]===true,excludedProjectIds:Array.isArray(view["excludedProjectIds"])?view["excludedProjectIds"]:[],tentatives:Array.isArray(view["tentatives"])?view["tentatives"]:null,includeHidden:view["includeHidden"]===true}}function boardUsers(body){
17
+ const users=listIn(body,"users","\u8981\u54E1\u8ABF\u6574\u30DC\u30FC\u30C9");return viewOf(body).includeHidden?users:users.filter(u=>u["is_board_visible"]!==false)}function hiddenCount(body){return listIn(body,"users","\u8981\u54E1\u8ABF\u6574\u30DC\u30FC\u30C9").filter(u=>u["is_board_visible"]===false).length}function boardMonthHours(user,ym,view){const excluded=new Set(view.excludedProjectIds);const assigned=num(monthIndex(user["by_month"]).get(ym)?.["assigned_hours"]);let excludedHours=0;const projects=Array.
18
+ isArray(user["projects"])?user["projects"].map(recordOf):[];for(const project of projects){const id=project["project_id"];if(project["is_unassigned"]===true||typeof id!=="string"||!excluded.has(id))continue;const cell=monthIndex(project["by_month"]).get(ym);if(cell!==void 0&&cell["is_estimated"]!==true)excludedHours+=num(cell["hours"])}const base=Math.max(0,assigned-excludedHours);if(view.tentatives===null)return base;const tentative=view.tentatives.filter(t=>t["user_id"]===user["user_id"]&&!(typeof t["\
19
+ project_id"]==="string"&&excluded.has(t["project_id"]))).reduce((sum,t)=>sum+num(recordOf(t["monthly_hours"])[ym]),0);return base+tentative}function boardRows(body){const view=viewOf(body);const months=responseMonths(body);return boardUsers(body).map(user=>{const byMonth=monthIndex(user["by_month"]);const cells={};let total=0;for(const ym of months){const m=byMonth.get(ym);if(m===void 0){cells[ym]=null;continue}const hours=boardMonthHours(user,ym,view);total+=hours;const estimated=num(m["estimat\
20
+ ed_hours"]);const showEstimated=estimated>0&&(view.unit==="hours"||num(m["standard_hours"])>0);cells[ym]=`${formatBoardValue(hours,m["standard_hours"],view.unit)}${showEstimated?` (+\u63A8\u5B9A ${formatBoardValue(estimated,m["standard_hours"],view.unit)})`:""}`}return{department_name:user["department_name"]??null,user_name:user["user_name"]??null,...cells,total_hours:Math.round(total*10)/10,user_id:user["user_id"]??null}})}function boardProjectRows(body){const view=viewOf(body);const excluded=new Set(
21
+ view.excludedProjectIds);const months=responseMonths(body);const rows=[];for(const user of boardUsers(body)){const standards=monthIndex(user["by_month"]);const projects=Array.isArray(user["projects"])?user["projects"].map(recordOf):[];for(const project of projects){const byMonth=monthIndex(project["by_month"]);const cells={};for(const ym of months){const m=byMonth.get(ym);const hours=num(m?.["hours"]);cells[ym]=m===void 0||hours<=0?null:`${formatBoardValue(hours,standards.get(ym)?.["standard_hou\
22
+ rs"],view.unit)}${m["is_estimated"]===true?" (\u63A8\u5B9A)":""}`}const id=project["project_id"];rows.push({user_name:user["user_name"]??null,project_name:project["project_name"]??null,...cells,excluded:typeof id==="string"&&excluded.has(id),unassigned:project["is_unassigned"]===true,user_id:user["user_id"]??null,project_id:id??null})}}return rows}function shownTentatives(body,tentatives){const users=new Set(boardUsers(body).map(u=>u["user_id"]));return tentatives.filter(t=>users.has(t["user_id"])).
23
+ length}function showPlan(input){noArgs(input,SHOW_USAGE);const range=boardRange(input,SHOW_USAGE);unitOf(input);return{method:"GET",path:BOARD_PATH,query:{start_ym:range.from,end_ym:range.to,user_id:resolvedOrUndefined(input,"userId"),department_id:resolvedOrUndefined(input,"departmentId")}}}var showOperation={name:"show",summary:"\u8981\u54E1\u8ABF\u6574\u30DC\u30FC\u30C9\u306E\u8868\uFF08\u30E1\u30F3\u30D0\u30FC\xD7\u6708\u306E\u30A2\u30B5\u30A4\u30F3\u5DE5\u6570\uFF09\u3092\u8868\u793A\u3059\u308B",
23
24
  usage:SHOW_USAGE,description:`\u753B\u9762\u300C\u8981\u54E1\u8ABF\u6574\u30DC\u30FC\u30C9\u300D\u306E\u8868\u3068\u540C\u3058\u5024\u3092\u51FA\u3057\u307E\u3059\uFF08GET /api/v2/analysis/staffing-board \uFF0B \u96C6\u8A08\u5BFE\u8C61\u5916\u306E\u8A2D\u5B9A\uFF09\u3002
24
25
  \u671F\u9593\u3092\u7701\u304F\u3068\u753B\u9762\u306E\u521D\u671F\u8868\u793A\u3068\u540C\u3058\u7FCC\u6708\u304B\u3089${String(DEFAULT_MONTHS)}\u304B\u6708\uFF08\u3053\u306E\u7AEF\u672B\u306E\u6642\u8A08\uFF09\u3067\u3059\u3002\u671F\u9593\u306F${String(MAX_MONTHS)}\u304B\u6708\u307E\u3067\u3067\u3059\u3002
25
26
  \u5404\u6708\u306F\u300C\u6B63\u5F0F\u30A2\u30B5\u30A4\u30F3\u306E\u5408\u8A08 \u2212 \u96C6\u8A08\u5BFE\u8C61\u5916\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u300D\u3067\u3001--include-tentative \u3067\u4EEE\u30A2\u30B5\u30A4\u30F3\u3092\u8DB3\u3057\u307E\u3059\uFF08\u753B\u9762\u306E\u5207\u66FF\u3068\u540C\u3058\uFF09\u3002
26
27
  \u63A8\u5B9A\u6642\u9593\uFF08\u30A2\u30B5\u30A4\u30F3\u671F\u9593\u304C\u672A\u5165\u529B\u3067\u6848\u4EF6\u306E\u65E2\u5B9A\u304B\u3089\u51FA\u3057\u305F\u5024\uFF09\u306F\u5408\u8A08\u306B\u542B\u3081\u305A\u3001(+\u63A8\u5B9A \u2026) \u3068\u6DFB\u3048\u307E\u3059\u3002
27
28
  --unit \u3067\u6642\u9593 / \u4EBA\u6708\uFF08FTE\uFF09/ \u5272\u5408\u306B\u63DB\u7B97\u3057\u307E\u3059\uFF08\u5206\u6BCD\u306F\u305D\u306E\u30E1\u30F3\u30D0\u30FC\u30FB\u305D\u306E\u6708\u306E\u6A19\u6E96\u6642\u9593\u3002\u753B\u9762\u3068\u540C\u3058\u5F0F\uFF09\u3002
28
29
  --by-project \u3067\u30E1\u30F3\u30D0\u30FC\xD7\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u884C\u306B\u3057\u307E\u3059\u3002
30
+ \u753B\u9762\u3068\u540C\u3058\u304F\u3001\u30DC\u30FC\u30C9\u3067\u975E\u8868\u793A\u306E\u30E1\u30F3\u30D0\u30FC\uFF08\u65E2\u5B9A\u306F\u6B63\u793E\u54E1\u4EE5\u5916\u30FB\u624B\u52D5\u3067\u975E\u8868\u793A\u306B\u3057\u305F\u4EBA\uFF09\u306F\u9664\u304D\u307E\u3059\u3002--include-hidden \u3067\u542B\u3081\u307E\u3059\u3002
29
31
  \u30BB\u30EB\u5DE5\u6570\u306E\u66F4\u65B0\u306F twp staffing-board cell set \u3067\u3059\uFF08\u753B\u9762\u3068\u540C\u30581\u304B\u6708\u5358\u4F4D\u30FB\u30DC\u30FC\u30C9\u306E\u7DE8\u96C6\u53EF\u304C\u8981\u308A\u307E\u3059\uFF09\u3002
30
- --output json \u306F\u30B5\u30FC\u30D0\u306E\u5FDC\u7B54\u306B excluded_project_ids\uFF08\u3068 --include-tentative \u306A\u3089 tentative_assignments\uFF09\u3092\u8DB3\u3057\u305F\u3082\u306E\u3067\u3001\u63DB\u7B97\u524D\u306E\u5024\u3067\u3059\u3002`,flags:[MONTH_FLAG,FROM_FLAG,TO_FLAG,UNIT_FLAG,BY_PROJECT_FLAG,INCLUDE_TENTATIVE_FLAG,USER_FLAG,DEPARTMENT_FLAG],forbidden:FORBIDDEN,async prepare(input,ctx){noArgs(input,SHOW_USAGE);boardRange(input,SHOW_USAGE);unitOf(input);return resolveFilters(
31
- input,ctx)},plan:showPlan,plannedNotes:input=>[...boardRangeNotes(boardRange(input,SHOW_USAGE)),`\u3053\u306E\u3042\u3068\u96C6\u8A08\u5BFE\u8C61\u5916\u306E\u8A2D\u5B9A\uFF08GET ${BOARD_PATH}/settings\uFF09${input.flags.has(INCLUDE_TENTATIVE_FLAG.name)?"\u3068\u4EEE\u30A2\u30B5\u30A4\u30F3\uFF08GET \u2026/tentative-assignments\uFF09":""}\u3082\u8AAD\u307F\u307E\u3059\u3002`],async execute(input,ctx){const plan=showPlan(input);const board=await ctx.send(plan);const settings=recordOf(dataOf(await ctx.
32
- send({method:"GET",path:`${BOARD_PATH}/settings`}),"\u8981\u54E1\u8ABF\u6574\u30DC\u30FC\u30C9\u306E\u8A2D\u5B9A"));const excluded=Array.isArray(settings["excluded_project_ids"])?settings["excluded_project_ids"].filter(v=>typeof v==="string"):[];let tentatives=null;if(input.flags.has(INCLUDE_TENTATIVE_FLAG.name)){tentatives=listIn(await ctx.send({method:"GET",path:TENTATIVE_PATH,query:{start_ym:plan.query?.["start_ym"],end_ym:plan.query?.["end_ym"]}}),"items","\u4EEE\u30A2\u30B5\u30A4\u30F3")}if(!isRecord(
33
- board))return board;const view={unit:unitOf(input),byProject:input.flags.has(BY_PROJECT_FLAG.name),excludedProjectIds:excluded,tentatives};return{...board,[VIEW_KEY]:view}},summarize:body=>viewOf(body).byProject?boardProjectRows(body):boardRows(body),raw:body=>{listIn(body,"users","\u8981\u54E1\u8ABF\u6574\u30DC\u30FC\u30C9");if(!isRecord(body))return body;const view=viewOf(body);const rest={...body,excluded_project_ids:view.excludedProjectIds};if(view.tentatives!==null)rest["tentative_assignmen\
34
- ts"]=view.tentatives;delete rest[VIEW_KEY];return rest},notes:body=>{const view=viewOf(body);return[...periodNote(body),...view.excludedProjectIds.length>0?[`\u96C6\u8A08\u5BFE\u8C61\u5916\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8 ${String(view.excludedProjectIds.length)} \u4EF6\u3092\u5408\u8A08\u304B\u3089\u9664\u3044\u3066\u3044\u307E\u3059\u3002`]:[],view.tentatives===null?"\u4EEE\u30A2\u30B5\u30A4\u30F3\u306F\u542B\u307F\u307E\u305B\u3093\uFF08--include-tentative \u3067\u8DB3\u3057\u307E\u3059\uFF09\u3002":
35
- view.byProject?"--by-project \u306E\u884C\u306F\u6B63\u5F0F\u30A2\u30B5\u30A4\u30F3\u3060\u3051\u3067\u3001\u4EEE\u30A2\u30B5\u30A4\u30F3\u306F\u542B\u307F\u307E\u305B\u3093\u3002":`\u8868\u793A\u3057\u305F\u30E1\u30F3\u30D0\u30FC\u306E\u4EEE\u30A2\u30B5\u30A4\u30F3 ${String(shownTentatives(body,view.tentatives))} \u4EF6\u3092\u5408\u8A08\u306B\u542B\u3081\u3066\u3044\u307E\u3059\u3002`]}};var PROBABILITIES=["confirmed","likely","pre","on_hold"];var PROBABILITY_LABELS={confirmed:"\u78BA\u5B9A",likely:"\
36
- \u307B\u307C\u78BA\u5B9A",pre:"\u30D7\u30EC",on_hold:"\u4FDD\u7559"};var TENTATIVE_USER_FLAG={name:"--user",summary:"\u30E1\u30F3\u30D0\u30FC\uFF08\u6C0F\u540D\u30FB\u30E1\u30FC\u30EB\u30FBID\u30FBme\uFF09",takesValue:true,placeholder:"<\u30E6\u30FC\u30B6\u30FC>"};var TENTATIVE_PROJECT_FLAG={name:"--project",summary:"\u65E2\u5B58\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\uFF08\u30B3\u30FC\u30C9\u30FBID\uFF09",takesValue:true,placeholder:"<\u30B3\u30FC\u30C9|ID>"};var PROJECT_NAME_FLAG={name:"--project\
37
- -name",summary:"TWP \u672A\u767B\u9332\u306E\u898B\u8FBC\u307F\u6848\u4EF6\u540D\uFF08200\u6587\u5B57\u307E\u3067\uFF09",takesValue:true,placeholder:"<\u6848\u4EF6\u540D>"};var PROBABILITY_FLAG={name:"--probability",summary:"\u78BA\u5EA6\uFF08confirmed\uFF1D\u78BA\u5B9A / likely\uFF1D\u307B\u307C\u78BA\u5B9A / pre\uFF1D\u30D7\u30EC / on_hold\uFF1D\u4FDD\u7559\uFF09",takesValue:true,placeholder:"<\u78BA\u5EA6>"};var HOURS_FLAG={name:"--hours",summary:"\u6708\u306E\u6642\u9593\uFF08YYYY-MM=\u6642\u9593\uFF09\u3002\u7E70\u308A\u8FD4\u3057\u6307\u5B9A\u3067\u304D\u308B\u3002update \u3067\u306F\u6307\u5B9A\u3057\u305F\u6708\u306E\u96C6\u5408\u3067\
38
- \u7F6E\u304D\u63DB\u308F\u308B",takesValue:true,placeholder:"<YYYY-MM=\u6642\u9593>",repeatable:true};var NO_HOURS_FLAG={name:"--no-hours",summary:"\u6708\u306E\u6642\u9593\u3092\u7A7A\u306B\u3059\u308B\uFF08\u6642\u671F\u672A\u5B9A\u306E\u898B\u8FBC\u307F\uFF09",takesValue:false};var MEMO_FLAG={name:"--memo",summary:"\u30E1\u30E2\uFF082,000\u6587\u5B57\u307E\u3067\uFF09",takesValue:true,placeholder:"<\u6587\u5B57\u5217>"};var ROLE_FLAG={name:"--role",summary:"\u6607\u683C\u6642\u306E\u5F79\u5272\uFF08\u65E2\u5B9A member\u3002\u5024\u306F\u30B5\u30FC\u30D0\u304C\u691C\u67FB\u3059\u308B\uFF09",
39
- takesValue:true,placeholder:"<\u5F79\u5272>"};var TENTATIVE_LIST_USAGE="twp staffing-board tentative list [--from <YYYY-MM> --to <YYYY-MM>] [--user <\u30E6\u30FC\u30B6\u30FC>]";var TENTATIVE_CREATE_USAGE="twp staffing-board tentative create --user <\u30E6\u30FC\u30B6\u30FC> (--project <\u30B3\u30FC\u30C9> | --project-name <\u6848\u4EF6\u540D>) --probability <\u78BA\u5EA6> (--hours <YYYY-MM=\u6642\u9593> ... | --no-hours) [--memo <\u6587\u5B57\u5217>]";var TENTATIVE_UPDATE_USAGE="twp staffing-boa\
40
- rd tentative update <ID> [--user <\u30E6\u30FC\u30B6\u30FC>] [--project <\u30B3\u30FC\u30C9>] [--project-name <\u6848\u4EF6\u540D>] [--probability <\u78BA\u5EA6>] [--hours <YYYY-MM=\u6642\u9593> ... | --no-hours] [--memo <\u6587\u5B57\u5217>]";var TENTATIVE_DELETE_USAGE="twp staffing-board tentative delete <ID> --yes";var TENTATIVE_PROMOTE_USAGE="twp staffing-board tentative promote <ID> [--project <\u30B3\u30FC\u30C9>] [--role <\u5F79\u5272>] --yes";function parseMonthlyHours(values,usage){const out={};
41
- for(const raw of values){const match=/^\s*(\d{4}-(?:0[1-9]|1[0-2]))\s*=\s*([0-9]+(?:\.[0-9]+)?)\s*$/.exec(raw);if(match===null)throw new UsageError(`--hours \u306F YYYY-MM=\u6642\u9593 \u306E\u5F62\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u53D7\u3051\u53D6\u3063\u305F\u5024: ${raw}\uFF09`,usage);const[,ym,hours]=match;if(ym in out)throw new UsageError(`--hours \u306B\u540C\u3058\u6708\uFF08${ym}\uFF09\u304C2\u56DE\u3042\u308A\u307E\u3059`,usage);out[ym]=Number(hours)}return out}
42
- function probabilityOf(input,usage){const raw=input.flags.get(PROBABILITY_FLAG.name)?.trim();if(raw===void 0)return void 0;if(!PROBABILITIES.includes(raw)){throw new UsageError(`--probability \u306F ${PROBABILITIES.join(" / ")} \u306E\u3044\u305A\u308C\u304B\u3067\u3059\uFF08\u53D7\u3051\u53D6\u3063\u305F\u5024: ${raw}\uFF09`,usage)}return raw}function tentativeBody(input,usage,creating){const body={};const userId=input.resolved?.["userId"];const projectId=input.resolved?.["projectId"];const projectName=input.
43
- flags.get(PROJECT_NAME_FLAG.name);const probability=probabilityOf(input,usage);const hours=repeatedValues(input,HOURS_FLAG.name);const noHours=input.flags.has(NO_HOURS_FLAG.name);const memo=input.flags.get(MEMO_FLAG.name);if(hours.length>0&&noHours)throw new UsageError("--hours \u3068 --no-hours \u306F\u4F75\u7528\u3067\u304D\u307E\u305B\u3093",usage);if(creating){if(userId===void 0)throw new UsageError("--user \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",usage);if(projectId===void 0&&
44
- (projectName===void 0||projectName.trim()==="")){throw new UsageError("--project \u304B --project-name \u306E\u3069\u3061\u3089\u304B\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",usage)}if(probability===void 0)throw new UsageError("--probability \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",usage);if(hours.length===0&&!noHours){throw new UsageError("--hours \u30921\u3064\u4EE5\u4E0A\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u6642\u671F\u672A\u5B9A\u306A\u3089 --no-hours\uFF09",
45
- usage)}}if(userId!==void 0)body["user_id"]=userId;if(projectId!==void 0)body["project_id"]=projectId;if(projectName!==void 0)body["project_name"]=projectName.trim()===""?null:projectName.trim();if(probability!==void 0)body["probability"]=probability;if(hours.length>0)body["monthly_hours"]=parseMonthlyHours(hours,usage);if(noHours)body["monthly_hours"]={};if(memo!==void 0)body["memo"]=memo===""?null:memo;if(!creating&&Object.keys(body).length===0)throw new UsageError("\u5909\u66F4\u3059\u308B\u9805\u76EE\u30921\u3064\u4EE5\u4E0A\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",
46
- usage);return body}async function resolveTentativeRefs(input,ctx){const resolved={};const user=input.flags.get(TENTATIVE_USER_FLAG.name);const project=input.flags.get(TENTATIVE_PROJECT_FLAG.name);if(user!==void 0)resolved["userId"]=(await ctx.resolver.user(user,TENTATIVE_USER_FLAG.name)).id;if(project!==void 0)resolved["projectId"]=(await ctx.resolver.project(project)).id;return withResolved(input,resolved)}var TENTATIVE_COLUMNS=["user_id","project_name","probability","hours","memo","project_id",
47
- "id","updated_at"];function tentativeRow(item){const monthly=recordOf(item["monthly_hours"]);const hours=Object.keys(monthly).sort().map(ym=>`${ym}=${String(monthly[ym])}`).join(" ");const probability=typeof item["probability"]==="string"?item["probability"]:null;return pick({...item,probability:probability===null?null:`${PROBABILITY_LABELS[probability]??probability}\uFF08${probability}\uFF09`,hours},TENTATIVE_COLUMNS)}function tentativeOne(body){const data=dataOf(body,"\u4EEE\u30A2\u30B5\u30A4\u30F3");
32
+ --output json \u306F\u30B5\u30FC\u30D0\u306E\u5FDC\u7B54\u306B excluded_project_ids\uFF08\u3068 --include-tentative \u306A\u3089 tentative_assignments\uFF09\u3092\u8DB3\u3057\u305F\u3082\u306E\u3067\u3001\u63DB\u7B97\u524D\u306E\u5024\u3067\u3059\uFF08\u975E\u8868\u793A\u306E\u30E1\u30F3\u30D0\u30FC\u3082 is_board_visible: false \u3067\u542B\u307F\u307E\u3059\uFF09\u3002`,flags:[MONTH_FLAG,FROM_FLAG,TO_FLAG,UNIT_FLAG,BY_PROJECT_FLAG,INCLUDE_TENTATIVE_FLAG,INCLUDE_HIDDEN_FLAG,USER_FLAG,DEPARTMENT_FLAG],
33
+ forbidden:FORBIDDEN,async prepare(input,ctx){noArgs(input,SHOW_USAGE);boardRange(input,SHOW_USAGE);unitOf(input);return resolveFilters(input,ctx)},plan:showPlan,plannedNotes:input=>[...boardRangeNotes(boardRange(input,SHOW_USAGE)),`\u3053\u306E\u3042\u3068\u96C6\u8A08\u5BFE\u8C61\u5916\u306E\u8A2D\u5B9A\uFF08GET ${BOARD_PATH}/settings\uFF09${input.flags.has(INCLUDE_TENTATIVE_FLAG.name)?"\u3068\u4EEE\u30A2\u30B5\u30A4\u30F3\uFF08GET \u2026/tentative-assignments\uFF09":""}\u3082\u8AAD\u307F\u307E\u3059\u3002`],
34
+ async execute(input,ctx){const plan=showPlan(input);const board=await ctx.send(plan);const settings=recordOf(dataOf(await ctx.send({method:"GET",path:`${BOARD_PATH}/settings`}),"\u8981\u54E1\u8ABF\u6574\u30DC\u30FC\u30C9\u306E\u8A2D\u5B9A"));const excluded=Array.isArray(settings["excluded_project_ids"])?settings["excluded_project_ids"].filter(v=>typeof v==="string"):[];let tentatives=null;if(input.flags.has(INCLUDE_TENTATIVE_FLAG.name)){tentatives=listIn(await ctx.send({method:"GET",path:TENTATIVE_PATH,
35
+ query:{start_ym:plan.query?.["start_ym"],end_ym:plan.query?.["end_ym"]}}),"items","\u4EEE\u30A2\u30B5\u30A4\u30F3")}if(!isRecord(board))return board;const view={unit:unitOf(input),byProject:input.flags.has(BY_PROJECT_FLAG.name),excludedProjectIds:excluded,tentatives,includeHidden:input.flags.has(INCLUDE_HIDDEN_FLAG.name)};return{...board,[VIEW_KEY]:view}},summarize:body=>viewOf(body).byProject?boardProjectRows(body):boardRows(body),raw:body=>{listIn(body,"users","\u8981\u54E1\u8ABF\u6574\u30DC\u30FC\u30C9");
36
+ if(!isRecord(body))return body;const view=viewOf(body);const rest={...body,excluded_project_ids:view.excludedProjectIds};if(view.tentatives!==null)rest["tentative_assignments"]=view.tentatives;delete rest[VIEW_KEY];return rest},notes:body=>{const view=viewOf(body);const hidden=hiddenCount(body);return[...periodNote(body),...hidden>0?[view.includeHidden?`\u30DC\u30FC\u30C9\u3067\u975E\u8868\u793A\u306E\u30E1\u30F3\u30D0\u30FC ${String(hidden)} \u540D\u3082\u542B\u3081\u3066\u3044\u307E\u3059\u3002`:
37
+ `\u30DC\u30FC\u30C9\u3067\u975E\u8868\u793A\u306E\u30E1\u30F3\u30D0\u30FC ${String(hidden)} \u540D\u3092\u9664\u3044\u3066\u3044\u307E\u3059\uFF08--include-hidden \u3067\u542B\u3081\u307E\u3059\uFF09\u3002`]:[],...view.excludedProjectIds.length>0?[`\u96C6\u8A08\u5BFE\u8C61\u5916\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8 ${String(view.excludedProjectIds.length)} \u4EF6\u3092\u5408\u8A08\u304B\u3089\u9664\u3044\u3066\u3044\u307E\u3059\u3002`]:[],view.tentatives===null?"\u4EEE\u30A2\u30B5\u30A4\u30F3\u306F\u542B\u307F\u307E\u305B\u3093\uFF08--include-tentat\
38
+ ive \u3067\u8DB3\u3057\u307E\u3059\uFF09\u3002":view.byProject?"--by-project \u306E\u884C\u306F\u6B63\u5F0F\u30A2\u30B5\u30A4\u30F3\u3060\u3051\u3067\u3001\u4EEE\u30A2\u30B5\u30A4\u30F3\u306F\u542B\u307F\u307E\u305B\u3093\u3002":`\u8868\u793A\u3057\u305F\u30E1\u30F3\u30D0\u30FC\u306E\u4EEE\u30A2\u30B5\u30A4\u30F3 ${String(shownTentatives(body,view.tentatives))} \u4EF6\u3092\u5408\u8A08\u306B\u542B\u3081\u3066\u3044\u307E\u3059\u3002`]}};var PROBABILITIES=["confirmed","likely","pre","on_hold"];var PROBABILITY_LABELS={
39
+ confirmed:"\u78BA\u5B9A",likely:"\u307B\u307C\u78BA\u5B9A",pre:"\u30D7\u30EC",on_hold:"\u4FDD\u7559"};var TENTATIVE_USER_FLAG={name:"--user",summary:"\u30E1\u30F3\u30D0\u30FC\uFF08\u6C0F\u540D\u30FB\u30E1\u30FC\u30EB\u30FBID\u30FBme\uFF09",takesValue:true,placeholder:"<\u30E6\u30FC\u30B6\u30FC>"};var TENTATIVE_PROJECT_FLAG={name:"--project",summary:"\u65E2\u5B58\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\uFF08\u30B3\u30FC\u30C9\u30FBID\uFF09",takesValue:true,placeholder:"<\u30B3\u30FC\u30C9|ID>"};var PROJECT_NAME_FLAG={
40
+ name:"--project-name",summary:"TWP \u672A\u767B\u9332\u306E\u898B\u8FBC\u307F\u6848\u4EF6\u540D\uFF08200\u6587\u5B57\u307E\u3067\uFF09",takesValue:true,placeholder:"<\u6848\u4EF6\u540D>"};var PROBABILITY_FLAG={name:"--probability",summary:"\u78BA\u5EA6\uFF08confirmed\uFF1D\u78BA\u5B9A / likely\uFF1D\u307B\u307C\u78BA\u5B9A / pre\uFF1D\u30D7\u30EC / on_hold\uFF1D\u4FDD\u7559\uFF09",takesValue:true,placeholder:"<\u78BA\u5EA6>"};var HOURS_FLAG={name:"--hours",summary:"\u6708\u306E\u6642\u9593\uFF08YYYY-MM=\u6642\u9593\uFF09\u3002\u7E70\u308A\u8FD4\u3057\u6307\u5B9A\u3067\u304D\u308B\u3002upd\
41
+ ate \u3067\u306F\u6307\u5B9A\u3057\u305F\u6708\u306E\u96C6\u5408\u3067\u7F6E\u304D\u63DB\u308F\u308B",takesValue:true,placeholder:"<YYYY-MM=\u6642\u9593>",repeatable:true};var NO_HOURS_FLAG={name:"--no-hours",summary:"\u6708\u306E\u6642\u9593\u3092\u7A7A\u306B\u3059\u308B\uFF08\u6642\u671F\u672A\u5B9A\u306E\u898B\u8FBC\u307F\uFF09",takesValue:false};var MEMO_FLAG={name:"--memo",summary:"\u30E1\u30E2\uFF082,000\u6587\u5B57\u307E\u3067\uFF09",takesValue:true,placeholder:"<\u6587\u5B57\u5217>"};var ROLE_FLAG={
42
+ name:"--role",summary:"\u6607\u683C\u6642\u306E\u5F79\u5272\uFF08\u65E2\u5B9A member\u3002\u5024\u306F\u30B5\u30FC\u30D0\u304C\u691C\u67FB\u3059\u308B\uFF09",takesValue:true,placeholder:"<\u5F79\u5272>"};var TENTATIVE_LIST_USAGE="twp staffing-board tentative list [--from <YYYY-MM> --to <YYYY-MM>] [--user <\u30E6\u30FC\u30B6\u30FC>]";var TENTATIVE_CREATE_USAGE="twp staffing-board tentative create --user <\u30E6\u30FC\u30B6\u30FC> (--project <\u30B3\u30FC\u30C9> | --project-name <\u6848\u4EF6\u540D>) --probability <\u78BA\u5EA6> (--hours <YYYY-MM=\u6642\u9593> ... |\
43
+ --no-hours) [--memo <\u6587\u5B57\u5217>]";var TENTATIVE_UPDATE_USAGE="twp staffing-board tentative update <ID> [--user <\u30E6\u30FC\u30B6\u30FC>] [--project <\u30B3\u30FC\u30C9>] [--project-name <\u6848\u4EF6\u540D>] [--probability <\u78BA\u5EA6>] [--hours <YYYY-MM=\u6642\u9593> ... | --no-hours] [--memo <\u6587\u5B57\u5217>]";var TENTATIVE_DELETE_USAGE="twp staffing-board tentative delete <ID> --yes";var TENTATIVE_PROMOTE_USAGE="twp staffing-board tentative promote <ID> [--project <\u30B3\u30FC\u30C9>] [--\
44
+ role <\u5F79\u5272>] --yes";function parseMonthlyHours(values,usage){const out={};for(const raw of values){const match=/^\s*(\d{4}-(?:0[1-9]|1[0-2]))\s*=\s*([0-9]+(?:\.[0-9]+)?)\s*$/.exec(raw);if(match===null)throw new UsageError(`--hours \u306F YYYY-MM=\u6642\u9593 \u306E\u5F62\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u53D7\u3051\u53D6\u3063\u305F\u5024: ${raw}\uFF09`,usage);const[,ym,hours]=match;if(ym in out)throw new UsageError(`--hours \u306B\u540C\u3058\u6708\uFF08${ym}\uFF09\
45
+ \u304C2\u56DE\u3042\u308A\u307E\u3059`,usage);out[ym]=Number(hours)}return out}function probabilityOf(input,usage){const raw=input.flags.get(PROBABILITY_FLAG.name)?.trim();if(raw===void 0)return void 0;if(!PROBABILITIES.includes(raw)){throw new UsageError(`--probability \u306F ${PROBABILITIES.join(" / ")} \u306E\u3044\u305A\u308C\u304B\u3067\u3059\uFF08\u53D7\u3051\u53D6\u3063\u305F\u5024: ${raw}\uFF09`,usage)}return raw}function tentativeBody(input,usage,creating){const body={};const userId=input.
46
+ resolved?.["userId"];const projectId=input.resolved?.["projectId"];const projectName=input.flags.get(PROJECT_NAME_FLAG.name);const probability=probabilityOf(input,usage);const hours=repeatedValues(input,HOURS_FLAG.name);const noHours=input.flags.has(NO_HOURS_FLAG.name);const memo=input.flags.get(MEMO_FLAG.name);if(hours.length>0&&noHours)throw new UsageError("--hours \u3068 --no-hours \u306F\u4F75\u7528\u3067\u304D\u307E\u305B\u3093",usage);if(creating){if(userId===void 0)throw new UsageError("-\
47
+ -user \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",usage);if(projectId===void 0&&(projectName===void 0||projectName.trim()==="")){throw new UsageError("--project \u304B --project-name \u306E\u3069\u3061\u3089\u304B\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",usage)}if(probability===void 0)throw new UsageError("--probability \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",usage);if(hours.length===0&&!noHours){throw new UsageError("--hours \u30921\u3064\u4EE5\u4E0A\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u6642\u671F\u672A\u5B9A\u306A\u3089 --no-ho\
48
+ urs\uFF09",usage)}}if(userId!==void 0)body["user_id"]=userId;if(projectId!==void 0)body["project_id"]=projectId;if(projectName!==void 0)body["project_name"]=projectName.trim()===""?null:projectName.trim();if(probability!==void 0)body["probability"]=probability;if(hours.length>0)body["monthly_hours"]=parseMonthlyHours(hours,usage);if(noHours)body["monthly_hours"]={};if(memo!==void 0)body["memo"]=memo===""?null:memo;if(!creating&&Object.keys(body).length===0)throw new UsageError("\u5909\u66F4\u3059\u308B\u9805\u76EE\u30921\u3064\u4EE5\u4E0A\u6307\u5B9A\u3057\u3066\u304F\u3060\
49
+ \u3055\u3044",usage);return body}async function resolveTentativeRefs(input,ctx){const resolved={};const user=input.flags.get(TENTATIVE_USER_FLAG.name);const project=input.flags.get(TENTATIVE_PROJECT_FLAG.name);if(user!==void 0)resolved["userId"]=(await ctx.resolver.user(user,TENTATIVE_USER_FLAG.name)).id;if(project!==void 0)resolved["projectId"]=(await ctx.resolver.project(project)).id;return withResolved(input,resolved)}var TENTATIVE_COLUMNS=["user_id","project_name","probability","hours","memo",
50
+ "project_id","id","updated_at"];function tentativeRow(item){const monthly=recordOf(item["monthly_hours"]);const hours=Object.keys(monthly).sort().map(ym=>`${ym}=${String(monthly[ym])}`).join(" ");const probability=typeof item["probability"]==="string"?item["probability"]:null;return pick({...item,probability:probability===null?null:`${PROBABILITY_LABELS[probability]??probability}\uFF08${probability}\uFF09`,hours},TENTATIVE_COLUMNS)}function tentativeOne(body){const data=dataOf(body,"\u4EEE\u30A2\u30B5\u30A4\u30F3");
48
51
  if(!isRecord(data))throw new ApiResponseError("\u4EEE\u30A2\u30B5\u30A4\u30F3\u306E\u5FDC\u7B54\u306E data \u304C\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002");return data}function tentativeWrite(name){const creating=name==="create";const usage=creating?TENTATIVE_CREATE_USAGE:TENTATIVE_UPDATE_USAGE;return{name,summary:creating?"\u4EEE\u30A2\u30B5\u30A4\u30F3\uFF08\u672A\u767B\u9332\u306E\u898B\u8FBC\u307F\u6848\u4EF6\u3092\u542B\u3080\uFF09\u3092\u767B\u9332\u3059\u308B":
49
52
  "\u4EEE\u30A2\u30B5\u30A4\u30F3\u3092\u5909\u66F4\u3059\u308B",usage,description:(creating?"POST /api/v2/analysis/staffing-board/tentative-assignments \u3067\u3059\u3002\u6B63\u30C7\u30FC\u30BF\uFF08ProjectMember\uFF09\u306B\u306F\u5165\u3089\u305A\u3001\u30DC\u30FC\u30C9\u306E\u5225\u8868\u793A\u306B\u3060\u3051\u8F09\u308A\u307E\u3059\u3002\n":"PUT /api/v2/analysis/staffing-board/tentative-assignments/{id} \u3067\u3059\u3002\u6307\u5B9A\u3057\u305F\u9805\u76EE\u3060\u3051\u3092\u9001\u308A\u307E\u3059\u3002\n--hours \u306F\u6708\u306E\u96C6\u5408\u3092\u4E38\u3054\u3068\u7F6E\u304D\u63DB\u3048\u307E\u3059\uFF08\u8DB3\u3059\u306E\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002\u6B8B\u3057\u305F\u3044\u6708\u3082\u4E26\u3079\u3066\u304F\u3060\u3055\u3044\uFF09\u3002\n")+
50
53
  "\u78BA\u5EA6\u306F confirmed\uFF08\u78BA\u5B9A\uFF09/ likely\uFF08\u307B\u307C\u78BA\u5B9A\uFF09/ pre\uFF08\u30D7\u30EC\uFF09/ on_hold\uFF08\u4FDD\u7559\uFF09\u3067\u3059\u3002\u7DE8\u96C6\u53EF\u306E\u6A29\u9650\u304C\u8981\u308A\u307E\u3059\u3002",flags:[TENTATIVE_USER_FLAG,TENTATIVE_PROJECT_FLAG,PROJECT_NAME_FLAG,PROBABILITY_FLAG,HOURS_FLAG,NO_HOURS_FLAG,MEMO_FLAG],forbidden:writeForbidden,async prepare(input,ctx){if(creating)noArgs(input,usage);else idArg(input,"\u4EEE\u30A2\u30B5\u30A4\u30F3",
@@ -107,4 +110,4 @@ void 0)throw new UsageError("--month \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\
107
110
  \uFF08\u65B0\u3057\u3044\u9806\uFF09",usage:CELL_HISTORY_USAGE,description:"GET /api/v2/analysis/staffing-board/cells/history \u3067\u3059\uFF08\u753B\u9762\u306E\u30BB\u30EB\u306E\u4FEE\u6B63\u5C65\u6B74\u3068\u540C\u3058\uFF09\u3002\n\n"+LIST_PAGING_HELP,flags:[CELL_PROJECT_FLAG,CELL_USER_FLAG,...LIST_FLAGS],paging:envelopePaging({label:"\u30BB\u30EB\u5DE5\u6570\u306E\u4FEE\u6B63\u5C65\u6B74"}),forbidden:FORBIDDEN,prepare:(input,ctx)=>resolveCellRefs(input,ctx,CELL_HISTORY_USAGE),plan:input=>({
108
111
  method:"GET",path:`${CELL_PATH}/history`,query:{project_id:requireResolved(input,"projectId"),user_id:requireResolved(input,"userId"),limit:positiveInteger(input.flags,"--limit"),cursor:nonEmpty(input.flags,"--cursor")}}),summarize:body=>listIn(body,"items","\u30BB\u30EB\u5DE5\u6570\u306E\u4FEE\u6B63\u5C65\u6B74").map(row=>({created_at:row["created_at"]??null,created_by_name:row["created_by_name"]??null,action:row["action"]??null,comment:row["comment"]??null,changes:Array.isArray(row["changes"])?
109
112
  JSON.stringify(row["changes"]):null,id:row["id"]??null})),raw:body=>listIn(body,"items","\u30BB\u30EB\u5DE5\u6570\u306E\u4FEE\u6B63\u5C65\u6B74")}]};var staffingBoardDomain={name:"staffing-board",summary:"\u8981\u54E1\u8ABF\u6574\u30DC\u30FC\u30C9\uFF08\u30E1\u30F3\u30D0\u30FC\xD7\u6708\u306E\u5DE5\u6570\u8868\u30FB\u30BB\u30EB\u5DE5\u6570\u30FB\u4EEE\u30A2\u30B5\u30A4\u30F3\u30FB\u30E1\u30E2\u30FB\u30B9\u30CA\u30C3\u30D7\u30B7\u30E7\u30C3\u30C8\uFF09",operations:[showOperation],subresources:[cellResource,
110
- tentativeResource,noteResource,snapshotResource]};export{boardMonthHours,boardProjectRows,boardRange,boardRows,cellHours,defaultBoardRange,diffRows,formatBoardValue,noteTarget,parseMonthlyHours,snapshotRows,staffingBoardDomain,tentativeBody,tentativeRow};
113
+ tentativeResource,noteResource,snapshotResource]};export{boardMonthHours,boardProjectRows,boardRange,boardRows,boardUsers,cellHours,defaultBoardRange,diffRows,formatBoardValue,noteTarget,parseMonthlyHours,snapshotRows,staffingBoardDomain,tentativeBody,tentativeRow};
@@ -1,9 +1,10 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{ASSIGNED_PROJECT_COLUMNS,assignedProjectItems}from"./chunk-QKTEMDDP.js";import{FISCAL_YEAR_FLAG,fiscalYear,skillNames}from"./chunk-37ZCPHYE.js";import{LICENSE_FEATURE_NAMES,levelHoldsSeat,permissionMovesSeat,readLicenses}from"./chunk-2J5A4Q7U.js";import{CONCURRENCY,exportOperation,mapPool,pacedSender}from"./chunk-ZFSQJAYZ.js";import"./chunk-FBTOIECJ.js";import{inspectLocalFile,isCommitted,issued}from"./chunk-JULG6KDV.js";import{checkUploadQuota}from"./chunk-V64CGX7V.js";
4
- import{readCsvFileText}from"./chunk-QLENN5DD.js";import"./chunk-RMFLTSOV.js";import"./chunk-TQ7TNMW5.js";import"./chunk-7KU2EXEE.js";import{USER_REF_FLAG,USER_REF_HELP,prepareUser,userPath}from"./chunk-UVCJXHWN.js";import{createFlags,fieldBody,hasAnyField,resolveRefFields,updateFlags}from"./chunk-45WIRMGL.js";import"./chunk-EXT4AIDF.js";import{booleanText,boundedText,isoDate,isoDateValue}from"./chunk-JJSBBWJ5.js";import"./chunk-HEH3PUW2.js";import"./chunk-W4NLJ2YK.js";
5
- import"./chunk-BD7O73GK.js";import{repeatedValues}from"./chunk-VGT2EGH6.js";import{DEPARTMENTS_PATH,ORG_MASTER_LIMIT,POSITIONS_PATH}from"./chunk-4DOPQ74T.js";import{ResolveError,isSafePathSegment}from"./chunk-HVZUXLQ4.js";import{ApiError}from"./chunk-JA5A6UJ2.js";import"./chunk-MMVXE2CJ.js";import"./chunk-II5RVJQN.js";import{LIST_FLAGS,LIST_PAGING_HELP,envelopePaging,nonEmpty,positiveInteger,shellQuote}from"./chunk-MI6HVYR2.js";import{requireResolved,
6
- singleRef,withResolved}from"./chunk-PS5QFKHB.js";import{isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiRejectedError,ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";import{NotLoggedInError,SessionExpiredError}from"./chunk-XNLIEUAW.js";import"./chunk-J7QYPKVK.js";import"./chunk-EDF4U5BT.js";import"./chunk-RZVI6PMW.js";import"./chunk-OKATZ4SN.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";import fs2 from"fs";var ASSIGNMENT_COLUMNS=["id","department_name","position_name","start_date","end_date","is_primary","is_current","is_approval_route","effective_status"];function assignmentRows(body){const response=isRecord(body)&&"response"in body?body["response"]:body;const list=isRecord(response)?response["list"]:void 0;if(!Array.isArray(list)){throw new ApiResponseError("\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")}
3
+ import{ASSIGNED_PROJECT_COLUMNS,assignedProjectItems}from"./chunk-C6AOVOVD.js";import{FISCAL_YEAR_FLAG,fiscalYear,skillNames}from"./chunk-37ZCPHYE.js";import{LICENSE_FEATURE_NAMES,levelHoldsSeat,permissionMovesSeat,readLicenses}from"./chunk-2J5A4Q7U.js";import"./chunk-Q3B65OFC.js";import{CONCURRENCY,exportOperation,mapPool,pacedSender}from"./chunk-ZFSQJAYZ.js";import"./chunk-FBTOIECJ.js";import{inspectLocalFile,isCommitted,issued}from"./chunk-JULG6KDV.js";
4
+ import{checkUploadQuota}from"./chunk-V64CGX7V.js";import{readCsvFileText}from"./chunk-QLENN5DD.js";import"./chunk-RMFLTSOV.js";import"./chunk-TQ7TNMW5.js";import"./chunk-7KU2EXEE.js";import{USER_REF_FLAG,USER_REF_HELP,prepareUser,userPath}from"./chunk-UVCJXHWN.js";import{createFlags,fieldBody,hasAnyField,resolveRefFields,updateFlags}from"./chunk-45WIRMGL.js";import"./chunk-EXT4AIDF.js";import{booleanText,boundedText,isoDate,isoDateValue}from"./chunk-JJSBBWJ5.js";
5
+ import"./chunk-HEH3PUW2.js";import"./chunk-W4NLJ2YK.js";import"./chunk-BD7O73GK.js";import{repeatedValues}from"./chunk-VGT2EGH6.js";import{DEPARTMENTS_PATH,ORG_MASTER_LIMIT,POSITIONS_PATH}from"./chunk-4DOPQ74T.js";import{ResolveError,isSafePathSegment}from"./chunk-HVZUXLQ4.js";import{ApiError}from"./chunk-JA5A6UJ2.js";import"./chunk-MMVXE2CJ.js";import"./chunk-II5RVJQN.js";import{LIST_FLAGS,LIST_PAGING_HELP,envelopePaging,nonEmpty,positiveInteger,
6
+ shellQuote}from"./chunk-MI6HVYR2.js";import{requireResolved,singleRef,withResolved}from"./chunk-PS5QFKHB.js";import{isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiRejectedError,ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";import{NotLoggedInError,SessionExpiredError}from"./chunk-XNLIEUAW.js";import"./chunk-J7QYPKVK.js";import"./chunk-EDF4U5BT.js";import"./chunk-RZVI6PMW.js";import"./chunk-OKATZ4SN.js";import"./chunk-NHYMHCAT.js";
7
+ import"./chunk-VSJBJXZO.js";import fs2 from"fs";var ASSIGNMENT_COLUMNS=["id","department_name","position_name","start_date","end_date","is_primary","is_current","is_approval_route","effective_status"];function assignmentRows(body){const response=isRecord(body)&&"response"in body?body["response"]:body;const list=isRecord(response)?response["list"]:void 0;if(!Array.isArray(list)){throw new ApiResponseError("\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")}
7
8
  return list}async function nameMap(ctx,path2,label2){try{const body=await ctx.send({method:"GET",path:path2,query:{limit:ORG_MASTER_LIMIT}});const list=isRecord(body)?body["list"]:void 0;if(!Array.isArray(list))throw new Error(`${label2}\u4E00\u89A7\u306E\u5FDC\u7B54\u306B list \u914D\u5217\u304C\u3042\u308A\u307E\u305B\u3093`);const count=isRecord(body)?body["count"]:void 0;if(typeof count==="number"&&count>list.length){ctx.warn(`${label2}\u4E00\u89A7\u304C ${count} \u4EF6\u4E2D ${list.length} \
8
9
  \u4EF6\u3067\u5207\u308A\u8A70\u3081\u3089\u308C\u305F\u305F\u3081\u3001\u4E00\u90E8\u306E${label2}\u540D\u306F\u7A7A\u6B04\u3067\u3059\u3002ID \u306F --output json \u3067\u78BA\u8A8D\u3067\u304D\u307E\u3059\u3002`)}const map={};for(const row of list){if(isRecord(row)&&typeof row["id"]==="string"&&typeof row["name"]==="string"){map[row["id"]]=row["name"]}}return map}catch(err){ctx.warn(`${label2}\u540D\u3092\u53D6\u5F97\u3067\u304D\u306A\u304B\u3063\u305F\u305F\u3081\u3001${label2}\u540D\u306E\u5217\u306F\u7A7A\u6B04\u3067\u3059\uFF08${err.
9
10
  message}\uFF09\u3002ID \u306F --output json \u3067\u78BA\u8A8D\u3067\u304D\u307E\u3059\u3002`);return{}}}function assignmentPlan(input){const suffix=input.flags.has("--current")?"/assignments/current":"/assignments";return{method:"GET",path:`/api/v2/organization/users/${userPath(input,suffix)}`}}var listOperation={name:"list",summary:"\u30E6\u30FC\u30B6\u30FC\u306E\u6240\u5C5E\u306E\u5C65\u6B74\u3092\u4E00\u89A7\u3059\u308B",usage:"twp user assignment list <\u30E6\u30FC\u30B6\u30FC> [--current]",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tocca-systems/twp-cli",
3
- "version": "0.97.2",
3
+ "version": "0.99.0",
4
4
  "description": "TWP CLI — Tocca Working Platform の CLI 型統合インターフェース(AIエージェントハーネス)",
5
5
  "type": "module",
6
6
  "bin": {
@@ -1,4 +0,0 @@
1
- import { createRequire as __twpCreateRequire } from 'node:module';
2
- const require = __twpCreateRequire(import.meta.url);
3
- import{ASSIGNED_PROJECT_COLUMNS,assignedProjectItems,projectDomain}from"./chunk-QKTEMDDP.js";import"./chunk-FBTOIECJ.js";import"./chunk-TQ7TNMW5.js";import"./chunk-7KU2EXEE.js";import"./chunk-UVCJXHWN.js";import"./chunk-45WIRMGL.js";import"./chunk-EXT4AIDF.js";import"./chunk-JJSBBWJ5.js";import"./chunk-HEH3PUW2.js";import"./chunk-W4NLJ2YK.js";import"./chunk-BD7O73GK.js";import"./chunk-VGT2EGH6.js";import"./chunk-4DOPQ74T.js";
4
- import"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";import"./chunk-MMVXE2CJ.js";import"./chunk-II5RVJQN.js";import"./chunk-MI6HVYR2.js";import"./chunk-PS5QFKHB.js";import"./chunk-3ZRMMBP5.js";import"./chunk-VFPY2A23.js";import"./chunk-J7QYPKVK.js";import"./chunk-EDF4U5BT.js";import"./chunk-RZVI6PMW.js";import"./chunk-OKATZ4SN.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";export{ASSIGNED_PROJECT_COLUMNS,assignedProjectItems,projectDomain};