@tocca-systems/twp-cli 0.21.0 → 0.22.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/CHANGELOG.public.md +4 -0
  2. package/README.md +26 -2
  3. package/command-model/user-management.json +1137 -2
  4. package/dist/{ai-dispatch-36HRDRLF.js → ai-dispatch-VSCKUY6J.js} +1 -1
  5. package/dist/{api-command-2OPQMSTE.js → api-command-Q2CSB4PV.js} +3 -3
  6. package/dist/{app-CPMS4ICA.js → app-THTQX3A5.js} +4 -4
  7. package/dist/{auto-update-CV2MM32C.js → auto-update-FBZGOQFI.js} +1 -1
  8. package/dist/{auto-update-worker-ML7EBNQW.js → auto-update-worker-Z3XKBFMQ.js} +2 -2
  9. package/dist/{backlog-NV7Z76R3.js → backlog-X2MQTA6F.js} +2 -2
  10. package/dist/chunk-3XG457E3.js +12 -0
  11. package/dist/{chunk-YV2TFD7D.js → chunk-5ISIXBKD.js} +11 -10
  12. package/dist/{chunk-ILKQDXI5.js → chunk-DSDVIU6A.js} +1 -1
  13. package/dist/chunk-E4H22AO5.js +3 -0
  14. package/dist/{chunk-WH65FZJV.js → chunk-I2QFW7EK.js} +8 -8
  15. package/dist/chunk-JB27KNCX.js +52 -0
  16. package/dist/{chunk-GTABFTZP.js → chunk-JDMNIUVX.js} +1 -1
  17. package/dist/chunk-K2ONOH3L.js +9 -0
  18. package/dist/chunk-PEGUHUTD.js +3 -0
  19. package/dist/{chunk-FOFV2MNL.js → chunk-PI5DUWNZ.js} +1 -1
  20. package/dist/chunk-RKJ6B2KL.js +56 -0
  21. package/dist/{chunk-5QCAIKFE.js → chunk-X4RS5VBH.js} +1 -1
  22. package/dist/{chunk-G2QYUQJE.js → chunk-XLE4HW6B.js} +1 -1
  23. package/dist/{chunk-RCDOQ6TT.js → chunk-Y2QAP6SU.js} +1 -1
  24. package/dist/cli.js +15 -10
  25. package/dist/{commands-XF5G3GIE.js → commands-ET4F34OD.js} +7 -7
  26. package/dist/{commands-R4KQCXXA.js → commands-NXBQ5OWL.js} +12 -7
  27. package/dist/format-NMW6Y2E5.js +3 -0
  28. package/dist/{logout-guard-JMGI6NPB.js → logout-guard-CMZZBRUL.js} +1 -1
  29. package/dist/{oneshot-QLIXOLN2.js → oneshot-QVFA2SUM.js} +2 -2
  30. package/dist/{project-BATJQR3F.js → project-2LJZW747.js} +1 -1
  31. package/dist/query-NJMVSQR6.js +3 -0
  32. package/dist/render-XMVI3AKB.js +3 -0
  33. package/dist/run-IS46BQBB.js +4 -0
  34. package/dist/{server-settings-ROZUOMC2.js → server-settings-CG3EM7R7.js} +1 -1
  35. package/dist/{setup-3UEZTO4T.js → setup-UI6V2Q3V.js} +1 -1
  36. package/dist/{task-6QUH5OXF.js → task-GKNM3G4K.js} +2 -2
  37. package/dist/{update-EXFIHTMW.js → update-3QHRK5BP.js} +1 -1
  38. package/dist/user-EU7Z3DAO.js +24 -0
  39. package/package.json +1 -1
  40. package/dist/chunk-MIMDLO52.js +0 -43
  41. package/dist/chunk-SPZO6C5N.js +0 -69
  42. package/dist/chunk-ZGG7TRAM.js +0 -3
  43. package/dist/run-2OQQAOHL.js +0 -4
@@ -11,6 +11,10 @@
11
11
  `CHANGELOG.md` に残してあります。顧客向けの履歴は public 公開以降を対象とします。
12
12
  -->
13
13
 
14
+ ## 0.22.0
15
+
16
+ AI が git の差分や履歴を読むときに、リポジトリ側で設定された外部の差分表示コマンドを実行しないようになりました。信用できないリポジトリで「変更点を見て」と頼んだだけで、そのリポジトリが仕込んだコマンドが動いてしまうことを防ぎます。差分そのものは通常どおり表示されます。
17
+
14
18
  ## 0.21.0
15
19
 
16
20
  確認画面が「はい」「はい、今後聞かない」「いいえ、代わりにこうして」の3択になりました。「今後聞かない」では、このセッション中だけか、このプロジェクトでは今後も聞かないかを選べます。後者は `~/.twp/project-permissions.json` に保存され、次に起動したときも効きます(コマンド実行は `git log` のようにコマンドの先頭で保存します)。「代わりにこうして」に入力した内容は、そのまま AI への指示として伝わります。`rm -rf` や `&&` でつないだコマンドなど、毎回確認するものでは「今後聞かない」は表示されません。
package/README.md CHANGED
@@ -20,6 +20,7 @@ TWP(Tocca Working Platform)を、ターミナルから使うための CLI
20
20
  |---|---|
21
21
  | **できる** | AI との会話(ストリーミング表示)。手元のファイルの読み書き・検索、コマンド実行、git の読み取り——いずれも**実行前に確認**します |
22
22
  | **できる** | `twp project` / `twp task` によるプロジェクト・タスクの読み書き(一覧・取得・作成・更新・削除・コメント) |
23
+ | **できる** | `twp user` によるテナントのユーザーと所属(部署・役職)の参照(一覧・取得・所属の履歴)。取得と他人の所属の参照は組織管理者の権限が要ります |
23
24
  | **できる** | `twp task-loop` による、TWP のタスクキューを手元の AI CLI に実行させる常駐ループ |
24
25
  | **できる** | スラッシュコマンド: `/help` `/mode` `/model` `/clear` `/context` `/doctor` `/exit` `/demo`(動作デモ) `/tasks` `/task` `/projects`。`/tasks` などの TWP 系は `twp task list` と同じ結果を画面に出すだけで、AI は動かしません(クレジットも消費しません)。スラッシュコマンドは TUI の中だけで使えます(`twp -p` では解釈しません) |
25
26
  | **できる** | 自分用のスラッシュコマンドを markdown で追加すること(`.twp/commands/*.md` / `~/.twp/commands/*.md`・[下記](#スラッシュコマンドを自分で足す))。入力中の `@パス` でファイルを、`#ABC-123` でタスクの内容を AI へ添付できます |
@@ -47,7 +48,9 @@ twp login ログイン(ブラウザ委譲 / --password / --token)
47
48
  twp login --tenant <code>
48
49
  テナントコードを先に指定する(--password のプロンプトを 1 つ省ける)
49
50
  twp logout ログアウト(同じ資格情報で twp task-loop が稼働中なら拒否する。--force で続行)
50
- twp whoami ログイン中のユーザー・テナントを表示
51
+ twp whoami ログイン中のユーザー・ID・テナントを表示
52
+ twp whoami --output text --query id
53
+ ログイン中ユーザーのIDだけを出す(--output json も可。トークンは出さない)
51
54
  twp update npm の最新版・サーバが要求する最小バージョン・自動更新の状態を確認
52
55
  twp --mode biz 起動時のモードを指定(dev | biz | plan)
53
56
  twp --permission-mode denyAll
@@ -117,6 +120,27 @@ twp task label list [--project <コード>]
117
120
  twp task list --project ACME --status 進行中 --output json --query '[].{key:key,subject:subject}'
118
121
  ```
119
122
 
123
+ ### テナントのユーザーと所属を参照する
124
+
125
+ 組織管理者(総務)向けに、ユーザーの一覧・詳細と所属の履歴を引きます。
126
+
127
+ ```
128
+ twp user list [--department <部署>] [--position <役職>] [--employment employee|partner]
129
+ [--keyword <語>] [--include-hidden] [--all]
130
+ twp user get <ユーザー> # 組織管理者のみ
131
+ twp user assignment list <ユーザー> [--current] # 本人・上長・組織管理者
132
+ ```
133
+
134
+ - **`<ユーザー>` は ID・メールアドレス・社員番号・氏名・`me`(自分)で指定できます。** 氏名は完全一致で1人に絞れたときだけ受け付け、同姓同名なら候補を出して止まります(メールアドレスか社員番号で指定し直してください)
135
+ - **表示フラグを外したユーザーは、ID・メールアドレス・氏名で指定してください**(社員番号では引けません。組織管理者でない場合は ID だけです)。一覧に出すときは `--include-hidden` を付けます(組織管理者のときだけ効きます)
136
+ - **`--department` / `--position` は名前・コード・ID のどれでも指定できます**(主所属で絞り込みます)。候補が絞れないときは候補を出して止まります
137
+ - **失効(ログイン不可)したユーザーも一覧に出ます。** 失効かどうかは `twp user get` の `auth_type`(`disabled` なら失効)で確認できます
138
+ - `twp user get` の要約(table / text / tsv)には個人連絡先を出しません。`--output json` は API が返す全フィールドを出します
139
+ - `twp user assignment list` の `is_primary` は主務、`is_approval_route` はワークフローの上長承認に使われる所属です。部署名・役職名を表示するため、部署一覧と役職一覧も取得します
140
+ - 権限が無いときは HTTP 403 をそのまま出さず、誰の権限が要るかを案内します(終了コードは 3)
141
+ - 組織管理者でなくても `twp user list` は使えます(表示フラグが付いたユーザーだけが出ます)
142
+ - ヘルプは `twp user help` / `twp user assignment help`
143
+
120
144
  ### Backlog の課題を読む・書く
121
145
 
122
146
  TWP に登録した Backlog スペースを通して、課題とコメントを読み、課題へ書きます。
@@ -384,7 +408,7 @@ mode: dev
384
408
  - 拒否が無ければ**より具体的なルールが勝つ**(`Bash` の allow より `Bash(npm test)` の ask が強い)。同じ具体性なら上の置き場所が勝つ
385
409
  - **`Bash(git status:*)` を許可しても `git status && rm -rf .` は通らない。** 許可ルールは「解釈の余地が無い文字(英数字と `_ - . / = : , @ % +` と空白)だけでできた1本のコマンド」にしか当たらない。引用符・`$`・`#`・`~`・`*`・分岐・リダイレクトを含むものと `rm -rf` には当たらず、確認へ落ちる(`git commit -m "x"` のような引用符付きも確認になる)。拒否ルールは逆に、分岐した後ろの断片にも当たる
386
410
  - **Windows の `shell`(PowerShell / cmd)には `Bash(...)` の許可ルールを当てない**(引用と分岐の規則が bash と違うため。拒否ルールは当たる)
387
- - **信用できないリポジトリでは git の許可ルールも安全ではない。** `git status` は `.git/config` の `core.fsmonitor` を、`git log -p` は textconv を実行しうる。上の例の `Bash(git status:*)` / `git(log:*)` は、自分で clone した信用できるリポジトリで使う
411
+ - **信用できないリポジトリでは git の許可ルールも安全ではない。** `git status` は `.git/config` の `core.fsmonitor` を、差分を出すコマンドは `.gitattributes` の clean フィルタを実行しうる(`git` ツールは `diff.external` と textconv を無効化して起動するが、この2つは塞げない)。上の例の `Bash(git status:*)` / `git(log:*)` は、自分で clone した信用できるリポジトリで使う
388
412
  - **リポジトリ側(`.twp/settings.json` / `.twp/settings.local.json`)は締める向きにしか効かない。** `allow` は無視して警告する(モード定義ファイルと同じ理由)。緩めるときは自分の `~/.twp/settings.json` に書くか、承認画面で「このプロジェクトでは確認しない」を選ぶ(`~/.twp/project-permissions.json` に保存される)
389
413
  - **設定ファイルが読めないと自動許可を止める。** 壊れたファイルに書いていた拒否が消えて緩むのを避けるため、直るまで「許可」は「確認」に変わる。起動時に `⚠ 権限設定:` が出たらその行を直す
390
414
  - **拒否ルールは「よくある書き方を止める網」であって、書いたコマンドを確実に止める境界ではない。** `sudo rm` `/bin/rm` `then rm` `$(rm …)` のような書き方には当たるが、`find -exec rm` のように引数の中から起動するものは拾えない。確実に止めたいならツールごと拒否する(`Bash`)か、業務・プランモードを使う