@tocca-systems/twp-cli 0.98.0 → 0.100.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.public.md +10 -0
- package/README.md +3 -3
- package/command-model/_routes.json +1 -1
- package/command-model/account-lock.json +1 -1
- package/command-model/accounting-master.json +4 -4
- package/command-model/address.json +1 -1
- package/command-model/agent-loop.json +26 -26
- package/command-model/agent.json +11 -11
- package/command-model/ai-chat-history.json +3 -3
- package/command-model/ai-task-copilot.json +1 -1
- package/command-model/ai-token-usage.json +8 -8
- package/command-model/ai-training-admin.json +4 -4
- package/command-model/ai-training-attempt-admin.json +2 -2
- package/command-model/ai-training-attempt.json +1 -1
- package/command-model/ai-training-program.json +2 -2
- package/command-model/analysis-alert-threshold.json +1 -1
- package/command-model/analysis-page-access-rule.json +3 -3
- package/command-model/analysis.json +3 -3
- package/command-model/announcement.json +6 -6
- package/command-model/api-key.json +3 -3
- package/command-model/api-usage.json +3 -3
- package/command-model/attendance-report-category.json +3 -3
- package/command-model/attendance-report-reason-detail.json +3 -3
- package/command-model/attendance-report-reason.json +3 -3
- package/command-model/attendance-report.json +3 -3
- package/command-model/attendance-timesheet.json +3 -3
- package/command-model/attendance.json +1 -1
- package/command-model/audit-log.json +3 -3
- package/command-model/auth.json +3 -3
- package/command-model/authorize.json +1 -1
- package/command-model/auto-charge.json +3 -3
- package/command-model/badge.json +4 -4
- package/command-model/billing.json +5 -5
- package/command-model/budget.json +8 -8
- package/command-model/business-place.json +2 -2
- package/command-model/capacity.json +4 -4
- package/command-model/cash-flow.json +1 -1
- package/command-model/catalog.json +7 -7
- package/command-model/chat-channel.json +7 -7
- package/command-model/chat-mention-group.json +1 -1
- package/command-model/chat-message.json +8 -8
- package/command-model/chat-presence.json +3 -3
- package/command-model/chat-scheduled-message.json +1 -1
- package/command-model/chat-tenant-connection.json +2 -2
- package/command-model/chat.json +1 -1
- package/command-model/cli-auth.json +1 -1
- package/command-model/cli-tool-catalog.json +1 -1
- package/command-model/cms-tag.json +5 -5
- package/command-model/commuting-expense.json +7 -7
- package/command-model/company-case-document.json +1 -1
- package/command-model/company-contract-document.json +4 -4
- package/command-model/company.json +2 -2
- package/command-model/config.json +2 -2
- package/command-model/container-agent-schedule.json +3 -3
- package/command-model/contract.json +2 -2
- package/command-model/credit.json +16 -16
- package/command-model/cross-project-report.json +1 -1
- package/command-model/customer-campaign.json +2 -2
- package/command-model/customer-contact.json +2 -2
- package/command-model/customer-interaction.json +4 -4
- package/command-model/customer-people.json +3 -3
- package/command-model/customer.json +3 -3
- package/command-model/cycle-time-analysis.json +1 -1
- package/command-model/dashboard-calendar.json +1 -1
- package/command-model/department.json +5 -5
- package/command-model/deposit-plan.json +1 -1
- package/command-model/deposit.json +3 -3
- package/command-model/desktop-release.json +2 -2
- package/command-model/domain-knowledge-doc.json +2 -2
- package/command-model/domain-knowledge.json +3 -3
- package/command-model/dynamo-attachment.json +5 -5
- package/command-model/dynamo-cms.json +9 -9
- package/command-model/dynamo-inquiry.json +7 -7
- package/command-model/dynamo-support.json +3 -3
- package/command-model/equipment-category.json +1 -1
- package/command-model/equipment.json +6 -6
- package/command-model/estimate-case-document.json +5 -5
- package/command-model/estimate-format.json +2 -2
- package/command-model/estimate-no-rule.json +2 -2
- package/command-model/estimate.json +6 -6
- package/command-model/evaluation-pdf.json +1 -1
- package/command-model/evaluation-period.json +3 -3
- package/command-model/evaluation.json +6 -6
- package/command-model/expense-report.json +8 -8
- package/command-model/expense-settings.json +1 -1
- package/command-model/external-integration-proxy.json +28 -28
- package/command-model/faq-notion-import.json +4 -4
- package/command-model/faq.json +4 -4
- package/command-model/favorite.json +1 -1
- package/command-model/feedback.json +5 -5
- package/command-model/fiscal-year-setting.json +2 -2
- package/command-model/floor-map.json +2 -2
- package/command-model/follow-up-message-template.json +2 -2
- package/command-model/goal-sheet.json +4 -4
- package/command-model/google-auth.json +1 -1
- package/command-model/hearing-auth.json +2 -2
- package/command-model/hearing-invitation.json +1 -1
- package/command-model/hearing-session.json +4 -4
- package/command-model/hearing.json +9 -9
- package/command-model/holiday.json +6 -6
- package/command-model/hr-checklist-template.json +2 -2
- package/command-model/hr-checklist.json +2 -2
- package/command-model/hr-qualification.json +2 -2
- package/command-model/html-editor.json +1 -1
- package/command-model/index.json +1 -1
- package/command-model/inquiry-routing.json +5 -5
- package/command-model/invoice-auto-template.json +4 -4
- package/command-model/invoice-no-rule.json +2 -2
- package/command-model/invoice.json +4 -4
- package/command-model/job-title.json +5 -5
- package/command-model/knowledge-qa.json +1 -1
- package/command-model/knowledge-recommendation-feedback.json +1 -1
- package/command-model/knowledge-recommendation.json +1 -1
- package/command-model/license-assignment.json +4 -4
- package/command-model/license-type.json +3 -3
- package/command-model/license.json +5 -5
- package/command-model/login-history.json +2 -2
- package/command-model/man-hour.json +2 -2
- package/command-model/master-announcement.json +2 -2
- package/command-model/master-billing.json +3 -3
- package/command-model/master-pricing.json +4 -4
- package/command-model/master-product.json +3 -3
- package/command-model/master-support.json +4 -4
- package/command-model/master-tenant.json +7 -7
- package/command-model/media-file-comment.json +1 -1
- package/command-model/media-file-version.json +4 -4
- package/command-model/media-file.json +13 -13
- package/command-model/media-folder.json +5 -5
- package/command-model/media-published-file.json +1 -1
- package/command-model/media-sharing-settings.json +1 -1
- package/command-model/meeting-category.json +2 -2
- package/command-model/meeting-pdf.json +1 -1
- package/command-model/meeting-template.json +2 -2
- package/command-model/meeting.json +7 -7
- package/command-model/member.json +1 -1
- package/command-model/microsoft-auth.json +1 -1
- package/command-model/microsoft-graph-proxy-v2.json +21 -21
- package/command-model/milli-credit.json +7 -7
- package/command-model/ms365-calendar-o-auth.json +2 -2
- package/command-model/music-generation.json +4 -4
- package/command-model/my-ai-training.json +2 -2
- package/command-model/my-task.json +4 -4
- package/command-model/my-training.json +4 -4
- package/command-model/news-perspective.json +2 -2
- package/command-model/note-category.json +1 -1
- package/command-model/note-comment.json +1 -1
- package/command-model/note-reaction.json +1 -1
- package/command-model/note-subscription.json +2 -2
- package/command-model/note.json +5 -5
- package/command-model/notification-recipient-rule.json +2 -2
- package/command-model/notification.json +5 -5
- package/command-model/notion-import.json +4 -4
- package/command-model/o-auth-client.json +2 -2
- package/command-model/ojt-approval-inbox.json +1 -1
- package/command-model/ojt-assignment.json +7 -7
- package/command-model/ojt-checklist.json +4 -4
- package/command-model/ojt-permission.json +2 -2
- package/command-model/ojt-plan.json +3 -3
- package/command-model/ojt-progress.json +1 -1
- package/command-model/ojt-report.json +2 -2
- package/command-model/ojt-role-dashboard.json +2 -2
- package/command-model/ojt-structure-change.json +2 -2
- package/command-model/onboarding-template.json +8 -8
- package/command-model/operating-hours.json +1 -1
- package/command-model/org-chart.json +1 -1
- package/command-model/organization-announcement-category.json +1 -1
- package/command-model/organization-announcement.json +5 -5
- package/command-model/payee.json +2 -2
- package/command-model/policy-employee.json +3 -3
- package/command-model/policy.json +5 -5
- package/command-model/position.json +3 -3
- package/command-model/private-agent-loop.json +16 -16
- package/command-model/private-task.json +6 -6
- package/command-model/process.json +3 -3
- package/command-model/profit-analysis.json +2 -2
- package/command-model/profit-summary.json +1 -1
- package/command-model/project-assignment.json +1 -1
- package/command-model/project-auto-assign-settings.json +1 -1
- package/command-model/project-cost.json +2 -2
- package/command-model/project-custom-field.json +2 -2
- package/command-model/project-digest.json +2 -2
- package/command-model/project-evaluation.json +5 -5
- package/command-model/project-health.json +3 -3
- package/command-model/project-inventory-continuation.json +1 -1
- package/command-model/project-inventory-overview.json +1 -1
- package/command-model/project-inventory-request.json +1 -1
- package/command-model/project-inventory-settings.json +1 -1
- package/command-model/project-member.json +3 -3
- package/command-model/project-overview.json +2 -2
- package/command-model/project-process.json +3 -3
- package/command-model/project-profit-analysis.json +1 -1
- package/command-model/project-quality-check-corrective-task.json +1 -1
- package/command-model/project-quality-check-record.json +1 -1
- package/command-model/project-quality-check-scope.json +1 -1
- package/command-model/project-quality-check-status.json +2 -2
- package/command-model/project-repository.json +2 -2
- package/command-model/project-revenue.json +3 -3
- package/command-model/project-status-report-project.json +1 -1
- package/command-model/project-status-report-settings.json +1 -1
- package/command-model/project-task-analytics.json +1 -1
- package/command-model/project-task-category.json +2 -2
- package/command-model/project-task-comment.json +1 -1
- package/command-model/project-task-form-options.json +1 -1
- package/command-model/project-task-group.json +2 -2
- package/command-model/project-task-label.json +2 -2
- package/command-model/project-task-link.json +2 -2
- package/command-model/project-task-milestone.json +2 -2
- package/command-model/project-task-rule.json +4 -4
- package/command-model/project-task-status.json +2 -2
- package/command-model/project-task-template.json +2 -2
- package/command-model/project-task-type.json +2 -2
- package/command-model/project-task-version.json +2 -2
- package/command-model/project-task-watcher.json +1 -1
- package/command-model/project-task.json +12 -12
- package/command-model/project-team-chat.json +1 -1
- package/command-model/project-template.json +2 -2
- package/command-model/project.json +5 -5
- package/command-model/prospect-promotion.json +1 -1
- package/command-model/prospect.json +5 -5
- package/command-model/public-pricing.json +1 -1
- package/command-model/purchase-ai-field-mapping.json +3 -3
- package/command-model/purchase-document.json +5 -5
- package/command-model/purchase-no-rule.json +2 -2
- package/command-model/purchase.json +2 -2
- package/command-model/push-subscription.json +1 -1
- package/command-model/qualification-import.json +2 -2
- package/command-model/qualification.json +3 -3
- package/command-model/quality-check-item.json +2 -2
- package/command-model/rag.json +1 -1
- package/command-model/rating-criteria.json +1 -1
- package/command-model/receivable-closing.json +2 -2
- package/command-model/receivable.json +2 -2
- package/command-model/received-invoice.json +3 -3
- package/command-model/recreation-club.json +2 -2
- package/command-model/report-format-order.json +1 -1
- package/command-model/report-saved-tab.json +1 -1
- package/command-model/report.json +20 -20
- package/command-model/retrospective.json +7 -7
- package/command-model/risk-analysis.json +1 -1
- package/command-model/role-template.json +1 -1
- package/command-model/sales-ai-review-reason-list.json +1 -1
- package/command-model/sales-default-recipient-set.json +2 -2
- package/command-model/sales-pdf.json +9 -9
- package/command-model/sales-recent-recipient.json +1 -1
- package/command-model/sales-rounding-setting.json +1 -1
- package/command-model/sales-setting.json +4 -4
- package/command-model/sales.json +3 -3
- package/command-model/saved-tab.json +1 -1
- package/command-model/saved-task-filter.json +1 -1
- package/command-model/seal-impression.json +2 -2
- package/command-model/segment.json +3 -3
- package/command-model/sidebar-badge-setting.json +1 -1
- package/command-model/skill-analytics.json +4 -4
- package/command-model/skill-category.json +2 -2
- package/command-model/skill-evaluation-export.json +1 -1
- package/command-model/skill-evaluation-record.json +1 -1
- package/command-model/skill-micro-feedback.json +2 -2
- package/command-model/skill-role-assignment.json +1 -1
- package/command-model/skill.json +3 -3
- package/command-model/sns-connection.json +2 -2
- package/command-model/sns-media.json +1 -1
- package/command-model/sns-post.json +3 -3
- package/command-model/staff-kpi-setting.json +2 -2
- package/command-model/staff-kpi.json +3 -3
- package/command-model/staffing-board-cell.json +1 -1
- package/command-model/staffing-board-note.json +1 -1
- package/command-model/staffing-board-snapshot.json +3 -3
- package/command-model/staffing-board-tentative-assignment.json +2 -2
- package/command-model/staffing-board-tentative-import.json +1 -1
- package/command-model/staffing-plan.json +5 -5
- package/command-model/statutory-rate-set.json +4 -4
- package/command-model/storage.json +5 -5
- package/command-model/subscription.json +2 -2
- package/command-model/supplier-payment-schedule.json +2 -2
- package/command-model/supplier-payment.json +2 -2
- package/command-model/survey-tracker.json +3 -3
- package/command-model/survey.json +14 -14
- package/command-model/task-analysis.json +1 -1
- package/command-model/task-branch.json +4 -4
- package/command-model/task-recurrence.json +2 -2
- package/command-model/task-wiki-link.json +2 -2
- package/command-model/teams-link.json +1 -1
- package/command-model/tenant-ai-key.json +6 -6
- package/command-model/tenant-egress-policy.json +3 -3
- package/command-model/tenant-email-settings.json +1 -1
- package/command-model/tenant-git-hub-settings.json +3 -3
- package/command-model/tenant-rag-settings.json +4 -4
- package/command-model/tenant-rate-override.json +1 -1
- package/command-model/tenant-registration.json +1 -1
- package/command-model/tenant-search.json +1 -1
- package/command-model/tenant-settings.json +11 -11
- package/command-model/terms.json +2 -2
- package/command-model/test-execution.json +3 -3
- package/command-model/test-scenario.json +3 -3
- package/command-model/training-attendance.json +5 -5
- package/command-model/training-master.json +3 -3
- package/command-model/training-session.json +5 -5
- package/command-model/unified-search.json +1 -1
- package/command-model/update-record.json +2 -2
- package/command-model/user-api-key.json +3 -3
- package/command-model/user-assignment-calendar.json +1 -1
- package/command-model/user-assignment.json +11 -11
- package/command-model/user-contract-type.json +3 -3
- package/command-model/user-contract.json +2 -2
- package/command-model/user-group.json +3 -3
- package/command-model/user-info.json +1 -1
- package/command-model/user-invitation.json +2 -2
- package/command-model/user-list-display-setting.json +1 -1
- package/command-model/user-list-item-order.json +1 -1
- package/command-model/user-management.json +6 -6
- package/command-model/user-qualification.json +1 -1
- package/command-model/user-recent-work.json +1 -1
- package/command-model/user-shortcut-setting.json +1 -1
- package/command-model/user-skill-profile.json +3 -3
- package/command-model/user.json +10 -10
- package/command-model/video-generation.json +4 -4
- package/command-model/well-known.json +2 -2
- package/command-model/whisper.json +1 -1
- package/command-model/wiki-collection.json +4 -4
- package/command-model/wiki-notion-import.json +3 -3
- package/command-model/wiki-template.json +2 -2
- package/command-model/wiki.json +7 -7
- package/command-model/worker-agent-run.json +4 -4
- package/command-model/worker-agent.json +5 -5
- package/command-model/workflow-ai-review.json +1 -1
- package/command-model/workflow-analysis.json +1 -1
- package/command-model/workflow-approval-delegation.json +3 -3
- package/command-model/workflow-approval.json +4 -4
- package/command-model/workflow-attachment-pdf-preview.json +1 -1
- package/command-model/workflow-comment-attachment.json +3 -3
- package/command-model/workflow-estimate-input.json +4 -4
- package/command-model/workflow-instance.json +3 -3
- package/command-model/workflow-tracker.json +5 -5
- package/command-model/workflow.json +5 -5
- package/command-model/workload-alert.json +2 -2
- package/dist/{api-command-JDZTCUKN.js → api-command-QPYUP7FA.js} +1 -1
- package/dist/{app-XWGXP57Z.js → app-GJLAJZDN.js} +2 -2
- package/dist/{chunk-QH34G7BK.js → chunk-BB5U4FYR.js} +3 -3
- package/dist/{chunk-3PN4LMBO.js → chunk-C6AOVOVD.js} +12 -11
- package/dist/{chunk-NZ7WI4RZ.js → chunk-CDAU3M7F.js} +4 -4
- package/dist/{chunk-6HBZRMDD.js → chunk-FZ55A6NN.js} +8 -8
- package/dist/{chunk-X2PIYCOO.js → chunk-XOXWL5FD.js} +1 -1
- package/dist/cli.js +6 -6
- package/dist/{media-45BXJUZE.js → media-BSUQX5YH.js} +30 -21
- package/dist/{oneshot-JAA46MUA.js → oneshot-ZG65R6KG.js} +1 -1
- package/dist/{project-WJKYY4K2.js → project-XOQNM7DP.js} +1 -1
- package/dist/{registry-OHYKSJ2B.js → registry-C6JPJR32.js} +1 -1
- package/dist/{run-Q54CFQ3H.js → run-6LNUTYQR.js} +1 -1
- package/dist/{staffing-board-5K35Z4O5.js → staffing-board-S6VXUPEX.js} +32 -29
- package/dist/{user-WACZPXIQ.js → user-6IYB3OJE.js} +1 -1
- package/package.json +1 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{CommandModelMissingError,MAX_REPORTED_VIOLATIONS,loadCommandModelDomain,loadCommandModelIndex,validateBody,validateQuery}from"./chunk-
|
|
4
|
-
import{isPrivateTwpHome,isTrustworthyCacheFile,writePrivateFileAtomic}from"./chunk-D233KKXW.js";import{findExecutable,isWindowsDriveAbsolute}from"./chunk-PMOUHEJQ.js";import{AuthSession,NotLoggedInError,SessionExpiredError,withFileLock}from"./chunk-XNLIEUAW.js";import{httpFetch}from"./chunk-J7QYPKVK.js";import{configReadDirs,ensureTwpHome,twpHomeDir}from"./chunk-RZVI6PMW.js";import{MODES,applyPermissionMode,checkPermission,
|
|
5
|
-
import{stripTerminalControls}from"./chunk-NHYMHCAT.js";import fs2 from"fs";import path3 from"path";import os2 from"os";import{realpathSync}from"fs";import{homedir}from"os";import{dirname,isAbsolute,relative,resolve,sep}from"path";var PathDeniedError=class extends Error{constructor(message){super(message);this.name="PathDeniedError"}};function resolveToolPath(input,cwd,home=homedir()){if(typeof input!=="string"||input.trim()===""){throw new PathDeniedError("path must be a non-empty string")}const expanded=expandHome(input,home);const abs=isAbsolute(expanded)?resolve(expanded):resolve(cwd,expanded);const root=realOrSelf(resolve(cwd));assertInside(abs,resolve(cwd),abs);assertNotSecret(abs,home);const real=realOrSelf(abs);if(real!==
|
|
3
|
+
import{CommandModelMissingError,MAX_REPORTED_VIOLATIONS,loadCommandModelDomain,loadCommandModelIndex,validateBody,validateQuery,withCommonQueryParams}from"./chunk-CDAU3M7F.js";import{isForceOnly,killProcessTree,system32}from"./chunk-N2UVRM3Z.js";import{redactSecretValues}from"./chunk-BD7O73GK.js";import{isSafePathSegment}from"./chunk-HVZUXLQ4.js";import{ApiError,TwpApiClient,appendQuery}from"./chunk-JA5A6UJ2.js";import{DEFAULT_MAX_HISTORY_BYTES,DEFAULT_MAX_TOKENS,effectiveModelSpec,
|
|
4
|
+
emptyUsage}from"./chunk-PJ7IKTZI.js";import{isPrivateTwpHome,isTrustworthyCacheFile,writePrivateFileAtomic}from"./chunk-D233KKXW.js";import{findExecutable,isWindowsDriveAbsolute}from"./chunk-PMOUHEJQ.js";import{AuthSession,NotLoggedInError,SessionExpiredError,withFileLock}from"./chunk-XNLIEUAW.js";import{httpFetch}from"./chunk-J7QYPKVK.js";import{configReadDirs,ensureTwpHome,twpHomeDir}from"./chunk-RZVI6PMW.js";import{MODES,applyPermissionMode,checkPermission,
|
|
5
|
+
isModeId,setActiveModes}from"./chunk-2LOT54OO.js";import{stripTerminalControls}from"./chunk-NHYMHCAT.js";import fs2 from"fs";import path3 from"path";import os2 from"os";import{realpathSync}from"fs";import{homedir}from"os";import{dirname,isAbsolute,relative,resolve,sep}from"path";var PathDeniedError=class extends Error{constructor(message){super(message);this.name="PathDeniedError"}};function resolveToolPath(input,cwd,home=homedir()){if(typeof input!=="string"||input.trim()===""){throw new PathDeniedError("path must be a non-empty string")}const expanded=expandHome(input,home);const abs=isAbsolute(expanded)?resolve(expanded):resolve(cwd,expanded);const root=realOrSelf(resolve(cwd));assertInside(abs,resolve(cwd),abs);assertNotSecret(abs,home);const real=realOrSelf(abs);if(real!==
|
|
6
6
|
abs){assertInside(real,root,abs);assertNotSecret(real,home)}return abs}function realToolPath(input,cwd,home=homedir()){return realOrSelf(resolveToolPath(input,cwd,home))}function assertInside(target,root,reported){const rel=relative(root,target);const outside=rel===".."||rel.startsWith(`..${sep}`)||isAbsolute(rel);if(outside){throw new PathDeniedError(`path escapes the working directory (${reported}). Only paths under ${root} can be accessed.`)}}function realOrSelf(target){let current=target;const rest=[];
|
|
7
7
|
for(;;){try{const real=realpathSync(current);return rest.length===0?real:resolve(real,...rest.reverse())}catch{const parent=dirname(current);if(parent===current)return target;rest.push(current.slice(parent.length+1));current=parent}}}function assertNotSecret(absPath,home=homedir(),env=process.env){const reason=secretReason(absPath,home,env);if(reason!==null)throw new PathDeniedError(`refusing to access ${absPath}: ${reason}`)}function secretReason(absPath,_home=homedir(),env=process.env){const lower=absPath.
|
|
8
8
|
toLowerCase();const segments=lower.split(sep);const base=segments[segments.length-1]??"";const parent=segments[segments.length-2]??"";if(base===".env"||base.startsWith(".env."))return".env files are denied (design \xA77)";if(segments.includes(".ssh"))return"SSH key material is denied (design \xA77)";if(parent===".git"&&base==="config"){return".git/config is denied (it can hold a GitHub token in the remote URL)"}if(base===".netrc"||base==="_netrc"||base===".npmrc")return"credential files are deni\
|
|
@@ -217,11 +217,11 @@ typeof o["resultPath"]==="string")&&typeof o["risk"]==="string"&&RISKS.has(o["ri
|
|
|
217
217
|
${op.name}`;if(names.has(key))return null;names.add(key)}return{version,catalogVersion:typeof r["catalog_version"]==="string"?r["catalog_version"]:null,tools}}var RISK_ORDER={read:0,write:1,destructive:2};function methodFloor(method){if(method==="GET")return"read";return method==="DELETE"?"destructive":"write"}function floorOf(op,bundledOp){if(bundledOp!==void 0&&bundledOp.method===op.method&&bundledOp.path===op.path)return bundledOp.risk;return stronger(methodFloor(op.method),bundledOp?.risk??
|
|
218
218
|
"read")}function stronger(a,b){return RISK_ORDER[a]>=RISK_ORDER[b]?a:b}function readerFromTools(tools,bundled=bundledReader){const byDomain=new Map;for(const op of tools){const list=byDomain.get(op.domain);if(list)list.push(op);else byDomain.set(op.domain,[op])}let indexCache=null;const domainCache=new Map;return{index:async()=>{if(indexCache!==null)return indexCache;const summaries=new Map;try{for(const entry of(await bundled.index()).domains)summaries.set(entry.domain,entry.summary)}catch{}const domains=[
|
|
219
219
|
...byDomain.entries()].map(([domain,ops])=>({domain,summary:summaries.get(domain)??"",operationCount:ops.length}));indexCache={schemaVersion:1,specVersion:"",domains,totals:{domains:domains.length,operations:tools.length}};return indexCache},domain:async domain=>{const cached=domainCache.get(domain);if(cached!==void 0)return cached;const ops=byDomain.get(domain);if(ops===void 0){throw new CommandModelMissingError(`\u30C9\u30E1\u30A4\u30F3 ${domain} \u306F\u3053\u306E\u30A2\u30AB\u30A6\u30F3\u30C8\u306E\u30AB\u30BF\u30ED\u30B0\u306B\u3042\u308A\u307E\u305B\u3093`)}
|
|
220
|
-
const floor=new Map;try{for(const op of(await bundled.domain(domain)).operations)floor.set(op.operationId,op)}catch{}const file={domain,operations:ops.map(op=>{const risk=stronger(op.risk,floorOf(op,floor.get(op.operationId)));return risk===op.risk?op:{...op,risk}})};domainCache.set(domain,file);return file}}}var ToolCatalog=class{profile;apiUrl;env;bundled;now;account;decided=null;refreshState;refreshPromise=null;constructor(opts){this.profile=opts.profile;this.apiUrl=opts.
|
|
221
|
-
env??process.env;this.bundled=opts.bundled??bundledReader;this.now=opts.now??Date.now;this.account=opts.account??(()=>null)}meta(){return readMeta(this.profile,this.apiUrl,this.account(),this.env)}index(){return this.decide().reader.index()}domain(domain){return this.decide().reader.domain(domain)}status(){const refresh=this.refreshState!==void 0?{refresh:this.refreshState}:{};if(this.decided!==null){const{origin,reason,meta:meta2}=this.decided;return{origin,...reason!==void 0?
|
|
222
|
-
meta2),...refresh}}if(!homeIsPrivate(this.env))return{origin:"undecided",next:"bundled",reason:REASON_UNTRUSTED_HOME,...refresh};const meta=this.meta();if(meta!==null&&!isTrustworthyCacheFile(toolCatalogCachePaths(this.profile,this.apiUrl,this.env).body)){return{origin:"undecided",next:"bundled",reason:REASON_BROKEN,...refresh}}return meta!==null?{origin:"undecided",next:"server-cache",...metaFields(meta),...refresh}:{origin:"undecided",next:"bundled",reason:REASON_NO_CACHE
|
|
223
|
-
if(this.decided!==null)return this.decided;this.decided=this.loadCache()??{reader:this.bundled,origin:"bundled",reason:homeIsPrivate(this.env)?REASON_NO_CACHE:REASON_UNTRUSTED_HOME};return this.decided}loadCache(){const meta=this.meta();if(meta===null)return null;const paths=toolCatalogCachePaths(this.profile,this.apiUrl,this.env);const parsed=parseToolCatalog(readTrustedJson(paths.body,this.env));if(parsed===null||parsed.version!==meta.version){removeQuietly(paths.meta);return{
|
|
224
|
-
origin:"bundled",reason:REASON_BROKEN}}return{reader:readerFromTools(parsed.tools,this.bundled),origin:"server-cache",meta}}refresh(get){this.refreshPromise??=this.doRefresh(get).then(outcome=>{this.refreshState=outcome;return outcome});if(this.refreshState===void 0)this.refreshState="running";return this.refreshPromise}async doRefresh(get){if(!homeIsPrivate(this.env))return{result:"failed",detail:REASON_UNTRUSTED_HOME};const account=this.account();const meta=this.meta();const paths=toolCatalogCachePaths(
|
|
220
|
+
const floor=new Map;try{for(const op of(await bundled.domain(domain)).operations)floor.set(op.operationId,op)}catch{}const file={domain,operations:ops.map(op=>{const risk=stronger(op.risk,floorOf(op,floor.get(op.operationId)));return withCommonQueryParams(risk===op.risk?op:{...op,risk})})};domainCache.set(domain,file);return file}}}var ToolCatalog=class{profile;apiUrl;env;bundled;now;account;decided=null;refreshState;refreshPromise=null;constructor(opts){this.profile=opts.profile;this.apiUrl=opts.
|
|
221
|
+
apiUrl;this.env=opts.env??process.env;this.bundled=opts.bundled??bundledReader;this.now=opts.now??Date.now;this.account=opts.account??(()=>null)}meta(){return readMeta(this.profile,this.apiUrl,this.account(),this.env)}index(){return this.decide().reader.index()}domain(domain){return this.decide().reader.domain(domain)}status(){const refresh=this.refreshState!==void 0?{refresh:this.refreshState}:{};if(this.decided!==null){const{origin,reason,meta:meta2}=this.decided;return{origin,...reason!==void 0?
|
|
222
|
+
{reason}:{},...metaFields(meta2),...refresh}}if(!homeIsPrivate(this.env))return{origin:"undecided",next:"bundled",reason:REASON_UNTRUSTED_HOME,...refresh};const meta=this.meta();if(meta!==null&&!isTrustworthyCacheFile(toolCatalogCachePaths(this.profile,this.apiUrl,this.env).body)){return{origin:"undecided",next:"bundled",reason:REASON_BROKEN,...refresh}}return meta!==null?{origin:"undecided",next:"server-cache",...metaFields(meta),...refresh}:{origin:"undecided",next:"bundled",reason:REASON_NO_CACHE,
|
|
223
|
+
...refresh}}decide(){if(this.decided!==null)return this.decided;this.decided=this.loadCache()??{reader:this.bundled,origin:"bundled",reason:homeIsPrivate(this.env)?REASON_NO_CACHE:REASON_UNTRUSTED_HOME};return this.decided}loadCache(){const meta=this.meta();if(meta===null)return null;const paths=toolCatalogCachePaths(this.profile,this.apiUrl,this.env);const parsed=parseToolCatalog(readTrustedJson(paths.body,this.env));if(parsed===null||parsed.version!==meta.version){removeQuietly(paths.meta);return{
|
|
224
|
+
reader:this.bundled,origin:"bundled",reason:REASON_BROKEN}}return{reader:readerFromTools(parsed.tools,this.bundled),origin:"server-cache",meta}}refresh(get){this.refreshPromise??=this.doRefresh(get).then(outcome=>{this.refreshState=outcome;return outcome});if(this.refreshState===void 0)this.refreshState="running";return this.refreshPromise}async doRefresh(get){if(!homeIsPrivate(this.env))return{result:"failed",detail:REASON_UNTRUSTED_HOME};const account=this.account();const meta=this.meta();const paths=toolCatalogCachePaths(
|
|
225
225
|
this.profile,this.apiUrl,this.env);const since=meta!==null&&isTrustworthyCacheFile(paths.body)?meta.version:null;let raw;try{raw=await get(TOOL_CATALOG_PATH,since!==null?{since}:void 0)}catch(err){const status=statusOf(err);if(status===304&&meta!==null){try{await this.locked(paths.lock,async()=>{if(this.meta()?.version===meta.version)this.writeMeta(paths.meta,{...meta,checked_at:this.iso(),last_result:"not-modified"})})}catch{}return{result:"not-modified"}}if(status===404||status===401||status===
|
|
226
226
|
403||isAuthError(err)){removeQuietly(paths.meta);removeQuietly(paths.body);return{result:"unavailable",detail:status!==null?`\u30B5\u30FC\u30D0\u304C ${status} \u3092\u8FD4\u3057\u307E\u3057\u305F`:"\u30ED\u30B0\u30A4\u30F3\u3057\u3066\u3044\u307E\u305B\u3093"}}return{result:"failed",detail:status!==null?`\u30B5\u30FC\u30D0\u304C ${status} \u3092\u8FD4\u3057\u307E\u3057\u305F`:`\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\uFF08${messageOf(err)}\uFF09`}}const parsed=parseToolCatalog(raw);if(parsed===
|
|
227
227
|
null)return{result:"failed",detail:"\u30B5\u30FC\u30D0\u306E\u5FDC\u7B54\u306E\u5F62\u304C\u9055\u3044\u307E\u3059"};try{ensureTwpHome(this.env);await this.locked(paths.lock,async()=>{writePrivateFileAtomic(paths.body,JSON.stringify({version:parsed.version,catalog_version:parsed.catalogVersion,tools:parsed.tools}));const at=this.iso();this.writeMeta(paths.meta,{version:parsed.version,profile:this.profile,api_url:this.apiUrl,account,catalog_version:parsed.catalogVersion,tool_count:parsed.tools.length,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{loadDomain}from"./chunk-
|
|
3
|
+
import{loadDomain}from"./chunk-BB5U4FYR.js";import{JsonBodyWithView}from"./chunk-Q3B65OFC.js";import{evaluateQuery}from"./chunk-GFLGXGWE.js";import{renderDocument,renderOutput}from"./chunk-U6REFY7T.js";import{NO_REDACT_NOTICE,withCommonFlags}from"./chunk-W4NLJ2YK.js";import{redactSecretValues,redactSecrets,withDebug}from"./chunk-BD7O73GK.js";import{parseOperationArgs}from"./chunk-VGT2EGH6.js";import{Resolver,requireDefaultProject}from"./chunk-4DOPQ74T.js";
|
|
4
4
|
import{ResolveError}from"./chunk-HVZUXLQ4.js";import{ApiError,MultipartBody,TwpApiClient,appendQuery}from"./chunk-JA5A6UJ2.js";import{DEFAULT_MAX_ITEMS,DEFAULT_MAX_PAGES,nextPageNotes,positiveInteger,shellQuote}from"./chunk-MI6HVYR2.js";import{isRecord}from"./chunk-3ZRMMBP5.js";import{ApiRejectedError,ApiResponseError,EXIT_API_CLIENT,EXIT_API_SERVER,EXIT_AUTH,EXIT_FAILURE,EXIT_OK,EXIT_USAGE,EXIT_WAIT_TIMEOUT,NetworkError,UsageError,WaitTimeoutError}from"./chunk-VFPY2A23.js";
|
|
5
5
|
import{GLOBAL_OPTIONS_HELP}from"./chunk-PECIBNFD.js";import{AuthSession,NotLoggedInError,SessionExpiredError,loadCredentials}from"./chunk-XNLIEUAW.js";import{httpFetch}from"./chunk-J7QYPKVK.js";import{effectiveApiUrl,loadUserConfig,resolveConfiguredBacklogSpace,resolveConfiguredOutput,resolveProfile}from"./chunk-EDF4U5BT.js";import{HELP_TOKEN}from"./chunk-6FI4ZMZ7.js";import{OUTPUT_FORMATS,resolveOutputFormat}from"./chunk-74BPZOKU.js";import{stringWidth}from"./chunk-UREA4ZIG.js";
|
|
6
6
|
import{stripTerminalControls}from"./chunk-NHYMHCAT.js";import fs from"fs";import path from"path";function alignedList(entries,indent=" "){const width=entries.reduce((max,[left])=>Math.max(max,stringWidth(left)),0);return entries.map(([left,right])=>`${indent}${left}${" ".repeat(Math.max(0,width-stringWidth(left)))} ${right}`).join("\n")}function subresourcesOf(resource){return resource.subresources??[]}function renderResourceHelp(resource,path2){const subresources=subresourcesOf(resource);const operationSection=resource.operations.length===0?"":`
|
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-PECIBNFD.js";import{parseArgv}from"./chunk-RFXIPNKG.js";import"./chunk-2LOT54OO.js";import"./chunk-NJL3H2BB.js";import"./chunk-6FI4ZMZ7.js";import"./chunk-B2D2NO5H.js";import{formatUnknownArgs}from"./chunk-OKATZ4SN.js";import"./chunk-VSJBJXZO.js";var VERSION=true?"0.
|
|
4
|
+
import{GLOBAL_OPTIONS_HELP}from"./chunk-PECIBNFD.js";import{parseArgv}from"./chunk-RFXIPNKG.js";import"./chunk-2LOT54OO.js";import"./chunk-NJL3H2BB.js";import"./chunk-6FI4ZMZ7.js";import"./chunk-B2D2NO5H.js";import{formatUnknownArgs}from"./chunk-OKATZ4SN.js";import"./chunk-VSJBJXZO.js";var VERSION=true?"0.100.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
|
|
@@ -1571,16 +1571,16 @@ TUI \u5185:
|
|
|
1571
1571
|
\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
|
|
1572
1572
|
`;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
|
|
1573
1573
|
`);process.exit(1)}ignoreEpipe(process.stdout);ignoreEpipe(process.stderr);if(process.env["TWP_AUTO_UPDATE_WORKER"]==="1"){const{runAutoUpdateWorker}=await import("./auto-update-worker-3GV3BK5P.js");await runAutoUpdateWorker().catch(()=>void 0);return}const[first,...rest]=process.argv.slice(2);if(first==="__complete"||first==="completion"){const completion=await import("./completion-2JMIYGIB.js");if(first==="completion"){process.exitCode=completion.runCompletion(rest,process.stdout,process.stderr);return}
|
|
1574
|
-
const[{loadDomain},{loadUserConfig}]=await Promise.all([import("./registry-
|
|
1574
|
+
const[{loadDomain},{loadUserConfig}]=await Promise.all([import("./registry-C6JPJR32.js"),import("./config-XYWRBIC6.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-FXXQHBV5.js");autoUpdate2.registerRunning();autoUpdate2.onStartup(VERSION);const{runConfigure}=await import("./configure-XPULH6FO.js");process.exitCode=
|
|
1575
1575
|
await runConfigure(rest);return}const args=parseArgv(process.argv.slice(2));if(args.command==="version"){process.stdout.write(`${VERSION}
|
|
1576
1576
|
`);return}if(args.command==="help"){process.stdout.write(HELP);return}if(args.movedCommand!==void 0){const{MOVED_QUEUE_COMMAND_MESSAGE}=await import("./dispatch-3TVY2VVM.js");process.stderr.write(MOVED_QUEUE_COMMAND_MESSAGE);process.exitCode=2;return}if(args.unknown.length>0){process.stderr.write(`\u4E0D\u660E\u306A\u5F15\u6570: ${formatUnknownArgs(args.unknown)}
|
|
1577
1577
|
|
|
1578
|
-
${HELP}`);process.exitCode=2;return}const autoUpdate=await import("./auto-update-FXXQHBV5.js");autoUpdate.registerRunning();if(args.command==="task-loop"&&args.taskLoopAction!=="capacity"){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-
|
|
1579
|
-
{},argv:args.domainArgv,help:args.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-
|
|
1578
|
+
${HELP}`);process.exitCode=2;return}const autoUpdate=await import("./auto-update-FXXQHBV5.js");autoUpdate.registerRunning();if(args.command==="task-loop"&&args.taskLoopAction!=="capacity"){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-6LNUTYQR.js");process.exitCode=await runDomain({domain:args.domain,...args.operation!==void 0?{operation:args.operation}:
|
|
1579
|
+
{},argv:args.domainArgv,help:args.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-QPYUP7FA.js");process.exitCode=await runApiCommand({argv:args.domainArgv,help:args.domainHelp,globals:{...args.profile!==void 0?{profile:args.
|
|
1580
1580
|
profile}:{},...args.output!==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-2N3V64AA.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-CARE564N.js");
|
|
1581
1581
|
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-AJQKYINQ.js");process.exitCode=await runTaskLoop(
|
|
1582
1582
|
{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,scheduleOp:args.scheduleOp,scheduleConfigOp:args.scheduleConfigOp,scheduleId:args.scheduleId,charterOp:args.charterOp,charterInput:args.
|
|
1583
1583
|
charterFile,charterOutput:args.charterOut,charterRevision:args.charterRevision,settingsOp:args.settingsOp,orientationOp:args.orientationOp,orientationArgs:args.orientationArgs,skillOp:args.skillOp,skillName:args.skillName,skillAll:args.skillAll,skillDir:args.skillDir,skillConfig:args.skillConfig,output:args.output,query:args.query,revisionFrom:args.revisionFrom,revisionTo:args.revisionTo,planOp:args.planOp,capacityOp:args.capacityOp,includeStopped:args.includeStopped,runnerOp:args.runnerOp,runnerId:args.
|
|
1584
|
-
runnerTargetId,triggerOp:args.triggerOp,triggerId:args.triggerId,triggerKey:args.triggerKey,triggerLimit:args.triggerLimit,planEmpty:args.planEmpty,planCheck:args.planCheck,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-
|
|
1585
|
-
permissionMode!==void 0?{permissionMode:args.permissionMode}:{},allowedTools:args.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-
|
|
1584
|
+
runnerTargetId,triggerOp:args.triggerOp,triggerId:args.triggerId,triggerKey:args.triggerKey,triggerLimit:args.triggerLimit,planEmpty:args.planEmpty,planCheck:args.planCheck,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-ZG65R6KG.js");process.exitCode=await runOneShot({prompt:args.prompt??"",fromStdin:args.promptFromStdin,mode:args.mode??"dev",...args.
|
|
1585
|
+
permissionMode!==void 0?{permissionMode:args.permissionMode}:{},allowedTools:args.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-GJLAJZDN.js");await startTui({mode:args.mode,permissionMode:args.permissionMode,allowedTools:args.allowedTools,disallowedTools:args.disallowedTools,model:args.model,profile:args.profile,noTui:args.noTui||
|
|
1586
1586
|
!process.stdout.isTTY,doctor:args.doctor,version:VERSION})}await main();
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{checkOutTarget}from"./chunk-
|
|
3
|
+
import{checkOutTarget}from"./chunk-XOXWL5FD.js";import"./chunk-BB5U4FYR.js";import"./chunk-Q3B65OFC.js";import"./chunk-GFLGXGWE.js";import"./chunk-U6REFY7T.js";import{contentTypeFor,inspectLocalFile}from"./chunk-JULG6KDV.js";import{checkUploadQuota}from"./chunk-V64CGX7V.js";import{parseWaitOptions,waitUntilTerminal}from"./chunk-WVCEKC7V.js";import"./chunk-RMFLTSOV.js";import{readBody}from"./chunk-HEH3PUW2.js";import"./chunk-W4NLJ2YK.js";
|
|
4
4
|
import"./chunk-BD7O73GK.js";import{repeatedValues}from"./chunk-VGT2EGH6.js";import"./chunk-4DOPQ74T.js";import{collapsesInUrlPath,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,readEnvelopeCursor,shellQuote}from"./chunk-MI6HVYR2.js";import{requireResolved,singleRef,withResolved}from"./chunk-PS5QFKHB.js";
|
|
5
5
|
import{acknowledgement,isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiRejectedError,ApiResponseError,NetworkError,UsageError,WaitTimeoutError}from"./chunk-VFPY2A23.js";import"./chunk-PECIBNFD.js";import"./chunk-XNLIEUAW.js";import"./chunk-J7QYPKVK.js";import"./chunk-EDF4U5BT.js";import"./chunk-RZVI6PMW.js";import"./chunk-6FI4ZMZ7.js";import"./chunk-OKATZ4SN.js";import"./chunk-74BPZOKU.js";import"./chunk-UREA4ZIG.js";import"./chunk-NHYMHCAT.js";
|
|
6
6
|
import"./chunk-VSJBJXZO.js";import crypto2 from"crypto";import fs2 from"fs";import path from"path";var SCOPE_PERSONAL="personal";var SCOPE_PROJECT="project";var UUID=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;var FORBIDDEN_NAME=/[/\\:*?"<>|]/;var NAME_MAX=255;var ROW_COLUMNS=["id","path","name","file_count","subfolder_count","parent_id","updated_at"];var TRASH_COLUMNS=["id","path","name","file_count","subfolder_count","parent_id","deleted_at"];function folderRows(raw){return raw.map(row=>{const id=row["id"];const name=row["name"];const parentId=row["parent_id"];if(typeof id!==
|
|
@@ -104,24 +104,32 @@ D \u304B\u300C\u89AA/\u5B50\u300D\u5F62\u5F0F\u306E\u30D1\u30B9\uFF09",takesValu
|
|
|
104
104
|
icates"],"\u91CD\u8907\u691C\u51FA");if(!isNameCheck(data))return rows.map(row=>pick(row,DUPLICATE_COLUMNS));return rows.map(row=>{const existing=isRecord(row)&&isRecord(row["existing_file"])?row["existing_file"]:{};return{file_name:isRecord(row)?row["file_name"]??null:null,existing_id:existing["id"]??null,existing_updated_at:existing["updated_at"]??null,suggested_name:isRecord(row)?row["suggested_name"]??null:null}})},raw:body=>dataOf2(body,"\u91CD\u8907\u691C\u51FA"),notes(body){const data=isRecord(
|
|
105
105
|
body)&&isRecord(body["data"])?body["data"]:{};const rows=Array.isArray(data["duplicates"])?data["duplicates"]:[];if(isNameCheck(data)){const free=Array.isArray(data["non_duplicates"])?data["non_duplicates"].length:0;return[`\u540C\u3058\u540D\u524D\u306E\u30D5\u30A1\u30A4\u30EB\u304C\u3042\u308B\u3082\u306E ${rows.length} \u4EF6\u30FB\u7121\u3044\u3082\u306E ${free} \u4EF6\u3002`]}const savings=data["total_size_savings"];return rows.length===0?["\u5185\u5BB9\u304C\u540C\u3058\u30D5\u30A1\u30A4\u30EB\u306F\u3042\u308A\u307E\u305B\u3093\u3002"]:
|
|
106
106
|
[`\u5185\u5BB9\u304C\u540C\u3058\u30D5\u30A1\u30A4\u30EB\u304C ${rows.length} \u4EF6\u3042\u308A\u307E\u3059\uFF08\u91CD\u8907\u3092\u6D88\u3059\u3068 ${typeof savings==="number"?savings:"?"} \u30D0\u30A4\u30C8\u6E1B\u308A\u307E\u3059\uFF09\u3002`]}}];var mediaDuplicateResource={name:"duplicate",summary:"\u91CD\u8907\u30D5\u30A1\u30A4\u30EB\u306E\u691C\u51FA\uFF08\u5185\u5BB9\u304C\u540C\u3058\u30D5\u30A1\u30A4\u30EB\u30FB\u30A2\u30C3\u30D7\u30ED\u30FC\u30C9\u524D\u306E\u540C\u540D\u691C\u67FB\uFF09",
|
|
107
|
-
operations:duplicateOperations};var SCOPE_PERSONAL3="personal";var SCOPE_PROJECT3="project";var UUID2=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;var ZONED_DATETIME=/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(?::\d{2}(?:\.\d+)?)?(?:Z|[+-]\d{2}:\d{2})$/;var DETAIL_COLUMNS=["id","file_name","content_type","file_size","scope","scope_id","folder_id","file_path","public_status","publish_start_at","publish_end_at","published_at","description","tags","public_url","updated_at"];var STATUS_COLUMNS=["id","
|
|
108
|
-
|
|
109
|
-
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",takesValue:true,placeholder:"<\u30B3\u30FC\u30C9|ID>"};function fileRef(input,usage){const id=singleRef(input,{flag:"--id",label:"\u30D5\u30A1\u30A4\u30EBID",usage});if(!isSafePathSegment(id))throw new UsageError(`\u30D5\u30A1\
|
|
110
|
-
usage);return id}function filePath(id){return`/api/v2/media/files/${encodeURIComponent(id)}`}function dataOf3(body,label){const data=isRecord(body)?body["data"]:void 0;if(!isRecord(data)){throw new ApiResponseError(`${label}\u306E\u5FDC\u7B54\u306B data \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}return data}function rowsOf(body,label){const data=isRecord(
|
|
111
|
-
`${label}\u306E\u5FDC\u7B54\u306B data \u914D\u5217\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}return data}function noArgs(input,usage){if(input.args.length>0)throw new UsageError(`\u4F4D\u7F6E\u5F15\u6570\u306F\u53D7\u3051\u53D6\u308A\u307E\u305B\u3093: ${input.args.join(" ")}`,usage)}async function resolveScope(input,ctx){const ref=nonEmpty(
|
|
112
|
-
scope:SCOPE_PROJECT3,scopeId:await ctx.projectId(ref)}}function singleSummary(columns){return body=>({message:isRecord(body)?body["message"]??null:null,...pick(dataOf3(body,"\u30D5\u30A1\u30A4\u30EB\u64CD\u4F5C"),columns)})}var GET_USAGE2="twp media get <\u30D5\u30A1\u30A4\u30EBID>";var UPDATE_USAGE2="twp media update <\u30D5\u30A1\u30A4\u30EBID> [--name <\u30D5\u30A1\u30A4\u30EB\u540D>] [--description <\u8AAC\u660E>|--clear-description] [--tag <\u30BF\u30B0>]... [--clear-tags]";
|
|
113
|
-
const body={};const name=nonEmpty(input.flags,"--name");if(name!==void 0)body["file_name"]=name;const description=input.flags.get("--description");if(description!==void 0&&input.flags.has("--clear-description")){throw new UsageError("--description \u3068 --clear-description \u306F\u540C\u6642\u306B\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093",UPDATE_USAGE2)}if(description!==void 0){if(description.trim()===""){throw new UsageError("\u8AAC\u660E\u3092\u6D88\u3059\u3068\u304D\u306F --clear-description \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",
|
|
107
|
+
operations:duplicateOperations};var SCOPE_PERSONAL3="personal";var SCOPE_PROJECT3="project";var UUID2=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;var ZONED_DATETIME=/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(?::\d{2}(?:\.\d+)?)?(?:Z|[+-]\d{2}:\d{2})$/;var DETAIL_COLUMNS=["id","file_name","content_type","file_size","scope","scope_id","folder_id","file_path","public_status","publish_visibility","publish_start_at","publish_end_at","published_at","description","tags","public_url","updated_at"];var STATUS_COLUMNS=["id","\
|
|
108
|
+
file_name","public_status","publish_start_at","publish_end_at","archive_after_unpublish"];var TRASH_COLUMNS2=["id","file_name","content_type","file_size","folder_id","updated_at"];var RECENT_COLUMNS=["file_id","file_name","content_type","scope","folder_id","folder_path"];var FILE_REF_FLAG={name:"--id",summary:"\u30D5\u30A1\u30A4\u30EBID\u3002\u4F4D\u7F6E\u5F15\u6570\u3068\u540C\u3058\u610F\u5473\uFF08\u4E21\u65B9\u6307\u5B9A\u306F\u30A8\u30E9\u30FC\uFF09",takesValue:true,placeholder:"<\u30D5\u30A1\u30A4\u30EBID>"};
|
|
109
|
+
var PROJECT_FLAG2={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",takesValue:true,placeholder:"<\u30B3\u30FC\u30C9|ID>"};function fileRef(input,usage){const id=singleRef(input,{flag:"--id",label:"\u30D5\u30A1\u30A4\u30EBID",usage});if(!isSafePathSegment(id))throw new UsageError(`\u30D5\u30A1\
|
|
110
|
+
\u30A4\u30EBID \u306E\u5F62\u5F0F\u304C\u9055\u3044\u307E\u3059: ${id}`,usage);return id}function filePath(id){return`/api/v2/media/files/${encodeURIComponent(id)}`}function dataOf3(body,label){const data=isRecord(body)?body["data"]:void 0;if(!isRecord(data)){throw new ApiResponseError(`${label}\u306E\u5FDC\u7B54\u306B data \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}return data}function rowsOf(body,label){const data=isRecord(
|
|
111
|
+
body)?body["data"]:void 0;if(!Array.isArray(data)){throw new ApiResponseError(`${label}\u306E\u5FDC\u7B54\u306B data \u914D\u5217\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}return data}function noArgs(input,usage){if(input.args.length>0)throw new UsageError(`\u4F4D\u7F6E\u5F15\u6570\u306F\u53D7\u3051\u53D6\u308A\u307E\u305B\u3093: ${input.args.join(" ")}`,usage)}async function resolveScope(input,ctx){const ref=nonEmpty(
|
|
112
|
+
input.flags,"--project");if(ref===void 0)return{scope:SCOPE_PERSONAL3};return{scope:SCOPE_PROJECT3,scopeId:await ctx.projectId(ref)}}function singleSummary(columns){return body=>({message:isRecord(body)?body["message"]??null:null,...pick(dataOf3(body,"\u30D5\u30A1\u30A4\u30EB\u64CD\u4F5C"),columns)})}var GET_USAGE2="twp media get <\u30D5\u30A1\u30A4\u30EBID>";var UPDATE_USAGE2="twp media update <\u30D5\u30A1\u30A4\u30EBID> [--name <\u30D5\u30A1\u30A4\u30EB\u540D>] [--description <\u8AAC\u660E>|--clear-description] [--tag <\u30BF\u30B0>]... [--clear-tags]";
|
|
113
|
+
function updateBody(input){const body={};const name=nonEmpty(input.flags,"--name");if(name!==void 0)body["file_name"]=name;const description=input.flags.get("--description");if(description!==void 0&&input.flags.has("--clear-description")){throw new UsageError("--description \u3068 --clear-description \u306F\u540C\u6642\u306B\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093",UPDATE_USAGE2)}if(description!==void 0){if(description.trim()===""){throw new UsageError("\u8AAC\u660E\u3092\u6D88\u3059\u3068\u304D\u306F --clear-description \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",
|
|
114
114
|
UPDATE_USAGE2)}body["description"]=description}if(input.flags.has("--clear-description"))body["description"]=null;const tags=repeatedValues(input,"--tag").map(tag=>tag.trim());if(tags.length>0&&input.flags.has("--clear-tags")){throw new UsageError("--tag \u3068 --clear-tags \u306F\u540C\u6642\u306B\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093",UPDATE_USAGE2)}if(tags.some(tag=>tag===""))throw new UsageError("--tag \u306B\u7A7A\u306E\u5024\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093",UPDATE_USAGE2);
|
|
115
115
|
if(tags.length>0)body["tags"]=[...new Set(tags)];if(input.flags.has("--clear-tags"))body["tags"]=[];if(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\uFF08--name / --description / --tag \u7B49\uFF09",UPDATE_USAGE2)}return body}var MOVE_USAGE2="twp media move <\u30D5\u30A1\u30A4\u30EBID> [--project <\u30B3\u30FC\u30C9|ID> | --personal] [--folder <\u30D5\u30A9\u30EB\u30C0ID|\u89AA/\u5B50>]";
|
|
116
116
|
function moveFolder(input){const resolved=input.resolved?.["folderId"];if(resolved!==void 0)return resolved;const value=nonEmpty(input.flags,"--folder");if(value===void 0)return null;if(!UUID2.test(value))throw new Error(`\u5185\u90E8\u30A8\u30E9\u30FC: --folder ${value} \u304C ID \u3078\u89E3\u6C7A\u3055\u308C\u3066\u3044\u307E\u305B\u3093\uFF08prepare() \u306E\u914D\u7DDA\u6F0F\u308C\uFF09`);return value}async function resolveMoveFolder(input,ctx,scope){const value=nonEmpty(input.flags,"--fold\
|
|
117
117
|
er");if(value===void 0||isFolderId(value))return{};if(scope===void 0){throw new UsageError("--folder \u306B\u30D1\u30B9\u3092\u6E21\u3059\u3068\u304D\u306F\u3001\u79FB\u52D5\u5148\u3092 --project \u304B --personal \u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u30D5\u30A9\u30EB\u30C0ID \u306A\u3089\u4E0D\u8981\u3067\u3059\uFF09",MOVE_USAGE2)}return{folderId:await resolveFolderRef(ctx,value,scope)}}function moveBody(input){const body={folder_id:moveFolder(input)};const scope=input.resolved?.["\
|
|
118
118
|
scope"];if(scope!==void 0){body["scope"]=scope;body["scope_id"]=requireResolved(input,"scopeId")}return body}var SCHEDULE_USAGE="twp media schedule <\u30D5\u30A1\u30A4\u30EBID> --start <\u65E5\u6642> [--end <\u65E5\u6642>] [--archive-after-end] | twp media schedule <\u30D5\u30A1\u30A4\u30EBID> --clear";function isCalendarDate(value){const[y,m,d,hh,mm]=[0,5,8,11,14].map((at,i)=>Number(value.slice(at,at+(i===0?4:2))));if(y===void 0||m===void 0||d===void 0||hh===void 0||mm===void 0)return false;const probe=new Date(
|
|
119
|
-
Date.UTC(y,m-1,d,hh,mm));return probe.getUTCMonth()===m-1&&probe.getUTCDate()===d&&probe.getUTCHours()===hh&&probe.getUTCMinutes()===mm}function zoned(input,flag){const value=nonEmpty(input.flags,flag);if(value===void 0)return void 0;if(!ZONED_DATETIME.test(value)||Number.isNaN(Date.parse(value))||!isCalendarDate(value)){throw new UsageError(`${flag} \u306F\u30BF\u30A4\u30E0\u30BE\u30FC\u30F3\u4ED8\u304D\u306E ISO 8601 \u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u4F8B: 2026-12-01T09:00:00+09:00\uFF09: ${value}`,
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
SCHEDULE_USAGE)}const body={publish_start_at:start};if(end!==void 0)body["publish_end_at"]=end;if(archive)body["archive_after_unpublish"]=true;return body}var
|
|
123
|
-
\
|
|
124
|
-
|
|
119
|
+
Date.UTC(y,m-1,d,hh,mm));return probe.getUTCMonth()===m-1&&probe.getUTCDate()===d&&probe.getUTCHours()===hh&&probe.getUTCMinutes()===mm}function zoned(input,flag,usage=SCHEDULE_USAGE){const value=nonEmpty(input.flags,flag);if(value===void 0)return void 0;if(!ZONED_DATETIME.test(value)||Number.isNaN(Date.parse(value))||!isCalendarDate(value)){throw new UsageError(`${flag} \u306F\u30BF\u30A4\u30E0\u30BE\u30FC\u30F3\u4ED8\u304D\u306E ISO 8601 \u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u4F8B: 2026-12-01T09:00:00+09:00\uFF09: ${value}`,
|
|
120
|
+
usage)}return value}function scheduleBody(input){const start=zoned(input,"--start");const end=zoned(input,"--end");const archive=input.flags.has("--archive-after-end");if(input.flags.has("--clear")){if(start!==void 0||end!==void 0||archive){throw new UsageError("--clear \u306F --start / --end / --archive-after-end \u3068\u540C\u6642\u306B\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093",SCHEDULE_USAGE)}return{publish_start_at:null,publish_end_at:null}}if(start===void 0)throw new UsageError("--start\uFF08\u516C\u958B\
|
|
121
|
+
\u958B\u59CB\u65E5\u6642\uFF09\u306F\u5FC5\u9808\u3067\u3059\u3002\u4E88\u7D04\u3092\u5916\u3059\u306A\u3089 --clear",SCHEDULE_USAGE);if(end!==void 0&&Date.parse(end)<=Date.parse(start)){throw new UsageError(`--end \u306F --start \u3088\u308A\u5F8C\u306B\u3057\u3066\u304F\u3060\u3055\u3044\uFF08${start} \u2192 ${end}\uFF09`,SCHEDULE_USAGE)}if(archive&&end===void 0){throw new UsageError("--archive-after-end \u306F --end\uFF08\u516C\u958B\u7D42\u4E86\u65E5\u6642\uFF09\u3068\u4E00\u7DD2\u306B\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",
|
|
122
|
+
SCHEDULE_USAGE)}const body={publish_start_at:start};if(end!==void 0)body["publish_end_at"]=end;if(archive)body["archive_after_unpublish"]=true;return body}var PUBLISH_VISIBILITIES=["users","project","tenant","twp_users","link"];var PUBLISH_USAGE="twp media publish <\u30D5\u30A1\u30A4\u30EBID> [--visibility <\u7BC4\u56F2>] [--user <\u30E6\u30FC\u30B6\u30FC>...] [--expires <\u65E5\u6642> | --no-expiry] [--archive-after-end]";var EXPIRES_FLAG={name:"--expires",summary:"\u6709\u52B9\u671F\u9650\uFF1D\u3053\u306E\u65E5\u6642\u306B\u975E\u516C\u958B\u3078\u623B\u3059\uFF08\u30BF\u30A4\u30E0\u30BE\u30FC\u30F3\u4ED8\u304D ISO\
|
|
123
|
+
8601\uFF09",takesValue:true,placeholder:"<\u65E5\u6642>"};var NO_EXPIRY_FLAG={name:"--no-expiry",summary:"\u6709\u52B9\u671F\u9650\u306A\u3057\u3067\u516C\u958B\u3059\u308B\uFF08\u793E\u5916\u306B\u958B\u304F\u7BC4\u56F2\u3067\u306F\u30C6\u30CA\u30F3\u30C8\u8A2D\u5B9A\u3067\u62D2\u5426\u3055\u308C\u3046\u308B\uFF09",takesValue:false};function expiryBody(input,usage){const expires=zoned(input,EXPIRES_FLAG.name,usage);const noExpiry=input.flags.has(NO_EXPIRY_FLAG.name);if(expires!==void 0&&noExpiry)
|
|
124
|
+
throw new UsageError("--expires \u3068 --no-expiry \u306F\u540C\u6642\u306B\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093",usage);if(noExpiry)return{expires_at:null};return expires===void 0?{}:{expires_at:expires}}var EXPIRY_FLAGS=[EXPIRES_FLAG,NO_EXPIRY_FLAG];function publishVisibility(input){const value=nonEmpty(input.flags,"--visibility");if(value!==void 0&&!PUBLISH_VISIBILITIES.includes(value)){throw new UsageError(`--visibility \u306F ${PUBLISH_VISIBILITIES.join(" / ")} \u306E\u3044\u305A\u308C\u304B\u3067\u3059: ${value}`,
|
|
125
|
+
PUBLISH_USAGE)}return value}function publishBody(input){const visibility=publishVisibility(input);const body={};if(visibility!==void 0)body["visibility"]=visibility;if(visibility==="users")body["user_ids"]=requireResolved(input,"userIds").split(",");Object.assign(body,expiryBody(input,PUBLISH_USAGE));if(input.flags.has("--archive-after-end"))body["archive_after_unpublish"]=true;return body}var PUBLISH_COLUMNS=["id","file_name","public_status","publish_visibility","publish_end_at","archive_after_\
|
|
126
|
+
unpublish","public_url"];var PUBLISH_OPERATION={name:"publish",summary:"\u30D5\u30A1\u30A4\u30EB\u3092\u516C\u958B\u3059\u308B\uFF08\u516C\u958B\u7BC4\u56F2\u30FB\u6709\u52B9\u671F\u9650\u3092\u6307\u5B9A\u3067\u304D\u308B\uFF09",usage:PUBLISH_USAGE,description:"\u30D5\u30A1\u30A4\u30EB\u3092\u516C\u958B\u72B6\u614B\uFF08published\uFF09\u306B\u3057\u307E\u3059\u3002\u516C\u958B\u4E2D\u306E\u30D5\u30A1\u30A4\u30EB\u306B\u4F7F\u3046\u3068\u3001\u7BC4\u56F2\u30FB\u671F\u9650\u3092\u5909\u3048\u307E\u3059\uFF08\u671F\u9650\u306E\u5EF6\u9577\u3082\u3053\u308C\u3067\u884C\u3044\u307E\u3059\uFF09\u3002\n--visibility\uFF08\u516C\u958B\u7BC4\u56F2\uFF09: users\uFF1D\u6307\u5B9A\u3057\u305F\u4EBA\u3060\u3051\uFF08--user \u3067\u6307\u5B9A\u30FB\u8907\u6570\u56DE\u53EF\uFF09\uFF0Fproject\uFF1D\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u30E1\u30F3\u30D0\u30FC\uFF08\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u30D5\u30A1\u30A4\u30EB\u306E\u307F\uFF09\uFF0F\n tenant\uFF1D\u30C6\u30CA\u30F3\u30C8\u5185\u306E\u5168\u54E1\uFF0Ftwp_users\uFF1DTWP\u306B\u30ED\u30B0\u30A4\u30F3\u3067\u304D\u308B\u4EBA\uFF08\u4ED6\u30C6\u30CA\u30F3\u30C8\u3092\u542B\u3080\uFF09\uFF0Flink\uFF1D\u30EA\u30F3\u30AF\u3092\u77E5\u3063\u3066\u3044\u308B\u5168\u54E1\uFF08\u30ED\u30B0\u30A4\u30F3\u4E0D\u8981\uFF09\u3002\n \u7701\u7565\u3059\u308B\u3068\u3001\
|
|
127
|
+
\u672A\u516C\u958B\u306E\u30D5\u30A1\u30A4\u30EB\u306F link \u3067\u516C\u958B\u3057\u3001\u516C\u958B\u4E2D\u306E\u30D5\u30A1\u30A4\u30EB\u306F\u4ECA\u306E\u7BC4\u56F2\u306E\u307E\u307E\u3067\u3059\uFF08\u753B\u9762\u304C\u65E2\u5B9A\u3067\u9078\u3076\u7BC4\u56F2\u306F twp media get \u306E default_publish_visibility\uFF09\u3002\n--expires\uFF08\u6709\u52B9\u671F\u9650\uFF09: \u305D\u306E\u65E5\u6642\u306B\u975E\u516C\u958B\u3078\u623B\u3057\u307E\u3059\u3002\u30BF\u30A4\u30E0\u30BE\u30FC\u30F3\u4ED8\u304D\u306E ISO 8601 \u3067\u6307\u5B9A\u3057\u307E\u3059\uFF08\u4F8B: 2026-12-01T09:00:00+09:00\uFF09\u3002\n \u7701\u7565\u3059\u308B\u3068\u4ECA\u306E\u671F\u9650\u306E\u307E\u307E\u3001--no-expiry \u3067\u671F\u9650\u306A\u3057\u306B\u3057\u307E\u3059\u3002twp_users / link \u306F\u671F\u9650\u304C\u5FC5\u9808\u3067\u3059\uFF08\u30C6\u30CA\u30F3\u30C8\u306E\u6700\u9577\u304C\u7121\u671F\u9650\u306A\u3089\u4EFB\u610F\uFF09\u3002\n \u671F\u9650\u306F\u516C\u958B\u304B\u30891\u6642\u9593\u4EE5\u4E0A\u5148\u30FB\u30C6\u30CA\u30F3\u30C8\u8A2D\u5B9A\u306E\u6700\u9577\u4EE5\u5185\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002\u6E80\u305F\u3055\u306A\u3044\u3068\u30B5\u30FC\u30D0\u304C\u62D2\u5426\u3057\u7D42\u4E86\u30B3\u30FC\u30C9 3 \u3067\u7D42\u308F\u308A\u307E\u3059\u3002\n--archive-after-end \u3092\u4ED8\u3051\u308B\u3068\u3001\u671F\u9650\u304C\u6765\u305F\u3068\u304D\u306B\u30A2\u30FC\u30AB\u30A4\u30D6\u306B\u3057\u307E\u3059\u3002\n\u65E5\u6642\u3092\u6C7A\u3081\u3066\u516C\u958B\u3092\u59CB\u3081\u308B\u306A\u3089 twp media schedule\u3002\u8907\u6570\u306E\u30D5\u30A1\u30A4\u30EB\u3092\u307E\u3068\u3081\u3066\u516C\u958B\u3059\u308B\u306A\u3089 twp media bulk-publish\uFF08\u7BC4\u56F2\u306F link \u56FA\u5B9A\uFF09\u3002",
|
|
128
|
+
flags:[FILE_REF_FLAG,{name:"--visibility",summary:`\u516C\u958B\u7BC4\u56F2\uFF08${PUBLISH_VISIBILITIES.join(" / ")}\uFF09`,takesValue:true,placeholder:"<\u7BC4\u56F2>"},{name:"--user",summary:"\u516C\u958B\u3059\u308B\u76F8\u624B\uFF08--visibility users \u306E\u3068\u304D\u5FC5\u9808\u30FB\u8907\u6570\u56DE\u6307\u5B9A\u53EF\u3002\u540D\u524D\u30FB\u30E1\u30FC\u30EB\u30FBID\uFF09",takesValue:true,placeholder:"<\u30E6\u30FC\u30B6\u30FC>",repeatable:true},...EXPIRY_FLAGS,{name:"--archive-after-en\
|
|
129
|
+
d",summary:"\u6709\u52B9\u671F\u9650\u304C\u6765\u305F\u3089\u30A2\u30FC\u30AB\u30A4\u30D6\u3059\u308B",takesValue:false}],async prepare(input,ctx){fileRef(input,PUBLISH_USAGE);const visibility=publishVisibility(input);const users=repeatedValues(input,"--user");if(visibility==="users"&&users.length===0){throw new UsageError("--visibility users \u306B\u306F --user\uFF08\u516C\u958B\u3059\u308B\u76F8\u624B\uFF09\u304C1\u4EBA\u4EE5\u4E0A\u5FC5\u8981\u3067\u3059",PUBLISH_USAGE)}if(visibility!=="user\
|
|
130
|
+
s"&&users.length>0){throw new UsageError("--user \u306F --visibility users \u3068\u4E00\u7DD2\u306B\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",PUBLISH_USAGE)}if(users.length===0)return input;const ids=[];for(const ref of users)ids.push((await ctx.resolver.user(ref,"--user")).id);return withResolved(input,{userIds:ids.join(",")})},plan:input=>({method:"POST",path:`${filePath(fileRef(input,PUBLISH_USAGE))}/publish`,body:publishBody(input)}),summarize:singleSummary(PUBLISH_COLUMNS),raw:body=>dataOf3(
|
|
131
|
+
body,"\u30D5\u30A1\u30A4\u30EB\u3092\u516C\u958B\u3059\u308B")};var STATUS_OPERATIONS=[{name:"unpublish",summary:"\u30D5\u30A1\u30A4\u30EB\u3092\u975E\u516C\u958B\u306B\u3059\u308B",description:"\u30D5\u30A1\u30A4\u30EB\u3092\u975E\u516C\u958B\uFF08draft\uFF09\u306B\u623B\u3057\u307E\u3059\u3002"},{name:"archive",summary:"\u30D5\u30A1\u30A4\u30EB\u3092\u30A2\u30FC\u30AB\u30A4\u30D6\u3059\u308B",description:"\u30D5\u30A1\u30A4\u30EB\u3092\u30A2\u30FC\u30AB\u30A4\u30D6\u72B6\u614B\uFF08archived\uFF09\u306B\u3057\u307E\u3059\uFF08\u524A\u9664\u3067\u306F\u3042\u308A\u307E\u305B\u3093\uFF09\u3002"}];
|
|
132
|
+
function statusOperation(spec){const usage=`twp media ${spec.name} <\u30D5\u30A1\u30A4\u30EBID>`;return{name:spec.name,summary:spec.summary,usage,description:`${spec.description}
|
|
125
133
|
\u8907\u6570\u306E\u30D5\u30A1\u30A4\u30EB\u3092\u307E\u3068\u3081\u3066\u5909\u3048\u308B\u306A\u3089 twp media bulk-${spec.name}\u3002\u5931\u6557\uFF08\u5B58\u5728\u3057\u306A\u3044\u30FB\u6A29\u9650\u304C\u7121\u3044\uFF09\u306F HTTP \u306E\u62D2\u5426\u3068\u3057\u3066\u7D42\u4E86\u30B3\u30FC\u30C9 3 \u3067\u7D42\u308F\u308A\u307E\u3059\u3002`,flags:[FILE_REF_FLAG],plan:input=>({method:"POST",path:`${filePath(fileRef(input,usage))}/${spec.name}`,body:{}}),summarize:singleSummary(STATUS_COLUMNS),
|
|
126
134
|
raw:body=>dataOf3(body,spec.summary)}}var RESTORE_USAGE2="twp media restore <\u30D5\u30A1\u30A4\u30EBID>";var MEDIA_FILE_OPERATIONS=[{name:"get",summary:"\u30D5\u30A1\u30A4\u30EB\u306E\u8A73\u7D30\u3092\u8868\u793A\u3059\u308B",usage:GET_USAGE2,description:"\u30D5\u30A1\u30A4\u30EBID \u306F twp media list \u306E id \u3067\u3059\u3002\u30B4\u30DF\u7BB1\u306B\u3042\u308B\u30D5\u30A1\u30A4\u30EB\u306F\u898B\u3064\u304B\u308A\u307E\u305B\u3093\uFF08twp media trash list\uFF09\u3002",flags:[FILE_REF_FLAG],
|
|
127
135
|
plan:input=>({method:"GET",path:filePath(fileRef(input,GET_USAGE2))}),summarize:body=>pick(dataOf3(body,"\u30D5\u30A1\u30A4\u30EB\u8A73\u7D30"),DETAIL_COLUMNS),raw:body=>dataOf3(body,"\u30D5\u30A1\u30A4\u30EB\u8A73\u7D30")},{name:"update",summary:"\u30D5\u30A1\u30A4\u30EB\u306E\u540D\u524D\u30FB\u8AAC\u660E\u30FB\u30BF\u30B0\u3092\u5909\u66F4\u3059\u308B",usage:UPDATE_USAGE2,description:"\u6307\u5B9A\u3057\u305F\u9805\u76EE\u3060\u3051\u3092\u5909\u66F4\u3057\u307E\u3059\u3002\n--tag \u306F\u8907\u6570\u56DE\u6307\u5B9A\u3067\u304D\u3001**\u6307\u5B9A\u3057\u305F\u30BF\u30B0\u3067\u7F6E\u304D\u63DB\u3048\u307E\u3059**\uFF08\u8FFD\u52A0\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002\u4ECA\u306E\u30BF\u30B0\u306F twp media get \u3067\u78BA\u8A8D\uFF09\u3002\n\u30BF\u30B0\u3092\u5168\u90E8\u5916\u3059\u306A\u3089 --clear-tags\u3001\u8AAC\
|
|
@@ -131,8 +139,8 @@ ted_at"]),raw:body=>dataOf3(body,"\u30D5\u30A1\u30A4\u30EB\u66F4\u65B0")},{name:
|
|
|
131
139
|
flags:[FILE_REF_FLAG,{name:"--project",summary:"\u79FB\u52D5\u5148\u3092\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u30D5\u30A1\u30A4\u30EB\u306B\u3059\u308B\uFF08\u30B3\u30FC\u30C9\u307E\u305F\u306F ID\uFF09",takesValue:true,placeholder:"<\u30B3\u30FC\u30C9|ID>"},{name:"--personal",summary:"\u79FB\u52D5\u5148\u3092\u81EA\u5206\u306E\u500B\u4EBA\u30D5\u30A1\u30A4\u30EB\u306B\u3059\u308B",takesValue:false},{name:"--folder",summary:"\u79FB\u52D5\u5148\u306E\u30D5\u30A9\u30EB\u30C0\uFF08ID \u304B\u300C\u89AA/\u5B50\u300D\u5F62\u5F0F\u306E\u30D1\u30B9\u3002\u30D1\u30B9\u306F --project / --personal \u3068\u4F75\u7528\u3002\u7701\u7565\u6642\u306F\u30B9\u30B3\u30FC\u30D7\u306E\u6700\u4E0A\
|
|
132
140
|
\u4F4D\uFF09",takesValue:true,placeholder:"<\u30D5\u30A9\u30EB\u30C0ID|\u89AA/\u5B50>"}],async prepare(input,ctx){fileRef(input,MOVE_USAGE2);const project=nonEmpty(input.flags,"--project");if(project!==void 0&&input.flags.has("--personal")){throw new UsageError("--project \u3068 --personal \u306F\u540C\u6642\u306B\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093",MOVE_USAGE2)}if(project!==void 0){const scopeId=await ctx.projectId(project);const folder2=await resolveMoveFolder(input,ctx,{scope:SCOPE_PROJECT3,
|
|
133
141
|
scopeId});return withResolved(input,{scope:SCOPE_PROJECT3,scopeId,...folder2})}if(input.flags.has("--personal")){const folder2=await resolveMoveFolder(input,ctx,{scope:SCOPE_PERSONAL3});return withResolved(input,{scope:SCOPE_PERSONAL3,scopeId:(await ctx.resolver.currentUser()).id,...folder2})}const folder=await resolveMoveFolder(input,ctx,void 0);return Object.keys(folder).length>0?withResolved(input,folder):input},plan:input=>({method:"POST",path:`${filePath(fileRef(input,MOVE_USAGE2))}/move`,body:moveBody(
|
|
134
|
-
input)}),summarize:singleSummary(["id","file_name","scope","scope_id","folder_id","file_path"]),raw:body=>dataOf3(body,"\u30D5\u30A1\u30A4\u30EB\u79FB\u52D5")},...STATUS_OPERATIONS.map(statusOperation),{name:"schedule",summary:"\u30D5\u30A1\u30A4\u30EB\u306E\u516C\u958B\u671F\u9593\u3092\u4E88\u7D04\u3059\u308B\uFF08--clear \u3067\u89E3\u9664\uFF09",usage:SCHEDULE_USAGE,description:"\u65E5\u6642\u306F\u30BF\u30A4\u30E0\u30BE\u30FC\u30F3\u4ED8\u304D\u306E ISO 8601 \u3067\u6307\u5B9A\u3057\u307E\u3059\uFF08\u4F8B: 2026-12-01T09:00:00+09:00 / 2026-12-01T00:00:00Z\uFF09\u3002\n\u30AA\u30D5\u30BB\u30C3\u30C8\u306E\u7121\u3044\u65E5\u6642\u306F\u53D7\u3051\
|
|
135
|
-
\u3001\u305A\u308C\u308B\u305F\u3081\uFF09\u3002\u9001\u308B\u5024\u306F --dry-run \u3067\u78BA\u8A8D\u3067\u304D\u307E\u3059\u3002\n--end \u3092\u4ED8\u3051\u308B\u3068\u3001\u305D\u306E\u65E5\u6642\u306B\u975E\u516C\u958B\u3078\u623B\u308A\u307E\u3059\u3002--archive-after-end \u3092\u4ED8\u3051\u308B\u3068\u30A2\u30FC\u30AB\u30A4\u30D6\u306B\u3057\u307E\u3059\u3002\n--clear \u306F\u4E88\u7D04\u3092\u5916\u3057\u3001\u30D5\u30A1\u30A4\u30EB\u3092\u975E\u516C\u958B\uFF08draft\uFF09\u306B\u623B\u3057\u307E\u3059\u3002",
|
|
142
|
+
input)}),summarize:singleSummary(["id","file_name","scope","scope_id","folder_id","file_path"]),raw:body=>dataOf3(body,"\u30D5\u30A1\u30A4\u30EB\u79FB\u52D5")},PUBLISH_OPERATION,...STATUS_OPERATIONS.map(statusOperation),{name:"schedule",summary:"\u30D5\u30A1\u30A4\u30EB\u306E\u516C\u958B\u671F\u9593\u3092\u4E88\u7D04\u3059\u308B\uFF08--clear \u3067\u89E3\u9664\uFF09",usage:SCHEDULE_USAGE,description:"\u65E5\u6642\u306F\u30BF\u30A4\u30E0\u30BE\u30FC\u30F3\u4ED8\u304D\u306E ISO 8601 \u3067\u6307\u5B9A\u3057\u307E\u3059\uFF08\u4F8B: 2026-12-01T09:00:00+09:00 / 2026-12-01T00:00:00Z\uFF09\u3002\n\u30AA\u30D5\u30BB\u30C3\u30C8\u306E\u7121\u3044\u65E5\u6642\u306F\u53D7\u3051\
|
|
143
|
+
\u4ED8\u3051\u307E\u305B\u3093\uFF08\u30B5\u30FC\u30D0\u306E\u6642\u523B\u5E2F\u3067\u89E3\u91C8\u3055\u308C\u3001\u305A\u308C\u308B\u305F\u3081\uFF09\u3002\u9001\u308B\u5024\u306F --dry-run \u3067\u78BA\u8A8D\u3067\u304D\u307E\u3059\u3002\n--end \u3092\u4ED8\u3051\u308B\u3068\u3001\u305D\u306E\u65E5\u6642\u306B\u975E\u516C\u958B\u3078\u623B\u308A\u307E\u3059\u3002--archive-after-end \u3092\u4ED8\u3051\u308B\u3068\u30A2\u30FC\u30AB\u30A4\u30D6\u306B\u3057\u307E\u3059\u3002\n--clear \u306F\u4E88\u7D04\u3092\u5916\u3057\u3001\u30D5\u30A1\u30A4\u30EB\u3092\u975E\u516C\u958B\uFF08draft\uFF09\u306B\u623B\u3057\u307E\u3059\u3002",
|
|
136
144
|
flags:[FILE_REF_FLAG,{name:"--start",summary:"\u516C\u958B\u958B\u59CB\u65E5\u6642\uFF08\u30BF\u30A4\u30E0\u30BE\u30FC\u30F3\u4ED8\u304D ISO 8601\uFF09",takesValue:true,placeholder:"<\u65E5\u6642>"},{name:"--end",summary:"\u516C\u958B\u7D42\u4E86\u65E5\u6642\uFF08\u30BF\u30A4\u30E0\u30BE\u30FC\u30F3\u4ED8\u304D ISO 8601\uFF09",takesValue:true,placeholder:"<\u65E5\u6642>"},{name:"--archive-after-end",summary:"\u516C\u958B\u7D42\u4E86\u5F8C\u306B\u30A2\u30FC\u30AB\u30A4\u30D6\u3059\u308B\uFF08--end \u304C\u5FC5\u8981\uFF09",
|
|
137
145
|
takesValue:false},{name:"--clear",summary:"\u4E88\u7D04\u3092\u5916\u3057\u3066\u975E\u516C\u958B\u306B\u623B\u3059",takesValue:false}],plan:input=>({method:"POST",path:`${filePath(fileRef(input,SCHEDULE_USAGE))}/schedule`,body:scheduleBody(input)}),summarize:singleSummary(STATUS_COLUMNS),raw:body=>dataOf3(body,"\u516C\u958B\u4E88\u7D04")},{name:"restore",summary:"\u30B4\u30DF\u7BB1\u306E\u30D5\u30A1\u30A4\u30EB\u3092\u5143\u306B\u623B\u3059",usage:RESTORE_USAGE2,description:"twp media delete \u3067\u30B4\
|
|
138
146
|
\u30DF\u7BB1\u3078\u79FB\u3057\u305F\u30D5\u30A1\u30A4\u30EB\u3092\u5143\u306B\u623B\u3057\u307E\u3059\uFF08\u30A2\u30FC\u30AB\u30A4\u30D6\u306E\u89E3\u9664\u3067\u306F\u3042\u308A\u307E\u305B\u3093\uFF09\u3002\n\u30B4\u30DF\u7BB1\u306B\u3042\u308B\u30D5\u30A1\u30A4\u30EB\u306F twp media trash list \u3067\u78BA\u8A8D\u3067\u304D\u307E\u3059\u3002\u8907\u6570\u306A\u3089 twp media bulk-restore\u3002",flags:[FILE_REF_FLAG],plan:input=>({method:"POST",path:`${filePath(fileRef(input,RESTORE_USAGE2))}\
|
|
@@ -320,13 +328,14 @@ usage);const bad=ids.filter(id=>!UUID3.test(id));if(bad.length>0)throw new Usage
|
|
|
320
328
|
body,label);const{success,failed}=data;const rolledBack=data["rolled_back"]??[];if(!Array.isArray(success)||!Array.isArray(failed)||!Array.isArray(rolledBack)){throw new ApiResponseError(`${label}\u306E\u5FDC\u7B54\u306B data.success / failed \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}return{success:success.map(String),failed:failed.map(row=>({id:String(isRecord(row)?row["id"]??row["file_id"]:row),reason:String(isRecord(
|
|
321
329
|
row)?row["reason"]??row["error"]??"":"")})),rolledBack:rolledBack.map(String)}}function assertBulkSucceeded(result,requested,label,ctx){if(result.failed.length===0)return;const lines=[`${label}: ${requested} \u4EF6\u4E2D ${result.failed.length} \u4EF6\u304C\u5931\u6557\u3057\u307E\u3057\u305F\u3002`];for(const row of result.failed)lines.push(` \u5931\u6557: ${row.id}\uFF08${row.reason}\uFF09`);lines.push(result.success.length===0?" \u9069\u7528\u3055\u308C\u305F\u30D5\u30A1\u30A4\u30EB\u306F\u3042\u308A\u307E\u305B\u3093\u3002":
|
|
322
330
|
` \u9069\u7528\u6E08\u307F\uFF08\u623B\u3055\u308C\u3066\u3044\u306A\u3044\uFF09: ${result.success.join(" ")}`);if(result.rolledBack.length>0)lines.push(` \u5931\u6557\u306E\u305F\u3081\u5143\u306B\u623B\u3057\u305F\u3082\u306E: ${result.rolledBack.join(" ")}`);ctx.warn(lines.join("\n"));throw new ApiRejectedError(`${label}\u306F\u5B8C\u4E86\u3057\u3066\u3044\u307E\u305B\u3093\uFF08${result.failed.length} \u4EF6\u5931\u6557\u30FB${result.success.length} \u4EF6\u9069\u7528\uFF09\u3002`)}function bulkSummary(body){
|
|
323
|
-
const data=isRecord(body)?body["data"]:void 0;const count=key=>isRecord(data)&&Array.isArray(data[key])?data[key].length:0;return{message:isRecord(body)?body["message"]??null:null,success:count("success"),failed:count("failed"),rolled_back:count("rolled_back")}}var BULK_STATUS_OPERATIONS=[{name:"bulk-publish",endpoint:"publish",label:"\u4E00\u62EC\u516C\u958B",summary:"\u8907\u6570\u306E\u30D5\u30A1\u30A4\u30EB\u3092\u516C\u958B\u3059\u308B
|
|
324
|
-
|
|
331
|
+
const data=isRecord(body)?body["data"]:void 0;const count=key=>isRecord(data)&&Array.isArray(data[key])?data[key].length:0;return{message:isRecord(body)?body["message"]??null:null,success:count("success"),failed:count("failed"),rolled_back:count("rolled_back")}}var BULK_STATUS_OPERATIONS=[{name:"bulk-publish",endpoint:"publish",label:"\u4E00\u62EC\u516C\u958B",summary:"\u8907\u6570\u306E\u30D5\u30A1\u30A4\u30EB\u3092\u516C\u958B\u3059\u308B\uFF08\u7BC4\u56F2\u306F link\u30FB\u6709\u52B9\u671F\u9650\u3092\u6307\u5B9A\u3067\u304D\u308B\uFF09",
|
|
332
|
+
description:"\u30D5\u30A1\u30A4\u30EB\u3092\u300C\u30EA\u30F3\u30AF\u3092\u77E5\u3063\u3066\u3044\u308B\u5168\u54E1\uFF08link\uFF09\u300D\u3067\u516C\u958B\u3057\u307E\u3059\u3002\u5225\u306E\u7BC4\u56F2\u3067\u516C\u958B\u3059\u308B\u306A\u30891\u4EF6\u305A\u3064 twp media publish --visibility\u3002\n--expires \u3067\u6709\u52B9\u671F\u9650\uFF08\u30BF\u30A4\u30E0\u30BE\u30FC\u30F3\u4ED8\u304D ISO 8601\uFF09\u3001--no-expiry \u3067\u671F\u9650\u306A\u3057\u3092\u6307\u5B9A\u3057\u307E\u3059\u3002\u671F\u9650\u306F\u672A\u516C\u958B\u306E\u30D5\u30A1\u30A4\u30EB\u306B\u3060\u3051\u52B9\u304D\u3001\n\u516C\u958B\u4E2D\u306E\u30D5\u30A1\u30A4\u30EB\u306F\u7BC4\u56F2\u30FB\u671F\u9650\u3068\u3082\u4ECA\u306E\u307E\u307E\u3067\u3059\u3002\u671F\u9650\u304C\u5FC5\u9808\u306E\u30C6\u30CA\u30F3\u30C8\u3067\u671F\u9650\u3092\u4ED8\u3051\u306A\u3044\u3068\u3001\u305D\u306E\u30D5\u30A1\u30A4\u30EB\u306F\u5931\u6557\u306B\u5165\u308A\u307E\u3059\uFF08TWP-7670\uFF09\u3002",
|
|
333
|
+
flags:EXPIRY_FLAGS,extra:expiryBody},{name:"bulk-unpublish",endpoint:"unpublish",label:"\u4E00\u62EC\u975E\u516C\u958B",summary:"\u8907\u6570\u306E\u30D5\u30A1\u30A4\u30EB\u3092\u975E\u516C\u958B\u306B\u3059\u308B",description:"\u30D5\u30A1\u30A4\u30EB\u3092\u975E\u516C\u958B\uFF08\u4E0B\u66F8\u304D\uFF09\u306B\u623B\u3057\u307E\u3059\u3002"},{name:"bulk-archive",endpoint:"archive",label:"\u4E00\u62EC\u30A2\u30FC\u30AB\u30A4\u30D6",summary:"\u8907\u6570\u306E\u30D5\u30A1\u30A4\u30EB\u3092\u30A2\u30FC\u30AB\u30A4\u30D6\u3059\u308B",
|
|
325
334
|
description:"\u30D5\u30A1\u30A4\u30EB\u3092\u30A2\u30FC\u30AB\u30A4\u30D6\u72B6\u614B\u306B\u3057\u307E\u3059\uFF08\u524A\u9664\u3067\u306F\u3042\u308A\u307E\u305B\u3093\uFF09\u3002"},{name:"bulk-restore",endpoint:"restore",label:"\u4E00\u62EC\u5FA9\u5143",summary:"\u30B4\u30DF\u7BB1\u306E\u30D5\u30A1\u30A4\u30EB\u3092\u5FA9\u5143\u3059\u308B",description:"twp media delete / bulk-delete \u3067\u30B4\u30DF\u7BB1\u3078\u79FB\u3057\u305F\u30D5\u30A1\u30A4\u30EB\u3092\u5143\u306B\u623B\u3057\u307E\u3059\uFF08\u30A2\u30FC\u30AB\u30A4\u30D6\u306E\u89E3\u9664\u3067\u306F\u3042\u308A\u307E\u305B\u3093\uFF09\u3002"}];
|
|
326
|
-
function bulkUsage(name,extra=""){return`twp media ${name} <\u30D5\u30A1\u30A4\u30EBID>...${extra}`}function bulkStatusOperation(spec){const usage=bulkUsage(spec.name);return{name:spec.name,summary:spec.summary,usage,description:`${spec.description}
|
|
335
|
+
function bulkUsage(name,extra=""){return`twp media ${name} <\u30D5\u30A1\u30A4\u30EBID>...${extra}`}function bulkStatusOperation(spec){const usage=bulkUsage(spec.name,spec.flags===void 0?"":" [--expires <\u65E5\u6642> | --no-expiry]");const extra=input=>spec.extra?.(input,usage)??{};return{name:spec.name,summary:spec.summary,usage,description:`${spec.description}
|
|
327
336
|
\u30D5\u30A1\u30A4\u30EBID\uFF08twp media list \u306E id\uFF09\u3092\u4F4D\u7F6E\u5F15\u6570\u3067\u4E26\u3079\u307E\u3059\uFF08${BULK_MAX} \u4EF6\u307E\u3067\uFF09\u3002
|
|
328
|
-
`+BULK_FAILURE_HELP,flags:[],plan:input=>({method:"POST",path:`/api/v2/media/files/bulk/${spec.endpoint}`,body:{file_ids:bulkIds(input,usage,BULK_MAX)}}),plannedNotes:input=>[`${bulkIds(input,usage,BULK_MAX).length} \u4EF6\u306E\u30D5\u30A1\u30A4\u30EB\u3092\u5BFE\u8C61\u306B\u3057\u307E\u3059\u3002`],execute:(input,ctx)=>runBulk(ctx,bulkIds(input,usage,BULK_MAX),spec.endpoint,spec.label,
|
|
329
|
-
stderr \u306B\u51FA\u3057\u307E\u3059\n\uFF08\u30B5\u30FC\u30D0\u306F\u5931\u6557\u304C\u3042\u3063\u3066\u3082 HTTP 200 \u3092\u8FD4\u3059\u305F\u3081\uFF09\u3002bulk-publish / bulk-unpublish / bulk-archive \u306F\n\u5B58\u5728\u3057\u306A\u3044 ID \u304C1\u4EF6\u3067\u3082\u3042\u308B\u3068\u4ED6\u3082\u9069\u7528\u3057\u307E\u305B\u3093\u3002bulk-restore / bulk-move / bulk-delete \u306F1\u4EF6\u305A\u3064\u51E6\u7406\u3057\u3001\n\u5931\u6557\u3057\u305F\u3082\u306E\u4EE5\u5916\u306F\u9069\u7528\u3055\u308C\u307E\u3059\u3002";
|
|
337
|
+
`+BULK_FAILURE_HELP,flags:spec.flags??[],plan:input=>({method:"POST",path:`/api/v2/media/files/bulk/${spec.endpoint}`,body:{file_ids:bulkIds(input,usage,BULK_MAX),...extra(input)}}),plannedNotes:input=>[`${bulkIds(input,usage,BULK_MAX).length} \u4EF6\u306E\u30D5\u30A1\u30A4\u30EB\u3092\u5BFE\u8C61\u306B\u3057\u307E\u3059\u3002`],execute:(input,ctx)=>runBulk(ctx,bulkIds(input,usage,BULK_MAX),spec.endpoint,spec.label,extra(input)),summarize:bulkSummary,raw:body=>body}}var BULK_FAILURE_HELP="1\u4EF6\u3067\u3082\u5931\u6557\
|
|
338
|
+
\u3059\u308B\u3068\u7D42\u4E86\u30B3\u30FC\u30C9 3 \u3067\u7D42\u308F\u308A\u3001\u5931\u6557\u3057\u305F\u30D5\u30A1\u30A4\u30EB\u3068\u7406\u7531\u30FB\u9069\u7528\u6E08\u307F\u306E\u30D5\u30A1\u30A4\u30EB\u3092 stderr \u306B\u51FA\u3057\u307E\u3059\n\uFF08\u30B5\u30FC\u30D0\u306F\u5931\u6557\u304C\u3042\u3063\u3066\u3082 HTTP 200 \u3092\u8FD4\u3059\u305F\u3081\uFF09\u3002bulk-publish / bulk-unpublish / bulk-archive \u306F\n\u5B58\u5728\u3057\u306A\u3044 ID \u304C1\u4EF6\u3067\u3082\u3042\u308B\u3068\u4ED6\u3082\u9069\u7528\u3057\u307E\u305B\u3093\u3002bulk-restore / bulk-move / bulk-delete \u306F1\u4EF6\u305A\u3064\u51E6\u7406\u3057\u3001\n\u5931\u6557\u3057\u305F\u3082\u306E\u4EE5\u5916\u306F\u9069\u7528\u3055\u308C\u307E\u3059\u3002";
|
|
330
339
|
async function runBulk(ctx,ids,endpoint,label,extra){const body=await ctx.send({method:"POST",path:`/api/v2/media/files/bulk/${endpoint}`,body:{file_ids:ids,...extra}});assertBulkSucceeded(bulkResult(body,label),ids.length,label,ctx);return body}var PERMANENT_FLAG2={name:"--permanent",summary:"\u30B4\u30DF\u7BB1\u306B\u3042\u308B\u30D5\u30A1\u30A4\u30EB\u3092\u5B8C\u5168\u306B\u524A\u9664\u3059\u308B\uFF08\u5FA9\u5143\u3067\u304D\u307E\u305B\u3093\u3002\u5148\u306B bulk-delete \u3067\u30B4\u30DF\u7BB1\u3078\u79FB\u3059\u3053\u3068\uFF09",
|
|
331
340
|
takesValue:false};var MOVE_FOLDER_FLAG={name:"--folder",summary:"\u79FB\u52D5\u5148\u306E\u30D5\u30A9\u30EB\u30C0\uFF08ID \u304B\u300C\u89AA/\u5B50\u300D\u5F62\u5F0F\u306E\u30D1\u30B9\u3002\u7701\u7565\u6642\u306F\u30B9\u30B3\u30FC\u30D7\u306E\u6700\u4E0A\u4F4D\uFF09",takesValue:true,placeholder:"<ID|\u30D1\u30B9>"};var MOVE_PROJECT_FLAG={name:"--project",summary:"\u79FB\u52D5\u5148\u3092\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u30D5\u30A1\u30A4\u30EB\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",
|
|
332
341
|
takesValue:true,placeholder:"<\u30B3\u30FC\u30C9|ID>"};var BULK_DELETE_USAGE=bulkUsage("bulk-delete"," --yes [--permanent]");var BULK_MOVE_USAGE=bulkUsage("bulk-move"," [--project <\u30B3\u30FC\u30C9|ID>] [--folder <ID|\u30D1\u30B9>]");var BULK_DOWNLOAD_USAGE=bulkUsage("bulk-download"," --out <\u30D1\u30B9.zip> [--force]");function bulkDeleteEndpoint(input){return input.flags.has("--permanent")?{endpoint:"permanent-delete",label:"\u4E00\u62EC\u5B8C\u5168\u524A\u9664"}:{endpoint:"delete",label:"\u4E00\
|
|
@@ -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-
|
|
3
|
+
import{activateModeFiles,activatePermissionSettings,buildResidentSet,buildSystemPrompt,createAuditLogger,createTwpToolkit,currentBranch,displayCwd,residentInputs,runTurn}from"./chunk-FZ55A6NN.js";import"./chunk-CDAU3M7F.js";import"./chunk-N2UVRM3Z.js";import"./chunk-BD7O73GK.js";import"./chunk-4DOPQ74T.js";import"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";import"./chunk-MMVXE2CJ.js";import"./chunk-II5RVJQN.js";import"./chunk-VFPY2A23.js";
|
|
4
4
|
import{RelayError,createRuntime,pickModel,specFor}from"./chunk-PJ7IKTZI.js";import"./chunk-D233KKXW.js";import"./chunk-PMOUHEJQ.js";import"./chunk-XNLIEUAW.js";import"./chunk-J7QYPKVK.js";import{checkMinSupportedVersion,enforceMinSupportedVersion,floorNeedsRefresh}from"./chunk-DXXFUNYN.js";import"./chunk-EDF4U5BT.js";import"./chunk-RZVI6PMW.js";import{getMode}from"./chunk-2LOT54OO.js";import{stripTerminalControls}from"./chunk-NHYMHCAT.js";
|
|
5
5
|
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()===
|
|
6
6
|
""){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()).
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{ASSIGNED_PROJECT_COLUMNS,assignedProjectItems,projectDomain}from"./chunk-
|
|
3
|
+
import{ASSIGNED_PROJECT_COLUMNS,assignedProjectItems,projectDomain}from"./chunk-C6AOVOVD.js";import"./chunk-Q3B65OFC.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";
|
|
4
4
|
import"./chunk-4DOPQ74T.js";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};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{loadDomain}from"./chunk-
|
|
3
|
+
import{loadDomain}from"./chunk-BB5U4FYR.js";import"./chunk-VSJBJXZO.js";export{loadDomain};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{CURATED_PAGING_VOCABULARY,buildPrepareContext,checkOutTarget,exitCodeFor,fetchAllPages,outputValue,reportError,requiresYes,resolvePaging,runDomain}from"./chunk-
|
|
3
|
+
import{CURATED_PAGING_VOCABULARY,buildPrepareContext,checkOutTarget,exitCodeFor,fetchAllPages,outputValue,reportError,requiresYes,resolvePaging,runDomain}from"./chunk-XOXWL5FD.js";import"./chunk-BB5U4FYR.js";import"./chunk-Q3B65OFC.js";import"./chunk-GFLGXGWE.js";import"./chunk-U6REFY7T.js";import"./chunk-W4NLJ2YK.js";import"./chunk-BD7O73GK.js";import"./chunk-VGT2EGH6.js";import"./chunk-4DOPQ74T.js";import"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";
|
|
4
4
|
import"./chunk-MMVXE2CJ.js";import"./chunk-II5RVJQN.js";import"./chunk-MI6HVYR2.js";import"./chunk-3ZRMMBP5.js";import"./chunk-VFPY2A23.js";import"./chunk-PECIBNFD.js";import"./chunk-XNLIEUAW.js";import"./chunk-J7QYPKVK.js";import"./chunk-EDF4U5BT.js";import"./chunk-RZVI6PMW.js";import"./chunk-6FI4ZMZ7.js";import"./chunk-OKATZ4SN.js";import"./chunk-74BPZOKU.js";import"./chunk-UREA4ZIG.js";import"./chunk-NHYMHCAT.js";
|
|
5
5
|
import"./chunk-VSJBJXZO.js";export{CURATED_PAGING_VOCABULARY,buildPrepareContext,checkOutTarget,exitCodeFor,fetchAllPages,outputValue,reportError,requiresYes,resolvePaging,runDomain};
|
|
@@ -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
|
|
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}\
|
|
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){
|
|
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
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
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],
|
|
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`],
|
|
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,
|
|
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");
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
\
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
takesValue:true,placeholder:"
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
function
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
usage)
|
|
46
|
-
usage)
|
|
47
|
-
"
|
|
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,6 +1,6 @@
|
|
|
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-
|
|
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
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
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
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";
|