@takagaki/cortex-decisions-viewer 0.12.102 → 0.12.103

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.
@@ -7,7 +7,7 @@ exports.PERMISSIONS_DATA = void 0;
7
7
  * 操作タブの[権限]がこの値を CLIENT_JS に注入して読む(公開ページと同じ中身)。
8
8
  */
9
9
  exports.PERMISSIONS_DATA = {
10
- "revisedOn": "2026年9月29日",
10
+ "revisedOn": "2026年9月30日",
11
11
  "enactedOn": "2026年9月25日",
12
12
  "tools": [
13
13
  {
@@ -49,16 +49,17 @@ exports.PERMISSIONS_DATA = {
49
49
  "access": "read",
50
50
  "accessText": "読む",
51
51
  "purpose": "発言した方のメールアドレスを確かめ、同じ方を見分ける"
52
+ },
53
+ {
54
+ "spell": "chat:write",
55
+ "access": "write",
56
+ "accessText": "書く",
57
+ "purpose": "登録したチャンネルへ通知を投稿する"
52
58
  }
53
59
  ],
54
60
  "share": null,
55
61
  "keyOnly": null,
56
- "notRequested": [
57
- {
58
- "spell": "chat:write",
59
- "label": "メッセージの投稿"
60
- }
61
- ]
62
+ "notRequested": []
62
63
  },
63
64
  "cortexAccount": null,
64
65
  "delegated": {
package/dist/render.js CHANGED
@@ -10782,7 +10782,7 @@ ${calendarAddUrl.toString()}
10782
10782
  class: "ds-group-note",
10783
10783
  text: "ボタンを押すと Slack の承認画面が開きます。承認できるのは、その Slack の管理者だけです"
10784
10784
  + "(お客様の Slack なら、お客様の管理者にお願いしてください)。"
10785
- + "お願いする権限は読み取りだけで、Cortex から投稿することはありません。",
10785
+ + "お願いするのは、登録したチャンネルを読む権限と、通知を投稿する権限です。",
10786
10786
  }));
10787
10787
  wrap.appendChild(btn);
10788
10788
  wrap.appendChild(msg);
package/dist/repo.js CHANGED
@@ -193,7 +193,15 @@ function classifyCommit(id) {
193
193
  const scope = /^([^::]{1,40})[::]/.exec(subject);
194
194
  if (scope && /自動追記|自動生成|週次整理/.test(scope[1]))
195
195
  return "ai";
196
- // 4. bot 名義
196
+ // 4. bot 名義でも `Operated-By:` があれば人(#979・engine と同じ規則。件名の表は前から別で、trailer の枝だけがそろっている)。
197
+ // 操作タブの操作は App の名義(`cortex-intake[bot]` 等)でコミットされるが、
198
+ // intake が**押した人の側**を必ずトレーラーに残す(メール・portal:<sub>・basic:<鍵>・
199
+ // operator:op_<ULID>)。値の種類は問わず「空でない」だけを見る。
200
+ // 🔴 **上の件名の規則より後に置く。** 夜間パイプラインの件名は、トレーラーがあっても
201
+ // AI のまま(engine 側も機械の件名を先に見る)
202
+ if (looksLikeBot(id) && (id.operatedBy || "").trim() !== "")
203
+ return "human";
204
+ // 5. bot 名義
197
205
  return looksLikeBot(id) ? "ai" : "human";
198
206
  }
199
207
  /** 夜間パイプラインの名義(GitHub Actions の bot) */
@@ -339,7 +347,9 @@ function readCommits(cwd) {
339
347
  // 「読む人の git 設定に左右させない」の徹底を非対称にしない)
340
348
  "--no-ext-diff",
341
349
  "--name-status",
342
- `--format=%x00%H%x1f%aI%x1f%an%x1f%ae%x1f%s`,
350
+ // 🔴 **件名(%s)は必ず最後に置く**(件名に区切り文字が混ざっても繋ぎ直せるように)。
351
+ // `Operated-By:` トレーラーは値だけを RS 区切りの1行で取る(改行が入ると1行1コミットが壊れる)
352
+ `--format=%x00%H%x1f%aI%x1f%an%x1f%ae%x1f%(trailers:key=Operated-By,valueonly,separator=%x1e)%x1f%s`,
343
353
  "--",
344
354
  RECORD_PATHSPEC,
345
355
  ]);
@@ -348,13 +358,14 @@ function readCommits(cwd) {
348
358
  for (const line of out.split("\n")) {
349
359
  if (line.startsWith(NUL)) {
350
360
  const parts = line.slice(1).split(US);
351
- // 件名に区切り文字が混ざっても壊れないよう、5つ目以降は件名として繋ぎ直す
361
+ // 件名に区切り文字が混ざっても壊れないよう、6つ目以降は件名として繋ぎ直す
352
362
  cur = {
353
363
  sha: parts[0] || "",
354
364
  at: parts[1] || "",
355
365
  name: parts[2] || "",
356
366
  email: parts[3] || "",
357
- subject: parts.slice(4).join(US),
367
+ operatedBy: parts[4] || "",
368
+ subject: parts.slice(5).join(US),
358
369
  files: [],
359
370
  };
360
371
  if (cur.sha)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@takagaki/cortex-decisions-viewer",
3
- "version": "0.12.102",
3
+ "version": "0.12.103",
4
4
  "description": "Cortexの意思決定記録(Decisions/*.md)を静的サイトにビルドして閲覧する。各レコードに「Edit on GitHub」リンクを付与する。",
5
5
  "license": "UNLICENSED",
6
6
  "private": false,