rootr-cli 0.8.1 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -202,6 +202,50 @@ rootr config # 등록된 키 목록 확인
202
202
  업그레이드 링크가 담긴 안내가 나옵니다. 응답 헤더로도 확인할 수 있습니다
203
203
  (`X-RateLimit-Remaining`, `X-RateLimit-Reset`, `X-RateLimit-Window`).
204
204
 
205
+ ### 서명문서 · 연구노트 (sign)
206
+
207
+ 서명문서는 마크다운 문서인데 **올리는 순간 본문이 얼고**, 결재라인에 적힌 사람들이
208
+ 차례로 서명합니다. 서명마다 공인시점확인(TSA)과 해시 체이닝이 붙어 위·변조를
209
+ 증명할 수 있고, 서명된 문서는 삭제되지 않습니다(30년 보존).
210
+ 전자결재와 국가R&D 전자연구노트가 같은 기능 하나입니다.
211
+
212
+ ```bash
213
+ # 만들기 — 본문·결재라인까지 한 번에. 연구노트는 점검자만 정하면 두 단계가 자동
214
+ rootr sign new "/연구노트/2026-08-25 실험기록" --file note.md --reviewer <연구책임자 userId>
215
+
216
+ # 결재라인을 직접 짜려면 (배열 순서 = 서명 순서)
217
+ cat > line.json <<'EOF'
218
+ [ { "label": "기재자", "members": [{ "userId": "u1", "role": "AUTHOR" }] },
219
+ { "label": "부서장", "rule": "ANY", "members": [{ "userId": "u2" }, { "userId": "u3" }] } ]
220
+ EOF
221
+ rootr sign line /연구노트/2026-08-25\ 실험기록 --file line.json
222
+
223
+ # 올리기: 확인 코드를 메일로 받고 → 그 6자리를 넘긴다
224
+ rootr sign code /연구노트/2026-08-25\ 실험기록
225
+ rootr sign submit /연구노트/2026-08-25\ 실험기록 --code 123456
226
+
227
+ # 다음 사람: 내 차례인 것만 보고 → 서명 (또는 사유를 달아 반려)
228
+ rootr sign list --pending
229
+ rootr sign code <id> && rootr sign approve <id> --code 123456
230
+ rootr sign reject <id> --comment "근거 자료가 빠졌습니다" --code 123456
231
+
232
+ # 여러 건 한 번에 (코드 하나로 최대 100건)
233
+ rootr sign code --bulk
234
+ rootr sign bulk <id1> <id2> <id3> --code 123456
235
+
236
+ # 증명
237
+ rootr sign verify <id> # 본문·서명·시점확인·원장이 성한지
238
+ rootr sign ledger # 워크스페이스 원장 전체 재계산
239
+ ```
240
+
241
+ **확인 코드는 CLI가 대신 만들어 줄 수 없습니다.** 코드는 서명하는 사람 메일로만
242
+ 가고, 서버가 개인키를 보관하는 구조에서 그게 "본인이 눌렀다"의 유일한 증거입니다.
243
+ 10분 유효, 5회 틀리면 죽고, 30초 안에 다시 요청하면 거절됩니다.
244
+
245
+ 서명된 문서는 고치는 게 아니라 **개정본**을 냅니다(`rootr sign revise <id> --note "…"`).
246
+ 원본은 `SUPERSEDED`로 남습니다 — 지침이 "고친 흔적과 원본이 모두 보여야 한다"를
247
+ 요구하기 때문입니다.
248
+
205
249
  ### RCA 질의응답 (ask)
206
250
 
207
251
  ```bash
@@ -214,7 +258,7 @@ rootr ask "왜 결제 실패가 늘었지?" --workspace ws_123
214
258
 
215
259
  ## MCP 서버로 사용하기
216
260
 
217
- `rootr mcp`는 stdio로 MCP(Model Context Protocol) 서버를 구동합니다. 제공 도구 96종:
261
+ `rootr mcp`는 stdio로 MCP(Model Context Protocol) 서버를 구동합니다. 제공 도구 134종:
218
262
 
219
263
  노드를 가리키는 인자(`target`, `databaseId`, `spreadsheetId`, `formId`, `crmId`, `trackerId`,
220
264
  `recordingId`, `presentationId`, `whiteboardId`, `logId`, `parentId` 등)는 **노드 id와 경로를 모두**
@@ -304,6 +348,39 @@ rootr ask "왜 결제 실패가 늘었지?" --workspace ws_123
304
348
  | `rootr_add_column` | **열 추가** — 기존 열·행은 그대로 |
305
349
  | `rootr_update_column` | 열 이름 변경 / select 선택지 교체 |
306
350
  | `rootr_delete_column` | 열 삭제(파괴적) |
351
+ | `rootr_read_database_permissions` | 표에 걸린 자물쇠 보기 |
352
+ | `rootr_set_database_permissions` | 표 잠그기 — 칸·뷰 잠금 / 본인 행만 / 관리자만 고칠 칸 |
353
+ | `rootr_read_database_notifications` | 표 알림 규칙 보기 |
354
+ | `rootr_set_database_notifications` | 표 알림 규칙 저장 — 누구에게·언제·어떤 것만 |
355
+ | `rootr_list_document_commits` | 공개 문서에 온 변경 제안 목록 |
356
+ | `rootr_merge_document_commit` | 변경 제안 반영(세 벌 병합 — 덮어쓰기 아님) |
357
+ | `rootr_reject_document_commit` | 변경 제안 거절(사유는 제안자에게 전달) |
358
+ | `rootr_read_node_access` | 이 문서·폴더를 누가 볼 수 있는지(공개범위 + 따로 준 권한) |
359
+ | `rootr_set_node_visibility` | 비공개로 잠그기 / 상위 설정 따르기 |
360
+ | `rootr_grant_node_permission` | 한 사람(또는 그룹)에게 READ·WRITE·MANAGE 주기 |
361
+ | `rootr_revoke_node_permission` | 준 권한 거두기 |
362
+ | `rootr_update_form_response` | 이미 들어온 폼 응답 고치기(폼 검사 규칙 다시 통과) |
363
+ | `rootr_delete_form_response` | 폼 응답 한 건 삭제 |
364
+ | `rootr_create_form_collector` | 응답 모을 표·스프레드시트를 **만들어서** 연결(표는 질문 그대로 칸 생성) |
365
+
366
+ **사람 칸은 여러 명을 담습니다.** 회의 참석자·공동 담당처럼 여럿이 들어가는 자리가
367
+ 흔해서, 값은 이름 목록(`["김대표","이팀장"]`)입니다. 이름 하나만 보내도 받아 주고
368
+ 목록으로 맞춰 돌려줍니다. 새로 들어온 사람에게만 알림이 갑니다.
369
+
370
+ **"만들면서 같이 잠그기".** 공개범위는 스캐폴드 트리에서도 노드마다 지정할 수 있습니다 —
371
+ `{ name: "채용", visibility: "PRIVATE", access: [{ subjectId: "<userId>", level: "READ" }] }`.
372
+ 폴더는 만들어 주면서 잠그는 건 사람이 따로 해야 하는 상태가 되지 않도록, 한 번에 갑니다.
373
+ 명령줄에서는 `rootr access <경로|id> --private`, `--grant <userId> --level READ`,
374
+ `--revoke <userId>` 입니다. (웹에 공개하는 것과는 다릅니다 — 그건 `rootr_set_document_public`.)
375
+
376
+ 응답 모을 곳은 `rootr form collect <폼> --to db|sheet`로 **만들면서** 연결합니다 —
377
+ 표로 만들면 폼 질문 그대로 칸이 생기므로, 표를 미리 만들고 칸 이름을 맞출 필요가 없습니다
378
+ (이름이 하나라도 어긋나면 그 칸은 영영 빈 칸으로 남습니다). 스캐폴드 트리에서는 폼 노드에
379
+ `form.collectInto: "database" | "spreadsheet"`로 같은 일을 합니다.
380
+
381
+ 폼 응답은 `rootr form responses <폼> [--latest]`로 보고, `rootr form response-edit <응답id>
382
+ --values '{"필드id":"값"}'`로 고치고, `rootr form response-rm <응답id> --yes`로 지웁니다.
383
+ `--latest`는 같은 사람이 여러 번 낸 것 중 마지막 한 건만 남깁니다(익명 제출은 합치지 않습니다).
307
384
 
308
385
  행의 **상세 내용(본문 메모)** — 화면에서 칸반 카드를 열면 속성 아래에 적는 그 글 — 은
309
386
  `body`로 오갑니다. 실체는 표 밑에 달리는 문서 한 장이고, 없으면 쓸 때 만들어집니다.
@@ -319,6 +396,34 @@ rootr ask "왜 결제 실패가 늘었지?" --workspace ws_123
319
396
  - `title` 열은 추가로 만들 수도, 삭제할 수도 없습니다.
320
397
  - 삭제한 열의 값은 행 안에 남아 있지만 화면에는 나오지 않습니다 — 사용자 확인 후 호출하세요.
321
398
 
399
+ #### 서명문서 · 연구노트 (docs:read/docs:write)
400
+
401
+ | 도구 | 설명 |
402
+ |---|---|
403
+ | `rootr_create_signed_document` | 서명문서 만들기 — 본문·모드·결재라인까지 한 번에 |
404
+ | `rootr_read_signed_document` | 결재라인 진행·서명 목록·내 차례인지(`canSign`) |
405
+ | `rootr_set_approval_line` | 결재라인 다시 짜기 (올리기 전에만) |
406
+ | `rootr_apply_research_note_preset` | 연구노트로 전환 + 기재자→점검자 두 단계 자동 |
407
+ | `rootr_request_signing_code` | 확인 코드를 서명자 메일로 발송 (서명 전 필수) |
408
+ | `rootr_submit_signed_document` | 올리기 — 본문이 얼고 기안자가 첫 서명 |
409
+ | `rootr_sign_document` | 내 차례에 서명 |
410
+ | `rootr_reject_signed_document` | 반려 (사유 필수) |
411
+ | `rootr_reopen_signed_document` | 아무도 서명 안 한 초안 다시 열기 |
412
+ | `rootr_revise_signed_document` | 개정본 만들기 (원본은 남는다) |
413
+ | `rootr_verify_signed_document` | 위변조 검증 — 본문·서명·시점확인·원장 |
414
+ | `rootr_list_signed_documents` | 목록 (`pendingMine`: 내 차례인 것만) |
415
+ | `rootr_bulk_sign_documents` | 코드 하나로 최대 100건 묶음 서명 |
416
+ | `rootr_verify_ledger` | 워크스페이스 원장(해시 체인) 전체 재계산 |
417
+
418
+ 에이전트가 대신 눌러 줄 수 없는 자리가 하나 있습니다 — **서명**. 확인 코드는
419
+ 사람 메일로만 가므로 흐름은 항상 `rootr_request_signing_code` → 사람에게 6자리를
420
+ 물어봄 → `rootr_sign_document` 입니다. 코드를 지어내면 403이고, 5회 틀리면 코드가
421
+ 죽습니다.
422
+
423
+ 표의 행마다 서명문서를 붙이려면 `rootr_create_database`에 `rowPageType: "SIGNED"`를
424
+ 주세요 — 그 표는 행을 열 때마다 서명문서(연구노트)가 만들어집니다(실험 기록 대장,
425
+ 점검 대장).
426
+
322
427
  #### 문서 버전 / 삭제
323
428
 
324
429
  | 도구 | 설명 |