@takagaki/cortex-decisions-viewer 0.4.72 → 0.4.74
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 +49 -18
- package/package.json +1 -1
package/dist/render.js
CHANGED
|
@@ -641,7 +641,7 @@ function tutorialChallenge4Prompt(decisions) {
|
|
|
641
641
|
* 規約はプロンプトに書き写さず、規約のあるファイル(README.md・template.md)をAIに読ませ、
|
|
642
642
|
* 中身は利用者に聞き返させる(AI導線ボタンのプロンプトと同じ方針)。
|
|
643
643
|
* 規約がどこにも無い手順(外部サービスへのつなぎ方・投稿経路の判定)だけを骨子として残す。
|
|
644
|
-
*
|
|
644
|
+
* 対応するスキルがある操作は、スキルが使える環境ではそちらを優先させる旨を冒頭に添える。
|
|
645
645
|
*/
|
|
646
646
|
const TUT_MEMBER_PROMPT = [
|
|
647
647
|
"(update-member スキルが使える環境なら、そのスキルの手順を優先してください。)",
|
|
@@ -652,16 +652,13 @@ const TUT_MEMBER_PROMPT = [
|
|
|
652
652
|
"書き込む前に、作成・変更する内容を提示して承認を得てください。",
|
|
653
653
|
].join("\n");
|
|
654
654
|
const TUT_BACKLOG_PROMPT = [
|
|
655
|
-
"(backlog-push スキルが使える環境なら、そのスキルの手順を優先してください。)",
|
|
656
|
-
"",
|
|
657
655
|
"Backlogの課題に、わたしの名義でコメントを1件投稿してください。Backlogの画面を開かずにAIから記票する練習です。",
|
|
658
656
|
"どの課題に何を書くかは、まずわたしに質問してください(課題は 課題管理/issues/ から選べます。課題キーは各ファイルの「基本情報 > 課題キー」)。",
|
|
659
657
|
"",
|
|
660
658
|
"投稿経路は次の優先順で判定し、Backlog上の名義とあわせて先に伝えてください。",
|
|
661
659
|
"1. mcp__backlog__ で始まるツール(あなた本人の名義。手元にAPIキーは不要)",
|
|
662
660
|
"2. 環境変数 DOMAIN / PROJECT_KEY / BACKLOG_API_KEY があれば Backlog REST API を直接呼ぶ(キーの持ち主の名義)",
|
|
663
|
-
"3.
|
|
664
|
-
"4. どれも無ければ、つなぎ方(手元の Claude Code なら /mcp コマンドから backlog、クラウドならセッションのコネクタ設定)を案内して止まる",
|
|
661
|
+
"3. どちらも無ければ、つなぎ方(手元の Claude Code なら /mcp コマンドから backlog、クラウドならセッションのコネクタ設定)を案内して止まる",
|
|
665
662
|
"",
|
|
666
663
|
"投稿する前に、課題キー・本文・経路・名義を提示して承認を得てください。投稿後は投稿先のURLを報告してください。",
|
|
667
664
|
"今回はコメントの追加だけです。課題の削除・クローズ・属性変更はしないでください。",
|
|
@@ -2908,17 +2905,22 @@ ${capabilityState.toString()}
|
|
|
2908
2905
|
// 別名は上のチップ(読み取り専用の記録)で見せるに留める。Lambda 側も add/remove とも断る。
|
|
2909
2906
|
used = true;
|
|
2910
2907
|
} else if (s.kind === "会議" && usable("会議", "google-meet")) {
|
|
2908
|
+
// **文面に設定ファイル名を出さない(2026-08-12 の文言原則)。** ここが見ているのは
|
|
2909
|
+
// 会議の取り込み設定(ingest-config.json の有無と enabled)だが、それは
|
|
2910
|
+
// 注: ここは埋め込みJSのテンプレートリテラル内。コメントでもバッククォートを使わない
|
|
2911
|
+
// 読む人の操作対象ではない——画面から直せないものなので、次の一歩は「担当者へ連絡」。
|
|
2912
|
+
// 「手で直してください」も出さない(PM に設定ファイルを編集させる案内になっていた)。
|
|
2911
2913
|
if (s.ingestState === "unset") {
|
|
2912
|
-
box.appendChild(el("p", { class: "sec-how", text: "
|
|
2914
|
+
box.appendChild(el("p", { class: "sec-how", text: "この案件では議事録の自動取り込みがまだ用意されていません。cortex の担当者にご連絡ください。" }));
|
|
2913
2915
|
used = true;
|
|
2914
2916
|
} else if (s.ingestState === "broken") {
|
|
2915
|
-
box.appendChild(el("p", { class: "sec-how", text: "
|
|
2917
|
+
box.appendChild(el("p", { class: "sec-how", text: "議事録の取り込み設定を読み取れないため、この画面からは変更できません。cortex の担当者にご連絡ください。" }));
|
|
2916
2918
|
used = true;
|
|
2917
2919
|
} else if (s.ingestState === "off") {
|
|
2918
2920
|
// 自動取り込みを止めている案件(例: Teams を使っていて手動で取り込む運用)。
|
|
2919
2921
|
// ここでトグルを出すと「押せば始まる」と読めるが、実際は設定ファイルの意思表示なので
|
|
2920
2922
|
// 画面から気軽に反転させるものではない。状態だけを伝える。
|
|
2921
|
-
box.appendChild(el("p", { class: "sec-how", text: "
|
|
2923
|
+
box.appendChild(el("p", { class: "sec-how", text: "この案件は議事録の自動取り込みを停止しています。" }));
|
|
2922
2924
|
used = true;
|
|
2923
2925
|
}
|
|
2924
2926
|
}
|
|
@@ -2945,10 +2947,13 @@ ${capabilityState.toString()}
|
|
|
2945
2947
|
// 同期ミラー(backlog-settings.json)の位置から決めている。ミラーが1つも
|
|
2946
2948
|
// 無い案件では正本をどこへ置けばよいかも決められないので、条件は変わらない
|
|
2947
2949
|
if (!s.url) {
|
|
2948
|
-
box.appendChild(el("p", { class: "sec-how", text: "
|
|
2950
|
+
box.appendChild(el("p", { class: "sec-how", text: "この案件はまだ一度も Backlog と同期していないため、この画面からは接続先を設定できません。先に初回の同期を実行するか、cortex の担当者にご連絡ください。" }));
|
|
2949
2951
|
used = true;
|
|
2950
2952
|
} else box.appendChild(addForm({
|
|
2951
2953
|
title: "接続先を変更",
|
|
2954
|
+
// **「追加」ではなく「保存」。** 接続先は1件しか持てない置き換えで、
|
|
2955
|
+
// 「追加」だと2つ目を足せると読める(実機テストでの指摘・複数対応は #127)
|
|
2956
|
+
submitLabel: "保存",
|
|
2952
2957
|
placeholder: "https://<スペース>.backlog.jp/projects/<プロジェクトキー>",
|
|
2953
2958
|
requiredNote: "BacklogのURLを入力してください(プロジェクトキーが入った形。数字だけのURLは受け付けません)。",
|
|
2954
2959
|
hint: "Backlog でこの案件のプロジェクトを開き、ブラウザのURLをそのまま貼ってください(課題の画面のURLでも構いません)。APIキーは下の「Backlog のAPIキー」から別に登録します。",
|
|
@@ -2980,12 +2985,14 @@ ${capabilityState.toString()}
|
|
|
2980
2985
|
}
|
|
2981
2986
|
|
|
2982
2987
|
if (s.kind === "共有資料" && usable("共有資料", "google-drive")) {
|
|
2988
|
+
// 状態の出どころは資料の取り込み設定(materials-config.json)だが、会議と同じく
|
|
2989
|
+
// 文面には出さない(2026-08-12 の文言原則)。画面から直せない状態の次の一歩は担当者への連絡。
|
|
2983
2990
|
if (s.driveState === "unset") {
|
|
2984
|
-
box.appendChild(el("p", { class: "sec-how", text: "
|
|
2991
|
+
box.appendChild(el("p", { class: "sec-how", text: "この案件では共有資料の取り込みがまだ用意されていません。cortex の担当者にご連絡ください。" }));
|
|
2985
2992
|
used = true;
|
|
2986
2993
|
} else if (s.driveState === "broken") {
|
|
2987
2994
|
// 壊れていると書き込みも失敗する。フォームを出して押させない
|
|
2988
|
-
box.appendChild(el("p", { class: "sec-how", text: "
|
|
2995
|
+
box.appendChild(el("p", { class: "sec-how", text: "共有資料の取り込み設定を読み取れないため、この画面からは変更できません。cortex の担当者にご連絡ください。" }));
|
|
2989
2996
|
used = true;
|
|
2990
2997
|
} else if (s.driveState) {
|
|
2991
2998
|
// フォルダが1件も無いのに ON/OFF だけ出しても意味が無いので、追加フォームを先に出す
|
|
@@ -3363,14 +3370,21 @@ ${capabilityState.toString()}
|
|
|
3363
3370
|
|
|
3364
3371
|
/**
|
|
3365
3372
|
* 「+…を追加」のフォーム。URLをそのまま貼れるようにする(IDだけを要求すると転記ミスが増える)。
|
|
3366
|
-
*
|
|
3373
|
+
*
|
|
3374
|
+
* **ボタンの語は呼び出し側が決める(既定は「追加」)。** 課題管理の「接続先を変更」だけは
|
|
3375
|
+
* 1件しか持てない設定の**置き換え**なのに、ボタンが「追加」だと**複数登録できる**と読める
|
|
3376
|
+
* (実機テストでの指摘。複数接続先の対応は #127 の将来要件で、いまは持てない)。
|
|
3377
|
+
* 押した結果の表示(+/追加済み)も同じ理由で語を揃える。
|
|
3378
|
+
*
|
|
3379
|
+
* @param opts { title, placeholder, hint, needsName, confirmLines, build(values), submitLabel }
|
|
3367
3380
|
*/
|
|
3368
3381
|
function addForm(opts) {
|
|
3369
3382
|
var main = el("input", { class: "sec-input", type: "text", placeholder: opts.placeholder, autocomplete: "off" });
|
|
3370
3383
|
var name = opts.needsName
|
|
3371
3384
|
? el("input", { class: "sec-input", type: "text", placeholder: opts.namePlaceholder || "表示名", autocomplete: "off" })
|
|
3372
3385
|
: null;
|
|
3373
|
-
var
|
|
3386
|
+
var submitLabel = opts.submitLabel || "追加";
|
|
3387
|
+
var btn = el("button", { class: "ds-toggle-btn", type: "button", text: submitLabel });
|
|
3374
3388
|
var msg = el("div", { class: "ds-toggle-msg" });
|
|
3375
3389
|
|
|
3376
3390
|
btn.addEventListener("click", function () {
|
|
@@ -3398,9 +3412,9 @@ ${capabilityState.toString()}
|
|
|
3398
3412
|
// (実際にそうなった)。だから押した結果をここで見せる。
|
|
3399
3413
|
pending.appendChild(
|
|
3400
3414
|
el("div", { class: "ds-pending-item" }, [
|
|
3401
|
-
el("span", { class: "ds-pending-mark", text: "+" }),
|
|
3415
|
+
el("span", { class: "ds-pending-mark", text: opts.submitLabel ? "✓" : "+" }),
|
|
3402
3416
|
el("span", { class: "ds-pending-name", text: addedName || added }),
|
|
3403
|
-
el("span", { class: "ds-pending-note", text: "
|
|
3417
|
+
el("span", { class: "ds-pending-note", text: submitLabel + "済み・反映中" }),
|
|
3404
3418
|
]),
|
|
3405
3419
|
);
|
|
3406
3420
|
});
|
|
@@ -3531,8 +3545,19 @@ ${capabilityState.toString()}
|
|
|
3531
3545
|
|
|
3532
3546
|
/**
|
|
3533
3547
|
* 登録の由来の表示(#118)。値は fleet-status.json の origin
|
|
3534
|
-
* (explicit … 登録ファイルに手で書いた / derived …
|
|
3548
|
+
* (explicit … 登録ファイルに手で書いた / derived … 自動導出 / both)。
|
|
3535
3549
|
* **知らない値には何も出さない**(生の内部値を顧客の画面に出さないため)。
|
|
3550
|
+
*
|
|
3551
|
+
* **#119 で、開発リポの自動導出は無くなった。** .gitmodules の submodule を登録として
|
|
3552
|
+
* 扱うのをやめた(手元でコードを読みたいという案件のカスタマイズであって、中身を顧客可視の
|
|
3553
|
+
* Gold に上げてよいという同意ではない)ので、いま engine が derived を付けるのは
|
|
3554
|
+
* Slack だけ。**新しく生成されるデータでは github の行は必ず explicit になる。**
|
|
3555
|
+
*
|
|
3556
|
+
* **それでも derived / both の表示と、下の削除の出し分けは残す。** 再生成前の
|
|
3557
|
+
* fleet-status.json にはまだ derived が入っている(艦隊の実データで確認: cortex-context
|
|
3558
|
+
* 5件・mitsubishi 5件・verdy 4件・gdo 1件)。ここを消すと、その案件では
|
|
3559
|
+
* **「登録から削除」が出てはいけない行に出て**、押しても翌日また現れる。
|
|
3560
|
+
* 全案件の再生成が回りきったら、github 側のこの分岐を落とす。
|
|
3536
3561
|
*/
|
|
3537
3562
|
var ORIGIN_LABEL = { explicit: "明示登録", derived: "自動検出", both: "明示登録+自動検出" };
|
|
3538
3563
|
var ORIGIN_HELP = {
|
|
@@ -3557,7 +3582,9 @@ ${capabilityState.toString()}
|
|
|
3557
3582
|
// 登録の由来(#118)。**「登録から削除」が出る/出ないの理由がこれ。** 導出されたリポは
|
|
3558
3583
|
// 登録ファイルから消しても翌日また現れるので削除を出していないが、画面には
|
|
3559
3584
|
// 「同じ見た目の行なのに、片方にだけ削除がある」としか映らず、毎回考え直すことになる。
|
|
3560
|
-
// GitHub
|
|
3585
|
+
// **GitHub の行だけに出す。** 由来で出し分けているのはここだけだから——Slack も
|
|
3586
|
+
// channels.json 由来の derived だが、あちらに削除は無く、由来を見せても打つ手が増えない。
|
|
3587
|
+
// #119 以降、新しいデータの github は必ず explicit(詳細は ORIGIN_LABEL)
|
|
3561
3588
|
if (String(s.type).indexOf("github") === 0 && ORIGIN_LABEL[s.origin]) {
|
|
3562
3589
|
badges.appendChild(el("span", {
|
|
3563
3590
|
class: "badge ds-origin",
|
|
@@ -3599,9 +3626,13 @@ ${capabilityState.toString()}
|
|
|
3599
3626
|
return { op: "set-github-source-enabled", repo: s.ref, value: next };
|
|
3600
3627
|
},
|
|
3601
3628
|
}));
|
|
3602
|
-
// **削除は「手で登録したもの」にだけ出す。**
|
|
3629
|
+
// **削除は「手で登録したもの」にだけ出す。** 自動で見つかったリポは
|
|
3603
3630
|
// 登録ファイルから消しても翌日また現れる(=消えないのに消せたように見える)。
|
|
3604
3631
|
// 止めたいだけなら上の「読み取りを止める」で足りる。
|
|
3632
|
+
//
|
|
3633
|
+
// **#119 以降、新しいデータの github は必ず explicit** なので、この条件は
|
|
3634
|
+
// いずれ常に真になる。それまでは残す——再生成前のスナップショットには derived が
|
|
3635
|
+
// まだ入っており、条件を外すと押しても戻ってくる削除ボタンが出る(ORIGIN_LABEL 参照)。
|
|
3605
3636
|
if (s.origin === "explicit") {
|
|
3606
3637
|
card.appendChild(removeButton({
|
|
3607
3638
|
label: "登録から削除",
|
package/package.json
CHANGED