@kubbisec/ai-linux-arm64 0.1.7 → 0.1.9
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/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 +61 -0
- package/bundled/config/llm-config.d.ts.map +1 -0
- package/bundled/config/llm-config.js +225 -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 +142 -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 +12 -0
- package/bundled/config/register-kubbisec-llm-provider.d.ts.map +1 -0
- package/bundled/config/register-kubbisec-llm-provider.js +47 -0
- package/bundled/config/register-kubbisec-llm-provider.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.map +1 -1
- package/bundled/extensions/kubbisec-brand.extension.js +7 -59
- 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 +21 -0
- package/bundled/extensions/kubbisec-footer.extension.d.ts.map +1 -1
- package/bundled/extensions/kubbisec-footer.extension.js +121 -66
- 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 +207 -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 +40 -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 +97 -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/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/render-compact-header.d.ts +16 -0
- package/bundled/theme/render-compact-header.d.ts.map +1 -0
- package/bundled/theme/render-compact-header.js +132 -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":"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,16 @@
|
|
|
1
|
+
export type CompactHeaderTheme = {
|
|
2
|
+
fg: (role: string, text: string) => string;
|
|
3
|
+
bold: (text: string) => string;
|
|
4
|
+
};
|
|
5
|
+
export declare function stripAnsi(value: string): string;
|
|
6
|
+
export declare function visibleWidth(text: string): number;
|
|
7
|
+
export declare function centerLine(text: string, width: number): string;
|
|
8
|
+
/** Remove inline "K U B B I S E C" suffix from generated logo rows. */
|
|
9
|
+
export declare function stripEmbeddedWordmark(line: string): string;
|
|
10
|
+
/** Hints row with accent on `@skill` and dim example + commands. */
|
|
11
|
+
export declare function renderHeaderHintsLine(theme: CompactHeaderTheme): string;
|
|
12
|
+
/** Fallback single-line wordmark when logo assets are unavailable. */
|
|
13
|
+
export declare function renderCompactHeaderLine(theme: CompactHeaderTheme, version: string): string;
|
|
14
|
+
export declare function renderCompactHeaderLines(theme: CompactHeaderTheme, version: string, width?: number): string[];
|
|
15
|
+
export declare function renderChatHeaderLines(theme: CompactHeaderTheme, version: string, width: number): string[];
|
|
16
|
+
//# 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":"AAUA,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;AAuBF,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,uEAAuE;AACvE,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAsB1D;AA4BD,oEAAoE;AACpE,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,kBAAkB,GAAG,MAAM,CAQvE;AAoCD,sEAAsE;AACtE,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAG1F;AAED,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,kBAAkB,EACzB,OAAO,EAAE,MAAM,EACf,KAAK,SAAK,GACT,MAAM,EAAE,CAEV;AAED,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,kBAAkB,EACzB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,GACZ,MAAM,EAAE,CAEV"}
|
|
@@ -0,0 +1,132 @@
|
|
|
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
|
+
const FALLBACK_MARK = "◆";
|
|
6
|
+
const EMBEDDED_WORDMARK = /\s+K\s+U\s+B\s+B\s+I\s+S\s+E\s+C\s*$/i;
|
|
7
|
+
function terminalAssetsDir() {
|
|
8
|
+
return path.join(path.dirname(fileURLToPath(import.meta.url)), "../../assets/terminal");
|
|
9
|
+
}
|
|
10
|
+
function readAnsiFile(name) {
|
|
11
|
+
const file = path.join(terminalAssetsDir(), name);
|
|
12
|
+
if (!fs.existsSync(file))
|
|
13
|
+
return null;
|
|
14
|
+
return fs
|
|
15
|
+
.readFileSync(file, "utf8")
|
|
16
|
+
.split("\n")
|
|
17
|
+
.map((l) => l.replace(/\r$/, ""))
|
|
18
|
+
.filter((l) => l.length > 0);
|
|
19
|
+
}
|
|
20
|
+
function isVerboseBrand() {
|
|
21
|
+
return process.env.KUBBISEC_TUI_VERBOSE === "1";
|
|
22
|
+
}
|
|
23
|
+
export function stripAnsi(value) {
|
|
24
|
+
return value.replace(/\x1b\[[0-9;]*m/g, "");
|
|
25
|
+
}
|
|
26
|
+
export function visibleWidth(text) {
|
|
27
|
+
return stripAnsi(text).length;
|
|
28
|
+
}
|
|
29
|
+
export function centerLine(text, width) {
|
|
30
|
+
if (width <= 0)
|
|
31
|
+
return text;
|
|
32
|
+
const lineWidth = visibleWidth(text);
|
|
33
|
+
if (lineWidth >= width)
|
|
34
|
+
return text;
|
|
35
|
+
const pad = Math.floor((width - lineWidth) / 2);
|
|
36
|
+
return `${" ".repeat(pad)}${text}`;
|
|
37
|
+
}
|
|
38
|
+
function centerLines(lines, width) {
|
|
39
|
+
return lines.map((line) => centerLine(line, width));
|
|
40
|
+
}
|
|
41
|
+
/** Remove inline "K U B B I S E C" suffix from generated logo rows. */
|
|
42
|
+
export function stripEmbeddedWordmark(line) {
|
|
43
|
+
const plain = stripAnsi(line);
|
|
44
|
+
const match = plain.match(EMBEDDED_WORDMARK);
|
|
45
|
+
if (!match || match.index === undefined)
|
|
46
|
+
return line.trimEnd();
|
|
47
|
+
const cutPlainLen = match.index;
|
|
48
|
+
let visible = 0;
|
|
49
|
+
let i = 0;
|
|
50
|
+
let out = "";
|
|
51
|
+
while (i < line.length && visible < cutPlainLen) {
|
|
52
|
+
if (line[i] === "\x1b") {
|
|
53
|
+
const end = line.indexOf("m", i);
|
|
54
|
+
if (end === -1)
|
|
55
|
+
break;
|
|
56
|
+
out += line.slice(i, end + 1);
|
|
57
|
+
i = end + 1;
|
|
58
|
+
continue;
|
|
59
|
+
}
|
|
60
|
+
out += line[i];
|
|
61
|
+
visible += 1;
|
|
62
|
+
i += 1;
|
|
63
|
+
}
|
|
64
|
+
return out.trimEnd();
|
|
65
|
+
}
|
|
66
|
+
function symbolOnlyLines(logo) {
|
|
67
|
+
return logo.map((line) => stripEmbeddedWordmark(line)).filter((line) => stripAnsi(line).length > 0);
|
|
68
|
+
}
|
|
69
|
+
/** Centered hex mark only — never inline logotipo with embedded wordmark. */
|
|
70
|
+
function loadSymbolBlock(verbose) {
|
|
71
|
+
if (verbose) {
|
|
72
|
+
for (const name of ["logotipo-wide-fallback.ansi", "mark.ansi"]) {
|
|
73
|
+
const logo = readAnsiFile(name);
|
|
74
|
+
if (logo?.length)
|
|
75
|
+
return symbolOnlyLines(logo);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
const mark = readAnsiFile("mark.ansi");
|
|
79
|
+
if (mark?.length)
|
|
80
|
+
return mark;
|
|
81
|
+
return null;
|
|
82
|
+
}
|
|
83
|
+
function renderWordmarkLine(theme, width) {
|
|
84
|
+
return centerLine(theme.bold(theme.fg("accent", KUBBISEC_WORDMARK)), width);
|
|
85
|
+
}
|
|
86
|
+
function renderVersionLine(theme, version) {
|
|
87
|
+
return theme.fg("dim", `v${version}`);
|
|
88
|
+
}
|
|
89
|
+
/** Hints row with accent on `@skill` and dim example + commands. */
|
|
90
|
+
export function renderHeaderHintsLine(theme) {
|
|
91
|
+
const [skillToken, ...exampleParts] = KUBBISEC_HEADER_HINTS_SKILL.split(/\s+/);
|
|
92
|
+
const example = exampleParts.join(" ");
|
|
93
|
+
const skill = theme.fg("accent", skillToken ?? "@skill");
|
|
94
|
+
const exampleLabel = example ? theme.fg("dim", ` ${example}`) : "";
|
|
95
|
+
const separator = theme.fg("dim", " · ");
|
|
96
|
+
const commands = theme.fg("dim", KUBBISEC_HEADER_HINTS_COMMANDS);
|
|
97
|
+
return `${skill}${exampleLabel}${separator}${commands}`;
|
|
98
|
+
}
|
|
99
|
+
function appendSubtitleAndHints(theme, lines, width) {
|
|
100
|
+
return [
|
|
101
|
+
...lines,
|
|
102
|
+
centerLine(theme.fg("dim", KUBBISEC_SUBTITLE_LINE), width),
|
|
103
|
+
centerLine(renderHeaderHintsLine(theme), width),
|
|
104
|
+
];
|
|
105
|
+
}
|
|
106
|
+
function renderStackedBrandBlock(theme, version, width, verbose) {
|
|
107
|
+
const symbol = loadSymbolBlock(verbose);
|
|
108
|
+
const lines = [];
|
|
109
|
+
if (symbol?.length) {
|
|
110
|
+
lines.push(...centerLines(symbol, width));
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
lines.push(centerLine(theme.fg("accent", FALLBACK_MARK), width));
|
|
114
|
+
}
|
|
115
|
+
lines.push("");
|
|
116
|
+
lines.push(renderWordmarkLine(theme, width));
|
|
117
|
+
lines.push(centerLine(renderVersionLine(theme, version), width));
|
|
118
|
+
lines.push("");
|
|
119
|
+
return appendSubtitleAndHints(theme, lines, width);
|
|
120
|
+
}
|
|
121
|
+
/** Fallback single-line wordmark when logo assets are unavailable. */
|
|
122
|
+
export function renderCompactHeaderLine(theme, version) {
|
|
123
|
+
const mark = readAnsiFile("mark.ansi")?.[0] ?? theme.fg("accent", FALLBACK_MARK);
|
|
124
|
+
return `${mark} ${theme.bold(theme.fg("accent", KUBBISEC_WORDMARK))} ${renderVersionLine(theme, version)}`;
|
|
125
|
+
}
|
|
126
|
+
export function renderCompactHeaderLines(theme, version, width = 80) {
|
|
127
|
+
return renderStackedBrandBlock(theme, version, width, false);
|
|
128
|
+
}
|
|
129
|
+
export function renderChatHeaderLines(theme, version, width) {
|
|
130
|
+
return renderStackedBrandBlock(theme, version, width, isVerboseBrand());
|
|
131
|
+
}
|
|
132
|
+
//# 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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"}
|