@tocca-systems/twp-cli 0.96.0 → 0.96.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (146) hide show
  1. package/CHANGELOG.public.md +10 -0
  2. package/command-model/_routes.json +303 -5
  3. package/command-model/accounting-master.json +22 -0
  4. package/command-model/agent-loop.json +33 -3
  5. package/command-model/ai-token-usage.json +1 -1
  6. package/command-model/ai-training-attempt.json +9 -0
  7. package/command-model/ai-training-program.json +7 -0
  8. package/command-model/analysis-alert-threshold.json +7 -0
  9. package/command-model/analysis-page-access-rule.json +2 -2
  10. package/command-model/analysis.json +2 -1
  11. package/command-model/announcement.json +4 -0
  12. package/command-model/attendance-report-reason-detail.json +1 -1
  13. package/command-model/attendance-report-reason.json +1 -1
  14. package/command-model/attendance-report.json +1 -1
  15. package/command-model/audit-log.json +2 -2
  16. package/command-model/badge.json +2 -0
  17. package/command-model/budget.json +4 -4
  18. package/command-model/cash-flow.json +6 -0
  19. package/command-model/chat-channel.json +8 -3
  20. package/command-model/chat-mention-group.json +1 -1
  21. package/command-model/chat-message.json +17 -2
  22. package/command-model/chat-presence.json +11 -0
  23. package/command-model/chat-scheduled-message.json +9 -0
  24. package/command-model/chat.json +6 -0
  25. package/command-model/cli-tool-catalog.json +6 -0
  26. package/command-model/commuting-expense.json +1 -0
  27. package/command-model/company.json +3 -2
  28. package/command-model/container-agent-schedule.json +14 -0
  29. package/command-model/contract.json +4 -3
  30. package/command-model/customer-people.json +1 -1
  31. package/command-model/department.json +3 -3
  32. package/command-model/deposit.json +2 -1
  33. package/command-model/device-token.json +7 -0
  34. package/command-model/domain-knowledge-doc.json +3 -3
  35. package/command-model/dynamo-attachment.json +1 -0
  36. package/command-model/dynamo-inquiry.json +3 -1
  37. package/command-model/dynamo-support.json +1 -1
  38. package/command-model/estimate-case-document.json +3 -2
  39. package/command-model/estimate.json +11 -5
  40. package/command-model/evaluation.json +3 -3
  41. package/command-model/expense-report.json +19 -0
  42. package/command-model/expense-settings.json +1 -1
  43. package/command-model/faq.json +3 -2
  44. package/command-model/goal-sheet.json +5 -4
  45. package/command-model/google-auth.json +1 -1
  46. package/command-model/hearing.json +1 -1
  47. package/command-model/hr-checklist.json +1 -0
  48. package/command-model/index.json +81 -41
  49. package/command-model/inquiry-routing.json +3 -1
  50. package/command-model/invoice.json +3 -3
  51. package/command-model/license-type.json +2 -2
  52. package/command-model/master-support.json +3 -3
  53. package/command-model/master-tenant.json +4 -4
  54. package/command-model/media-file.json +3 -2
  55. package/command-model/media-folder.json +3 -3
  56. package/command-model/meeting-template.json +2 -2
  57. package/command-model/meeting.json +6 -4
  58. package/command-model/microsoft-auth.json +1 -1
  59. package/command-model/microsoft-graph-proxy-v2.json +42 -0
  60. package/command-model/my-ai-training.json +7 -0
  61. package/command-model/note.json +1 -1
  62. package/command-model/notification.json +1 -1
  63. package/command-model/organization-announcement.json +3 -2
  64. package/command-model/private-agent-loop.json +21 -6
  65. package/command-model/private-task.json +4 -2
  66. package/command-model/profit-analysis.json +2 -2
  67. package/command-model/project-evaluation.json +3 -3
  68. package/command-model/project-inventory-continuation.json +6 -0
  69. package/command-model/project-inventory-overview.json +6 -0
  70. package/command-model/project-inventory-request.json +7 -0
  71. package/command-model/project-inventory-settings.json +7 -0
  72. package/command-model/project-member.json +3 -3
  73. package/command-model/project-status-report-project.json +6 -0
  74. package/command-model/project-status-report-settings.json +7 -0
  75. package/command-model/project-task-attachment.json +7 -0
  76. package/command-model/project-task-category.json +2 -2
  77. package/command-model/project-task-label.json +2 -2
  78. package/command-model/project-task-link.json +3 -2
  79. package/command-model/project-task-milestone.json +2 -2
  80. package/command-model/project-task-status.json +2 -2
  81. package/command-model/project-task-type.json +2 -2
  82. package/command-model/project-task-version.json +2 -2
  83. package/command-model/project-task-watcher.json +2 -2
  84. package/command-model/project-task.json +3 -3
  85. package/command-model/project-team-chat.json +8 -0
  86. package/command-model/project.json +5 -5
  87. package/command-model/purchase-ai-field-mapping.json +2 -2
  88. package/command-model/purchase-document.json +1 -0
  89. package/command-model/purchase.json +2 -2
  90. package/command-model/receivable.json +1 -1
  91. package/command-model/recreation-club.json +11 -0
  92. package/command-model/report.json +5 -5
  93. package/command-model/retrospective.json +1 -1
  94. package/command-model/role-template.json +1 -1
  95. package/command-model/sales-default-recipient-set.json +10 -0
  96. package/command-model/sales-pdf.json +2 -1
  97. package/command-model/sales-recent-recipient.json +6 -0
  98. package/command-model/sales-setting.json +11 -0
  99. package/command-model/skill-analytics.json +1 -1
  100. package/command-model/skill-evaluation-record.json +1 -0
  101. package/command-model/skill-micro-feedback.json +1 -0
  102. package/command-model/skill.json +1 -1
  103. package/command-model/sns-connection.json +10 -0
  104. package/command-model/staff-kpi-setting.json +1 -1
  105. package/command-model/staff-kpi.json +1 -0
  106. package/command-model/staffing-board-cell.json +7 -0
  107. package/command-model/staffing-board-note.json +8 -0
  108. package/command-model/staffing-board-snapshot.json +10 -0
  109. package/command-model/staffing-board-tentative-assignment.json +12 -0
  110. package/command-model/staffing-board-tentative-import.json +7 -0
  111. package/command-model/staffing-plan.json +4 -2
  112. package/command-model/statutory-rate-set.json +14 -0
  113. package/command-model/supplier-payment.json +2 -2
  114. package/command-model/survey-tracker.json +1 -1
  115. package/command-model/survey.json +1 -0
  116. package/command-model/teams-link.json +9 -0
  117. package/command-model/tenant-rate-override.json +8 -0
  118. package/command-model/tenant-settings.json +2 -2
  119. package/command-model/token.json +1 -1
  120. package/command-model/training-attendance.json +1 -1
  121. package/command-model/training-session.json +1 -1
  122. package/command-model/unified-search.json +1 -1
  123. package/command-model/user-api-key.json +2 -2
  124. package/command-model/user-contract-type.json +2 -2
  125. package/command-model/user-group.json +1 -0
  126. package/command-model/user-invitation.json +2 -2
  127. package/command-model/user-list-display-setting.json +7 -0
  128. package/command-model/user-list-item-order.json +7 -0
  129. package/command-model/user-management.json +3 -3
  130. package/command-model/user-recent-work.json +8 -0
  131. package/command-model/video-generation.json +2 -2
  132. package/command-model/wiki-collection.json +2 -2
  133. package/command-model/wiki.json +3 -1
  134. package/command-model/worker-agent-run.json +1 -0
  135. package/command-model/worker-agent.json +3 -3
  136. package/command-model/workflow-approval-delegation.json +1 -0
  137. package/command-model/workflow-approval.json +1 -0
  138. package/command-model/workflow-attachment-pdf-preview.json +6 -0
  139. package/command-model/workflow-comment-attachment.json +8 -0
  140. package/command-model/workflow-estimate-input.json +9 -0
  141. package/command-model/workflow-instance.json +3 -2
  142. package/command-model/workflow.json +3 -2
  143. package/dist/{app-4GGGNEAQ.js → app-JXSWS4S5.js} +32 -31
  144. package/dist/cli.js +2 -2
  145. package/package.json +1 -1
  146. package/command-model/prospect-activity.json +0 -10
@@ -1,12 +1,13 @@
1
1
  {
2
2
  "domain": "workflow-instance",
3
3
  "operations": [
4
- {"name":"apply","domain":"workflow-instance","operationId":"workflowInstance.apply","method":"POST","path":"/v2/workflows/instances/{id}/apply","summary":"申請を実行","pathParams":[{"name":"id","type":"string","required":true,"source":"spec"}],"queryParams":[],"body":{"schema":{"type":"object","properties":{"title":{"type":"string","maxLength":255},"form_data":{"type":"array","items":{"type":"string"}},"comment":{"type":["string","null"],"maxLength":2000}}}},"resultPath":"","risk":"write","aliases":[]},
4
+ {"name":"apply","domain":"workflow-instance","operationId":"workflowInstance.apply","method":"POST","path":"/v2/workflows/instances/{id}/apply","summary":"申請を実行","pathParams":[{"name":"id","type":"string","required":true,"source":"spec"}],"queryParams":[],"body":{"schema":{"type":"object","properties":{"title":{"type":"string","maxLength":255},"form_data":{"type":"array","items":{"type":"string"}},"comment":{"type":["string","null"],"maxLength":2000},"extra_approvers":{"type":["array","null"],"items":{"type":"object","properties":{"user_id":{"type":"string"},"anchor_step_no":{"type":"integer","minimum":1},"placement":{"type":"string","enum":["before","after"]}},"required":["user_id","anchor_step_no","placement"]}}}}},"resultPath":"","risk":"write","aliases":[]},
5
+ {"name":"comment","domain":"workflow-instance","operationId":"workflowInstance.comment","method":"POST","path":"/v2/workflows/instances/{id}/comments","summary":"承認・差し戻し等の操作をせずに、申請へコメントだけを残す","pathParams":[{"name":"id","type":"string","required":true,"source":"spec"}],"queryParams":[],"body":{"schema":{"type":"object","properties":{"comment":{"type":"string","maxLength":2000},"mentioned_user_ids":{"type":"array","items":{"type":["string","null"],"maxLength":200},"maxItems":50},"attachment_ids":{"type":"array","items":{"type":"string","maxLength":200},"maxItems":10}},"required":["comment"],"title":"StoreWorkflowInstanceCommentRequest"}},"resultPath":null,"risk":"write","aliases":[]},
5
6
  {"name":"create","domain":"workflow-instance","operationId":"workflowInstance.store","method":"POST","path":"/v2/workflows/instances","summary":"申請を作成(下書き)","pathParams":[],"queryParams":[],"body":{"schema":{"type":"object","properties":{"workflow_id":{"type":"string"},"title":{"type":"string","maxLength":255},"form_data":{"type":"array","items":{"type":"string"}}},"required":["workflow_id"]}},"resultPath":"","risk":"write","aliases":[]},
6
7
  {"name":"delete","domain":"workflow-instance","operationId":"workflowInstance.destroy","method":"DELETE","path":"/v2/workflows/instances/{id}","summary":"申請を削除(下書きまたは差し戻し状態)","pathParams":[{"name":"id","type":"string","required":true,"source":"spec"}],"queryParams":[],"body":null,"resultPath":"","risk":"destructive","aliases":[]},
7
8
  {"name":"get","domain":"workflow-instance","operationId":"workflowInstance.show","method":"GET","path":"/v2/workflows/instances/{id}","summary":"申請詳細を取得","pathParams":[{"name":"id","type":"string","required":true,"source":"spec"}],"queryParams":[{"name":"limit","type":"integer","required":false,"description":"1ページあたりの件数","source":"curation"},{"name":"cursor","type":"string","required":false,"description":"次ページの取得に使うカーソル","source":"curation"}],"body":null,"resultPath":null,"risk":"read","aliases":[]},
8
9
  {"name":"history","domain":"workflow-instance","operationId":"workflowInstance.history","method":"GET","path":"/v2/workflows/history","summary":"承認履歴一覧を取得(ページネーション対応)","pathParams":[],"queryParams":[{"name":"workflow_id","type":["string","null"],"required":false,"description":"ワークフロー(申請の種類)IDで絞り込む","source":"spec"},{"name":"cursor","type":"string","required":false,"description":"次ページの取得に使うカーソル","source":"curation"},{"name":"status","type":"string","required":false,"description":"申請の状態で絞り込む","source":"spec"},{"name":"keyword","type":"string","required":false,"description":"キーワードで絞り込む","source":"spec"},{"name":"limit","type":"integer","required":false,"description":"1ページあたりの件数","source":"curation"}],"body":null,"resultPath":"items","risk":"read","aliases":[]},
9
- {"name":"list","domain":"workflow-instance","operationId":"workflowInstance.index","method":"GET","path":"/v2/workflows/instances","summary":"自分の申請一覧を取得(ページネーション対応)","pathParams":[],"queryParams":[{"name":"workflow_id","type":["string","null"],"required":false,"description":"ワークフロー(申請の種類)IDで絞り込む","source":"spec"},{"name":"status","type":"string","required":false,"description":"申請の状態で絞り込む","source":"spec"},{"name":"cursor","type":"string","required":false,"description":"次ページの取得に使うカーソル","source":"curation"},{"name":"limit","type":"integer","required":false,"description":"1ページあたりの件数","source":"curation"}],"body":null,"resultPath":"items","risk":"read","aliases":[]},
10
+ {"name":"list","domain":"workflow-instance","operationId":"workflowInstance.index","method":"GET","path":"/v2/workflows/instances","summary":"自分の申請一覧を取得(ページネーション対応)","pathParams":[],"queryParams":[{"name":"workflow_id","type":["string","null"],"required":false,"description":"ワークフロー(申請の種類)IDで絞り込む","source":"spec"},{"name":"workflow_ids","type":["string","null"],"required":false,"source":"spec"},{"name":"status","type":"string","required":false,"description":"申請の状態で絞り込む","source":"spec"},{"name":"cursor","type":"string","required":false,"description":"次ページの取得に使うカーソル","source":"curation"},{"name":"limit","type":"integer","required":false,"description":"1ページあたりの件数","source":"curation"}],"body":null,"resultPath":"items","risk":"read","aliases":[]},
10
11
  {"name":"update","domain":"workflow-instance","operationId":"workflowInstance.update","method":"PUT","path":"/v2/workflows/instances/{id}","summary":"申請を更新(下書き状態のみ)","pathParams":[{"name":"id","type":"string","required":true,"source":"spec"}],"queryParams":[],"body":{"schema":{"type":"object","properties":{"title":{"type":"string","maxLength":255},"form_data":{"type":"array","items":{"type":"string"}}}}},"resultPath":"","risk":"write","aliases":[]}
11
12
  ]
12
13
  }
@@ -3,12 +3,13 @@
3
3
  "operations": [
4
4
  {"name":"applicable-by-category","domain":"workflow","operationId":"workflow.applicableByCategory","method":"GET","path":"/v2/workflows/applicable/{category}","summary":"カテゴリ別の申請可能なワークフロー一覧を取得(is_hidden無視)","pathParams":[{"name":"category","type":"string","required":true,"source":"spec"}],"queryParams":[{"name":"limit","type":"integer","required":false,"description":"1ページあたりの件数","source":"curation"},{"name":"cursor","type":"string","required":false,"description":"次ページの取得に使うカーソル","source":"curation"}],"body":null,"resultPath":"list","risk":"read","aliases":[]},
5
5
  {"name":"applicable-list","domain":"workflow","operationId":"workflow.applicableList","method":"GET","path":"/v2/workflows/applicable","summary":"申請可能なワークフロー一覧を取得","pathParams":[],"queryParams":[{"name":"limit","type":"integer","required":false,"description":"1ページあたりの件数","source":"curation"},{"name":"cursor","type":"string","required":false,"description":"次ページの取得に使うカーソル","source":"curation"}],"body":null,"resultPath":"list","risk":"read","aliases":[]},
6
+ {"name":"applicant-profile","domain":"workflow","operationId":"workflow.applicantProfile","method":"GET","path":"/v2/workflows/applicant-profile","summary":"申請者本人の自動入力値を取得する","pathParams":[],"queryParams":[{"name":"limit","type":"integer","required":false,"description":"1ページあたりの件数","source":"curation"},{"name":"cursor","type":"string","required":false,"description":"次ページの取得に使うカーソル","source":"curation"}],"body":null,"resultPath":"","risk":"read","aliases":[]},
6
7
  {"name":"approver-preview","domain":"workflow","operationId":"workflow.approverPreview","method":"POST","path":"/v2/workflows/approver-preview","summary":"承認者条件のプレビュー: 現時点で該当する承認者を解決して返す","pathParams":[],"queryParams":[],"body":{"schema":{"type":"object","properties":{"approver_condition_set":{"type":"object","properties":{"condition_groups":{"type":"array","items":{"type":"string"}}}}},"required":["approver_condition_set"]}},"resultPath":"","risk":"write","aliases":[]},
7
- {"name":"create","domain":"workflow","operationId":"workflow.store","method":"POST","path":"/v2/workflows","summary":"ワークフロー定義を作成","pathParams":[],"queryParams":[],"body":{"schema":{"type":"object","properties":{"name":{"type":"string","maxLength":255},"approver_description":{"type":["string","null"],"maxLength":2000},"default_title":{"type":["string","null"],"maxLength":255},"status":{"type":"string","enum":["active","inactive","draft"]},"defined_category":{"type":["string","null"],"maxLength":100},"form_definition":{"type":"array","items":{"type":"string"}},"target_condition_set":{"type":"array","items":{"type":"string"}},"valid_from":{"type":["string","null"],"format":"date"},"valid_to":{"type":["string","null"],"format":"date"},"sort":{"type":"integer","minimum":0},"is_hidden":{"type":"boolean"},"auto_skip_same_approver":{"type":"boolean"},"view_permission_condition_set":{"type":"array","items":{"type":"string"}},"equipment_category_ids":{"type":"array","items":{"type":"string","maxLength":36}},"steps":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255},"approver_condition_set":{"type":"array","items":{"type":"string"},"minItems":1},"notification_usergroup_ids":{"type":"array","items":{"type":"string"}},"is_final_step":{"type":"boolean"},"fallback_approver_user_id":{"type":["string","null"],"maxLength":255},"reminder_days":{"type":["integer","null"],"minimum":1,"maximum":365},"escalation_days":{"type":["integer","null"],"minimum":1,"maximum":365},"prohibit_same_approver":{"type":"boolean"}},"required":["name","approver_condition_set"]}}},"required":["name"]}},"resultPath":"","risk":"write","aliases":[]},
8
+ {"name":"create","domain":"workflow","operationId":"workflow.store","method":"POST","path":"/v2/workflows","summary":"ワークフロー定義を作成","pathParams":[],"queryParams":[],"body":{"schema":{"type":"object","properties":{"name":{"type":"string","maxLength":255},"approver_description":{"type":["string","null"],"maxLength":2000},"default_title":{"type":["string","null"],"maxLength":255},"status":{"type":"string","enum":["active","inactive","draft"]},"defined_category":{"type":["string","null"],"maxLength":100},"form_definition":{"type":"array","items":{"type":"string"}},"target_condition_set":{"type":"array","items":{"type":"string"}},"valid_from":{"type":["string","null"],"format":"date"},"valid_to":{"type":["string","null"],"format":"date"},"sort":{"type":"integer","minimum":0},"is_hidden":{"type":"boolean"},"auto_skip_same_approver":{"type":"boolean"},"require_pre_submit_ai_review":{"type":"boolean"},"allow_extra_approvers":{"type":"boolean"},"view_permission_condition_set":{"type":"array","items":{"type":"string"}},"equipment_category_ids":{"type":"array","items":{"type":"string","maxLength":36}},"steps":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255},"approver_condition_set":{"type":"array","items":{"type":"string"},"minItems":1},"notification_usergroup_ids":{"type":"array","items":{"type":"string"}},"is_final_step":{"type":"boolean"},"fallback_approver_user_id":{"type":["string","null"],"maxLength":255},"reminder_days":{"type":["integer","null"],"minimum":1,"maximum":365},"escalation_days":{"type":["integer","null"],"minimum":1,"maximum":365},"prohibit_same_approver":{"type":"boolean"},"apply_condition":{"type":["object","null"],"properties":{"metric":{"type":"string","maxLength":100},"operator":{"type":"string","enum":["gte","lt"]},"value":{"type":"integer","minimum":0}}}},"required":["name","approver_condition_set"]}}},"required":["name"]}},"resultPath":"","risk":"write","aliases":[]},
8
9
  {"name":"delete","domain":"workflow","operationId":"workflow.destroy","method":"DELETE","path":"/v2/workflows/{id}","summary":"ワークフロー定義を削除","pathParams":[{"name":"id","type":"string","required":true,"source":"spec"}],"queryParams":[],"body":null,"resultPath":"","risk":"destructive","aliases":[]},
9
10
  {"name":"get","domain":"workflow","operationId":"workflow.show","method":"GET","path":"/v2/workflows/{id}","summary":"ワークフロー定義詳細を取得","pathParams":[{"name":"id","type":"string","required":true,"source":"spec"}],"queryParams":[{"name":"limit","type":"integer","required":false,"description":"1ページあたりの件数","source":"curation"},{"name":"cursor","type":"string","required":false,"description":"次ページの取得に使うカーソル","source":"curation"}],"body":null,"resultPath":"","risk":"read","aliases":[]},
10
11
  {"name":"list","domain":"workflow","operationId":"workflow.index","method":"GET","path":"/v2/workflows","summary":"ワークフロー定義一覧を取得","pathParams":[],"queryParams":[{"name":"status","type":"string","required":false,"source":"spec"},{"name":"category","type":"string","required":false,"source":"spec"},{"name":"limit","type":"integer","required":false,"description":"1ページあたりの件数","source":"curation"},{"name":"cursor","type":"string","required":false,"description":"次ページの取得に使うカーソル","source":"curation"}],"body":null,"resultPath":"list","risk":"read","aliases":[]},
11
12
  {"name":"recalculate-candidates","domain":"workflow","operationId":"workflow.recalculateCandidates","method":"POST","path":"/v2/workflows/{id}/recalculate-candidates","summary":"承認候補者を再計算する","pathParams":[{"name":"id","type":"string","required":true,"source":"spec"}],"queryParams":[],"body":null,"resultPath":"","risk":"write","aliases":[]},
12
- {"name":"update","domain":"workflow","operationId":"workflow.update","method":"PUT","path":"/v2/workflows/{id}","summary":"ワークフロー定義を更新","pathParams":[{"name":"id","type":"string","required":true,"source":"spec"}],"queryParams":[],"body":{"schema":{"type":"object","properties":{"name":{"type":"string","maxLength":255},"approver_description":{"type":["string","null"],"maxLength":2000},"default_title":{"type":["string","null"],"maxLength":255},"status":{"type":"string","enum":["active","inactive","draft"]},"defined_category":{"type":["string","null"],"maxLength":100},"form_definition":{"type":"array","items":{"type":"string"}},"target_condition_set":{"type":"array","items":{"type":"string"}},"valid_from":{"type":["string","null"],"format":"date"},"valid_to":{"type":["string","null"],"format":"date"},"sort":{"type":"integer","minimum":0},"is_hidden":{"type":"boolean"},"auto_skip_same_approver":{"type":"boolean"},"view_permission_condition_set":{"type":"array","items":{"type":"string"}},"equipment_category_ids":{"type":"array","items":{"type":"string","maxLength":36}},"steps":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255},"approver_condition_set":{"type":"array","items":{"type":"string"},"minItems":1},"notification_usergroup_ids":{"type":"array","items":{"type":"string"}},"is_final_step":{"type":"boolean"},"fallback_approver_user_id":{"type":["string","null"],"maxLength":255},"reminder_days":{"type":["integer","null"],"minimum":1,"maximum":365},"escalation_days":{"type":["integer","null"],"minimum":1,"maximum":365},"prohibit_same_approver":{"type":"boolean"}},"required":["name","approver_condition_set"]}}}}},"resultPath":"","risk":"write","aliases":[]}
13
+ {"name":"update","domain":"workflow","operationId":"workflow.update","method":"PUT","path":"/v2/workflows/{id}","summary":"ワークフロー定義を更新","pathParams":[{"name":"id","type":"string","required":true,"source":"spec"}],"queryParams":[],"body":{"schema":{"type":"object","properties":{"name":{"type":"string","maxLength":255},"approver_description":{"type":["string","null"],"maxLength":2000},"default_title":{"type":["string","null"],"maxLength":255},"status":{"type":"string","enum":["active","inactive","draft"]},"defined_category":{"type":["string","null"],"maxLength":100},"form_definition":{"type":"array","items":{"type":"string"}},"target_condition_set":{"type":"array","items":{"type":"string"}},"valid_from":{"type":["string","null"],"format":"date"},"valid_to":{"type":["string","null"],"format":"date"},"sort":{"type":"integer","minimum":0},"is_hidden":{"type":"boolean"},"auto_skip_same_approver":{"type":"boolean"},"require_pre_submit_ai_review":{"type":"boolean"},"allow_extra_approvers":{"type":"boolean"},"view_permission_condition_set":{"type":"array","items":{"type":"string"}},"equipment_category_ids":{"type":"array","items":{"type":"string","maxLength":36}},"steps":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255},"approver_condition_set":{"type":"array","items":{"type":"string"},"minItems":1},"notification_usergroup_ids":{"type":"array","items":{"type":"string"}},"is_final_step":{"type":"boolean"},"fallback_approver_user_id":{"type":["string","null"],"maxLength":255},"reminder_days":{"type":["integer","null"],"minimum":1,"maximum":365},"escalation_days":{"type":["integer","null"],"minimum":1,"maximum":365},"prohibit_same_approver":{"type":"boolean"},"apply_condition":{"type":["object","null"],"properties":{"metric":{"type":"string","maxLength":100},"operator":{"type":"string","enum":["gte","lt"]},"value":{"type":"integer","minimum":0}}}},"required":["name","approver_condition_set"]}}}}},"resultPath":"","risk":"write","aliases":[]}
13
14
  ]
14
15
  }
@@ -1168,7 +1168,7 @@ if(this.alternateScreen){this.writeBestEffort(this.options.stdout,base_exports.e
1168
1168
  cleanup(){instance.unmount()},clear:instance.clear}};var render_default=render;var getOptions=(stdout={})=>{if(stdout instanceof Stream){return{stdout,stdin:process13.stdin}}return stdout};var getInstance=(stdout,createInstance)=>{const instance=instances_default.get(stdout);if(instance===void 0){const newInstance=createInstance();instances_default.set(stdout,newInstance);return newInstance}process13.stderr.write("Warning: render() was called again for the same stdout before the previous Ink ins\
1169
1169
  tance was unmounted. Reusing stdout across multiple render() calls is unsupported. Call unmount() first.\n");return instance};var import_constants3=__toESM(require_constants(),1);var import_react17=__toESM(require_react(),1);function Static(props){const{items,children:render2,style:customStyle}=props;const[index,setIndex]=(0,import_react17.useState)(0);const itemsToRender=(0,import_react17.useMemo)(()=>{return items.slice(index)},[items,index]);(0,import_react17.useLayoutEffect)(()=>{setIndex(items.length)},[items.length]);const children=itemsToRender.map((item,itemIndex)=>{return render2(item,index+itemIndex)});const style=(0,import_react17.useMemo)(()=>({position:"abso\
1170
1170
  lute",flexDirection:"column",...customStyle}),[customStyle]);return import_react17.default.createElement("ink-box",{internal_static:true,style},children)}var import_react18=__toESM(require_react(),1);var import_react19=__toESM(require_react(),1);var import_react20=__toESM(require_react(),1);var import_react22=__toESM(require_react(),1);var textDecoder=new TextDecoder;var keyName={OP:"f1",OQ:"f2",OR:"f3",OS:"f4","[P":"f1","[Q":"f2","[R":"f3","[S":"f4","[11~":"f1","[12~":"f2","[13~":"f3","[14~":"f4","[[A":"f1","[[B":"f2","[[C":"f3","[[D":"f4","[[E":"f5","[15~":"f5","[17~":"f6","[18~":"f7","[19~":"f8","[20~":"f9","[21~":"f10","[23~":"f11","[24~":"f12","[A":"up","[B":"down","[C":"right","[D":"left","[E":"clear","[F":"end","[H":"home",OA:"up",OB:"down",OC:"right",OD:"left",OE:"clear",OF:"end",OH:"home","[1~":"home","[2~":"insert","[3~":"delete","[4~":"end","[5~":"\
1171
- pageup","[6~":"pagedown","[[5~":"pageup","[[6~":"pagedown","[7~":"home","[8~":"end","[a":"up","[b":"down","[c":"right","[d":"left","[e":"clear","[2$":"insert","[3$":"delete","[5$":"pageup","[6$":"pagedown","[7$":"home","[8$":"end",Oa:"up",Ob:"down",Oc:"right",Od:"left",Oe:"clear","[2^":"insert","[3^":"delete","[5^":"pageup","[6^":"pagedown","[7^":"home","[8^":"end","[Z":"tab"};var nonAlphanumericKeys=[...Object.values(keyName),"backspace"];var import_react21=__toESM(require_react(),1);var useStdin=()=>(0,import_react21.useContext)(StdinContext_default);var use_stdin_default=useStdin;var import_react23=__toESM(require_react(),1);var import_react24=__toESM(require_react(),1);var useApp=()=>(0,import_react24.useContext)(AppContext_default);var use_app_default=useApp;var import_react25=__toESM(require_react(),1);var import_react26=__toESM(require_react(),1);var import_react27=__toESM(require_react(),1);var import_react28=__toESM(require_react(),1);var import_react29=__toESM(require_react(),1);var import_react30=__toESM(require_react(),1);var import_react31=__toESM(require_react(),1);var import_react32=__toESM(require_react(),1);var import_react33=__toESM(require_react(),1);var import_react38=__toESM(require_react(),1);var import_react34=__toESM(require_react(),1);import{StringDecoder}from"string_decoder";var ESC3="\x1B";var PASTE_START="\x1B[200~";var PASTE_END="\x1B[201~";var INPUT_MODE_ENABLE="\x1B[?2004h\x1B[>1u";var INPUT_MODE_DISABLE="\x1B[<u\x1B[?2004l";var INCOMPLETE=-1;function describeRaw(raw){return Array.from(raw).map(ch=>{const code=ch.codePointAt(0)??0;if(code===27)return"ESC";if(code===127)return"DEL";if(code===13)return"CR";if(code===10)return"LF";if(code===9)return"TAB";if(code<32)return`^${String.fromCharCode(code+64)}`;return ch}).join(" ")}function hexRaw(raw){return Buffer.from(
1171
+ pageup","[6~":"pagedown","[[5~":"pageup","[[6~":"pagedown","[7~":"home","[8~":"end","[a":"up","[b":"down","[c":"right","[d":"left","[e":"clear","[2$":"insert","[3$":"delete","[5$":"pageup","[6$":"pagedown","[7$":"home","[8$":"end",Oa:"up",Ob:"down",Oc:"right",Od:"left",Oe:"clear","[2^":"insert","[3^":"delete","[5^":"pageup","[6^":"pagedown","[7^":"home","[8^":"end","[Z":"tab"};var nonAlphanumericKeys=[...Object.values(keyName),"backspace"];var import_react21=__toESM(require_react(),1);var useStdin=()=>(0,import_react21.useContext)(StdinContext_default);var use_stdin_default=useStdin;var import_react23=__toESM(require_react(),1);var import_react24=__toESM(require_react(),1);var useApp=()=>(0,import_react24.useContext)(AppContext_default);var use_app_default=useApp;var import_react25=__toESM(require_react(),1);var import_react26=__toESM(require_react(),1);var import_react27=__toESM(require_react(),1);var import_react28=__toESM(require_react(),1);var import_react29=__toESM(require_react(),1);var import_react30=__toESM(require_react(),1);var import_react31=__toESM(require_react(),1);var import_react32=__toESM(require_react(),1);var import_react33=__toESM(require_react(),1);var import_react39=__toESM(require_react(),1);var import_react34=__toESM(require_react(),1);import{StringDecoder}from"string_decoder";var ESC3="\x1B";var PASTE_START="\x1B[200~";var PASTE_END="\x1B[201~";var INPUT_MODE_ENABLE="\x1B[?2004h\x1B[>1u";var INPUT_MODE_DISABLE="\x1B[<u\x1B[?2004l";var INCOMPLETE=-1;function describeRaw(raw){return Array.from(raw).map(ch=>{const code=ch.codePointAt(0)??0;if(code===27)return"ESC";if(code===127)return"DEL";if(code===13)return"CR";if(code===10)return"LF";if(code===9)return"TAB";if(code<32)return`^${String.fromCharCode(code+64)}`;return ch}).join(" ")}function hexRaw(raw){return Buffer.from(
1172
1172
  raw,"utf8").toString("hex").replace(/(..)/g,"$1 ").trim()}var CSI_FINAL_MAP={A:"up",B:"down",C:"right",D:"left",H:"home",F:"end",Z:"shift-tab"};var CSI_TILDE_MAP={"1":"home","3":"delete","4":"end","7":"home","8":"end"};var SS3_MAP={A:"up",B:"down",C:"right",D:"left",H:"home",F:"end"};var CTRL_CHAR_MAP={c:"ctrl-c",d:"ctrl-d",l:"ctrl-l",r:"ctrl-r",u:"ctrl-u"};var CONTROL_MAP={"":"ctrl-c","":"ctrl-d","\f":"ctrl-l","":"ctrl-r","":"ctrl-u","\r":"enter","\n":"newline"," ":"tab","\x7F":"backspace",
1173
1173
  "\b":"backspace"};function isProperPrefix(a,b){return a.length<b.length&&b.startsWith(a)}var KeyDecoder=class{pasteBuffer=null;pending="";get isPasting(){return this.pasteBuffer!==null}hasPending(){return this.pending!==""}decode(chunk){const events=[];let rest=this.pending+chunk;this.pending="";while(rest.length>0){if(this.pasteBuffer!==null){const end=rest.indexOf(PASTE_END);if(end===-1){const carry=trailingPrefixLength(rest,PASTE_END);this.pasteBuffer+=rest.slice(0,rest.length-carry);this.pending=
1174
1174
  rest.slice(rest.length-carry);return events}const value=this.pasteBuffer+rest.slice(0,end);this.pasteBuffer=null;events.push({name:"paste",value,raw:PASTE_START+value+PASTE_END});rest=rest.slice(end+PASTE_END.length);continue}if(rest.startsWith(PASTE_START)){this.pasteBuffer="";rest=rest.slice(PASTE_START.length);continue}if(isProperPrefix(rest,PASTE_START)){this.pending=rest;return events}const consumed=this.decodeOne(rest,events);if(consumed===INCOMPLETE){this.pending=rest;return events}rest=rest.
@@ -1282,23 +1282,24 @@ TERM=",process.env["TERM"]??"(unset)"," \xB7 TERM_PROGRAM=",process.env["TERM_PR
1282
1282
  Text,{children:[(0,import_jsx_runtime8.jsx)(Text,{color:"cyan",children:ev.name.padEnd(12)}),(0,import_jsx_runtime8.jsxs)(Text,{children:[" ",describeRaw(ev.raw).padEnd(18)]}),(0,import_jsx_runtime8.jsx)(Text,{dimColor:true,children:hexRaw(ev.raw)})]},i))]}),(0,import_jsx_runtime8.jsxs)(Box_default,{flexDirection:"column",marginTop:1,children:[(0,import_jsx_runtime8.jsx)(Text,{bold:true,children:"Shift+Tab \u306E\u5B9F\u6E2C"}),(0,import_jsx_runtime8.jsx)(Text,{children:shiftTab2?`\u691C\u51FA: ${describeRaw(
1283
1283
  shiftTab2.raw)}\uFF08${hexRaw(shiftTab2.raw)}\uFF09`:"\u672A\u691C\u51FA \u2014 Shift+Tab \u3092\u62BC\u3057\u3066\u304F\u3060\u3055\u3044"}),!shiftTab2&&tab2?(0,import_jsx_runtime8.jsx)(Text,{color:"yellow",children:"Tab \u306E\u307F\u691C\u51FA\u3002\u3053\u306E\u7AEF\u672B\u306F Shift+Tab \u3092\u7D20\u306E TAB \u3068\u3057\u3066\u9001\u3063\u3066\u3044\u308B\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\uFF08Alt+M / /mode \u3092\u4F7F\u3063\u3066\u304F\u3060\u3055\u3044\uFF09"}):null]}),(0,import_jsx_runtime8.jsxs)(
1284
1284
  Box_default,{flexDirection:"column",marginTop:1,children:[(0,import_jsx_runtime8.jsx)(Text,{bold:true,children:"\u30CD\u30C3\u30C8\u30EF\u30FC\u30AF\uFF08\u30D7\u30ED\u30AD\u30B7 / CA\uFF09"}),diagnostics.map(line=>(0,import_jsx_runtime8.jsxs)(Text,{children:[(0,import_jsx_runtime8.jsx)(Text,{color:"cyan",children:padDisplay(line.label,22)}),(0,import_jsx_runtime8.jsx)(Text,{color:line.warn===true?"yellow":void 0,children:line.value})]},line.label)),caWarn?(0,import_jsx_runtime8.jsx)(Text,{color:"\
1285
- yellow",children:"\u26A0 TLS \u508D\u53D7\u30D7\u30ED\u30AD\u30B7\u914D\u4E0B\u3067\u306F NODE_EXTRA_CA_CERTS \u306B\u30D7\u30ED\u30AD\u30B7\u306E CA \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08Node \u8D77\u52D5\u6642\u306B\u3057\u304B\u8AAD\u307E\u308C\u306A\u3044\u305F\u3081\u3001\u8A2D\u5B9A\u5F8C\u306B twp \u3092\u518D\u8D77\u52D5\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\uFF09"}):null]}),(0,import_jsx_runtime8.jsx)(Text,{dimColor:true,children:"Esc \u3067\u623B\u308B"})]})}var import_react37=__toESM(require_react(),1);function useTerminalSize(){const read=()=>({rows:process.stdout.rows||24,columns:process.stdout.columns||80});const[size,setSize]=(0,import_react37.useState)(read);(0,import_react37.useEffect)(()=>{const onResize=()=>setSize(read());process.stdout.on("resize",onResize);return()=>{process.stdout.off("resize",onResize)}},[]);return size}var import_jsx_runtime9=__toESM(require_jsx_runtime(),1);function paletteFor(text,mode){return text.startsWith("/")&&!/\s/.test(text)?filterCommands(text,mode):[]}function fileCompletionFor(b,index){const mention=mentionAtCursor(b.text,b.cursor);if(mention===null||index===null)return null;const items=filterFiles(mention.query,index.files);return items.length===0?null:{items,start:mention.start,end:mention.end}}function originLabel(cmd){if(cmd.origin==="project")return" \xB7 \u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u5B9A\u7FA9";
1285
+ yellow",children:"\u26A0 TLS \u508D\u53D7\u30D7\u30ED\u30AD\u30B7\u914D\u4E0B\u3067\u306F NODE_EXTRA_CA_CERTS \u306B\u30D7\u30ED\u30AD\u30B7\u306E CA \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08Node \u8D77\u52D5\u6642\u306B\u3057\u304B\u8AAD\u307E\u308C\u306A\u3044\u305F\u3081\u3001\u8A2D\u5B9A\u5F8C\u306B twp \u3092\u518D\u8D77\u52D5\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\uFF09"}):null]}),(0,import_jsx_runtime8.jsx)(Text,{dimColor:true,children:"Esc \u3067\u623B\u308B"})]})}var import_react37=__toESM(require_react(),1);function useTerminalSize(){const read=()=>({rows:process.stdout.rows||24,columns:process.stdout.columns||80});const[size,setSize]=(0,import_react37.useState)(read);(0,import_react37.useEffect)(()=>{const onResize=()=>setSize(read());process.stdout.on("resize",onResize);return()=>{process.stdout.off("resize",onResize)}},[]);return size}var import_react38=__toESM(require_react(),1);var import_jsx_runtime9=__toESM(require_jsx_runtime(),1);function useStaticLog(initial){const[items,setItems]=(0,import_react38.useState)(initial);const[epoch,setEpoch]=(0,import_react38.useState)(0);const append=(0,import_react38.useCallback)(item=>{setItems(prev=>[...prev,item])},[]);const clear=(0,import_react38.useCallback)(()=>{setItems([]);setEpoch(e=>e+1)},[]);return{items,epoch,append,clear}}function StaticLogView({log,children}){return(0,import_jsx_runtime9.jsx)(
1286
+ Static,{items:log.items,children},log.epoch)}var import_jsx_runtime10=__toESM(require_jsx_runtime(),1);function paletteFor(text,mode){return text.startsWith("/")&&!/\s/.test(text)?filterCommands(text,mode):[]}function fileCompletionFor(b,index){const mention=mentionAtCursor(b.text,b.cursor);if(mention===null||index===null)return null;const items=filterFiles(mention.query,index.files);return items.length===0?null:{items,start:mention.start,end:mention.end}}function originLabel(cmd){if(cmd.origin==="project")return" \xB7 \u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u5B9A\u7FA9";
1286
1287
  if(cmd.origin==="user")return" \xB7 \u30E6\u30FC\u30B6\u30FC\u5B9A\u7FA9";return""}function insert(b,value){return{text:b.text.slice(0,b.cursor)+value+b.text.slice(b.cursor),cursor:b.cursor+value.length}}var seq=0;var nextId=()=>`i${++seq}`;function fullInputFor(request){const command=request.input["command"];if(typeof command==="string"&&command!=="")return command;return request.preview}function promptFor(request){const target=request.target??{tool:request.tool,input:request.input};const persist=request.
1287
1288
  persistOptions??[];return{name:target.tool.name,input:fullInputFor(request),...request.diff?{diff:request.diff}:{},noAlwaysReason:request.noAlwaysReason,...persist.length>0?{persistOptions:persist,persistTarget:`${projectPermissionsPath()}\uFF08${projectRootFor(process.cwd())}\uFF09`}:{},...isTwpTool(target.tool.name)?{card:toolCardFor(target.tool.name,target.input)}:{}}}function catalogTitleSuffix(source){if(source==="server")return"";return source==="cache"?" \u2014 \u30AD\u30E3\u30C3\u30B7\u30E5":
1288
- " \u2014 \u7D44\u307F\u8FBC\u307F\u4E00\u89A7\uFF08\u672A\u53D6\u5F97\uFF09"}function App2({initialMode,initialModel,initialCatalog,initialModelWarning,runtime,version,startInDoctor,permissionMode,permissionLayers,audit}){const{exit}=use_app_default();const size=useTerminalSize();const stream=useTokenStream();const[items,setItems]=(0,import_react38.useState)(()=>[{id:nextId(),kind:"banner",banner:buildBanner({version,model:initialModel,width:process.stdout.columns||80,branch:currentBranch()})}]);
1289
- const bufferRef=(0,import_react38.useRef)({text:"",cursor:0});const[buffer,setBufferState]=(0,import_react38.useState)(bufferRef.current);const[mode,setMode]=(0,import_react38.useState)(initialMode);const[model,setModel]=(0,import_react38.useState)(initialModel);const[catalog,setCatalog]=(0,import_react38.useState)(initialCatalog);const[busy,setBusy]=(0,import_react38.useState)(false);const[context,setContext]=(0,import_react38.useState)(()=>runtime.context.snapshot());const[runningTool,setRunningTool]=(0,import_react38.useState)(
1290
- null);const[overlay,setOverlay]=(0,import_react38.useState)(startInDoctor?"doctor":"none");const[pendingPermission,setPendingPermissionState]=(0,import_react38.useState)(null);const pendingPermissionRef=(0,import_react38.useRef)(null);const setPendingPermission=(0,import_react38.useCallback)(next=>{pendingPermissionRef.current=next;setPendingPermissionState(next)},[]);const[keyLog,setKeyLog]=(0,import_react38.useState)([]);const[ctrlCArmed,setCtrlCArmed]=(0,import_react38.useState)(false);const[
1291
- pasting,setPasting]=(0,import_react38.useState)(false);const[fileIndex,setFileIndex]=(0,import_react38.useState)(null);const fileIndexRef=(0,import_react38.useRef)(null);fileIndexRef.current=fileIndex;const fileIndexLoading=(0,import_react38.useRef)(false);const setBuffer=(0,import_react38.useCallback)(fn=>{bufferRef.current=fn(bufferRef.current);setBufferState(bufferRef.current)},[]);const clearBuffer=(0,import_react38.useCallback)(()=>setBuffer(()=>({text:"",cursor:0})),[setBuffer]);const selectedRef=(0,import_react38.useRef)(
1292
- 0);const[selectedState,setSelectedState]=(0,import_react38.useState)(0);const setSelected=(0,import_react38.useCallback)(next=>{selectedRef.current=typeof next==="function"?next(selectedRef.current):next;setSelectedState(selectedRef.current)},[]);const modeRef=(0,import_react38.useRef)(mode);modeRef.current=mode;const modelRef=(0,import_react38.useRef)(model);modelRef.current=model;const catalogRef=(0,import_react38.useRef)(catalog);catalogRef.current=catalog;(0,import_react38.useEffect)(()=>{runtime.
1293
- context.setContextWindow(specFor(catalog,model).contextWindow);setContext(runtime.context.snapshot())},[catalog,model,runtime]);const busyRef=(0,import_react38.useRef)(false);const[pendingSwitch,setPendingSwitch]=(0,import_react38.useState)(null);const abortRef=(0,import_react38.useRef)(false);const streamAbortRef=(0,import_react38.useRef)(null);const sleepRef=(0,import_react38.useRef)(null);const permissionResolver=(0,import_react38.useRef)(null);const permStateRef=(0,import_react38.useRef)(INITIAL_DIALOG_STATE);
1294
- const[permState,setPermStateRaw]=(0,import_react38.useState)(INITIAL_DIALOG_STATE);const setPermState=(0,import_react38.useCallback)(next=>{permStateRef.current=next;setPermStateRaw(next)},[]);const sessionAllow=(0,import_react38.useRef)(new Set);const toolkitRef=(0,import_react38.useRef)(null);toolkitRef.current??=createTwpToolkit(runtime,version);const toolkit=toolkitRef.current;const sessionRules=(0,import_react38.useRef)([]);const demoSessionAllow=(0,import_react38.useRef)(new Set);const lastToolRef=(0,import_react38.useRef)(
1295
- null);(0,import_react38.useEffect)(()=>()=>{abortRef.current=true;streamAbortRef.current?.abort();toolkitRef.current?.cancelCatalogRefresh();const s=sleepRef.current;if(s){clearTimeout(s.timer);sleepRef.current=null;s.resolve()}},[]);const modeDef=getMode(mode);const branch=(0,import_react38.useMemo)(()=>currentBranch(),[]);const cwd2=(0,import_react38.useMemo)(()=>displayCwd(),[]);const networkDiagnostics=(0,import_react38.useMemo)(()=>proxyDiagnostics(),[]);const fixedChrome=1+2+(busy?1:0)+(pasting?
1296
- 1:0)+1+1;const liveTotal=Math.max(MIN_LIVE_ROWS,size.rows-1);const inputContentWidth=Math.max(1,size.columns-6);const inputMaxRows=Math.max(1,Math.min(6,liveTotal-fixedChrome-1));const inputWindow=layoutInputWindow(buffer.text,buffer.cursor,inputContentWidth,inputMaxRows);const budget=liveAreaBudget(size.rows,fixedChrome+inputWindow.shownRows);const commit=(0,import_react38.useCallback)(item=>{setItems(prev=>[...prev,{...item,id:nextId()}])},[]);const catalogFetchRef=(0,import_react38.useRef)(null);
1297
- const blockOnMinSupported=(0,import_react38.useCallback)(floor=>{const text=minSupportedBlockMessage(version,floor??"");commit({kind:"notice",tone:"error",text});process.exitCode=1;exit();process.stderr.write(stripTerminalControls(text))},[commit,exit,version]);(0,import_react38.useEffect)(()=>{if(!runtime.loggedIn){commit({kind:"notice",tone:"warn",text:"\u30ED\u30B0\u30A4\u30F3\u3057\u3066\u3044\u307E\u305B\u3093\u3002\u4F1A\u8A71\u3092\u59CB\u3081\u308B\u306B\u306F\u5225\u306E\u7AEF\u672B\u3067 `twp login` \u3092\u5B9F\u884C\u3057\u3066\u304F\u3060\u3055\u3044\u3002"});
1289
+ " \u2014 \u7D44\u307F\u8FBC\u307F\u4E00\u89A7\uFF08\u672A\u53D6\u5F97\uFF09"}function App2({initialMode,initialModel,initialCatalog,initialModelWarning,runtime,version,startInDoctor,permissionMode,permissionLayers,audit}){const{exit}=use_app_default();const size=useTerminalSize();const stream=useTokenStream();const log=useStaticLog(()=>[{id:nextId(),kind:"banner",banner:buildBanner({version,model:initialModel,width:process.stdout.columns||80,branch:currentBranch()})}]);const bufferRef=(0,import_react39.useRef)(
1290
+ {text:"",cursor:0});const[buffer,setBufferState]=(0,import_react39.useState)(bufferRef.current);const[mode,setMode]=(0,import_react39.useState)(initialMode);const[model,setModel]=(0,import_react39.useState)(initialModel);const[catalog,setCatalog]=(0,import_react39.useState)(initialCatalog);const[busy,setBusy]=(0,import_react39.useState)(false);const[context,setContext]=(0,import_react39.useState)(()=>runtime.context.snapshot());const[runningTool,setRunningTool]=(0,import_react39.useState)(null);
1291
+ const[overlay,setOverlay]=(0,import_react39.useState)(startInDoctor?"doctor":"none");const[pendingPermission,setPendingPermissionState]=(0,import_react39.useState)(null);const pendingPermissionRef=(0,import_react39.useRef)(null);const setPendingPermission=(0,import_react39.useCallback)(next=>{pendingPermissionRef.current=next;setPendingPermissionState(next)},[]);const[keyLog,setKeyLog]=(0,import_react39.useState)([]);const[ctrlCArmed,setCtrlCArmed]=(0,import_react39.useState)(false);const[pasting,
1292
+ setPasting]=(0,import_react39.useState)(false);const[fileIndex,setFileIndex]=(0,import_react39.useState)(null);const fileIndexRef=(0,import_react39.useRef)(null);fileIndexRef.current=fileIndex;const fileIndexLoading=(0,import_react39.useRef)(false);const setBuffer=(0,import_react39.useCallback)(fn=>{bufferRef.current=fn(bufferRef.current);setBufferState(bufferRef.current)},[]);const clearBuffer=(0,import_react39.useCallback)(()=>setBuffer(()=>({text:"",cursor:0})),[setBuffer]);const selectedRef=(0,import_react39.useRef)(
1293
+ 0);const[selectedState,setSelectedState]=(0,import_react39.useState)(0);const setSelected=(0,import_react39.useCallback)(next=>{selectedRef.current=typeof next==="function"?next(selectedRef.current):next;setSelectedState(selectedRef.current)},[]);const modeRef=(0,import_react39.useRef)(mode);modeRef.current=mode;const modelRef=(0,import_react39.useRef)(model);modelRef.current=model;const catalogRef=(0,import_react39.useRef)(catalog);catalogRef.current=catalog;(0,import_react39.useEffect)(()=>{runtime.
1294
+ context.setContextWindow(specFor(catalog,model).contextWindow);setContext(runtime.context.snapshot())},[catalog,model,runtime]);const busyRef=(0,import_react39.useRef)(false);const[pendingSwitch,setPendingSwitch]=(0,import_react39.useState)(null);const abortRef=(0,import_react39.useRef)(false);const streamAbortRef=(0,import_react39.useRef)(null);const sleepRef=(0,import_react39.useRef)(null);const permissionResolver=(0,import_react39.useRef)(null);const permStateRef=(0,import_react39.useRef)(INITIAL_DIALOG_STATE);
1295
+ const[permState,setPermStateRaw]=(0,import_react39.useState)(INITIAL_DIALOG_STATE);const setPermState=(0,import_react39.useCallback)(next=>{permStateRef.current=next;setPermStateRaw(next)},[]);const sessionAllow=(0,import_react39.useRef)(new Set);const toolkitRef=(0,import_react39.useRef)(null);toolkitRef.current??=createTwpToolkit(runtime,version);const toolkit=toolkitRef.current;const sessionRules=(0,import_react39.useRef)([]);const demoSessionAllow=(0,import_react39.useRef)(new Set);const lastToolRef=(0,import_react39.useRef)(
1296
+ null);(0,import_react39.useEffect)(()=>()=>{abortRef.current=true;streamAbortRef.current?.abort();toolkitRef.current?.cancelCatalogRefresh();const s=sleepRef.current;if(s){clearTimeout(s.timer);sleepRef.current=null;s.resolve()}},[]);const modeDef=getMode(mode);const branch=(0,import_react39.useMemo)(()=>currentBranch(),[]);const cwd2=(0,import_react39.useMemo)(()=>displayCwd(),[]);const networkDiagnostics=(0,import_react39.useMemo)(()=>proxyDiagnostics(),[]);const fixedChrome=1+2+(busy?1:0)+(pasting?
1297
+ 1:0)+1+1;const liveTotal=Math.max(MIN_LIVE_ROWS,size.rows-1);const inputContentWidth=Math.max(1,size.columns-6);const inputMaxRows=Math.max(1,Math.min(6,liveTotal-fixedChrome-1));const inputWindow=layoutInputWindow(buffer.text,buffer.cursor,inputContentWidth,inputMaxRows);const budget=liveAreaBudget(size.rows,fixedChrome+inputWindow.shownRows);const{append:appendItem,clear:clearItems}=log;const commit=(0,import_react39.useCallback)(item=>{appendItem({...item,id:nextId()})},[appendItem]);const catalogFetchRef=(0,import_react39.useRef)(
1298
+ null);const blockOnMinSupported=(0,import_react39.useCallback)(floor=>{const text=minSupportedBlockMessage(version,floor??"");commit({kind:"notice",tone:"error",text});process.exitCode=1;exit();process.stderr.write(stripTerminalControls(text))},[commit,exit,version]);(0,import_react39.useEffect)(()=>{if(!runtime.loggedIn){commit({kind:"notice",tone:"warn",text:"\u30ED\u30B0\u30A4\u30F3\u3057\u3066\u3044\u307E\u305B\u3093\u3002\u4F1A\u8A71\u3092\u59CB\u3081\u308B\u306B\u306F\u5225\u306E\u7AEF\u672B\u3067 `twp login` \u3092\u5B9F\u884C\u3057\u3066\u304F\u3060\u3055\u3044\u3002"});
1298
1299
  return}if(initialModelWarning!==null){commit({kind:"notice",tone:"warn",text:initialModelWarning})}void toolkit.refreshCatalog();let cancelled=false;const pending=runtime.loadCatalog();catalogFetchRef.current=pending;void pending.then(fetched=>{if(cancelled)return;if(isBelowMinSupported(version,fetched.minSupportedVersion)){blockOnMinSupported(fetched.minSupportedVersion);return}catalogRef.current=fetched;setCatalog(fetched);const picked=pickModel(fetched,modelRef.current);if(picked.model!==modelRef.
1299
1300
  current){modelRef.current=picked.model;setModel(picked.model);if(picked.warning!==void 0)commit({kind:"notice",tone:"warn",text:picked.warning})}});return()=>{cancelled=true}},[blockOnMinSupported,commit,initialModelWarning,runtime,version]);const sleep=ms=>new Promise(resolve=>{const timer=setTimeout(()=>{sleepRef.current=null;resolve()},ms);sleepRef.current={timer,resolve}});const abortSleep=()=>{const s=sleepRef.current;if(!s)return;clearTimeout(s.timer);sleepRef.current=null;s.resolve()};const askPermission=spec=>new Promise(
1300
1301
  resolve=>{setPendingPermission(spec);setSelected(0);setPermState(INITIAL_DIALOG_STATE);setOverlay("permission");permissionResolver.current=choice=>{setOverlay("none");setPendingPermission(null);permissionResolver.current=null;resolve(choice)}});const persistAllow=isAbsolute(twpHomeDir())?rule=>{const result=persistProjectAllow(rule,{cwd:process.cwd()});if(result.ok){commit({kind:"notice",tone:"info",text:`\u300C${stripTerminalControls(rule)}\u300D\u3092 ${stripTerminalControls(result.file)} \u306B\u4FDD\u5B58\u3057\
1301
- \u307E\u3057\u305F\uFF08${stripTerminalControls(result.root)} \u3067\u306F\u4ECA\u5F8C\u805E\u304D\u307E\u305B\u3093\uFF09`})}else{commit({kind:"notice",tone:"warn",text:`\u4ECA\u5F8C\u805E\u304B\u306A\u3044\u306E\u4FDD\u5B58\u306B\u5931\u6557\u3057\u307E\u3057\u305F\uFF08\u4ECA\u56DE\u3060\u3051\u8A31\u53EF\u3057\u307E\u3057\u305F\uFF09: ${stripTerminalControls(result.reason)}`})}return result.ok}:void 0;const runTurn2=(0,import_react38.useCallback)(async(text,opts={})=>{if(busyRef.current){commit(
1302
+ \u307E\u3057\u305F\uFF08${stripTerminalControls(result.root)} \u3067\u306F\u4ECA\u5F8C\u805E\u304D\u307E\u305B\u3093\uFF09`})}else{commit({kind:"notice",tone:"warn",text:`\u4ECA\u5F8C\u805E\u304B\u306A\u3044\u306E\u4FDD\u5B58\u306B\u5931\u6557\u3057\u307E\u3057\u305F\uFF08\u4ECA\u56DE\u3060\u3051\u8A31\u53EF\u3057\u307E\u3057\u305F\uFF09: ${stripTerminalControls(result.reason)}`})}return result.ok}:void 0;const runTurn2=(0,import_react39.useCallback)(async(text,opts={})=>{if(busyRef.current){commit(
1302
1303
  {kind:"notice",tone:"warn",text:"\u5B9F\u884C\u4E2D\u3067\u3059\u3002Ctrl+C \u3067\u4E2D\u65AD\u3057\u3066\u304B\u3089\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044"});return}busyRef.current=true;abortRef.current=false;setBusy(true);commit({kind:"user",text:opts.display??text});const startupCatalog=await catalogFetchRef.current;if(startupCatalog&&isBelowMinSupported(version,startupCatalog.minSupportedVersion)){blockOnMinSupported(startupCatalog.minSupportedVersion);return}const controller=new AbortController;
1303
1304
  streamAbortRef.current=controller;try{const expandMode=getMode(modeRef.current);const expandDeps={aborted:()=>abortRef.current,isFile:p=>{const cwdNow=process.cwd();if(isAbsolute(p)||p.startsWith("~")||/^[\\/]{2}/.test(p))return false;const abs=resolvePath(cwdNow,p);const rel=relativePath(cwdNow,abs);if(rel===""||rel===".."||rel.startsWith(`..${sep}`)||isAbsolute(rel))return false;try{return statSync(abs).isFile()}catch{return false}},readFile:async p=>{try{const size2=statSync(resolvePath(process.
1304
1305
  cwd(),p)).size;if(size2>MAX_ATTACHED_BYTES)return{ok:false,reason:`${size2} \u30D0\u30A4\u30C8\u3042\u308A\u3001\u6DFB\u4ED8\u306E\u4E0A\u9650 ${MAX_ATTACHED_BYTES} \u30D0\u30A4\u30C8\u3092\u8D85\u3048\u307E\u3059`}}catch{}const result2=await executeTool(readFileTool,{path:p},{mode:expandMode,ctx:{cwd:process.cwd()},sessionAllow:sessionAllow.current,sessionRules:sessionRules.current,...persistAllow?{persistAllow}:{},permissionLayers,...permissionMode!==void 0?{permissionMode}:{},audit,askPermission:request=>askPermission(
@@ -1312,14 +1313,14 @@ diff}:{}};lastToolRef.current=run;commit({kind:"tool",run});stream.begin()}});co
1312
1313
  droppedMessages>0){commit({kind:"notice",tone:"warn",text:`\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u4E0A\u9650\u306B\u8FD1\u3065\u3044\u305F\u305F\u3081\u3001\u53E4\u3044\u3084\u308A\u53D6\u308A ${result.droppedMessages} \u4EF6\u3092\u5C65\u6B74\u304B\u3089\u843D\u3068\u3057\u307E\u3057\u305F\uFF08/clear \u3067\u660E\u793A\u7684\u306B\u6D88\u305B\u307E\u3059\uFF09`})}if(result.upstreamError!==null){commit({kind:"notice",tone:"error",text:`\u30E2\u30C7\u30EB\u306E\u5FDC\u7B54\u304C\u9014\u4E2D\u3067\u7D42\u308F\u308A\u307E\u3057\u305F: ${result.
1313
1314
  upstreamError}`})}if(result.aborted){commit({kind:"notice",tone:"warn",text:"\u4E2D\u65AD\u3057\u307E\u3057\u305F\uFF08Ctrl+C\uFF09\u2014 \u3053\u3053\u307E\u3067\u306E\u6D88\u8CBB\u306F\u30C6\u30CA\u30F3\u30C8\u306E\u30AF\u30EC\u30B8\u30C3\u30C8\u306B\u8A08\u4E0A\u3055\u308C\u307E\u3059"})}else if(result.emptyResponse){commit({kind:"notice",tone:"warn",text:"\u30E2\u30C7\u30EB\u304B\u3089\u30C6\u30AD\u30B9\u30C8\u5FDC\u7B54\u304C\u3042\u308A\u307E\u305B\u3093\u3067\u3057\u305F"})}}catch(err){const partial=stream.
1314
1315
  end();stream.clear();if(partial.trim()!=="")commit({kind:"assistant",text:partial});commit({kind:"notice",tone:"error",text:err instanceof RelayError?err.message:`\u30E2\u30C7\u30EB\u53D6\u6B21\u3067\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F: ${err.message}`})}finally{streamAbortRef.current=null;setRunningTool(null);setContext(runtime.context.snapshot());busyRef.current=false;setBusy(false)}},[audit,blockOnMinSupported,branch,commit,cwd2,permissionLayers,permissionMode,runtime,
1315
- stream,version]);const runDemo=(0,import_react38.useCallback)(async text=>{if(busyRef.current){commit({kind:"notice",tone:"warn",text:"\u5B9F\u884C\u4E2D\u3067\u3059\u3002Ctrl+C \u3067\u4E2D\u65AD\u3057\u3066\u304B\u3089\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044"});return}busyRef.current=true;abortRef.current=false;setBusy(true);commit({kind:"user",text});for(const step of buildScenario(text)){if(abortRef.current)break;if(step.type==="text"){await stream.start(step.text);stream.clear();if(!abortRef.
1316
+ stream,version]);const runDemo=(0,import_react39.useCallback)(async text=>{if(busyRef.current){commit({kind:"notice",tone:"warn",text:"\u5B9F\u884C\u4E2D\u3067\u3059\u3002Ctrl+C \u3067\u4E2D\u65AD\u3057\u3066\u304B\u3089\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044"});return}busyRef.current=true;abortRef.current=false;setBusy(true);commit({kind:"user",text});for(const step of buildScenario(text)){if(abortRef.current)break;if(step.type==="text"){await stream.start(step.text);stream.clear();if(!abortRef.
1316
1317
  current)commit({kind:"assistant",text:step.text});continue}const spec=step.spec;const policy=applyPermissionMode(checkPermission(spec.name,getMode(modeRef.current)),spec.risk??"exec",permissionMode).decision;const decision=policy!=="deny"&&demoSessionAllow.current.has(spec.name)?"allow":policy;if(decision==="deny"){const run={name:spec.name,summary:spec.summary,input:spec.input,output:`permission denied: ${getMode(modeRef.current).label}\u30E2\u30FC\u30C9\u3067\u306F ${spec.name} \u306F deny \u3067\u3059`,
1317
1318
  status:"denied"};commit({kind:"tool",run});commit({kind:"notice",tone:"warn",text:"deny-and-continue: \u62D2\u5426\u3092 tool result \u3068\u3057\u3066\u30E2\u30C7\u30EB\u3078\u8FD4\u3057\u3001\u30EB\u30FC\u30D7\u306F\u7D9A\u884C\u3057\u307E\u3059\uFF08\u7121\u8A00\u306E allow \u306B\u306F\u3057\u306A\u3044\uFF09"});continue}if(decision==="ask"){const choice=await askPermission(spec);if(choice==="no"||typeof choice==="object"&&choice.kind==="instead"){commit({kind:"tool",run:{name:spec.name,summary:spec.
1318
1319
  summary,input:spec.input,output:"\u30E6\u30FC\u30B6\u30FC\u304C\u62D2\u5426\u3057\u307E\u3057\u305F",status:"denied"}});commit({kind:"notice",tone:"info",text:"/demo \u306F\u518D\u751F\u306E\u305F\u3081\u3001\u3053\u3053\u3067\u6253\u3061\u5207\u308A\u307E\u3059\uFF08\u5B9F\u969B\u306E\u4F1A\u8A71\u3067\u306F\u300C\u4EE3\u308F\u308A\u306B\u3053\u3046\u3057\u3066\u300D\u306E\u5165\u529B\u304C\u30E2\u30C7\u30EB\u3078\u8FD4\u308A\u307E\u3059\uFF09"});break}if(choice==="always")demoSessionAllow.current.
1319
- add(spec.name)}setRunningTool({name:spec.name,summary:spec.summary,input:spec.input,output:"",status:"running"});await sleep(spec.durationMs);setRunningTool(null);if(abortRef.current)break;const done={name:spec.name,summary:spec.summary,input:spec.input,output:spec.output,status:"done",durationMs:spec.durationMs};lastToolRef.current=done;commit({kind:"tool",run:done})}stream.clear();busyRef.current=false;setBusy(false)},[commit,stream]);const runTwp=(0,import_react38.useCallback)(async(line,name,args)=>{
1320
+ add(spec.name)}setRunningTool({name:spec.name,summary:spec.summary,input:spec.input,output:"",status:"running"});await sleep(spec.durationMs);setRunningTool(null);if(abortRef.current)break;const done={name:spec.name,summary:spec.summary,input:spec.input,output:spec.output,status:"done",durationMs:spec.durationMs};lastToolRef.current=done;commit({kind:"tool",run:done})}stream.clear();busyRef.current=false;setBusy(false)},[commit,stream]);const runTwp=(0,import_react39.useCallback)(async(line,name,args)=>{
1320
1321
  const result=await runTwpSlashCommand(name,args,{profile:runtime.profileName,version});const out=stripTerminalControls(result.out).replace(/\n+$/,"");const err=stripTerminalControls(result.err).replace(/\n+$/,"");if(result.code===0){commit({kind:"notice",tone:"info",text:[line,out===""?"\uFF080 \u4EF6\uFF09":out,...err!==""?[err]:[]].join("\n")});return}commit({kind:"notice",tone:"error",text:[line,err===""?`\u7D42\u4E86\u30B3\u30FC\u30C9 ${result.code}`:err].join("\n")})},[commit,runtime,version]);
1321
- const runPromptCommand=(0,import_react38.useCallback)((line,cmd,rest,args)=>{const body=expandArguments(cmd.template??"",rest,args);void runTurn2(frameCommandPrompt(cmd,body),{display:line,...cmd.allowedTools!==void 0?{allowedTools:cmd.allowedTools}:{}})},[runTurn2]);const runCommand=(0,import_react38.useCallback)(line=>{const parsed=parseCommandLine(line);if(!parsed)return;const{args}=parsed;const name=resolveCommandName(parsed.name);const cmd=findCommand(name);if(cmd!==void 0&&!isAvailableInMode(
1322
- cmd,modeRef.current)){commit({kind:"notice",tone:"warn",text:`${name} \u306F ${getMode(modeRef.current).label}\u30E2\u30FC\u30C9\u3067\u306F\u4F7F\u3048\u307E\u305B\u3093\uFF08\u4F7F\u3048\u308B\u30E2\u30FC\u30C9: ${(cmd.modes??[]).join(" / ")}\uFF09`});return}if(isTwpSlashCommand(name)){void runTwp(line.trim(),name,args);return}if(cmd?.template!==void 0){runPromptCommand(line.trim(),cmd,parsed.rest,args);return}switch(name){case"/exit":exit();return;case"/clear":setItems([]);runtime.context.clear();
1322
+ const runPromptCommand=(0,import_react39.useCallback)((line,cmd,rest,args)=>{const body=expandArguments(cmd.template??"",rest,args);void runTurn2(frameCommandPrompt(cmd,body),{display:line,...cmd.allowedTools!==void 0?{allowedTools:cmd.allowedTools}:{}})},[runTurn2]);const runCommand=(0,import_react39.useCallback)(line=>{const parsed=parseCommandLine(line);if(!parsed)return;const{args}=parsed;const name=resolveCommandName(parsed.name);const cmd=findCommand(name);if(cmd!==void 0&&!isAvailableInMode(
1323
+ cmd,modeRef.current)){commit({kind:"notice",tone:"warn",text:`${name} \u306F ${getMode(modeRef.current).label}\u30E2\u30FC\u30C9\u3067\u306F\u4F7F\u3048\u307E\u305B\u3093\uFF08\u4F7F\u3048\u308B\u30E2\u30FC\u30C9: ${(cmd.modes??[]).join(" / ")}\uFF09`});return}if(isTwpSlashCommand(name)){void runTwp(line.trim(),name,args);return}if(cmd?.template!==void 0){runPromptCommand(line.trim(),cmd,parsed.rest,args);return}switch(name){case"/exit":exit();return;case"/clear":clearItems();runtime.context.clear();
1323
1324
  setContext(runtime.context.snapshot());return;case"/doctor":setOverlay("doctor");return;case"/model":setSelected(Math.max(0,catalog.ids.indexOf(model)));setOverlay("model");return;case"/mode":{const target=args[0];if(target!==void 0&&!isModeId(target)){commit({kind:"notice",tone:"warn",text:`\u4E0D\u660E\u306A\u30E2\u30FC\u30C9: ${target}\uFF08dev | biz | plan\uFF09`});return}const to=target??nextMode(modeRef.current);setMode(to);commit({kind:"notice",tone:"info",text:`\u30E2\u30FC\u30C9\u3092 ${getMode(
1324
1325
  to).label}\uFF08${to}\uFF09\u306B\u5207\u308A\u66FF\u3048\u307E\u3057\u305F \u2014 ${getMode(to).description}`});return}case"/help":commit({kind:"notice",tone:"info",text:["\u4F1A\u8A71\u306F\u30C6\u30CA\u30F3\u30C8\u306E\u30AF\u30EC\u30B8\u30C3\u30C8\u3067\u5B9F\u969B\u306B\u30E2\u30C7\u30EB\u3078\u9001\u3089\u308C\u307E\u3059",`\u4F7F\u3048\u308B\u30B3\u30DE\u30F3\u30C9: ${commandsForMode(modeRef.current).map(c=>c.name).join(" ")}\uFF08/exit \u306F /quit \u3082\u53EF\uFF09`,...commandsForMode(
1325
1326
  modeRef.current).filter(c=>c.source!==void 0).map(c=>` ${c.name} \u2014 ${c.origin==="project"?"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u5B9A\u7FA9":"\u30E6\u30FC\u30B6\u30FC\u5B9A\u7FA9"}: ${c.source??""}`),"\u30B3\u30DE\u30F3\u30C9\u306F .twp/commands/*.md\uFF08\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\uFF09\u3068 ~/.twp/commands/*.md\uFF08\u30E6\u30FC\u30B6\u30FC\uFF09\u306B\u7F6E\u3051\u307E\u3059 \xB7 @\u30D1\u30B9 \u3067\u30D5\u30A1\u30A4\u30EB\u6DFB\u4ED8 \xB7 #ABC-123 \u306E\u3088\u3046\u306A\u30BF\u30B9\u30AF\u30AD\u30FC\u3067\u30BF\u30B9\u30AF\u6DFB\u4ED8",
@@ -1328,16 +1329,16 @@ join("\n")});return;case"/context":{const snapshot=runtime.context.snapshot();co
1328
1329
  current).tools.join(" ")}`,`\u30E2\u30FC\u30C9\u5B9A\u7FA9: ${modeSource(modeRef.current)??"\u7D44\u307F\u8FBC\u307F\uFF08\u5B9A\u7FA9\u30D5\u30A1\u30A4\u30EB\u306A\u3057\uFF09"}`,`\u63A5\u7D9A\u5148: ${runtime.relayUrl}\uFF08\u30D7\u30ED\u30D5\u30A1\u30A4\u30EB: ${runtime.profileName}\uFF09`,`\u30BF\u30FC\u30F3\u6570: ${snapshot.turns} \xB7 \u76F4\u8FD1\u306E\u30D7\u30ED\u30F3\u30D7\u30C8\u9577: ${snapshot.lastPromptTokens} tok`,`\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u6B8B\u91CF: ${snapshot.remainingPercent}\
1329
1330
  %\uFF08\u7A93 200,000 tok \u306E\u6982\u7B97\uFF09`,`\u5B9F\u6E2C\u30C8\u30FC\u30AF\u30F3\u5408\u8A08: input ${t.inputTokens} / cache_read ${t.cacheReadTokens} / cache_write ${t.cacheWriteTokens} / output ${t.outputTokens}`,...snapshot.droppedMessages>0?[`\u4E0A\u9650\u306E\u305F\u3081\u843D\u3068\u3057\u305F\u3084\u308A\u53D6\u308A: ${snapshot.droppedMessages} \u4EF6`]:[],`permission-mode: ${describePermissionMode(permissionMode)}`,`\u76E3\u67FB\u30ED\u30B0: ${describeAuditLog(audit)}`,`\u5E38\u99D0\u30C4\u30FC\u30EB: ${resident.
1330
1331
  tools.length} \u672C / \u30B9\u30AD\u30FC\u30DE\u6982\u7B97 ${resident.tokens} tok\uFF08\u4E0A\u9650 ${RESIDENT_TOKEN_CAP} tok\uFF09`,` ${resident.tools.map(t2=>t2.name).join(" ")||"\uFF08\u306A\u3057\uFF09"}`,...resident.dropped.length>0?[` \u4E0A\u9650\u8D85\u904E\u3067\u5916\u3057\u305F\u30C4\u30FC\u30EB: ${resident.dropped.join(" ")}`]:[],...(()=>{const status=toolkit.catalogStatus();return status!==null?[describeToolCatalog(status)]:[]})()].join("\n")});return}case"/demo":void runDemo("\uFF08\u30C7\
1331
- \u30E2\u518D\u751F\uFF09\u30C4\u30FC\u30EB\u30AB\u30FC\u30C9\u3068\u6A29\u9650\u30C0\u30A4\u30A2\u30ED\u30B0");return;default:commit({kind:"notice",tone:"warn",text:`\u4E0D\u660E\u306A\u30B3\u30DE\u30F3\u30C9: ${name}`})}},[audit,catalog,commit,exit,model,permissionMode,runDemo,runPromptCommand,runTwp,runtime]);const submit=(0,import_react38.useCallback)(()=>{if(busyRef.current){commit({kind:"notice",tone:"warn",text:"\u5B9F\u884C\u4E2D\u3067\u3059\u3002Ctrl+C \u3067\u4E2D\u65AD\u3057\u3066\u304B\u3089\u9001\u4FE1\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u5165\u529B\u306F\u4FDD\u6301\u3057\u3066\u3044\u307E\u3059\uFF09"});
1332
- return}const text=bufferRef.current.text.trim();clearBuffer();setOverlay("none");if(text==="")return;if(text.startsWith("/")){runCommand(text);return}void runTurn2(text)},[clearBuffer,commit,runCommand,runTurn2]);const paletteItems=(0,import_react38.useMemo)(()=>paletteFor(buffer.text,mode),[buffer.text,mode]);const dismissedMentionRef=(0,import_react38.useRef)(null);const fileCompletion=(0,import_react38.useMemo)(()=>{const c=fileCompletionFor(buffer,fileIndex);return c!==null&&c.start!==dismissedMentionRef.
1333
- current?c:null},[buffer,fileIndex]);(0,import_react38.useEffect)(()=>{if(fileIndexRef.current!==null||fileIndexLoading.current)return;if(mentionAtCursor(buffer.text,buffer.cursor)===null)return;fileIndexLoading.current=true;void buildFileIndex(process.cwd()).then(index=>{setFileIndex(index);if(index.note!==null)commit({kind:"notice",tone:"info",text:`@ \u88DC\u5B8C: ${index.note}`})},err=>{fileIndexLoading.current=false;commit({kind:"notice",tone:"warn",text:`@ \u88DC\u5B8C\u306E\u5019\u88DC\u3092\u4F5C\u308C\u307E\u305B\u3093\u3067\u3057\u305F: ${stripTerminalControls(
1334
- err.message)}`})})},[buffer,commit]);const onKey=(0,import_react38.useCallback)(ev=>{setKeyLog(prev=>[...prev.slice(-49),ev]);if(ev.name==="ctrl-d"){exit();return}if(ev.name==="ctrl-c"){if(busyRef.current){if(abortRef.current){permissionResolver.current?.("no");return}abortRef.current=true;streamAbortRef.current?.abort();permissionResolver.current?.("no");stream.cancel();abortSleep();setRunningTool(null);if(!streamAbortRef.current){commit({kind:"notice",tone:"warn",text:"\u4E2D\u65AD\u3057\u307E\u3057\u305F\uFF08Ctrl+C\uFF09"})}
1332
+ \u30E2\u518D\u751F\uFF09\u30C4\u30FC\u30EB\u30AB\u30FC\u30C9\u3068\u6A29\u9650\u30C0\u30A4\u30A2\u30ED\u30B0");return;default:commit({kind:"notice",tone:"warn",text:`\u4E0D\u660E\u306A\u30B3\u30DE\u30F3\u30C9: ${name}`})}},[audit,catalog,commit,exit,model,permissionMode,runDemo,runPromptCommand,runTwp,runtime]);const submit=(0,import_react39.useCallback)(()=>{if(busyRef.current){commit({kind:"notice",tone:"warn",text:"\u5B9F\u884C\u4E2D\u3067\u3059\u3002Ctrl+C \u3067\u4E2D\u65AD\u3057\u3066\u304B\u3089\u9001\u4FE1\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u5165\u529B\u306F\u4FDD\u6301\u3057\u3066\u3044\u307E\u3059\uFF09"});
1333
+ return}const text=bufferRef.current.text.trim();clearBuffer();setOverlay("none");if(text==="")return;if(text.startsWith("/")){runCommand(text);return}void runTurn2(text)},[clearBuffer,commit,runCommand,runTurn2]);const paletteItems=(0,import_react39.useMemo)(()=>paletteFor(buffer.text,mode),[buffer.text,mode]);const dismissedMentionRef=(0,import_react39.useRef)(null);const fileCompletion=(0,import_react39.useMemo)(()=>{const c=fileCompletionFor(buffer,fileIndex);return c!==null&&c.start!==dismissedMentionRef.
1334
+ current?c:null},[buffer,fileIndex]);(0,import_react39.useEffect)(()=>{if(fileIndexRef.current!==null||fileIndexLoading.current)return;if(mentionAtCursor(buffer.text,buffer.cursor)===null)return;fileIndexLoading.current=true;void buildFileIndex(process.cwd()).then(index=>{setFileIndex(index);if(index.note!==null)commit({kind:"notice",tone:"info",text:`@ \u88DC\u5B8C: ${index.note}`})},err=>{fileIndexLoading.current=false;commit({kind:"notice",tone:"warn",text:`@ \u88DC\u5B8C\u306E\u5019\u88DC\u3092\u4F5C\u308C\u307E\u305B\u3093\u3067\u3057\u305F: ${stripTerminalControls(
1335
+ err.message)}`})})},[buffer,commit]);const onKey=(0,import_react39.useCallback)(ev=>{setKeyLog(prev=>[...prev.slice(-49),ev]);if(ev.name==="ctrl-d"){exit();return}if(ev.name==="ctrl-c"){if(busyRef.current){if(abortRef.current){permissionResolver.current?.("no");return}abortRef.current=true;streamAbortRef.current?.abort();permissionResolver.current?.("no");stream.cancel();abortSleep();setRunningTool(null);if(!streamAbortRef.current){commit({kind:"notice",tone:"warn",text:"\u4E2D\u65AD\u3057\u307E\u3057\u305F\uFF08Ctrl+C\uFF09"})}
1335
1336
  return}if(bufferRef.current.text!==""){clearBuffer();return}if(ctrlCArmed){exit();return}setCtrlCArmed(true);commit({kind:"notice",tone:"info",text:"\u3082\u3046\u4E00\u5EA6 Ctrl+C \u3067\u7D42\u4E86\u3057\u307E\u3059\uFF08Ctrl+D \u3067\u3082\u7D42\u4E86\uFF09"});return}setCtrlCArmed(false);if(ev.name==="shift-tab"||ev.name==="alt-m"){const to=nextMode(modeRef.current);setMode(to);return}if(ev.name==="ctrl-r"){const last=lastToolRef.current;if(last)commit({kind:"tool",run:{...last,summary:`${last.
1336
1337
  summary}\uFF08\u5C55\u958B\uFF09`},expanded:true});return}if(overlay==="permission"){const resolve=permissionResolver.current;if(!resolve)return;if(ev.name==="paste"&&ev.value&&permStateRef.current.stage!=="instead"){const pasted=ev.value.replace(/\r\n?/g,"\n");setBuffer(b=>insert(b,pasted));return}const step=stepDialog(permStateRef.current,ev,pendingPermissionRef.current??{name:""});if("answer"in step)resolve(step.answer);else setPermState(step.state);return}if(overlay==="doctor"){if(ev.name===
1337
1338
  "escape")setOverlay("none");return}if(overlay==="model"){if(ev.name==="up")setSelected(s=>Math.max(0,s-1));else if(ev.name==="down")setSelected(s=>Math.min(catalog.ids.length-1,s+1));else if(ev.name==="escape")setOverlay("none");else if(ev.name==="enter"){const pickedId=catalog.ids[selectedRef.current];if(pickedId!==void 0&&classifyModelSwitch(catalog,model,pickedId)==="new_conversation"&&!runtime.context.isEmpty()){if(busyRef.current){commit({kind:"notice",tone:"warn",text:`${modelLabel(pickedId)}\
1338
1339
  \u306F\u63A5\u7D9A\u5148\u307E\u305F\u306F\u4F1A\u8A71\u306E\u5F62\u5F0F\u304C\u7570\u306A\u308B\u305F\u3081\u65B0\u3057\u3044\u4F1A\u8A71\u304C\u5FC5\u8981\u3067\u3059\u3002\u5FDC\u7B54\u304C\u7D42\u308F\u3063\u3066\u304B\u3089\u5207\u308A\u66FF\u3048\u3066\u304F\u3060\u3055\u3044`});setOverlay("none");return}setPendingSwitch(pickedId);setSelected(0);setOverlay("model-confirm");return}if(pickedId!==void 0){setModel(pickedId);commit({kind:"notice",tone:"info",text:`\u30E2\u30C7\u30EB\u3092 ${modelLabel(
1339
1340
  pickedId)} \u306B\u5207\u308A\u66FF\u3048\u307E\u3057\u305F\uFF08\u30E2\u30FC\u30C9\u306F ${getMode(modeRef.current).label} \u306E\u307E\u307E\uFF09`})}setOverlay("none")}return}if(overlay==="model-confirm"){if(ev.name==="up")setSelected(0);else if(ev.name==="down")setSelected(1);else if(ev.name==="escape"||ev.name==="enter"&&selectedRef.current!==0){setPendingSwitch(null);setOverlay("none");commit({kind:"notice",tone:"info",text:`\u30E2\u30C7\u30EB\u306F ${modelLabel(model)} \u306E\u307E\u307E\u3067\u3059`})}else if(ev.
1340
- name==="enter"&&pendingSwitch!==null){setItems([]);runtime.context.clear();setContext(runtime.context.snapshot());setModel(pendingSwitch);commit({kind:"notice",tone:"info",text:`\u65B0\u3057\u3044\u4F1A\u8A71\u3092\u59CB\u3081\u3001\u30E2\u30C7\u30EB\u3092 ${modelLabel(pendingSwitch)} \u306B\u5207\u308A\u66FF\u3048\u307E\u3057\u305F\uFF08\u63A5\u7D9A\u5148\u307E\u305F\u306F\u4F1A\u8A71\u306E\u5F62\u5F0F\u304C\u7570\u306A\u308B\u305F\u3081\u524D\u306E\u4F1A\u8A71\u306F\u5F15\u304D\u7D99\u3044\u3067\u3044\u307E\u305B\u3093\uFF09`});
1341
+ name==="enter"&&pendingSwitch!==null){clearItems();runtime.context.clear();setContext(runtime.context.snapshot());setModel(pendingSwitch);commit({kind:"notice",tone:"info",text:`\u65B0\u3057\u3044\u4F1A\u8A71\u3092\u59CB\u3081\u3001\u30E2\u30C7\u30EB\u3092 ${modelLabel(pendingSwitch)} \u306B\u5207\u308A\u66FF\u3048\u307E\u3057\u305F\uFF08\u63A5\u7D9A\u5148\u307E\u305F\u306F\u4F1A\u8A71\u306E\u5F62\u5F0F\u304C\u7570\u306A\u308B\u305F\u3081\u524D\u306E\u4F1A\u8A71\u306F\u5F15\u304D\u7D99\u3044\u3067\u3044\u307E\u305B\u3093\uFF09`});
1341
1342
  setPendingSwitch(null);setOverlay("none")}return}const mention=mentionAtCursor(bufferRef.current.text,bufferRef.current.cursor);if(mention===null||mention.start!==dismissedMentionRef.current)dismissedMentionRef.current=null;const files=busyRef.current?null:fileCompletionFor(bufferRef.current,fileIndexRef.current);if(files!==null&&files.start!==dismissedMentionRef.current){if(ev.name==="up"){setSelected(s=>Math.max(0,s-1));return}if(ev.name==="down"){setSelected(s=>Math.min(files.items.length-1,s+
1342
1343
  1));return}if(ev.name==="tab"){const picked=files.items[Math.min(selectedRef.current,files.items.length-1)];if(picked!==void 0){const insertText=`@${picked} `;setBuffer(b=>({text:b.text.slice(0,files.start)+insertText+b.text.slice(files.end),cursor:files.start+insertText.length}));setSelected(0)}return}if(ev.name==="escape"){dismissedMentionRef.current=files.start;setBuffer(b=>({...b}));return}}const palette=busyRef.current?[]:paletteFor(bufferRef.current.text,modeRef.current);if(palette.length>
1343
1344
  0){if(ev.name==="up"){setSelected(s=>Math.max(0,s-1));return}if(ev.name==="down"){setSelected(s=>Math.min(palette.length-1,s+1));return}if(ev.name==="tab"){const picked=palette[selectedRef.current];if(picked){setBuffer(()=>({text:picked.name,cursor:picked.name.length}));setSelected(0)}return}if(ev.name==="enter"){const typed=bufferRef.current.text.trim();const exact=palette.find(c=>c.name===typed||c.aliases?.includes(typed));const picked=exact??palette[Math.min(selectedRef.current,palette.length-
@@ -1345,13 +1346,13 @@ setPendingSwitch(null);setOverlay("none")}return}const mention=mentionAtCursor(b
1345
1346
  b=>insert(b,"\n"));return;case"enter":{const b=bufferRef.current;if(b.cursor>0&&b.text[b.cursor-1]==="\\"){setBuffer(prev=>({text:`${prev.text.slice(0,prev.cursor-1)}
1346
1347
  ${prev.text.slice(prev.cursor)}`,cursor:prev.cursor}));return}submit();return}case"backspace":setBuffer(b=>{const prev=prevBoundary(b.text,b.cursor);return prev===b.cursor?b:{text:b.text.slice(0,prev)+b.text.slice(b.cursor),cursor:prev}});setSelected(0);return;case"delete":setBuffer(b=>({text:b.text.slice(0,b.cursor)+b.text.slice(nextBoundary(b.text,b.cursor)),cursor:b.cursor}));return;case"left":setBuffer(b=>({...b,cursor:prevBoundary(b.text,b.cursor)}));return;case"right":setBuffer(b=>({...b,cursor:nextBoundary(
1347
1348
  b.text,b.cursor)}));return;case"home":setBuffer(b=>({...b,cursor:0}));return;case"end":setBuffer(b=>({...b,cursor:b.text.length}));return;case"ctrl-u":clearBuffer();return;default:return}},[busy,catalog,clearBuffer,commit,ctrlCArmed,exit,model,overlay,pendingSwitch,runtime,setBuffer,setSelected,stream,submit,runCommand]);useTerminalInput(onKey,setPasting);const streamRows=fitTailRows(stream.text,size.columns,budget.body).rows;const diffBudget=budget.body-13;const listBudget=Math.max(1,budget.body-
1348
- 6);const doctorBudget=Math.max(1,budget.body-11-doctorNetworkRows(networkDiagnostics));return(0,import_jsx_runtime9.jsxs)(Box_default,{flexDirection:"column",children:[(0,import_jsx_runtime9.jsx)(Static,{items,children:item=>(0,import_jsx_runtime9.jsx)(ItemView,{item},item.id)}),(0,import_jsx_runtime9.jsxs)(Box_default,{flexDirection:"column",marginTop:1,children:[stream.streaming||stream.text!==""?(0,import_jsx_runtime9.jsx)(Box_default,{flexDirection:"column",children:streamRows.map((line,i)=>(0,import_jsx_runtime9.jsx)(
1349
- Text,{wrap:"truncate",children:line===""?" ":line},i))}):null,runningTool?(0,import_jsx_runtime9.jsx)(ToolCard,{run:runningTool,expanded:false,maxLines:budget.body}):null,overlay==="permission"&&pendingPermission?(0,import_jsx_runtime9.jsx)(PermissionDialog,{spec:pendingPermission,state:permState,maxDiffLines:diffBudget}):null,overlay==="model"?(0,import_jsx_runtime9.jsx)(SelectList,{title:`\u30E2\u30C7\u30EB\u3092\u9078\u629E\uFF08\u30E2\u30FC\u30C9\u3068\u306F\u72EC\u7ACB\uFF09${catalogTitleSuffix(
1350
- catalog.source)}`,items:toModelInfos(catalog.ids).map(m=>({key:m.id,label:m.label,hint:m.note})),selected:selectedState,maxRows:Math.min(catalog.ids.length,listBudget),footer:"\u2191\u2193 \u3067\u9078\u629E \xB7 Enter \u3067\u6C7A\u5B9A \xB7 Esc \u3067\u53D6\u6D88"}):null,overlay==="model-confirm"&&pendingSwitch!==null?(0,import_jsx_runtime9.jsx)(SelectList,{title:`${modelLabel(pendingSwitch)} \u306F\u63A5\u7D9A\u5148\u304C\u7570\u306A\u308A\u307E\u3059\u3002\u73FE\u5728\u306E\u4F1A\u8A71\u3092\u7D42\u3048\u3066\u65B0\u3057\u3044\u4F1A\u8A71\u3092\u59CB\u3081\u307E\u3059\u304B\uFF1F`,
1351
- items:[{key:"new",label:"\u65B0\u3057\u3044\u4F1A\u8A71\u3092\u59CB\u3081\u3066\u5207\u308A\u66FF\u3048\u308B",hint:"\u3053\u308C\u307E\u3067\u306E\u4F1A\u8A71\u306F\u5F15\u304D\u7D99\u304C\u308C\u307E\u305B\u3093"},{key:"cancel",label:"\u53D6\u308A\u6D88\u3059",hint:`${modelLabel(model)} \u306E\u307E\u307E\u7D9A\u3051\u308B`}],selected:selectedState,maxRows:2,footer:"\u2191\u2193 \u3067\u9078\u629E \xB7 Enter \u3067\u6C7A\u5B9A \xB7 Esc \u3067\u53D6\u6D88"}):null,overlay==="doctor"?(0,import_jsx_runtime9.jsx)(
1352
- Doctor,{events:keyLog,maxRows:doctorBudget,network:networkDiagnostics}):null,overlay==="none"&&!busy&&fileCompletion!==null?(0,import_jsx_runtime9.jsx)(SelectList,{title:"\u30D5\u30A1\u30A4\u30EB",items:fileCompletion.items.map(f=>({key:f,label:stripTerminalControls(f),hint:""})),selected:selectedState,maxRows:Math.min(8,listBudget),footer:"\u2191\u2193 \u9078\u629E \xB7 Tab \u78BA\u5B9A \xB7 Esc \u9589\u3058\u308B\uFF08Enter \u306F\u305D\u306E\u307E\u307E\u9001\u4FE1\uFF09"}):null,overlay==="no\
1353
- ne"&&!busy&&paletteItems.length>0?(0,import_jsx_runtime9.jsx)(SelectList,{title:"\u30B9\u30E9\u30C3\u30B7\u30E5\u30B3\u30DE\u30F3\u30C9",items:paletteItems.map(c=>({key:c.name,label:`${c.name}${c.argumentHint?` ${c.argumentHint}`:""}`,hint:`${c.description}${originLabel(c)}`})),selected:selectedState,maxRows:Math.min(8,listBudget),footer:"\u2191\u2193 \u9078\u629E \xB7 Tab \u88DC\u5B8C \xB7 Enter \u5B9F\u884C \xB7 Esc \u53D6\u6D88"}):null,(0,import_jsx_runtime9.jsx)(InputBox,{value:buffer.text,window:inputWindow,
1354
- busy,pasting,width:size.columns}),(0,import_jsx_runtime9.jsx)(StatusLine,{mode:modeDef,model,cwd:cwd2,branch,contextRemaining:context.remainingPercent,width:size.columns}),(0,import_jsx_runtime9.jsx)(HintLine,{width:size.columns})]})]})}import fs4 from"fs";import path2 from"path";var KNOWN_KEYS=new Set(["description","argument-hint","allowed-tools","mode"]);var TEXT_MAX=80;var TEMPLATE_MAX_BYTES=16384;var FILE_COUNT_MAX=128;var FILE_BYTES_MAX=64*1024;var DEPTH_MAX=3;var WARNING_MAX=30;var KNOWN_TOOLS=new Set([...localTools().map(t=>t.name),"bash","shell"]);var SEGMENT=/^[A-Za-z0-9][A-Za-z0-9_-]*$/;function samePath(a,b){const real=p=>{try{return fs4.realpathSync(p)}catch{return path2.resolve(p)}};const x=real(a);const y=real(b);return process.platform==="win32"||process.
1349
+ 6);const doctorBudget=Math.max(1,budget.body-11-doctorNetworkRows(networkDiagnostics));return(0,import_jsx_runtime10.jsxs)(Box_default,{flexDirection:"column",children:[(0,import_jsx_runtime10.jsx)(StaticLogView,{log,children:item=>(0,import_jsx_runtime10.jsx)(ItemView,{item},item.id)}),(0,import_jsx_runtime10.jsxs)(Box_default,{flexDirection:"column",marginTop:1,children:[stream.streaming||stream.text!==""?(0,import_jsx_runtime10.jsx)(Box_default,{flexDirection:"column",children:streamRows.map(
1350
+ (line,i)=>(0,import_jsx_runtime10.jsx)(Text,{wrap:"truncate",children:line===""?" ":line},i))}):null,runningTool?(0,import_jsx_runtime10.jsx)(ToolCard,{run:runningTool,expanded:false,maxLines:budget.body}):null,overlay==="permission"&&pendingPermission?(0,import_jsx_runtime10.jsx)(PermissionDialog,{spec:pendingPermission,state:permState,maxDiffLines:diffBudget}):null,overlay==="model"?(0,import_jsx_runtime10.jsx)(SelectList,{title:`\u30E2\u30C7\u30EB\u3092\u9078\u629E\uFF08\u30E2\u30FC\u30C9\u3068\u306F\u72EC\u7ACB\uFF09${catalogTitleSuffix(
1351
+ catalog.source)}`,items:toModelInfos(catalog.ids).map(m=>({key:m.id,label:m.label,hint:m.note})),selected:selectedState,maxRows:Math.min(catalog.ids.length,listBudget),footer:"\u2191\u2193 \u3067\u9078\u629E \xB7 Enter \u3067\u6C7A\u5B9A \xB7 Esc \u3067\u53D6\u6D88"}):null,overlay==="model-confirm"&&pendingSwitch!==null?(0,import_jsx_runtime10.jsx)(SelectList,{title:`${modelLabel(pendingSwitch)} \u306F\u63A5\u7D9A\u5148\u304C\u7570\u306A\u308A\u307E\u3059\u3002\u73FE\u5728\u306E\u4F1A\u8A71\u3092\u7D42\u3048\u3066\u65B0\u3057\u3044\u4F1A\u8A71\u3092\u59CB\u3081\u307E\u3059\u304B\uFF1F`,
1352
+ items:[{key:"new",label:"\u65B0\u3057\u3044\u4F1A\u8A71\u3092\u59CB\u3081\u3066\u5207\u308A\u66FF\u3048\u308B",hint:"\u3053\u308C\u307E\u3067\u306E\u4F1A\u8A71\u306F\u5F15\u304D\u7D99\u304C\u308C\u307E\u305B\u3093"},{key:"cancel",label:"\u53D6\u308A\u6D88\u3059",hint:`${modelLabel(model)} \u306E\u307E\u307E\u7D9A\u3051\u308B`}],selected:selectedState,maxRows:2,footer:"\u2191\u2193 \u3067\u9078\u629E \xB7 Enter \u3067\u6C7A\u5B9A \xB7 Esc \u3067\u53D6\u6D88"}):null,overlay==="doctor"?(0,import_jsx_runtime10.jsx)(
1353
+ Doctor,{events:keyLog,maxRows:doctorBudget,network:networkDiagnostics}):null,overlay==="none"&&!busy&&fileCompletion!==null?(0,import_jsx_runtime10.jsx)(SelectList,{title:"\u30D5\u30A1\u30A4\u30EB",items:fileCompletion.items.map(f=>({key:f,label:stripTerminalControls(f),hint:""})),selected:selectedState,maxRows:Math.min(8,listBudget),footer:"\u2191\u2193 \u9078\u629E \xB7 Tab \u78BA\u5B9A \xB7 Esc \u9589\u3058\u308B\uFF08Enter \u306F\u305D\u306E\u307E\u307E\u9001\u4FE1\uFF09"}):null,overlay==="n\
1354
+ one"&&!busy&&paletteItems.length>0?(0,import_jsx_runtime10.jsx)(SelectList,{title:"\u30B9\u30E9\u30C3\u30B7\u30E5\u30B3\u30DE\u30F3\u30C9",items:paletteItems.map(c=>({key:c.name,label:`${c.name}${c.argumentHint?` ${c.argumentHint}`:""}`,hint:`${c.description}${originLabel(c)}`})),selected:selectedState,maxRows:Math.min(8,listBudget),footer:"\u2191\u2193 \u9078\u629E \xB7 Tab \u88DC\u5B8C \xB7 Enter \u5B9F\u884C \xB7 Esc \u53D6\u6D88"}):null,(0,import_jsx_runtime10.jsx)(InputBox,{value:buffer.text,
1355
+ window:inputWindow,busy,pasting,width:size.columns}),(0,import_jsx_runtime10.jsx)(StatusLine,{mode:modeDef,model,cwd:cwd2,branch,contextRemaining:context.remainingPercent,width:size.columns}),(0,import_jsx_runtime10.jsx)(HintLine,{width:size.columns})]})]})}import fs4 from"fs";import path2 from"path";var KNOWN_KEYS=new Set(["description","argument-hint","allowed-tools","mode"]);var TEXT_MAX=80;var TEMPLATE_MAX_BYTES=16384;var FILE_COUNT_MAX=128;var FILE_BYTES_MAX=64*1024;var DEPTH_MAX=3;var WARNING_MAX=30;var KNOWN_TOOLS=new Set([...localTools().map(t=>t.name),"bash","shell"]);var SEGMENT=/^[A-Za-z0-9][A-Za-z0-9_-]*$/;function samePath(a,b){const real=p=>{try{return fs4.realpathSync(p)}catch{return path2.resolve(p)}};const x=real(a);const y=real(b);return process.platform==="win32"||process.
1355
1356
  platform==="darwin"?x.toLowerCase()===y.toLowerCase():x===y}function userCommandsDirs(env3=process.env){const home=path2.join(twpHomeDir(env3),"commands");const dirs=configReadDirs(env3).map(dir=>path2.join(dir,"commands"));return[home,...dirs.filter(d=>d!==home)]}function listCommandFiles(root,origin){const found=[];const warnings=[];let truncated=false;const walk=(dir,segments)=>{let names;try{names=fs4.readdirSync(dir)}catch(err){const code=err.code;if(code!=="ENOENT")warnings.push(`${dir}: \u8AAD\
1356
1357
  \u307F\u53D6\u308C\u307E\u305B\u3093\u3067\u3057\u305F\uFF08${code??"unknown"}\uFF09`);return}for(const entry of names.sort()){if(truncated)return;if(entry.startsWith("."))continue;const full=path2.join(dir,entry);const stat=lstatOrNull(full);if(stat===null)continue;if(stat.isSymbolicLink()){warnings.push(`${full}: \u30B7\u30F3\u30DC\u30EA\u30C3\u30AF\u30EA\u30F3\u30AF\u306F\u8AAD\u307F\u307E\u305B\u3093\uFF08\u5B9F\u30D5\u30A1\u30A4\u30EB\u3092\u7F6E\u3044\u3066\u304F\u3060\u3055\u3044\uFF09`);
1357
1358
  continue}if(stat.isDirectory()){if(!SEGMENT.test(entry)){warnings.push(`${full}: \u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u540D\u306B\u4F7F\u3048\u306A\u3044\u6587\u5B57\u304C\u3042\u308A\u307E\u3059\uFF08\u82F1\u6570\u5B57\u30FB-\u30FB_ \u306E\u307F\uFF09`);continue}if(segments.length+1>=DEPTH_MAX){warnings.push(`${full}: \u968E\u5C64\u304C\u6DF1\u3059\u304E\u307E\u3059\uFF08${DEPTH_MAX} \u6BB5\u307E\u3067\u8AAD\u307F\u307E\u3059\uFF09`);continue}walk(full,[...segments,entry]);continue}if(!entry.toLowerCase().
@@ -1373,9 +1374,9 @@ continue}const already=byName.get(candidate.name);if(already!==void 0){warnings.
1373
1374
  continue}let text;try{text=fs4.readFileSync(candidate.file,"utf8")}catch(err){warnings.push(`${candidate.file}: \u8AAD\u307F\u53D6\u308C\u307E\u305B\u3093\u3067\u3057\u305F\uFF08${err.message}\uFF09`);continue}const cmd=buildCommandFromFile(text,candidate,warnings);if(cmd!==null)byName.set(candidate.name,cmd)}const commands=[...byName.values()].sort((a,b)=>a.name.localeCompare(b.name));return{commands,warnings}}function activateCommandFiles(write,opts={}){const loaded=loadCommandFiles(opts);setActiveCommandFiles(
1374
1375
  loaded.commands);for(const warning of loaded.warnings.slice(0,WARNING_MAX))write(stripTerminalControls(`\u26A0 \u30B3\u30DE\u30F3\u30C9\u5B9A\u7FA9: ${warning}
1375
1376
  `));if(loaded.warnings.length>WARNING_MAX){write(`\u26A0 \u30B3\u30DE\u30F3\u30C9\u5B9A\u7FA9: \u307B\u304B ${loaded.warnings.length-WARNING_MAX} \u4EF6\u306E\u8B66\u544A\u3092\u7701\u7565\u3057\u307E\u3057\u305F
1376
- `)}return loaded}var import_jsx_runtime10=__toESM(require_jsx_runtime(),1);async function startTui(opts){activateModeFiles(text=>void process.stderr.write(stripTerminalControls(text)));activateCommandFiles(text=>void process.stderr.write(stripTerminalControls(text)));const permissionLayers=activatePermissionSettings(text=>void process.stderr.write(stripTerminalControls(text)),{...opts.allowedTools?{allowedTools:opts.allowedTools}:{},...opts.disallowedTools?{disallowedTools:opts.disallowedTools}:{}});const mode=opts.
1377
+ `)}return loaded}var import_jsx_runtime11=__toESM(require_jsx_runtime(),1);async function startTui(opts){activateModeFiles(text=>void process.stderr.write(stripTerminalControls(text)));activateCommandFiles(text=>void process.stderr.write(stripTerminalControls(text)));const permissionLayers=activatePermissionSettings(text=>void process.stderr.write(stripTerminalControls(text)),{...opts.allowedTools?{allowedTools:opts.allowedTools}:{},...opts.disallowedTools?{disallowedTools:opts.disallowedTools}:{}});const mode=opts.
1377
1378
  mode??"dev";const runtime=createRuntime({...opts.profile!==void 0?{profile:opts.profile}:{},...opts.model!==void 0?{model:opts.model}:{},cliVersion:opts.version});const initialCatalog=loadCachedCatalog(runtime.profileName,runtime.relayUrl)??builtinCatalog();const picked=pickModel(initialCatalog,runtime.configuredModel??void 0);if(opts.noTui){printPlain(mode,picked.model,runtime.relayUrl,opts.version,opts.permissionMode,(opts.allowedTools?.length??0)+(opts.disallowedTools?.length??0)>0);return}if(!opts.
1378
- doctor){const blocked=await checkMinSupportedVersion({current:opts.version,cachedFloor:runtime.loadCachedFloor().minSupportedVersion,refresh:async()=>(await runtime.loadCatalog()).minSupportedVersion,write:text=>void process.stderr.write(stripTerminalControls(text))});if(blocked){process.exitCode=1;return}}const audit=createAuditLogger({mode,permissionMode:opts.permissionMode,model:picked.model,cwd:process.cwd(),cliVersion:opts.version,interactive:true});const instance=render_default((0,import_jsx_runtime10.jsx)(
1379
+ doctor){const blocked=await checkMinSupportedVersion({current:opts.version,cachedFloor:runtime.loadCachedFloor().minSupportedVersion,refresh:async()=>(await runtime.loadCatalog()).minSupportedVersion,write:text=>void process.stderr.write(stripTerminalControls(text))});if(blocked){process.exitCode=1;return}}const audit=createAuditLogger({mode,permissionMode:opts.permissionMode,model:picked.model,cwd:process.cwd(),cliVersion:opts.version,interactive:true});const instance=render_default((0,import_jsx_runtime11.jsx)(
1379
1380
  App2,{initialMode:mode,initialModel:picked.model,initialCatalog,initialModelWarning:picked.warning??null,runtime,version:opts.version,startInDoctor:opts.doctor,audit,permissionLayers,...opts.permissionMode!==void 0?{permissionMode:opts.permissionMode}:{}}),{exitOnCtrlC:false});await instance.waitUntilExit()}function printPlain(mode,model,relayUrl,version,permissionMode,hasRuleFlags=false){const out={write:text=>void process.stdout.write(stripTerminalControls(text))};out.write(`twp ${version} \u2014 \u3053\
1380
1381
  \u306E\u74B0\u5883\u3067\u306F\u5BFE\u8A71 TUI \u3092\u8D77\u52D5\u3067\u304D\u307E\u305B\u3093\uFF08--no-tui / \u975ETTY\uFF09
1381
1382
  `);out.write(`mode=${mode} model=${model} relay=${relayUrl}
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-FKTYYARF.js";import"./chunk-2LOT54OO.js";import"./chunk-NJL3H2BB.js";import"./chunk-6FI4ZMZ7.js";import"./chunk-TJQZYYG3.js";import{formatUnknownArgs}from"./chunk-OKATZ4SN.js";import"./chunk-VSJBJXZO.js";var VERSION=true?"0.96.0":"0.0.0-dev";var HELP=`twp ${VERSION} \u2014 TWP CLI
4
+ import{GLOBAL_OPTIONS_HELP}from"./chunk-PECIBNFD.js";import{parseArgv}from"./chunk-FKTYYARF.js";import"./chunk-2LOT54OO.js";import"./chunk-NJL3H2BB.js";import"./chunk-6FI4ZMZ7.js";import"./chunk-TJQZYYG3.js";import{formatUnknownArgs}from"./chunk-OKATZ4SN.js";import"./chunk-VSJBJXZO.js";var VERSION=true?"0.96.2":"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
@@ -1561,4 +1561,4 @@ const options={profile:args.profile,method:args.loginMethod,tenant:args.tenant,n
1561
1561
  {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.
1562
1562
  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.
1563
1563
  runnerTargetId,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-JAA46MUA.js");process.exitCode=await runOneShot({prompt:args.prompt??"",fromStdin:args.promptFromStdin,mode:args.mode??"dev",...args.permissionMode!==void 0?{permissionMode:args.permissionMode}:{},allowedTools:args.allowedTools,disallowedTools:args.
1564
- disallowedTools,...args.model!==void 0?{model:args.model}:{},...args.profile!==void 0?{profile:args.profile}:{},version:VERSION});return}const{startTui}=await import("./app-4GGGNEAQ.js");await startTui({mode:args.mode,permissionMode:args.permissionMode,allowedTools:args.allowedTools,disallowedTools:args.disallowedTools,model:args.model,profile:args.profile,noTui:args.noTui||!process.stdout.isTTY,doctor:args.doctor,version:VERSION})}await main();
1564
+ disallowedTools,...args.model!==void 0?{model:args.model}:{},...args.profile!==void 0?{profile:args.profile}:{},version:VERSION});return}const{startTui}=await import("./app-JXSWS4S5.js");await startTui({mode:args.mode,permissionMode:args.permissionMode,allowedTools:args.allowedTools,disallowedTools:args.disallowedTools,model:args.model,profile:args.profile,noTui:args.noTui||!process.stdout.isTTY,doctor:args.doctor,version:VERSION})}await main();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tocca-systems/twp-cli",
3
- "version": "0.96.0",
3
+ "version": "0.96.2",
4
4
  "description": "TWP CLI — Tocca Working Platform の CLI 型統合インターフェース(AIエージェントハーネス)",
5
5
  "type": "module",
6
6
  "bin": {
@@ -1,10 +0,0 @@
1
- {
2
- "domain": "prospect-activity",
3
- "operations": [
4
- {"name":"create","domain":"prospect-activity","operationId":"prospectActivity.store","method":"POST","path":"/v2/prospects/{prospectId}/activities","summary":"アプローチ履歴の登録","pathParams":[{"name":"prospectId","type":"string","required":true,"source":"spec"}],"queryParams":[],"body":{"schema":{"type":"object","properties":{"method":{"type":"string","enum":["call","form","email","mail","visit","other"]},"result":{"type":"string","enum":["no_answer","rejected","interested","appointment","other"]},"activity_date":{"type":["string","null"],"format":"date-time"},"next_action_date":{"type":["string","null"],"format":"date"},"content":{"type":["string","null"],"maxLength":10000},"campaign_id":{"type":["string","null"],"maxLength":255},"status":{"type":["string","null"],"enum":["new","approaching","responded","appointment","rejected","on_hold",null]}},"required":["method","result"]}},"resultPath":null,"risk":"write","aliases":[]},
5
- {"name":"delete","domain":"prospect-activity","operationId":"prospectActivity.destroy","method":"DELETE","path":"/v2/prospects/{prospectId}/activities/{activityId}","summary":"アプローチ履歴の削除(論理削除)","pathParams":[{"name":"prospectId","type":"string","required":true,"source":"spec"},{"name":"activityId","type":"string","required":true,"source":"spec"}],"queryParams":[],"body":null,"resultPath":null,"risk":"destructive","aliases":[]},
6
- {"name":"list","domain":"prospect-activity","operationId":"prospectActivity.index","method":"GET","path":"/v2/prospects/{prospectId}/activities","summary":"アプローチ履歴一覧(activity_date 降順)","pathParams":[{"name":"prospectId","type":"string","required":true,"source":"spec"}],"queryParams":[{"name":"cursor","type":"string","required":false,"description":"次ページの取得に使うカーソル","source":"curation"},{"name":"limit","type":"integer","required":false,"description":"1ページあたりの件数","source":"curation"}],"body":null,"resultPath":"items","risk":"read","aliases":[]},
7
- {"name":"options","domain":"prospect-activity","operationId":"prospectActivity.options","method":"GET","path":"/v2/prospects/activity-options","summary":"選択肢(手段・結果)の一覧。MCP 経由の利用者が値を推測しなくて済むように公開する。","pathParams":[],"queryParams":[{"name":"limit","type":"integer","required":false,"description":"1ページあたりの件数","source":"curation"},{"name":"cursor","type":"string","required":false,"description":"次ページの取得に使うカーソル","source":"curation"}],"body":null,"resultPath":"results","risk":"read","aliases":[]},
8
- {"name":"update","domain":"prospect-activity","operationId":"prospectActivity.update","method":"PUT","path":"/v2/prospects/{prospectId}/activities/{activityId}","summary":"アプローチ履歴の更新","pathParams":[{"name":"prospectId","type":"string","required":true,"source":"spec"},{"name":"activityId","type":"string","required":true,"source":"spec"}],"queryParams":[],"body":{"schema":{"type":"object","properties":{"method":{"type":"string","enum":["call","form","email","mail","visit","other"]},"result":{"type":"string","enum":["no_answer","rejected","interested","appointment","other"]},"activity_date":{"type":["string","null"],"format":"date-time"},"next_action_date":{"type":["string","null"],"format":"date"},"content":{"type":["string","null"],"maxLength":10000},"campaign_id":{"type":["string","null"],"maxLength":255},"status":{"type":["string","null"],"enum":["new","approaching","responded","appointment","rejected","on_hold",null]}},"required":["method","result"]}},"resultPath":null,"risk":"write","aliases":[]}
9
- ]
10
- }