@kubbisec/ai-linux-arm64 0.1.8 → 0.1.10
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/bin/kubbisec +0 -0
- package/bundled/assets/terminal/wordmark-inline.ansi +1 -0
- package/bundled/assets/terminal/wordmark.ansi +4 -0
- package/bundled/assets/terminal/wordmark.png +0 -0
- package/bundled/clarify/clarify-gate-state.d.ts +3 -0
- package/bundled/clarify/clarify-gate-state.d.ts.map +1 -0
- package/bundled/clarify/clarify-gate-state.js +9 -0
- package/bundled/clarify/clarify-gate-state.js.map +1 -0
- package/bundled/clarify/clarify-gate.d.ts +2 -1
- package/bundled/clarify/clarify-gate.d.ts.map +1 -1
- package/bundled/clarify/clarify-gate.js +17 -4
- package/bundled/clarify/clarify-gate.js.map +1 -1
- package/bundled/clarify/clarify-select-panel.d.ts +14 -0
- package/bundled/clarify/clarify-select-panel.d.ts.map +1 -0
- package/bundled/clarify/clarify-select-panel.js +82 -0
- package/bundled/clarify/clarify-select-panel.js.map +1 -0
- package/bundled/clarify/clarify-ui-state.d.ts +10 -1
- package/bundled/clarify/clarify-ui-state.d.ts.map +1 -1
- package/bundled/clarify/clarify-ui-state.js +24 -3
- package/bundled/clarify/clarify-ui-state.js.map +1 -1
- package/bundled/clarify/parse-clarify-answer.d.ts +6 -1
- package/bundled/clarify/parse-clarify-answer.d.ts.map +1 -1
- package/bundled/clarify/parse-clarify-answer.js +35 -2
- package/bundled/clarify/parse-clarify-answer.js.map +1 -1
- package/bundled/clarify/question-format.d.ts +7 -4
- package/bundled/clarify/question-format.d.ts.map +1 -1
- package/bundled/clarify/question-format.js +26 -33
- package/bundled/clarify/question-format.js.map +1 -1
- package/bundled/clarify/questionnaire-tool.d.ts.map +1 -1
- package/bundled/clarify/questionnaire-tool.js +16 -9
- package/bundled/clarify/questionnaire-tool.js.map +1 -1
- package/bundled/clarify/scope-discovery.d.ts +10 -0
- package/bundled/clarify/scope-discovery.d.ts.map +1 -0
- package/bundled/clarify/scope-discovery.js +130 -0
- package/bundled/clarify/scope-discovery.js.map +1 -0
- package/bundled/clarify/session-questionnaire.d.ts +4 -1
- package/bundled/clarify/session-questionnaire.d.ts.map +1 -1
- package/bundled/clarify/session-questionnaire.js +59 -4
- package/bundled/clarify/session-questionnaire.js.map +1 -1
- package/bundled/clarify/session-questionnaire.types.d.ts +2 -0
- package/bundled/clarify/session-questionnaire.types.d.ts.map +1 -1
- package/bundled/clarify/session-questionnaire.types.js.map +1 -1
- package/bundled/config/detect-local-llm-providers.d.ts +33 -0
- package/bundled/config/detect-local-llm-providers.d.ts.map +1 -0
- package/bundled/config/detect-local-llm-providers.js +173 -0
- package/bundled/config/detect-local-llm-providers.js.map +1 -0
- package/bundled/config/ensure-kubbisec-project-settings.d.ts +8 -0
- package/bundled/config/ensure-kubbisec-project-settings.d.ts.map +1 -1
- package/bundled/config/ensure-kubbisec-project-settings.js +31 -0
- package/bundled/config/ensure-kubbisec-project-settings.js.map +1 -1
- package/bundled/config/extended-context.d.ts +12 -0
- package/bundled/config/extended-context.d.ts.map +1 -0
- package/bundled/config/extended-context.js +37 -0
- package/bundled/config/extended-context.js.map +1 -0
- package/bundled/config/format-kubbisec-footer-status.d.ts.map +1 -1
- package/bundled/config/format-kubbisec-footer-status.js +10 -1
- package/bundled/config/format-kubbisec-footer-status.js.map +1 -1
- package/bundled/config/kubbisec-extension-manifest.d.ts +3 -0
- package/bundled/config/kubbisec-extension-manifest.d.ts.map +1 -0
- package/bundled/config/kubbisec-extension-manifest.js +23 -0
- package/bundled/config/kubbisec-extension-manifest.js.map +1 -0
- package/bundled/config/llm-config-mutations.d.ts +38 -0
- package/bundled/config/llm-config-mutations.d.ts.map +1 -0
- package/bundled/config/llm-config-mutations.js +207 -0
- package/bundled/config/llm-config-mutations.js.map +1 -0
- package/bundled/config/llm-config.d.ts +64 -0
- package/bundled/config/llm-config.d.ts.map +1 -0
- package/bundled/config/llm-config.js +236 -0
- package/bundled/config/llm-config.js.map +1 -0
- package/bundled/config/llm-provider-catalog.d.ts +22 -0
- package/bundled/config/llm-provider-catalog.d.ts.map +1 -0
- package/bundled/config/llm-provider-catalog.js +42 -0
- package/bundled/config/llm-provider-catalog.js.map +1 -0
- package/bundled/config/materialize-kubbisec-pi-resources.d.ts +13 -0
- package/bundled/config/materialize-kubbisec-pi-resources.d.ts.map +1 -0
- package/bundled/config/materialize-kubbisec-pi-resources.js +171 -0
- package/bundled/config/materialize-kubbisec-pi-resources.js.map +1 -0
- package/bundled/config/register-custom-llm-providers.d.ts +13 -0
- package/bundled/config/register-custom-llm-providers.d.ts.map +1 -0
- package/bundled/config/register-custom-llm-providers.js +21 -0
- package/bundled/config/register-custom-llm-providers.js.map +1 -0
- package/bundled/config/register-kubbisec-llm-provider.d.ts +14 -0
- package/bundled/config/register-kubbisec-llm-provider.d.ts.map +1 -0
- package/bundled/config/register-kubbisec-llm-provider.js +53 -0
- package/bundled/config/register-kubbisec-llm-provider.js.map +1 -0
- package/bundled/config/sync-kubbisec-pi-models.d.ts +12 -0
- package/bundled/config/sync-kubbisec-pi-models.d.ts.map +1 -0
- package/bundled/config/sync-kubbisec-pi-models.js +80 -0
- package/bundled/config/sync-kubbisec-pi-models.js.map +1 -0
- package/bundled/copy/cli-reference-index.d.ts +6 -0
- package/bundled/copy/cli-reference-index.d.ts.map +1 -0
- package/bundled/copy/cli-reference-index.js +42 -0
- package/bundled/copy/cli-reference-index.js.map +1 -0
- package/bundled/copy/kubbisec-shell-copy.d.ts +15 -2
- package/bundled/copy/kubbisec-shell-copy.d.ts.map +1 -1
- package/bundled/copy/kubbisec-shell-copy.js +15 -2
- package/bundled/copy/kubbisec-shell-copy.js.map +1 -1
- package/bundled/extensions/cli-local-shared.d.ts +31 -11
- package/bundled/extensions/cli-local-shared.d.ts.map +1 -1
- package/bundled/extensions/cli-local-shared.js +56 -10
- package/bundled/extensions/cli-local-shared.js.map +1 -1
- package/bundled/extensions/kubbisec-aspm-local.extension.d.ts +1 -0
- package/bundled/extensions/kubbisec-aspm-local.extension.d.ts.map +1 -1
- package/bundled/extensions/kubbisec-aspm-local.extension.js +32 -44
- package/bundled/extensions/kubbisec-aspm-local.extension.js.map +1 -1
- package/bundled/extensions/kubbisec-brand.extension.d.ts +2 -19
- package/bundled/extensions/kubbisec-brand.extension.d.ts.map +1 -1
- package/bundled/extensions/kubbisec-brand.extension.js +21 -73
- package/bundled/extensions/kubbisec-brand.extension.js.map +1 -1
- package/bundled/extensions/kubbisec-byok-provider.extension.d.ts +3 -27
- package/bundled/extensions/kubbisec-byok-provider.extension.d.ts.map +1 -1
- package/bundled/extensions/kubbisec-byok-provider.extension.js +2 -48
- package/bundled/extensions/kubbisec-byok-provider.extension.js.map +1 -1
- package/bundled/extensions/kubbisec-clarify.extension.d.ts +6 -1
- package/bundled/extensions/kubbisec-clarify.extension.d.ts.map +1 -1
- package/bundled/extensions/kubbisec-clarify.extension.js +124 -68
- package/bundled/extensions/kubbisec-clarify.extension.js.map +1 -1
- package/bundled/extensions/kubbisec-exit.extension.d.ts +3 -0
- package/bundled/extensions/kubbisec-exit.extension.d.ts.map +1 -0
- package/bundled/extensions/kubbisec-exit.extension.js +38 -0
- package/bundled/extensions/kubbisec-exit.extension.js.map +1 -0
- package/bundled/extensions/kubbisec-extended-context.extension.d.ts +6 -0
- package/bundled/extensions/kubbisec-extended-context.extension.d.ts.map +1 -0
- package/bundled/extensions/kubbisec-extended-context.extension.js +50 -0
- package/bundled/extensions/kubbisec-extended-context.extension.js.map +1 -0
- package/bundled/extensions/kubbisec-footer.extension.d.ts +16 -61
- package/bundled/extensions/kubbisec-footer.extension.d.ts.map +1 -1
- package/bundled/extensions/kubbisec-footer.extension.js +143 -74
- package/bundled/extensions/kubbisec-footer.extension.js.map +1 -1
- package/bundled/extensions/kubbisec-github-local.extension.d.ts.map +1 -1
- package/bundled/extensions/kubbisec-github-local.extension.js +52 -22
- package/bundled/extensions/kubbisec-github-local.extension.js.map +1 -1
- package/bundled/extensions/kubbisec-llm-config.extension.d.ts +3 -0
- package/bundled/extensions/kubbisec-llm-config.extension.d.ts.map +1 -0
- package/bundled/extensions/kubbisec-llm-config.extension.js +211 -0
- package/bundled/extensions/kubbisec-llm-config.extension.js.map +1 -0
- package/bundled/extensions/kubbisec-naus-local.extension.d.ts +1 -0
- package/bundled/extensions/kubbisec-naus-local.extension.d.ts.map +1 -1
- package/bundled/extensions/kubbisec-naus-local.extension.js +54 -58
- package/bundled/extensions/kubbisec-naus-local.extension.js.map +1 -1
- package/bundled/extensions/kubbisec-platform-tools.extension.d.ts.map +1 -1
- package/bundled/extensions/kubbisec-platform-tools.extension.js +57 -16
- package/bundled/extensions/kubbisec-platform-tools.extension.js.map +1 -1
- package/bundled/extensions/kubbisec-skill-mentions.extension.d.ts +1 -0
- package/bundled/extensions/kubbisec-skill-mentions.extension.d.ts.map +1 -1
- package/bundled/extensions/kubbisec-skill-mentions.extension.js +24 -8
- package/bundled/extensions/kubbisec-skill-mentions.extension.js.map +1 -1
- package/bundled/extensions/kubbisec-theme-lock.extension.d.ts +6 -0
- package/bundled/extensions/kubbisec-theme-lock.extension.d.ts.map +1 -0
- package/bundled/extensions/kubbisec-theme-lock.extension.js +43 -0
- package/bundled/extensions/kubbisec-theme-lock.extension.js.map +1 -0
- package/bundled/extensions/kubbisec-ui.extension.d.ts +1 -1
- package/bundled/extensions/kubbisec-ui.extension.d.ts.map +1 -1
- package/bundled/extensions/kubbisec-ui.extension.js +98 -82
- package/bundled/extensions/kubbisec-ui.extension.js.map +1 -1
- package/bundled/extensions/kubbisec-workflow.extension.d.ts.map +1 -1
- package/bundled/extensions/kubbisec-workflow.extension.js +31 -21
- package/bundled/extensions/kubbisec-workflow.extension.js.map +1 -1
- package/bundled/skills/aspm-platform/SKILL.md +55 -25
- package/bundled/skills/at-path-mentions.d.ts +7 -0
- package/bundled/skills/at-path-mentions.d.ts.map +1 -0
- package/bundled/skills/at-path-mentions.js +186 -0
- package/bundled/skills/at-path-mentions.js.map +1 -0
- package/bundled/skills/at-path-mentions.test.ts +64 -0
- package/bundled/skills/at-path-mentions.ts +211 -0
- package/bundled/skills/chat-mention-render.d.ts.map +1 -1
- package/bundled/skills/chat-mention-render.js +69 -31
- package/bundled/skills/chat-mention-render.js.map +1 -1
- package/bundled/skills/chat-mention-render.test.ts +24 -1
- package/bundled/skills/chat-mention-render.ts +87 -34
- package/bundled/skills/chat-mentions.d.ts +3 -2
- package/bundled/skills/chat-mentions.d.ts.map +1 -1
- package/bundled/skills/chat-mentions.js +9 -3
- package/bundled/skills/chat-mentions.js.map +1 -1
- package/bundled/skills/chat-mentions.test.ts +12 -5
- package/bundled/skills/chat-mentions.ts +12 -3
- package/bundled/skills/naus-pipelines/SKILL.md +111 -16
- package/bundled/skills/sec-clarify/SKILL.md +8 -23
- package/bundled/skills/sec-using-skills/SKILL.md +2 -0
- package/bundled/theme/clear-terminal.d.ts +3 -0
- package/bundled/theme/clear-terminal.d.ts.map +1 -0
- package/bundled/theme/clear-terminal.js +7 -0
- package/bundled/theme/clear-terminal.js.map +1 -0
- package/bundled/theme/footer-render-hook.d.ts +3 -0
- package/bundled/theme/footer-render-hook.d.ts.map +1 -0
- package/bundled/theme/footer-render-hook.js +8 -0
- package/bundled/theme/footer-render-hook.js.map +1 -0
- package/bundled/theme/kubbisec-brand-fg.d.ts +4 -0
- package/bundled/theme/kubbisec-brand-fg.d.ts.map +1 -0
- package/bundled/theme/kubbisec-brand-fg.js +7 -0
- package/bundled/theme/kubbisec-brand-fg.js.map +1 -0
- package/bundled/theme/kubbisec-menu-themes.d.ts +16 -0
- package/bundled/theme/kubbisec-menu-themes.d.ts.map +1 -0
- package/bundled/theme/kubbisec-menu-themes.js +47 -0
- package/bundled/theme/kubbisec-menu-themes.js.map +1 -0
- package/bundled/theme/kubbisec-theme-name.d.ts +2 -0
- package/bundled/theme/kubbisec-theme-name.d.ts.map +1 -0
- package/bundled/theme/kubbisec-theme-name.js +2 -0
- package/bundled/theme/kubbisec-theme-name.js.map +1 -0
- package/bundled/theme/patch-pi-settings-theme.runtime.d.ts +3 -0
- package/bundled/theme/patch-pi-settings-theme.runtime.d.ts.map +1 -0
- package/bundled/theme/patch-pi-settings-theme.runtime.js +16 -0
- package/bundled/theme/patch-pi-settings-theme.runtime.js.map +1 -0
- package/bundled/theme/render-compact-header.d.ts +21 -0
- package/bundled/theme/render-compact-header.d.ts.map +1 -0
- package/bundled/theme/render-compact-header.js +198 -0
- package/bundled/theme/render-compact-header.js.map +1 -0
- package/package.json +1 -1
|
@@ -12,32 +12,23 @@ metadata:
|
|
|
12
12
|
|
|
13
13
|
**Announce briefly:** `A recolher escopo antes de alterações.`
|
|
14
14
|
|
|
15
|
-
## Primary mechanism
|
|
15
|
+
## Primary mechanism
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
KubbiSec **auto-asks** the next scope question in the panel above the editor when the gate is active. You may still use the **`questionnaire` tool** to `record` prose scope or `complete` when sufficient.
|
|
18
18
|
|
|
19
19
|
| Action | When |
|
|
20
20
|
|--------|------|
|
|
21
21
|
| `status` | Check missing fields + scenario hints |
|
|
22
|
-
| `ask` | One contextual question (you provide or reuse hints) |
|
|
23
22
|
| `record` | User already gave scope in prose — persist fields |
|
|
24
23
|
| `complete` | Scope is sufficient — unblock mutations |
|
|
24
|
+
| `ask` | Rare — auto-ask already queues questions; use only for custom copy |
|
|
25
25
|
|
|
26
|
-
|
|
26
|
+
## Panel UX
|
|
27
27
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
"action": "ask",
|
|
33
|
-
"scenario": "remediation",
|
|
34
|
-
"field": "severityMin",
|
|
35
|
-
"question": "Qual severidade mínima entra no escopo desta remediação?",
|
|
36
|
-
"options": ["CRITICAL", "HIGH", "MEDIUM", "Todas"]
|
|
37
|
-
}
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
If you omit copy, the tool suggests field hints for the scenario — still **adapt** wording to the user.
|
|
28
|
+
- Up to **3 options (A–C)** plus **D) Outro**; user can also type free text below.
|
|
29
|
+
- **Space** toggles selection (multi when relevant, e.g. severity).
|
|
30
|
+
- **Enter** confirms a panel selection; typed text submits as custom answer.
|
|
31
|
+
- **Never** repeat option lists in chat or say "painel acima" unless the panel is actually showing.
|
|
41
32
|
|
|
42
33
|
## When to use
|
|
43
34
|
|
|
@@ -51,12 +42,6 @@ If you omit copy, the tool suggests field hints for the scenario — still **ada
|
|
|
51
42
|
- `KUBBISEC_SKIP_CLARIFY=1`
|
|
52
43
|
- Headless `kbs fix` / `watch`
|
|
53
44
|
|
|
54
|
-
## UX rules
|
|
55
|
-
|
|
56
|
-
- KubbiSec renders A–E in the **questionnaire panel** — do not repeat the full list in chat.
|
|
57
|
-
- One question per turn; wait for A–E or free text.
|
|
58
|
-
- **Never** mention internal paths, `.kbs`, or JSON files.
|
|
59
|
-
|
|
60
45
|
## Common scope fields
|
|
61
46
|
|
|
62
47
|
- `projectIds`, `severityMin`, `remediationMode` (remediation)
|
|
@@ -36,6 +36,8 @@ If a **sec-*** workflow skill might apply, invoke it **before** domain skills or
|
|
|
36
36
|
| Claim "done", "tests pass", open PR | `sec-verify` | — | skip verify |
|
|
37
37
|
| Failed remediation / flaky test / regression | `sec-debug` | `remediation` (CVE-scoped) | `sec-plan` |
|
|
38
38
|
| NAUS pipeline YAML | `naus-pipelines` | `sec-review` if auth/secrets touched | — |
|
|
39
|
+
| `naus` CLI (validate/plan/run/register) | `naus-pipelines` | — | invent flags without `naus_pipeline_docs` |
|
|
40
|
+
| `aspm` CLI (scan/upload/doctor) | `aspm-platform` | one `scanner-*` if single tool | invent flags without `aspm_docs` |
|
|
39
41
|
| CVE minimal patch | `remediation` | `sec-verify` on exit | `sec-brainstorm` |
|
|
40
42
|
| ASPM API / findings | `aspm-platform` | — | — |
|
|
41
43
|
| Local GitHub clone/status | `github-local` | — | — |
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clear-terminal.d.ts","sourceRoot":"","sources":["../../src/theme/clear-terminal.ts"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,wBAAgB,aAAa,IAAI,IAAI,CAGpC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clear-terminal.js","sourceRoot":"","sources":["../../src/theme/clear-terminal.ts"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,MAAM,UAAU,aAAa;IAC3B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK;QAAE,OAAO;IAClC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;AAC/C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"footer-render-hook.d.ts","sourceRoot":"","sources":["../../src/theme/footer-render-hook.ts"],"names":[],"mappings":"AAEA,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,GAAG,IAAI,CAEtF;AAED,wBAAgB,2BAA2B,IAAI,IAAI,CAElD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"footer-render-hook.js","sourceRoot":"","sources":["../../src/theme/footer-render-hook.ts"],"names":[],"mappings":"AAAA,IAAI,aAAuC,CAAC;AAE5C,MAAM,UAAU,8BAA8B,CAAC,OAAiC;IAC/E,aAAa,GAAG,OAAO,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,2BAA2B;IAC1C,aAAa,EAAE,EAAE,CAAC;AACnB,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
/** Brand cyan #28DCF9 — kubbisec.json `accent`, footer branch, hex `mark.ansi`. */
|
|
2
|
+
export declare const KUBBISEC_BRAND_CYAN_ANSI = "\u001B[38;2;40;220;249m";
|
|
3
|
+
export declare function kubbisecBrandFg(text: string): string;
|
|
4
|
+
//# sourceMappingURL=kubbisec-brand-fg.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kubbisec-brand-fg.d.ts","sourceRoot":"","sources":["../../src/theme/kubbisec-brand-fg.ts"],"names":[],"mappings":"AAAA,mFAAmF;AACnF,eAAO,MAAM,wBAAwB,4BAA0B,CAAC;AAGhE,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEpD"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/** Brand cyan #28DCF9 — kubbisec.json `accent`, footer branch, hex `mark.ansi`. */
|
|
2
|
+
export const KUBBISEC_BRAND_CYAN_ANSI = "\x1b[38;2;40;220;249m";
|
|
3
|
+
const ANSI_RESET = "\x1b[0m";
|
|
4
|
+
export function kubbisecBrandFg(text) {
|
|
5
|
+
return `${KUBBISEC_BRAND_CYAN_ANSI}${text}${ANSI_RESET}`;
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=kubbisec-brand-fg.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kubbisec-brand-fg.js","sourceRoot":"","sources":["../../src/theme/kubbisec-brand-fg.ts"],"names":[],"mappings":"AAAA,mFAAmF;AACnF,MAAM,CAAC,MAAM,wBAAwB,GAAG,uBAAuB,CAAC;AAChE,MAAM,UAAU,GAAG,SAAS,CAAC;AAE7B,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,OAAO,GAAG,wBAAwB,GAAG,IAAI,GAAG,UAAU,EAAE,CAAC;AAC3D,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { EditorTheme } from "@earendil-works/pi-tui";
|
|
2
|
+
declare function dimText(text: string): string;
|
|
3
|
+
/** `/settings` list — current value column and cursor use brand cyan (#28DCF9). */
|
|
4
|
+
export declare function buildKubbisecSettingsListTheme(): {
|
|
5
|
+
label: (text: string, selected: boolean) => string;
|
|
6
|
+
value: (text: string, _selected: boolean) => string;
|
|
7
|
+
description: typeof dimText;
|
|
8
|
+
cursor: string;
|
|
9
|
+
hint: typeof dimText;
|
|
10
|
+
};
|
|
11
|
+
/** Map Pi `accent` role to exact brand RGB (footer branch, header). */
|
|
12
|
+
export declare function patchGlobalThemeAccent(): void;
|
|
13
|
+
/** Slash-command autocomplete inside the editor — selected row uses brand cyan (#28DCF9). */
|
|
14
|
+
export declare function withKubbisecSelectListTheme(theme: EditorTheme): EditorTheme;
|
|
15
|
+
export {};
|
|
16
|
+
//# sourceMappingURL=kubbisec-menu-themes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kubbisec-menu-themes.d.ts","sourceRoot":"","sources":["../../src/theme/kubbisec-menu-themes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAgB1D,iBAAS,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAGrC;AAED,mFAAmF;AACnF,wBAAgB,8BAA8B;kBAE9B,MAAM,YAAY,OAAO;kBACzB,MAAM,aAAa,OAAO;;;;EAKzC;AAED,uEAAuE;AACvE,wBAAgB,sBAAsB,IAAI,IAAI,CAU7C;AAED,6FAA6F;AAC7F,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,WAAW,GAAG,WAAW,CAW3E"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { kubbisecBrandFg } from "./kubbisec-brand-fg.js";
|
|
2
|
+
const brand = (text) => kubbisecBrandFg(text);
|
|
3
|
+
const PI_THEME_KEY = Symbol.for("@earendil-works/pi-coding-agent:theme");
|
|
4
|
+
function getPiThemeInstance() {
|
|
5
|
+
return globalThis[PI_THEME_KEY];
|
|
6
|
+
}
|
|
7
|
+
function dimText(text) {
|
|
8
|
+
const instance = getPiThemeInstance();
|
|
9
|
+
return instance ? instance.fg("dim", text) : text;
|
|
10
|
+
}
|
|
11
|
+
/** `/settings` list — current value column and cursor use brand cyan (#28DCF9). */
|
|
12
|
+
export function buildKubbisecSettingsListTheme() {
|
|
13
|
+
return {
|
|
14
|
+
label: (text, selected) => (selected ? brand(text) : text),
|
|
15
|
+
value: (text, _selected) => brand(text),
|
|
16
|
+
description: dimText,
|
|
17
|
+
cursor: brand("→ "),
|
|
18
|
+
hint: dimText,
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
/** Map Pi `accent` role to exact brand RGB (footer branch, header). */
|
|
22
|
+
export function patchGlobalThemeAccent() {
|
|
23
|
+
const instance = getPiThemeInstance();
|
|
24
|
+
if (!instance || instance.__kubbisecMenuPatched)
|
|
25
|
+
return;
|
|
26
|
+
const originalFg = instance.fg.bind(instance);
|
|
27
|
+
instance.fg = (role, text) => {
|
|
28
|
+
if (role === "accent")
|
|
29
|
+
return brand(text);
|
|
30
|
+
return originalFg(role, text);
|
|
31
|
+
};
|
|
32
|
+
instance.__kubbisecMenuPatched = true;
|
|
33
|
+
}
|
|
34
|
+
/** Slash-command autocomplete inside the editor — selected row uses brand cyan (#28DCF9). */
|
|
35
|
+
export function withKubbisecSelectListTheme(theme) {
|
|
36
|
+
return {
|
|
37
|
+
...theme,
|
|
38
|
+
selectList: {
|
|
39
|
+
selectedPrefix: brand,
|
|
40
|
+
selectedText: brand,
|
|
41
|
+
description: theme.selectList.description,
|
|
42
|
+
scrollInfo: theme.selectList.scrollInfo,
|
|
43
|
+
noMatch: theme.selectList.noMatch,
|
|
44
|
+
},
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=kubbisec-menu-themes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kubbisec-menu-themes.js","sourceRoot":"","sources":["../../src/theme/kubbisec-menu-themes.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,MAAM,KAAK,GAAG,CAAC,IAAY,EAAU,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AAE9D,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;AAOzE,SAAS,kBAAkB;IAC1B,OAAQ,UAA0D,CAAC,YAAY,CAAC,CAAC;AAClF,CAAC;AAED,SAAS,OAAO,CAAC,IAAY;IAC5B,MAAM,QAAQ,GAAG,kBAAkB,EAAE,CAAC;IACtC,OAAO,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACnD,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,8BAA8B;IAC7C,OAAO;QACN,KAAK,EAAE,CAAC,IAAY,EAAE,QAAiB,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC3E,KAAK,EAAE,CAAC,IAAY,EAAE,SAAkB,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;QACxD,WAAW,EAAE,OAAO;QACpB,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC;QACnB,IAAI,EAAE,OAAO;KACb,CAAC;AACH,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,sBAAsB;IACrC,MAAM,QAAQ,GAAG,kBAAkB,EAAE,CAAC;IACtC,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,qBAAqB;QAAE,OAAO;IAExD,MAAM,UAAU,GAAG,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC9C,QAAQ,CAAC,EAAE,GAAG,CAAC,IAAY,EAAE,IAAY,EAAE,EAAE;QAC5C,IAAI,IAAI,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC;QAC1C,OAAO,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC/B,CAAC,CAAC;IACF,QAAQ,CAAC,qBAAqB,GAAG,IAAI,CAAC;AACvC,CAAC;AAED,6FAA6F;AAC7F,MAAM,UAAU,2BAA2B,CAAC,KAAkB;IAC7D,OAAO;QACN,GAAG,KAAK;QACR,UAAU,EAAE;YACX,cAAc,EAAE,KAAK;YACrB,YAAY,EAAE,KAAK;YACnB,WAAW,EAAE,KAAK,CAAC,UAAU,CAAC,WAAW;YACzC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,UAAU;YACvC,OAAO,EAAE,KAAK,CAAC,UAAU,CAAC,OAAO;SACjC;KACD,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kubbisec-theme-name.d.ts","sourceRoot":"","sources":["../../src/theme/kubbisec-theme-name.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,mBAAmB,aAAa,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kubbisec-theme-name.js","sourceRoot":"","sources":["../../src/theme/kubbisec-theme-name.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,mBAAmB,GAAG,UAAU,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"patch-pi-settings-theme.runtime.d.ts","sourceRoot":"","sources":["../../src/theme/patch-pi-settings-theme.runtime.ts"],"names":[],"mappings":"AAIA,+FAA+F;AAC/F,wBAAsB,wBAAwB,IAAI,OAAO,CAAC,IAAI,CAAC,CAa9D"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { createRequire } from "node:module";
|
|
2
|
+
import { pathToFileURL } from "node:url";
|
|
3
|
+
import { buildKubbisecSettingsListTheme } from "./kubbisec-menu-themes.js";
|
|
4
|
+
/** Runtime patch for Pi `/settings` current-value column (deep import via require.resolve). */
|
|
5
|
+
export async function patchPiSettingsListTheme() {
|
|
6
|
+
try {
|
|
7
|
+
const require = createRequire(import.meta.url);
|
|
8
|
+
const themePath = require.resolve("@earendil-works/pi-coding-agent/dist/modes/interactive/theme/theme.js");
|
|
9
|
+
const themeMod = (await import(pathToFileURL(themePath).href));
|
|
10
|
+
themeMod.getSettingsListTheme = buildKubbisecSettingsListTheme;
|
|
11
|
+
}
|
|
12
|
+
catch {
|
|
13
|
+
// Pi bundle layout differs — accent patch still applies to selected rows.
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=patch-pi-settings-theme.runtime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"patch-pi-settings-theme.runtime.js","sourceRoot":"","sources":["../../src/theme/patch-pi-settings-theme.runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,8BAA8B,EAAE,MAAM,2BAA2B,CAAC;AAE3E,+FAA+F;AAC/F,MAAM,CAAC,KAAK,UAAU,wBAAwB;IAC7C,IAAI,CAAC;QACJ,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC/C,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAChC,uEAAuE,CACvE,CAAC;QACF,MAAM,QAAQ,GAAG,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAE5D,CAAC;QACF,QAAQ,CAAC,oBAAoB,GAAG,8BAA8B,CAAC;IAChE,CAAC;IAAC,MAAM,CAAC;QACR,0EAA0E;IAC3E,CAAC;AACF,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export type CompactHeaderTheme = {
|
|
2
|
+
fg: (role: string, text: string) => string;
|
|
3
|
+
bold: (text: string) => string;
|
|
4
|
+
};
|
|
5
|
+
/** Works from `dist/theme/` and from materialized `<cwd>/.pi/theme/`. */
|
|
6
|
+
export declare function resolveTerminalAssetsDir(moduleUrl?: string): string;
|
|
7
|
+
export declare function stripAnsi(value: string): string;
|
|
8
|
+
export declare function visibleWidth(text: string): number;
|
|
9
|
+
export declare function centerLine(text: string, width: number): string;
|
|
10
|
+
/** Center a multi-line ANSI block with uniform left padding (preserves row alignment). */
|
|
11
|
+
export declare function centerLinesAsBlock(lines: string[], width: number): string[];
|
|
12
|
+
/** Remove inline "K U B B I S E C" suffix from generated logo rows. */
|
|
13
|
+
export declare function stripEmbeddedWordmark(line: string): string;
|
|
14
|
+
/** Hints row with brand cyan on `@skill` and dim example + commands. */
|
|
15
|
+
export declare function renderHeaderHintsLine(theme: CompactHeaderTheme): string;
|
|
16
|
+
/** Single-line brand row: mark + wordmark + version + subtitle. */
|
|
17
|
+
export declare function renderCompactHeaderLine(theme: CompactHeaderTheme, version: string): string;
|
|
18
|
+
/** Default chat chrome: hex block, wordmark, version, spacer, subtitle, hints. */
|
|
19
|
+
export declare function renderCompactHeaderLines(theme: CompactHeaderTheme, version: string, width?: number): string[];
|
|
20
|
+
export declare function renderChatHeaderLines(theme: CompactHeaderTheme, version: string, width: number): string[];
|
|
21
|
+
//# sourceMappingURL=render-compact-header.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render-compact-header.d.ts","sourceRoot":"","sources":["../../src/theme/render-compact-header.ts"],"names":[],"mappings":"AAWA,MAAM,MAAM,kBAAkB,GAAG;IAC/B,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAC3C,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;CAChC,CAAC;AAKF,yEAAyE;AACzE,wBAAgB,wBAAwB,CAAC,SAAS,SAAkB,GAAG,MAAM,CAY5E;AAgBD,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAM9D;AAMD,0FAA0F;AAC1F,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAM3E;AAED,uEAAuE;AACvE,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAsB1D;AA8CD,wEAAwE;AACxE,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,kBAAkB,GAAG,MAAM,CAQvE;AAoCD,mEAAmE;AACnE,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAI1F;AAiBD,kFAAkF;AAClF,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,kBAAkB,EACzB,OAAO,EAAE,MAAM,EACf,KAAK,SAAK,GACT,MAAM,EAAE,CAqBV;AAED,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,kBAAkB,EACzB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,GACZ,MAAM,EAAE,CAKV"}
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
import * as fs from "node:fs";
|
|
2
|
+
import * as path from "node:path";
|
|
3
|
+
import { fileURLToPath } from "node:url";
|
|
4
|
+
import { KUBBISEC_HEADER_HINTS_COMMANDS, KUBBISEC_HEADER_HINTS_SKILL, KUBBISEC_SUBTITLE_LINE, KUBBISEC_WORDMARK, } from "../copy/kubbisec-shell-copy.js";
|
|
5
|
+
import { kubbisecBrandFg } from "./kubbisec-brand-fg.js";
|
|
6
|
+
const FALLBACK_MARK = "◆";
|
|
7
|
+
const EMBEDDED_WORDMARK = /\s+K\s+U\s+B\s+B\s+I\s+S\s+E\s+C\s*$/i;
|
|
8
|
+
/** Works from `dist/theme/` and from materialized `<cwd>/.pi/theme/`. */
|
|
9
|
+
export function resolveTerminalAssetsDir(moduleUrl = import.meta.url) {
|
|
10
|
+
const here = path.dirname(fileURLToPath(moduleUrl));
|
|
11
|
+
const candidates = [
|
|
12
|
+
path.join(here, "../assets/terminal"),
|
|
13
|
+
path.join(here, "../../assets/terminal"),
|
|
14
|
+
];
|
|
15
|
+
for (const candidate of candidates) {
|
|
16
|
+
if (fs.existsSync(candidate)) {
|
|
17
|
+
return candidate;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
return candidates[0];
|
|
21
|
+
}
|
|
22
|
+
function readAnsiFile(name) {
|
|
23
|
+
const file = path.join(resolveTerminalAssetsDir(), name);
|
|
24
|
+
if (!fs.existsSync(file))
|
|
25
|
+
return null;
|
|
26
|
+
return fs
|
|
27
|
+
.readFileSync(file, "utf8")
|
|
28
|
+
.split("\n")
|
|
29
|
+
.map((l) => l.replace(/\r$/, ""))
|
|
30
|
+
.filter((l) => l.length > 0);
|
|
31
|
+
}
|
|
32
|
+
function isVerboseBrand() {
|
|
33
|
+
return process.env.KUBBISEC_TUI_VERBOSE === "1";
|
|
34
|
+
}
|
|
35
|
+
export function stripAnsi(value) {
|
|
36
|
+
return value.replace(/\x1b\[[0-9;]*m/g, "");
|
|
37
|
+
}
|
|
38
|
+
export function visibleWidth(text) {
|
|
39
|
+
return stripAnsi(text).length;
|
|
40
|
+
}
|
|
41
|
+
export function centerLine(text, width) {
|
|
42
|
+
if (width <= 0)
|
|
43
|
+
return text;
|
|
44
|
+
const lineWidth = visibleWidth(text);
|
|
45
|
+
if (lineWidth >= width)
|
|
46
|
+
return text;
|
|
47
|
+
const pad = Math.floor((width - lineWidth) / 2);
|
|
48
|
+
return `${" ".repeat(pad)}${text}`;
|
|
49
|
+
}
|
|
50
|
+
function centerLines(lines, width) {
|
|
51
|
+
return lines.map((line) => centerLine(line, width));
|
|
52
|
+
}
|
|
53
|
+
/** Center a multi-line ANSI block with uniform left padding (preserves row alignment). */
|
|
54
|
+
export function centerLinesAsBlock(lines, width) {
|
|
55
|
+
if (lines.length === 0)
|
|
56
|
+
return [];
|
|
57
|
+
const blockWidth = Math.max(...lines.map(visibleWidth));
|
|
58
|
+
const pad = width > blockWidth ? Math.floor((width - blockWidth) / 2) : 0;
|
|
59
|
+
const prefix = " ".repeat(pad);
|
|
60
|
+
return lines.map((line) => `${prefix}${line}`);
|
|
61
|
+
}
|
|
62
|
+
/** Remove inline "K U B B I S E C" suffix from generated logo rows. */
|
|
63
|
+
export function stripEmbeddedWordmark(line) {
|
|
64
|
+
const plain = stripAnsi(line);
|
|
65
|
+
const match = plain.match(EMBEDDED_WORDMARK);
|
|
66
|
+
if (!match || match.index === undefined)
|
|
67
|
+
return line.trimEnd();
|
|
68
|
+
const cutPlainLen = match.index;
|
|
69
|
+
let visible = 0;
|
|
70
|
+
let i = 0;
|
|
71
|
+
let out = "";
|
|
72
|
+
while (i < line.length && visible < cutPlainLen) {
|
|
73
|
+
if (line[i] === "\x1b") {
|
|
74
|
+
const end = line.indexOf("m", i);
|
|
75
|
+
if (end === -1)
|
|
76
|
+
break;
|
|
77
|
+
out += line.slice(i, end + 1);
|
|
78
|
+
i = end + 1;
|
|
79
|
+
continue;
|
|
80
|
+
}
|
|
81
|
+
out += line[i];
|
|
82
|
+
visible += 1;
|
|
83
|
+
i += 1;
|
|
84
|
+
}
|
|
85
|
+
return out.trimEnd();
|
|
86
|
+
}
|
|
87
|
+
function symbolOnlyLines(logo) {
|
|
88
|
+
return logo.map((line) => stripEmbeddedWordmark(line)).filter((line) => stripAnsi(line).length > 0);
|
|
89
|
+
}
|
|
90
|
+
/** Read once at module load — avoids sync I/O on every TUI frame. */
|
|
91
|
+
const CACHED_MARK_LINES = readAnsiFile("mark.ansi") ?? [];
|
|
92
|
+
const CACHED_WORDMARK_INLINE = readAnsiFile("wordmark-inline.ansi");
|
|
93
|
+
/** Pi TUI widgets do not render iTerm 1337 inline PNGs — opt-in only. */
|
|
94
|
+
function isInlineWordmarkEnabled() {
|
|
95
|
+
return process.env.KUBBISEC_TUI_INLINE_IMAGES === "1";
|
|
96
|
+
}
|
|
97
|
+
/** Brand cyan — same RGB as footer branch (`#28DCF9`). */
|
|
98
|
+
function brandText(_theme, text) {
|
|
99
|
+
return kubbisecBrandFg(text);
|
|
100
|
+
}
|
|
101
|
+
function renderSpacedWordmarkFallback(theme) {
|
|
102
|
+
return brandText(theme, KUBBISEC_WORDMARK.split("").join(" "));
|
|
103
|
+
}
|
|
104
|
+
/** Centered hex mark only — never inline logotipo with embedded wordmark. */
|
|
105
|
+
function loadSymbolBlock(verbose) {
|
|
106
|
+
if (verbose) {
|
|
107
|
+
for (const name of ["logotipo-wide-fallback.ansi", "mark.ansi"]) {
|
|
108
|
+
const logo = readAnsiFile(name);
|
|
109
|
+
if (logo?.length)
|
|
110
|
+
return symbolOnlyLines(logo);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
const mark = readAnsiFile("mark.ansi");
|
|
114
|
+
if (mark?.length)
|
|
115
|
+
return mark;
|
|
116
|
+
return null;
|
|
117
|
+
}
|
|
118
|
+
function renderWordmarkLine(theme, width) {
|
|
119
|
+
return centerLine(theme.bold(theme.fg("accent", KUBBISEC_WORDMARK)), width);
|
|
120
|
+
}
|
|
121
|
+
function renderVersionLine(theme, version) {
|
|
122
|
+
return theme.fg("dim", `v${version}`);
|
|
123
|
+
}
|
|
124
|
+
/** Hints row with brand cyan on `@skill` and dim example + commands. */
|
|
125
|
+
export function renderHeaderHintsLine(theme) {
|
|
126
|
+
const [skillToken, ...exampleParts] = KUBBISEC_HEADER_HINTS_SKILL.split(/\s+/);
|
|
127
|
+
const example = exampleParts.join(" ");
|
|
128
|
+
const skill = brandText(theme, skillToken ?? "@skill");
|
|
129
|
+
const exampleLabel = example ? theme.fg("dim", ` ${example}`) : "";
|
|
130
|
+
const separator = theme.fg("dim", " · ");
|
|
131
|
+
const commands = theme.fg("dim", KUBBISEC_HEADER_HINTS_COMMANDS);
|
|
132
|
+
return `${skill}${exampleLabel}${separator}${commands}`;
|
|
133
|
+
}
|
|
134
|
+
function appendSubtitleAndHints(theme, lines, width) {
|
|
135
|
+
return [
|
|
136
|
+
...lines,
|
|
137
|
+
centerLine(brandText(theme, KUBBISEC_SUBTITLE_LINE), width),
|
|
138
|
+
centerLine(renderHeaderHintsLine(theme), width),
|
|
139
|
+
];
|
|
140
|
+
}
|
|
141
|
+
function renderStackedBrandBlock(theme, version, width, verbose) {
|
|
142
|
+
const symbol = loadSymbolBlock(verbose);
|
|
143
|
+
const lines = [];
|
|
144
|
+
if (symbol?.length) {
|
|
145
|
+
lines.push(...centerLinesAsBlock(symbol, width));
|
|
146
|
+
}
|
|
147
|
+
else {
|
|
148
|
+
lines.push(centerLine(theme.fg("accent", FALLBACK_MARK), width));
|
|
149
|
+
}
|
|
150
|
+
lines.push("");
|
|
151
|
+
lines.push(renderWordmarkLine(theme, width));
|
|
152
|
+
lines.push(centerLine(renderVersionLine(theme, version), width));
|
|
153
|
+
lines.push("");
|
|
154
|
+
return appendSubtitleAndHints(theme, lines, width);
|
|
155
|
+
}
|
|
156
|
+
/** Single-line brand row: mark + wordmark + version + subtitle. */
|
|
157
|
+
export function renderCompactHeaderLine(theme, version) {
|
|
158
|
+
const mark = theme.fg("accent", FALLBACK_MARK);
|
|
159
|
+
const subtitle = theme.fg("dim", ` · ${KUBBISEC_SUBTITLE_LINE}`);
|
|
160
|
+
return `${mark} ${theme.bold(theme.fg("accent", KUBBISEC_WORDMARK))} ${renderVersionLine(theme, version)}${subtitle}`;
|
|
161
|
+
}
|
|
162
|
+
function renderWordmarkBlock(theme, version, width) {
|
|
163
|
+
const wordmark = isInlineWordmarkEnabled() && CACHED_WORDMARK_INLINE?.[0]
|
|
164
|
+
? CACHED_WORDMARK_INLINE[0]
|
|
165
|
+
: renderSpacedWordmarkFallback(theme);
|
|
166
|
+
return [
|
|
167
|
+
centerLine(wordmark, width),
|
|
168
|
+
centerLine(renderVersionLine(theme, version), width),
|
|
169
|
+
];
|
|
170
|
+
}
|
|
171
|
+
/** Default chat chrome: hex block, wordmark, version, spacer, subtitle, hints. */
|
|
172
|
+
export function renderCompactHeaderLines(theme, version, width = 80) {
|
|
173
|
+
const hintsLine = centerLine(renderHeaderHintsLine(theme), width);
|
|
174
|
+
const subtitleLine = centerLine(brandText(theme, KUBBISEC_SUBTITLE_LINE), width);
|
|
175
|
+
if (CACHED_MARK_LINES.length === 0) {
|
|
176
|
+
return [
|
|
177
|
+
centerLine(renderCompactHeaderLine(theme, version), width),
|
|
178
|
+
"",
|
|
179
|
+
subtitleLine,
|
|
180
|
+
hintsLine,
|
|
181
|
+
];
|
|
182
|
+
}
|
|
183
|
+
return [
|
|
184
|
+
...centerLinesAsBlock(CACHED_MARK_LINES, width),
|
|
185
|
+
"",
|
|
186
|
+
...renderWordmarkBlock(theme, version, width),
|
|
187
|
+
"",
|
|
188
|
+
subtitleLine,
|
|
189
|
+
hintsLine,
|
|
190
|
+
];
|
|
191
|
+
}
|
|
192
|
+
export function renderChatHeaderLines(theme, version, width) {
|
|
193
|
+
if (isVerboseBrand()) {
|
|
194
|
+
return renderStackedBrandBlock(theme, version, width, true);
|
|
195
|
+
}
|
|
196
|
+
return renderCompactHeaderLines(theme, version, width);
|
|
197
|
+
}
|
|
198
|
+
//# sourceMappingURL=render-compact-header.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render-compact-header.js","sourceRoot":"","sources":["../../src/theme/render-compact-header.ts"],"names":[],"mappings":"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"}
|