@takagaki/cortex-decisions-viewer 0.12.187 → 0.12.190

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/dist/render.js CHANGED
@@ -90,6 +90,8 @@ const google_chat_guide_images_1 = require("./google-chat-guide-images");
90
90
  const meet_guide_images_1 = require("./meet-guide-images");
91
91
  const figma_guide_images_1 = require("./figma-guide-images");
92
92
  const backlog_guide_images_1 = require("./backlog-guide-images");
93
+ const slack_guide_images_1 = require("./slack-guide-images");
94
+ const github_guide_images_1 = require("./github-guide-images");
93
95
  const story_1 = require("./story");
94
96
  // 「人が確認したか/機械が触ってよいか」の口(#699 F2b)。正本は engine の confirmed.mjs・判定は流し込むだけ
95
97
  const confirmed_1 = require("./confirmed");
@@ -6842,6 +6844,29 @@ ${story_1.splitByNameLinks.toString()}
6842
6844
  var BACKLOG_SHOT_STEP8 = "${backlog_guide_images_1.BACKLOG_GUIDE_STEP8}";
6843
6845
  var BACKLOG_SHOT_STEP9 = "${backlog_guide_images_1.BACKLOG_GUIDE_STEP9}";
6844
6846
  var BACKLOG_SHOT_STEP10 = "${backlog_guide_images_1.BACKLOG_GUIDE_STEP10}";
6847
+ // Slack の手順動画のポスターと手順画像10枚(#1353)。理由は src/slack-guide-images.ts
6848
+ var SLACK_SHOT_POSTER = "${slack_guide_images_1.SLACK_GUIDE_POSTER}";
6849
+ var SLACK_SHOT_STEP1 = "${slack_guide_images_1.SLACK_GUIDE_STEP1}";
6850
+ var SLACK_SHOT_STEP2 = "${slack_guide_images_1.SLACK_GUIDE_STEP2}";
6851
+ var SLACK_SHOT_STEP3 = "${slack_guide_images_1.SLACK_GUIDE_STEP3}";
6852
+ var SLACK_SHOT_STEP4 = "${slack_guide_images_1.SLACK_GUIDE_STEP4}";
6853
+ var SLACK_SHOT_STEP5 = "${slack_guide_images_1.SLACK_GUIDE_STEP5}";
6854
+ var SLACK_SHOT_STEP6 = "${slack_guide_images_1.SLACK_GUIDE_STEP6}";
6855
+ var SLACK_SHOT_STEP7 = "${slack_guide_images_1.SLACK_GUIDE_STEP7}";
6856
+ var SLACK_SHOT_STEP8 = "${slack_guide_images_1.SLACK_GUIDE_STEP8}";
6857
+ var SLACK_SHOT_STEP9 = "${slack_guide_images_1.SLACK_GUIDE_STEP9}";
6858
+ var SLACK_SHOT_STEP10 = "${slack_guide_images_1.SLACK_GUIDE_STEP10}";
6859
+ // GitHub の手順動画のポスターと手順画像8枚(#1353)。理由は src/github-guide-images.ts
6860
+ var GITHUB_SHOT_POSTER = "${github_guide_images_1.GITHUB_GUIDE_POSTER}";
6861
+ var GITHUB_SHOT_STEP1 = "${github_guide_images_1.GITHUB_GUIDE_STEP1}";
6862
+ var GITHUB_SHOT_STEP2 = "${github_guide_images_1.GITHUB_GUIDE_STEP2}";
6863
+ var GITHUB_SHOT_STEP3 = "${github_guide_images_1.GITHUB_GUIDE_STEP3}";
6864
+ var GITHUB_SHOT_STEP4 = "${github_guide_images_1.GITHUB_GUIDE_STEP4}";
6865
+ var GITHUB_SHOT_STEP5 = "${github_guide_images_1.GITHUB_GUIDE_STEP5}";
6866
+ var GITHUB_SHOT_STEP6 = "${github_guide_images_1.GITHUB_GUIDE_STEP6}";
6867
+ var GITHUB_SHOT_STEP7 = "${github_guide_images_1.GITHUB_GUIDE_STEP7}";
6868
+ var GITHUB_SHOT_STEP8 = "${github_guide_images_1.GITHUB_GUIDE_STEP8}";
6869
+ var GITHUB_SHOT_STEP9 = "${github_guide_images_1.GITHUB_GUIDE_STEP9}";
6845
6870
 
6846
6871
  /**
6847
6872
  * コピーボタンの動き(copyRow と copyInline の共通部分)。clipboard が使えない環境では
@@ -10393,6 +10418,18 @@ ${story_1.splitByNameLinks.toString()}
10393
10418
  if (allSlack) return head + "が読めていません(" + DS_GATE_NO_TOKEN.customer.text + ")";
10394
10419
  return head + "に問題";
10395
10420
  }
10421
+ /** ワークスペース名がまだ分からないときの札(ID は出さない・#1370) */
10422
+ var WORKSPACE_NAME_PENDING = "ワークスペース名を取得中";
10423
+ /**
10424
+ * 台帳の name が本物の名前なら返し、そうでなければ ""。
10425
+ * 接続時に Slack へ名前を問い合わせて引けなかった行は、台帳に team_id が name として入る
10426
+ * (slack-oauth の mergeWorkspaceIndex)。それは名前ではないので、ID の形も弾く。
10427
+ */
10428
+ function realWorkspaceName(name, teamId) {
10429
+ var n = typeof name === "string" ? name.trim() : "";
10430
+ if (n === "" || n.toUpperCase() === String(teamId || "").toUpperCase() || /^[TE](?=[A-Z0-9]*[0-9])[A-Z0-9]{8,11}$/.test(n)) return "";
10431
+ return n;
10432
+ }
10396
10433
  /**
10397
10434
  * Slack のチャンネルを、所属する組織ごとに分ける(2026-08-20)。
10398
10435
  *
@@ -10424,15 +10461,15 @@ ${story_1.splitByNameLinks.toString()}
10424
10461
  */
10425
10462
  function groupSlackByOrg(items, workspaces) {
10426
10463
  var known = {};
10427
- (workspaces || []).forEach(function (w) { if (w && w.teamId) known[w.teamId] = w.name || w.teamId; });
10464
+ (workspaces || []).forEach(function (w) { if (w && w.teamId) known[w.teamId] = realWorkspaceName(w.name, w.teamId); });
10428
10465
  var order = [];
10429
10466
  var byKey = {};
10430
10467
  (items || []).forEach(function (s) {
10431
10468
  var key, title, unknown = false;
10432
10469
  if (s.workspace) {
10433
10470
  key = s.workspace;
10434
- // **台帳に無ければ team_id を出す。** 空欄より、少なくとも突き合わせられる
10435
- title = known[s.workspace] || s.workspace;
10471
+ // **名前が分からないとき ID(T…)を出さない(#1370)。** 機械の語を画面に出さない
10472
+ title = known[s.workspace] || WORKSPACE_NAME_PENDING;
10436
10473
  } else if (s.orgUnknown === true) {
10437
10474
  key = "__unknown__";
10438
10475
  title = "組織不明";
@@ -12536,7 +12573,19 @@ ${story_1.splitByNameLinks.toString()}
12536
12573
  ? " お客様の Slack のチャンネルは、その Slack の管理者がワークスペースの接続を承認すると読めるようになります(チャンネルを読む権限と、通知を投稿する権限を渡します)。"
12537
12574
  : "")
12538
12575
  + (adapter !== "slack" ? " DM(1対1のチャット)は対象外です。" : "");
12539
- m.modal.appendChild(el("p", { class: "modal-desc", text: "ここに並んでいる" + chatNoun + "は、例外なく全て毎晩の Gold 昇格が読み取り、Decision・用語集の材料になります。読み取りを止めるには「登録を解除」してください。" + chatScope + chatExtra }));
12576
+ var chatDesc = el("p", { class: "modal-desc", text: "ここに並んでいる" + chatNoun + "は、例外なく全て毎晩の Gold 昇格が読み取り、Decision・用語集の材料になります。読み取りを止めるには「登録を解除」してください。" + chatScope + chatExtra });
12577
+ m.modal.appendChild(chatDesc);
12578
+ // 🔴 **Slack のつなぎ方の動画+画像(#1353)は Backlog と同じ配置**(見出しのすぐ下・説明文より前・折りたたまない・中央・幅 480px 上限)。
12579
+ // Google Chat 専用の窓には出さない
12580
+ // Backlog(backlogTargetsEditable)と同じく、投入の口が無い(つなげない)配信先には出さない
12581
+ if (SITE.intake && (!adapter || adapter === "slack")) {
12582
+ var slackCarousel = buildGuideCarousel("slack", SLACK_GUIDE);
12583
+ if (slackCarousel) {
12584
+ slackCarousel.classList.add("mt-carousel-center");
12585
+ slackCarousel.setAttribute("data-guide-kind", "slack");
12586
+ m.modal.insertBefore(slackCarousel, chatDesc);
12587
+ }
12588
+ }
12540
12589
  } else if (cap === "デザイン" && (!adapter || adapter === "figma")) {
12541
12590
  // 🔴 **Figma の説明文(c-07・新設)。** 追加の欄の手順 4(何が同期されるか)と手順 1 の前提
12542
12591
  // (トークンの登録)を、ここに 1 回だけ置く。鍵の欄は 0 件のあいだ畳まれているので、入れる欄が
@@ -12568,7 +12617,18 @@ ${story_1.splitByNameLinks.toString()}
12568
12617
  // オーナー決定でソースの性質は種類で固定になり、GitHub は「作業の記録」に固定された。
12569
12618
  // **この 2 文が「決定の材料にはしない」を言う唯一の場所**——行の札は「活動を記録中」と
12570
12619
  // だけ言い、同じ文を行ごとに繰り返さない(帯は症状・行は一手・繰り返さない・2026-09-02)
12571
- m.modal.appendChild(el("p", { class: "modal-desc", text: "ここに並んでいるリポジトリの Issues と PR の活動を、毎晩記録として読みます(誰が何をしているかの把握に使います)。決定・用語集の抽出には使いません。記録をやめるには「登録から削除」してください。" }));
12620
+ var devDesc = el("p", { class: "modal-desc", text: "ここに並んでいるリポジトリの Issues と PR の活動を、毎晩記録として読みます(誰が何をしているかの把握に使います)。決定・用語集の抽出には使いません。記録をやめるには「登録から削除」してください。" });
12621
+ m.modal.appendChild(devDesc);
12622
+ // 🔴 **GitHub のつなぎ方の動画+画像(#1353)は Slack・Backlog と同じ配置**(見出しのすぐ下・説明文より前・折りたたまない・中央・幅 480px 上限)。
12623
+ // 投入の口が無い(つなげない)配信先には出さない
12624
+ if (SITE.intake && (!adapter || adapter === "github")) {
12625
+ var githubCarousel = buildGuideCarousel("github", GITHUB_GUIDE);
12626
+ if (githubCarousel) {
12627
+ githubCarousel.classList.add("mt-carousel-center");
12628
+ githubCarousel.setAttribute("data-guide-kind", "github");
12629
+ m.modal.insertBefore(githubCarousel, devDesc);
12630
+ }
12631
+ }
12572
12632
  }
12573
12633
  // **なぜこの状態なのかを、押した先でも読めるようにする(#125②)。** タイルは常時出す
12574
12634
  // ようになったので、未接続の能力を押したときに中身が空になる場面が増えた。
@@ -17282,14 +17342,14 @@ ${story_1.splitByNameLinks.toString()}
17282
17342
  var v = fleetVal("slackWorkspaces");
17283
17343
  return Array.isArray(v) ? v : null;
17284
17344
  }
17285
- /** team_id → 表示名。宣言はあるが一覧に無いワークスペースは team_id のまま出す */
17345
+ /** team_id → 表示名。宣言はあるが一覧に無いワークスペース・名前が引けなかったワークスペースは「ワークスペース名を取得中」を出す(ID は出さない・#1370) */
17286
17346
  function workspaceLabel(teamId) {
17287
17347
  if (!teamId) return "";
17288
17348
  var list = slackWorkspaces() || [];
17289
17349
  for (var i = 0; i < list.length; i++) {
17290
- if (list[i].teamId === teamId) return list[i].name || teamId;
17350
+ if (list[i].teamId === teamId) return realWorkspaceName(list[i].name, teamId) || WORKSPACE_NAME_PENDING;
17291
17351
  }
17292
- return teamId;
17352
+ return WORKSPACE_NAME_PENDING;
17293
17353
  }
17294
17354
 
17295
17355
 
@@ -18431,6 +18491,50 @@ ${story_1.splitByNameLinks.toString()}
18431
18491
  */
18432
18492
  var BACKLOG_KEY_SCOPE_NOTE = "";
18433
18493
 
18494
+ // Slack のつなぎ方の動画+画像(#1353)。Backlog(SECRET_FORMS.backlog.guide)と同じ形で、モーダルの上に出す
18495
+ // (openCapabilityModal のチャットの項)。Slack は鍵を入れるカードを持たないので、SECRET_FORMS には入れずここに置く。
18496
+ // 動画の実 URL は guide に置かない(SITE.guideAssets.slack.video を build.ts の GUIDE_VIDEO_SOURCES が注入する)
18497
+ var SLACK_GUIDE = {
18498
+ counter: true,
18499
+ video: {
18500
+ alt: "Slack のチャンネルを Cortex につなぐ手順の動画(約1分30秒)。チャンネルの URL のコピー、貼り付け、Cortex の招待、接続OK の確認までを画面で見せます。",
18501
+ poster: SLACK_SHOT_POSTER,
18502
+ },
18503
+ shots: [
18504
+ { src: SLACK_SHOT_STEP1, width: "960", height: "540", heading: "1. Cortex の欄にチャンネルの URL を貼る", alt: "手順 1。Cortex の Slack のモーダル。「Slackチャンネルを追加」の URL の入力欄が赤枠で示されている。" },
18505
+ { src: SLACK_SHOT_STEP2, width: "960", height: "540", heading: "2. Slack でチャンネルのリンクをコピー", alt: "手順 2。Slack の左の一覧でチャンネルを右クリックし、「コピー」→「リンクをコピー」が赤枠で示されている。" },
18506
+ { src: SLACK_SHOT_STEP3, width: "960", height: "540", heading: "3. 貼り付けて追加", alt: "手順 3。URL を貼った入力欄と「追加」ボタンが赤く囲まれている。" },
18507
+ { src: SLACK_SHOT_STEP4, width: "960", height: "540", heading: "4. 「未招待」と出たら招待の一文をコピー", alt: "手順 4。チャンネルの行に「未招待」と「Cortex を招待してください:/invite @Cortex[コピー]」が出ている。" },
18508
+ { src: SLACK_SHOT_STEP5, width: "960", height: "540", heading: "5. チャンネルで /invite @Cortex を送る", alt: "手順 5。Slack の入力欄に /invite @Cortex が入り、候補に Cortex(アプリ)が出ている。" },
18509
+ { src: SLACK_SHOT_STEP6, width: "960", height: "540", heading: "6. Cortex が参加したら OK", alt: "手順 6。チャンネルに「Cortex さんと一緒に参加しました」と出ている。" },
18510
+ { src: SLACK_SHOT_STEP7, width: "960", height: "540", heading: "7. 接続を確認して接続OK", alt: "手順 7。チャンネルの行に緑の「接続OK」が出ている。" },
18511
+ { src: SLACK_SHOT_STEP8, width: "960", height: "540", heading: "(もしも Cortex が入っていない場合)接続する", alt: "補足の手順 1。行に「このワークスペースに Cortex が入っていなければ、ワークスペースを接続してください。[接続する]」が出ている。" },
18512
+ { src: SLACK_SHOT_STEP9, width: "960", height: "540", heading: "(同)使うワークスペースを選んで許可する", alt: "補足の手順 2。Slack の許可の画面。使うワークスペースの欄と「許可する」ボタンが赤く囲まれている。" },
18513
+ { src: SLACK_SHOT_STEP10, width: "960", height: "540", heading: "(同)接続しましたと出たら Cortex の画面に戻る", alt: "補足の手順 3。「接続しました」の画面。Cortex の画面に戻る。" },
18514
+ ],
18515
+ };
18516
+
18517
+ // GitHub のつなぎ方の動画+画像(#1353)。Slack(SLACK_GUIDE)と同じ形で、モーダルの上に出す
18518
+ // (openCapabilityModal の開発の項)。動画の実 URL は guide に置かない(SITE.guideAssets.github.video を build.ts の GUIDE_VIDEO_SOURCES が注入する)
18519
+ var GITHUB_GUIDE = {
18520
+ counter: true,
18521
+ video: {
18522
+ alt: "GitHub のリポジトリを Cortex につなぐ手順の動画(約1分15秒)。リポジトリの追加、GitHub App のインストール設定、リポジトリの選択、接続OK の確認までを画面で見せます。",
18523
+ poster: GITHUB_SHOT_POSTER,
18524
+ },
18525
+ shots: [
18526
+ { src: GITHUB_SHOT_STEP1, width: "960", height: "540", heading: "1. GitHub でリポジトリを開き、URL をコピー", alt: "手順 1。GitHub のリポジトリのページ。上部の組織名とリポジトリ名(このページの URL)が赤枠で示されている。" },
18527
+ { src: GITHUB_SHOT_STEP2, width: "960", height: "540", heading: "2. Cortex の欄に URL を貼って追加", alt: "手順 2。Cortex の GitHub のモーダル。「GitHubリポジトリを追加」の欄と[追加]が赤枠で示されている。" },
18528
+ { src: GITHUB_SHOT_STEP3, width: "960", height: "540", heading: "3. 「アクセス不可」と出たらインストール設定を開く", alt: "手順 3。リポジトリの行に「アクセス不可」と「GitHub App の設定で、このリポジトリを選んでください。インストール設定を開く」が出ている。" },
18529
+ { src: GITHUB_SHOT_STEP4, width: "960", height: "540", heading: "4. GitHub で自分のアカウントの Continue", alt: "手順 4。GitHub のアカウントを選ぶ画面で、Continue のボタンが赤枠で示されている。" },
18530
+ { src: GITHUB_SHOT_STEP5, width: "960", height: "540", heading: "5. リポジトリのある組織を選ぶ", alt: "手順 5。App を入れる先の一覧で、リポジトリのある組織の行が赤枠で示されている。" },
18531
+ { src: GITHUB_SHOT_STEP6, width: "960", height: "540", heading: "6. リポジトリを検索して選ぶ", alt: "手順 6。Select repositories の検索欄と候補のリポジトリが赤枠で示されている。" },
18532
+ { src: GITHUB_SHOT_STEP7, width: "960", height: "540", heading: "7. Update access で保存", alt: "手順 7。選んだリポジトリと Update access のボタンが赤枠で示されている。" },
18533
+ { src: GITHUB_SHOT_STEP8, width: "960", height: "540", heading: "8. 接続を確認して接続OK", alt: "手順 8。リポジトリの行に緑の「接続OK」が出ている。" },
18534
+ { src: GITHUB_SHOT_STEP9, width: "960", height: "540", heading: "(もしも管理者でない場合)request と出たら管理者の承認待ち", alt: "補足の手順。選んだリポジトリに request の札が付いている。管理者の承認を待つ。" },
18535
+ ],
18536
+ };
18537
+
18434
18538
  /**
18435
18539
  * 鍵の入力欄に出す説明。kind は Lambda 側(resolveSecretTarget)と綴りを合わせること。
18436
18540
  *