@kubbisec/ai-linux-x64 0.1.3 → 0.1.5
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/banner-compact.ansi +7 -0
- package/bundled/assets/terminal/banner-wide.ansi +10 -0
- package/bundled/assets/terminal/logotipo-compact-fallback.ansi +7 -0
- package/bundled/assets/terminal/logotipo-compact.ansi +1 -0
- package/bundled/assets/terminal/logotipo-compact.png +0 -0
- package/bundled/assets/terminal/logotipo-wide-fallback.ansi +10 -0
- package/bundled/assets/terminal/logotipo-wide.ansi +1 -0
- package/bundled/assets/terminal/logotipo-wide.png +0 -0
- package/bundled/assets/terminal/mark.ansi +7 -0
- package/bundled/clarify/clarify-gate.d.ts +27 -0
- package/bundled/clarify/clarify-gate.d.ts.map +1 -0
- package/bundled/clarify/clarify-gate.js +152 -0
- package/bundled/clarify/clarify-gate.js.map +1 -0
- package/bundled/clarify/clarify-ui-state.d.ts +12 -0
- package/bundled/clarify/clarify-ui-state.d.ts.map +1 -0
- package/bundled/clarify/clarify-ui-state.js +27 -0
- package/bundled/clarify/clarify-ui-state.js.map +1 -0
- package/bundled/clarify/parse-clarify-answer.d.ts +16 -0
- package/bundled/clarify/parse-clarify-answer.d.ts.map +1 -0
- package/bundled/clarify/parse-clarify-answer.js +22 -0
- package/bundled/clarify/parse-clarify-answer.js.map +1 -0
- package/bundled/clarify/question-format.d.ts +36 -0
- package/bundled/clarify/question-format.d.ts.map +1 -0
- package/bundled/clarify/question-format.js +150 -0
- package/bundled/clarify/question-format.js.map +1 -0
- package/bundled/clarify/questionnaire-tool.d.ts +25 -0
- package/bundled/clarify/questionnaire-tool.d.ts.map +1 -0
- package/bundled/clarify/questionnaire-tool.js +157 -0
- package/bundled/clarify/questionnaire-tool.js.map +1 -0
- package/bundled/clarify/session-questionnaire.d.ts +23 -0
- package/bundled/clarify/session-questionnaire.d.ts.map +1 -0
- package/bundled/clarify/session-questionnaire.js +319 -0
- package/bundled/clarify/session-questionnaire.js.map +1 -0
- package/bundled/clarify/session-questionnaire.types.d.ts +45 -0
- package/bundled/clarify/session-questionnaire.types.d.ts.map +1 -0
- package/bundled/clarify/session-questionnaire.types.js +13 -0
- package/bundled/clarify/session-questionnaire.types.js.map +1 -0
- package/bundled/config/config.d.ts +14 -0
- package/bundled/config/config.d.ts.map +1 -0
- package/bundled/config/config.js +58 -0
- package/bundled/config/config.js.map +1 -0
- package/bundled/config/ensure-kubbisec-project-settings.d.ts +20 -0
- package/bundled/config/ensure-kubbisec-project-settings.d.ts.map +1 -0
- package/bundled/config/ensure-kubbisec-project-settings.js +65 -0
- package/bundled/config/ensure-kubbisec-project-settings.js.map +1 -0
- package/bundled/config/feature-flags.d.ts +2 -0
- package/bundled/config/feature-flags.d.ts.map +1 -0
- package/bundled/config/feature-flags.js +2 -0
- package/bundled/config/feature-flags.js.map +1 -0
- package/bundled/config/format-kubbisec-footer-status.d.ts +2 -0
- package/bundled/config/format-kubbisec-footer-status.d.ts.map +1 -0
- package/bundled/config/format-kubbisec-footer-status.js +21 -0
- package/bundled/config/format-kubbisec-footer-status.js.map +1 -0
- package/bundled/config/resolve-agents-context-file.d.ts +4 -0
- package/bundled/config/resolve-agents-context-file.d.ts.map +1 -0
- package/bundled/config/resolve-agents-context-file.js +48 -0
- package/bundled/config/resolve-agents-context-file.js.map +1 -0
- package/bundled/config/resource-budget.d.ts +17 -0
- package/bundled/config/resource-budget.d.ts.map +1 -0
- package/bundled/config/resource-budget.js +35 -0
- package/bundled/config/resource-budget.js.map +1 -0
- package/bundled/copy/kubbisec-shell-copy.d.ts +8 -0
- package/bundled/copy/kubbisec-shell-copy.d.ts.map +1 -0
- package/bundled/copy/kubbisec-shell-copy.js +8 -0
- package/bundled/copy/kubbisec-shell-copy.js.map +1 -0
- package/bundled/edit-format.md +17 -0
- package/bundled/extensions/cli-local-shared.d.ts +26 -0
- package/bundled/extensions/cli-local-shared.d.ts.map +1 -0
- package/bundled/extensions/cli-local-shared.js +97 -0
- package/bundled/extensions/cli-local-shared.js.map +1 -0
- package/bundled/extensions/kubbisec-aspm-local.extension.d.ts +17 -0
- package/bundled/extensions/kubbisec-aspm-local.extension.d.ts.map +1 -0
- package/bundled/extensions/kubbisec-aspm-local.extension.js +134 -0
- package/bundled/extensions/kubbisec-aspm-local.extension.js.map +1 -0
- package/bundled/extensions/kubbisec-brand.extension.d.ts +20 -0
- package/bundled/extensions/kubbisec-brand.extension.d.ts.map +1 -0
- package/bundled/extensions/kubbisec-brand.extension.js +84 -0
- package/bundled/extensions/kubbisec-brand.extension.js.map +1 -0
- package/bundled/extensions/kubbisec-byok-provider.extension.d.ts +30 -0
- package/bundled/extensions/kubbisec-byok-provider.extension.d.ts.map +1 -0
- package/bundled/extensions/kubbisec-byok-provider.extension.js +44 -0
- package/bundled/extensions/kubbisec-byok-provider.extension.js.map +1 -0
- package/bundled/extensions/kubbisec-clarify.extension.d.ts +45 -0
- package/bundled/extensions/kubbisec-clarify.extension.d.ts.map +1 -0
- package/bundled/extensions/kubbisec-clarify.extension.js +305 -0
- package/bundled/extensions/kubbisec-clarify.extension.js.map +1 -0
- package/bundled/extensions/kubbisec-footer.extension.d.ts +64 -0
- package/bundled/extensions/kubbisec-footer.extension.d.ts.map +1 -0
- package/bundled/extensions/kubbisec-footer.extension.js +187 -0
- package/bundled/extensions/kubbisec-footer.extension.js.map +1 -0
- package/bundled/extensions/kubbisec-github-local.extension.d.ts +23 -0
- package/bundled/extensions/kubbisec-github-local.extension.d.ts.map +1 -0
- package/bundled/extensions/kubbisec-github-local.extension.js +105 -0
- package/bundled/extensions/kubbisec-github-local.extension.js.map +1 -0
- package/bundled/extensions/kubbisec-memory.extension.d.ts +12 -0
- package/bundled/extensions/kubbisec-memory.extension.d.ts.map +1 -0
- package/bundled/extensions/kubbisec-memory.extension.js +107 -0
- package/bundled/extensions/kubbisec-memory.extension.js.map +1 -0
- package/bundled/extensions/kubbisec-naus-local.extension.d.ts +17 -0
- package/bundled/extensions/kubbisec-naus-local.extension.d.ts.map +1 -0
- package/bundled/extensions/kubbisec-naus-local.extension.js +125 -0
- package/bundled/extensions/kubbisec-naus-local.extension.js.map +1 -0
- package/bundled/extensions/kubbisec-platform-tools.extension.d.ts +27 -0
- package/bundled/extensions/kubbisec-platform-tools.extension.d.ts.map +1 -0
- package/bundled/extensions/kubbisec-platform-tools.extension.js +144 -0
- package/bundled/extensions/kubbisec-platform-tools.extension.js.map +1 -0
- package/bundled/extensions/kubbisec-runtime-status.extension.d.ts +13 -0
- package/bundled/extensions/kubbisec-runtime-status.extension.d.ts.map +1 -0
- package/bundled/extensions/kubbisec-runtime-status.extension.js +18 -0
- package/bundled/extensions/kubbisec-runtime-status.extension.js.map +1 -0
- package/bundled/extensions/kubbisec-scope.extension.d.ts +14 -0
- package/bundled/extensions/kubbisec-scope.extension.d.ts.map +1 -0
- package/bundled/extensions/kubbisec-scope.extension.js +14 -0
- package/bundled/extensions/kubbisec-scope.extension.js.map +1 -0
- package/bundled/extensions/kubbisec-skill-mentions.extension.d.ts +24 -0
- package/bundled/extensions/kubbisec-skill-mentions.extension.d.ts.map +1 -0
- package/bundled/extensions/kubbisec-skill-mentions.extension.js +54 -0
- package/bundled/extensions/kubbisec-skill-mentions.extension.js.map +1 -0
- package/bundled/extensions/kubbisec-skill-telemetry.extension.d.ts +6 -0
- package/bundled/extensions/kubbisec-skill-telemetry.extension.d.ts.map +1 -0
- package/bundled/extensions/kubbisec-skill-telemetry.extension.js +85 -0
- package/bundled/extensions/kubbisec-skill-telemetry.extension.js.map +1 -0
- package/bundled/extensions/kubbisec-ui.extension.d.ts +6 -0
- package/bundled/extensions/kubbisec-ui.extension.d.ts.map +1 -0
- package/bundled/extensions/kubbisec-ui.extension.js +116 -0
- package/bundled/extensions/kubbisec-ui.extension.js.map +1 -0
- package/bundled/extensions/kubbisec-workflow.extension.d.ts +38 -0
- package/bundled/extensions/kubbisec-workflow.extension.d.ts.map +1 -0
- package/bundled/extensions/kubbisec-workflow.extension.js +169 -0
- package/bundled/extensions/kubbisec-workflow.extension.js.map +1 -0
- package/bundled/gate-system.md +27 -0
- package/bundled/node_modules/@kubbisec/chat-memory/dist/client.d.ts +20 -0
- package/bundled/node_modules/@kubbisec/chat-memory/dist/client.d.ts.map +1 -0
- package/bundled/node_modules/@kubbisec/chat-memory/dist/client.js +121 -0
- package/bundled/node_modules/@kubbisec/chat-memory/dist/client.js.map +1 -0
- package/bundled/node_modules/@kubbisec/chat-memory/dist/feature-flags.d.ts +15 -0
- package/bundled/node_modules/@kubbisec/chat-memory/dist/feature-flags.d.ts.map +1 -0
- package/bundled/node_modules/@kubbisec/chat-memory/dist/feature-flags.js +34 -0
- package/bundled/node_modules/@kubbisec/chat-memory/dist/feature-flags.js.map +1 -0
- package/bundled/node_modules/@kubbisec/chat-memory/dist/index.d.ts +12 -0
- package/bundled/node_modules/@kubbisec/chat-memory/dist/index.d.ts.map +1 -0
- package/bundled/node_modules/@kubbisec/chat-memory/dist/index.js +35 -0
- package/bundled/node_modules/@kubbisec/chat-memory/dist/index.js.map +1 -0
- package/bundled/node_modules/@kubbisec/chat-memory/dist/sanitizer.d.ts +4 -0
- package/bundled/node_modules/@kubbisec/chat-memory/dist/sanitizer.d.ts.map +1 -0
- package/bundled/node_modules/@kubbisec/chat-memory/dist/sanitizer.js +89 -0
- package/bundled/node_modules/@kubbisec/chat-memory/dist/sanitizer.js.map +1 -0
- package/bundled/node_modules/@kubbisec/chat-memory/dist/storage-paths.d.ts +2 -0
- package/bundled/node_modules/@kubbisec/chat-memory/dist/storage-paths.d.ts.map +1 -0
- package/bundled/node_modules/@kubbisec/chat-memory/dist/storage-paths.js +13 -0
- package/bundled/node_modules/@kubbisec/chat-memory/dist/storage-paths.js.map +1 -0
- package/bundled/node_modules/@kubbisec/chat-memory/dist/types.d.ts +24 -0
- package/bundled/node_modules/@kubbisec/chat-memory/dist/types.d.ts.map +1 -0
- package/bundled/node_modules/@kubbisec/chat-memory/dist/types.js +9 -0
- package/bundled/node_modules/@kubbisec/chat-memory/dist/types.js.map +1 -0
- package/bundled/node_modules/@kubbisec/chat-memory/package.json +32 -0
- package/bundled/node_modules/@kubbisec/home/dist/index.d.ts +3 -0
- package/bundled/node_modules/@kubbisec/home/dist/index.d.ts.map +1 -0
- package/bundled/node_modules/@kubbisec/home/dist/index.js +3 -0
- package/bundled/node_modules/@kubbisec/home/dist/index.js.map +1 -0
- package/bundled/node_modules/@kubbisec/home/dist/migrate.d.ts +10 -0
- package/bundled/node_modules/@kubbisec/home/dist/migrate.d.ts.map +1 -0
- package/bundled/node_modules/@kubbisec/home/dist/migrate.js +107 -0
- package/bundled/node_modules/@kubbisec/home/dist/migrate.js.map +1 -0
- package/bundled/node_modules/@kubbisec/home/dist/paths.d.ts +22 -0
- package/bundled/node_modules/@kubbisec/home/dist/paths.d.ts.map +1 -0
- package/bundled/node_modules/@kubbisec/home/dist/paths.js +69 -0
- package/bundled/node_modules/@kubbisec/home/dist/paths.js.map +1 -0
- package/bundled/node_modules/@kubbisec/home/package.json +26 -0
- package/bundled/reflect-system.md +31 -0
- package/bundled/resolve-bundled-dist-root.js +165 -0
- package/bundled/resolve-bundled-dist-root.js.map +1 -0
- package/bundled/skills/aspm-platform/SKILL.md +58 -0
- package/bundled/skills/chat-mention-render.d.ts +7 -0
- package/bundled/skills/chat-mention-render.d.ts.map +1 -0
- package/bundled/skills/chat-mention-render.js +122 -0
- package/bundled/skills/chat-mention-render.js.map +1 -0
- package/bundled/skills/chat-mention-render.test.ts +47 -0
- package/bundled/skills/chat-mention-render.ts +141 -0
- package/bundled/skills/chat-mentions.d.ts +27 -0
- package/bundled/skills/chat-mentions.d.ts.map +1 -0
- package/bundled/skills/chat-mentions.js +104 -0
- package/bundled/skills/chat-mentions.js.map +1 -0
- package/bundled/skills/chat-mentions.test.ts +32 -0
- package/bundled/skills/chat-mentions.ts +126 -0
- package/bundled/skills/github-local/SKILL.md +16 -0
- package/bundled/skills/list-bundled-skills.d.ts +7 -0
- package/bundled/skills/list-bundled-skills.d.ts.map +1 -0
- package/bundled/skills/list-bundled-skills.js +44 -0
- package/bundled/skills/list-bundled-skills.js.map +1 -0
- package/bundled/skills/list-bundled-skills.ts +46 -0
- package/bundled/skills/naus-pipelines/SKILL.md +31 -0
- package/bundled/skills/remediation/SKILL.md +12 -0
- package/bundled/skills/scanner-gitleaks/SKILL.md +10 -0
- package/bundled/skills/scanner-nmap/SKILL.md +10 -0
- package/bundled/skills/scanner-osv/SKILL.md +10 -0
- package/bundled/skills/scanner-semgrep/SKILL.md +10 -0
- package/bundled/skills/scanner-skipfish/SKILL.md +10 -0
- package/bundled/skills/scanner-sonar/SKILL.md +10 -0
- package/bundled/skills/scanner-syft/SKILL.md +10 -0
- package/bundled/skills/scanner-trivy/SKILL.md +10 -0
- package/bundled/skills/sec-brainstorm/SKILL.md +74 -0
- package/bundled/skills/sec-clarify/SKILL.md +68 -0
- package/bundled/skills/sec-debug/SKILL.md +94 -0
- package/bundled/skills/sec-plan/SKILL.md +101 -0
- package/bundled/skills/sec-review/SKILL.md +110 -0
- package/bundled/skills/sec-review/code-reviewer-sec.md +176 -0
- package/bundled/skills/sec-using-skills/SKILL.md +79 -0
- package/bundled/skills/sec-verify/SKILL.md +77 -0
- package/bundled/skills/skill-mention.d.ts +3 -0
- package/bundled/skills/skill-mention.d.ts.map +1 -0
- package/bundled/skills/skill-mention.js +3 -0
- package/bundled/skills/skill-mention.js.map +1 -0
- package/bundled/skills/skill-mention.test.ts +46 -0
- package/bundled/skills/skill-mention.ts +10 -0
- package/bundled/theme/kubbisec.json +93 -0
- package/package.json +3 -2
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export type KubbisecConfig = {
|
|
2
|
+
apiUrl: string;
|
|
3
|
+
apiKey: string;
|
|
4
|
+
orgId?: string;
|
|
5
|
+
defaultProject?: string;
|
|
6
|
+
clientId?: string;
|
|
7
|
+
};
|
|
8
|
+
export declare function getKubbisecStateDir(): string;
|
|
9
|
+
export declare function getConfigPath(): string;
|
|
10
|
+
export declare function loadConfig(): Partial<KubbisecConfig>;
|
|
11
|
+
export declare function saveConfig(partial: Partial<KubbisecConfig>): KubbisecConfig;
|
|
12
|
+
export declare function clearConfig(): void;
|
|
13
|
+
export declare function requireConfig(): KubbisecConfig;
|
|
14
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAED,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED,wBAAgB,UAAU,IAAI,OAAO,CAAC,cAAc,CAAC,CAYpD;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,cAAc,CAa3E;AAED,wBAAgB,WAAW,IAAI,IAAI,CAGlC;AAED,wBAAgB,aAAa,IAAI,cAAc,CAY9C"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import * as fs from "node:fs";
|
|
2
|
+
import * as os from "node:os";
|
|
3
|
+
import * as path from "node:path";
|
|
4
|
+
import { getAiStateDir, getKubbisecConfigPath } from "@kubbisec/home";
|
|
5
|
+
export function getKubbisecStateDir() {
|
|
6
|
+
return getAiStateDir();
|
|
7
|
+
}
|
|
8
|
+
export function getConfigPath() {
|
|
9
|
+
return getKubbisecConfigPath();
|
|
10
|
+
}
|
|
11
|
+
export function loadConfig() {
|
|
12
|
+
const stateDir = getAiStateDir();
|
|
13
|
+
const candidates = [getKubbisecConfigPath(), path.join(stateDir, "kbs.json")];
|
|
14
|
+
for (const configFile of candidates) {
|
|
15
|
+
try {
|
|
16
|
+
if (!fs.existsSync(configFile))
|
|
17
|
+
continue;
|
|
18
|
+
return JSON.parse(fs.readFileSync(configFile, "utf8"));
|
|
19
|
+
}
|
|
20
|
+
catch {
|
|
21
|
+
continue;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
return {};
|
|
25
|
+
}
|
|
26
|
+
export function saveConfig(partial) {
|
|
27
|
+
const prev = loadConfig();
|
|
28
|
+
const next = {
|
|
29
|
+
apiUrl: partial.apiUrl ?? prev.apiUrl ?? "",
|
|
30
|
+
apiKey: partial.apiKey ?? prev.apiKey ?? "",
|
|
31
|
+
orgId: partial.orgId ?? prev.orgId,
|
|
32
|
+
defaultProject: partial.defaultProject ?? prev.defaultProject,
|
|
33
|
+
clientId: partial.clientId ?? prev.clientId ?? `kubbisec-${os.hostname()}`,
|
|
34
|
+
};
|
|
35
|
+
const stateDir = getAiStateDir();
|
|
36
|
+
fs.mkdirSync(stateDir, { recursive: true, mode: 0o700 });
|
|
37
|
+
fs.writeFileSync(getKubbisecConfigPath(), `${JSON.stringify(next, null, 2)}\n`, { mode: 0o600 });
|
|
38
|
+
return next;
|
|
39
|
+
}
|
|
40
|
+
export function clearConfig() {
|
|
41
|
+
const configFile = getKubbisecConfigPath();
|
|
42
|
+
if (fs.existsSync(configFile))
|
|
43
|
+
fs.unlinkSync(configFile);
|
|
44
|
+
}
|
|
45
|
+
export function requireConfig() {
|
|
46
|
+
const cfg = loadConfig();
|
|
47
|
+
if (!cfg.apiUrl?.trim() || !cfg.apiKey?.trim()) {
|
|
48
|
+
throw new Error("Not logged in. Run: kubbisec login");
|
|
49
|
+
}
|
|
50
|
+
return {
|
|
51
|
+
apiUrl: cfg.apiUrl.trim().replace(/\/$/, ""),
|
|
52
|
+
apiKey: cfg.apiKey.trim(),
|
|
53
|
+
orgId: cfg.orgId?.trim() || undefined,
|
|
54
|
+
defaultProject: cfg.defaultProject?.trim() || undefined,
|
|
55
|
+
clientId: cfg.clientId?.trim() || `kubbisec-${os.hostname()}`,
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export declare const KUBBISEC_PROJECT_CONFIG_DIR = ".kubbisec";
|
|
2
|
+
export declare const KUBBISEC_PROJECT_SETTINGS_FILE = "settings.json";
|
|
3
|
+
export declare const KUBBISEC_SPECS_DIR = "specs";
|
|
4
|
+
export declare const KUBBISEC_PLANS_DIR = "plans";
|
|
5
|
+
export declare const KUBBISEC_CONTEXT_DIR = "context";
|
|
6
|
+
export type KubbisecProjectSettings = {
|
|
7
|
+
quietStartup?: boolean;
|
|
8
|
+
enableSkillCommands?: boolean;
|
|
9
|
+
workflow?: {
|
|
10
|
+
lastSpecSlug?: string;
|
|
11
|
+
lastPlanSlug?: string;
|
|
12
|
+
};
|
|
13
|
+
[key: string]: unknown;
|
|
14
|
+
};
|
|
15
|
+
/** Create `.kubbisec/specs`, `.kubbisec/plans`, `.kubbisec/context` (ART-003). */
|
|
16
|
+
export declare function ensureKubbisecProjectLayout(cwd: string): void;
|
|
17
|
+
export declare function resolveKubbisecProjectSettingsPath(cwd: string): string;
|
|
18
|
+
/** Merge KubbiSec defaults into `<cwd>/.kubbisec/settings.json` without removing user keys. */
|
|
19
|
+
export declare function ensureKubbisecProjectSettings(cwd?: string): string;
|
|
20
|
+
//# sourceMappingURL=ensure-kubbisec-project-settings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ensure-kubbisec-project-settings.d.ts","sourceRoot":"","sources":["../../src/config/ensure-kubbisec-project-settings.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,2BAA2B,cAAc,CAAC;AACvD,eAAO,MAAM,8BAA8B,kBAAkB,CAAC;AAC9D,eAAO,MAAM,kBAAkB,UAAU,CAAC;AAC1C,eAAO,MAAM,kBAAkB,UAAU,CAAC;AAC1C,eAAO,MAAM,oBAAoB,YAAY,CAAC;AAE9C,MAAM,MAAM,uBAAuB,GAAG;IACpC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,EAAE;QACT,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB,CAAC;AAmBF,kFAAkF;AAClF,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAK7D;AAED,wBAAgB,kCAAkC,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEtE;AAeD,+FAA+F;AAC/F,wBAAgB,6BAA6B,CAAC,GAAG,SAAgB,GAAG,MAAM,CAezE"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import * as fs from "node:fs";
|
|
2
|
+
import * as path from "node:path";
|
|
3
|
+
export const KUBBISEC_PROJECT_CONFIG_DIR = ".kubbisec";
|
|
4
|
+
export const KUBBISEC_PROJECT_SETTINGS_FILE = "settings.json";
|
|
5
|
+
export const KUBBISEC_SPECS_DIR = "specs";
|
|
6
|
+
export const KUBBISEC_PLANS_DIR = "plans";
|
|
7
|
+
export const KUBBISEC_CONTEXT_DIR = "context";
|
|
8
|
+
function migrateLegacyProjectConfigDir(cwd) {
|
|
9
|
+
const legacy = path.join(cwd, ".kubbisec");
|
|
10
|
+
const next = path.join(cwd, KUBBISEC_PROJECT_CONFIG_DIR);
|
|
11
|
+
if (!pathExists(legacy))
|
|
12
|
+
return;
|
|
13
|
+
if (pathExists(next))
|
|
14
|
+
return;
|
|
15
|
+
fs.renameSync(legacy, next);
|
|
16
|
+
}
|
|
17
|
+
function pathExists(p) {
|
|
18
|
+
try {
|
|
19
|
+
fs.accessSync(p);
|
|
20
|
+
return true;
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
/** Create `.kubbisec/specs`, `.kubbisec/plans`, `.kubbisec/context` (ART-003). */
|
|
27
|
+
export function ensureKubbisecProjectLayout(cwd) {
|
|
28
|
+
const base = path.join(cwd, KUBBISEC_PROJECT_CONFIG_DIR);
|
|
29
|
+
for (const sub of [KUBBISEC_SPECS_DIR, KUBBISEC_PLANS_DIR, KUBBISEC_CONTEXT_DIR]) {
|
|
30
|
+
fs.mkdirSync(path.join(base, sub), { recursive: true, mode: 0o755 });
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
export function resolveKubbisecProjectSettingsPath(cwd) {
|
|
34
|
+
return path.join(cwd, KUBBISEC_PROJECT_CONFIG_DIR, KUBBISEC_PROJECT_SETTINGS_FILE);
|
|
35
|
+
}
|
|
36
|
+
function readExistingSettings(filePath) {
|
|
37
|
+
try {
|
|
38
|
+
const raw = fs.readFileSync(filePath, "utf8");
|
|
39
|
+
const parsed = JSON.parse(raw);
|
|
40
|
+
if (parsed && typeof parsed === "object" && !Array.isArray(parsed)) {
|
|
41
|
+
return parsed;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
/* missing or invalid — start fresh */
|
|
46
|
+
}
|
|
47
|
+
return {};
|
|
48
|
+
}
|
|
49
|
+
/** Merge KubbiSec defaults into `<cwd>/.kubbisec/settings.json` without removing user keys. */
|
|
50
|
+
export function ensureKubbisecProjectSettings(cwd = process.cwd()) {
|
|
51
|
+
migrateLegacyProjectConfigDir(cwd);
|
|
52
|
+
const dir = path.join(cwd, KUBBISEC_PROJECT_CONFIG_DIR);
|
|
53
|
+
const filePath = resolveKubbisecProjectSettingsPath(cwd);
|
|
54
|
+
fs.mkdirSync(dir, { recursive: true, mode: 0o755 });
|
|
55
|
+
ensureKubbisecProjectLayout(cwd);
|
|
56
|
+
const existing = readExistingSettings(filePath);
|
|
57
|
+
const merged = {
|
|
58
|
+
...existing,
|
|
59
|
+
quietStartup: true,
|
|
60
|
+
enableSkillCommands: false,
|
|
61
|
+
};
|
|
62
|
+
fs.writeFileSync(filePath, `${JSON.stringify(merged, null, 2)}\n`, "utf8");
|
|
63
|
+
return filePath;
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=ensure-kubbisec-project-settings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ensure-kubbisec-project-settings.js","sourceRoot":"","sources":["../../src/config/ensure-kubbisec-project-settings.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feature-flags.d.ts","sourceRoot":"","sources":["../../src/config/feature-flags.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,eAAe,EACf,aAAa,EACb,mBAAmB,EACnB,oBAAoB,EACpB,KAAK,QAAQ,EACb,KAAK,sBAAsB,GAC5B,MAAM,uBAAuB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feature-flags.js","sourceRoot":"","sources":["../../src/config/feature-flags.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,eAAe,EACf,aAAa,EACb,mBAAmB,EACnB,oBAAoB,GAGrB,MAAM,uBAAuB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format-kubbisec-footer-status.d.ts","sourceRoot":"","sources":["../../src/config/format-kubbisec-footer-status.ts"],"names":[],"mappings":"AAGA,wBAAgB,8BAA8B,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAapF"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
const KUBBISEC_STATUS_PREFIX = "kubbisec-";
|
|
2
|
+
const KUBBISEC_STATUS_ORDER = ["kubbisec-tools", "kubbisec-ctx"];
|
|
3
|
+
export function formatKubbisecFooterStatusLine(statuses) {
|
|
4
|
+
const parts = [];
|
|
5
|
+
for (const key of KUBBISEC_STATUS_ORDER) {
|
|
6
|
+
const text = statuses.get(key)?.replace(/[\r\n\t]/g, " ").replace(/ +/g, " ").trim();
|
|
7
|
+
if (text)
|
|
8
|
+
parts.push(text);
|
|
9
|
+
}
|
|
10
|
+
for (const [key, raw] of statuses.entries()) {
|
|
11
|
+
if (!key.startsWith(KUBBISEC_STATUS_PREFIX))
|
|
12
|
+
continue;
|
|
13
|
+
if (KUBBISEC_STATUS_ORDER.includes(key))
|
|
14
|
+
continue;
|
|
15
|
+
const text = raw.replace(/[\r\n\t]/g, " ").replace(/ +/g, " ").trim();
|
|
16
|
+
if (text)
|
|
17
|
+
parts.push(text);
|
|
18
|
+
}
|
|
19
|
+
return parts.join(" · ");
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=format-kubbisec-footer-status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format-kubbisec-footer-status.js","sourceRoot":"","sources":["../../src/config/format-kubbisec-footer-status.ts"],"names":[],"mappings":"AAAA,MAAM,sBAAsB,GAAG,WAAW,CAAC;AAC3C,MAAM,qBAAqB,GAAG,CAAC,gBAAgB,EAAE,cAAc,CAAU,CAAC;AAE1E,MAAM,UAAU,8BAA8B,CAAC,QAA6B;IAC1E,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,GAAG,IAAI,qBAAqB,EAAE,CAAC;QACxC,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QACrF,IAAI,IAAI;YAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IACD,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC;QAC5C,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,sBAAsB,CAAC;YAAE,SAAS;QACtD,IAAK,qBAA2C,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,SAAS;QACzE,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QACtE,IAAI,IAAI;YAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC3B,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export declare function findAgentsContextFile(startDir: string): string | undefined;
|
|
2
|
+
export declare function formatAgentsContextLabel(filePath: string, home?: string): string;
|
|
3
|
+
export declare function formatKubbisecContextStatus(filePath: string, home?: string): string;
|
|
4
|
+
//# sourceMappingURL=resolve-agents-context-file.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-agents-context-file.d.ts","sourceRoot":"","sources":["../../src/config/resolve-agents-context-file.ts"],"names":[],"mappings":"AAMA,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAa1E;AAED,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAiBhF;AAWD,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAEnF"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import * as fs from "node:fs";
|
|
2
|
+
import * as path from "node:path";
|
|
3
|
+
import { isAbsolute, relative, resolve, sep } from "node:path";
|
|
4
|
+
const CONTEXT_FILENAMES = ["AGENTS.md", "CLAUDE.md"];
|
|
5
|
+
export function findAgentsContextFile(startDir) {
|
|
6
|
+
let dir = path.resolve(startDir);
|
|
7
|
+
while (true) {
|
|
8
|
+
for (const name of CONTEXT_FILENAMES) {
|
|
9
|
+
const candidate = path.join(dir, name);
|
|
10
|
+
if (fs.existsSync(candidate) && fs.statSync(candidate).isFile()) {
|
|
11
|
+
return candidate;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
const parent = path.dirname(dir);
|
|
15
|
+
if (parent === dir)
|
|
16
|
+
return undefined;
|
|
17
|
+
dir = parent;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
export function formatAgentsContextLabel(filePath, home) {
|
|
21
|
+
const base = path.basename(filePath);
|
|
22
|
+
const homeDir = home?.trim();
|
|
23
|
+
if (!homeDir)
|
|
24
|
+
return base;
|
|
25
|
+
const resolved = resolve(filePath);
|
|
26
|
+
const resolvedHome = resolve(homeDir);
|
|
27
|
+
const rel = relative(resolvedHome, resolved);
|
|
28
|
+
const insideHome = rel === "" ||
|
|
29
|
+
(rel !== ".." && !rel.startsWith(`..${sep}`) && !isAbsolute(rel));
|
|
30
|
+
if (!insideHome) {
|
|
31
|
+
return `${base} (${truncatePathMiddle(resolved, 48)})`;
|
|
32
|
+
}
|
|
33
|
+
const short = rel === "" ? `~/${base}` : `~${sep}${rel}`;
|
|
34
|
+
return truncatePathMiddle(short, 56);
|
|
35
|
+
}
|
|
36
|
+
function truncatePathMiddle(text, maxLen) {
|
|
37
|
+
if (text.length <= maxLen)
|
|
38
|
+
return text;
|
|
39
|
+
const ellipsis = "…";
|
|
40
|
+
const room = Math.max(4, maxLen - ellipsis.length);
|
|
41
|
+
const head = Math.max(2, Math.ceil(room * 0.45));
|
|
42
|
+
const tail = Math.max(2, room - head);
|
|
43
|
+
return text.slice(0, head) + ellipsis + text.slice(-tail);
|
|
44
|
+
}
|
|
45
|
+
export function formatKubbisecContextStatus(filePath, home) {
|
|
46
|
+
return `ctx ${formatAgentsContextLabel(filePath, home)}`;
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=resolve-agents-context-file.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-agents-context-file.js","sourceRoot":"","sources":["../../src/config/resolve-agents-context-file.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export type ResourceBudget = {
|
|
2
|
+
lowResource: boolean;
|
|
3
|
+
maxActiveSkills: number;
|
|
4
|
+
maxSkillsArgv: number;
|
|
5
|
+
routerTopK: number;
|
|
6
|
+
gateSampleSize: number;
|
|
7
|
+
orchestratorParallel: number;
|
|
8
|
+
onlineTrainerConcurrency: number;
|
|
9
|
+
telemetryMaxStepsPerFlush: number;
|
|
10
|
+
mem0AutoCapture: boolean;
|
|
11
|
+
clarifyMaxRounds: number;
|
|
12
|
+
editBudgetMaxOps: number;
|
|
13
|
+
};
|
|
14
|
+
export declare const LOW_RESOURCE_DEFAULTS: Omit<ResourceBudget, "lowResource">;
|
|
15
|
+
export declare const NORMAL_RESOURCE_DEFAULTS: Omit<ResourceBudget, "lowResource">;
|
|
16
|
+
export declare function resolveResourceBudget(env?: NodeJS.ProcessEnv): ResourceBudget;
|
|
17
|
+
//# sourceMappingURL=resource-budget.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resource-budget.d.ts","sourceRoot":"","sources":["../../src/config/resource-budget.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,cAAc,GAAG;IAC3B,WAAW,EAAE,OAAO,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,wBAAwB,EAAE,MAAM,CAAC;IACjC,yBAAyB,EAAE,MAAM,CAAC;IAClC,eAAe,EAAE,OAAO,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,IAAI,CAAC,cAAc,EAAE,aAAa,CAWrE,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,IAAI,CAAC,cAAc,EAAE,aAAa,CAWxE,CAAC;AAEF,wBAAgB,qBAAqB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,cAAc,CAS1F"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { envFlagOn, isMemoryEnabled } from "./feature-flags.js";
|
|
2
|
+
export const LOW_RESOURCE_DEFAULTS = {
|
|
3
|
+
maxActiveSkills: 2,
|
|
4
|
+
maxSkillsArgv: 2,
|
|
5
|
+
routerTopK: 2,
|
|
6
|
+
gateSampleSize: 2,
|
|
7
|
+
orchestratorParallel: 1,
|
|
8
|
+
onlineTrainerConcurrency: 1,
|
|
9
|
+
telemetryMaxStepsPerFlush: 20,
|
|
10
|
+
mem0AutoCapture: false,
|
|
11
|
+
clarifyMaxRounds: 1,
|
|
12
|
+
editBudgetMaxOps: 6,
|
|
13
|
+
};
|
|
14
|
+
export const NORMAL_RESOURCE_DEFAULTS = {
|
|
15
|
+
maxActiveSkills: 3,
|
|
16
|
+
maxSkillsArgv: 3,
|
|
17
|
+
routerTopK: 3,
|
|
18
|
+
gateSampleSize: 8,
|
|
19
|
+
orchestratorParallel: 3,
|
|
20
|
+
onlineTrainerConcurrency: 2,
|
|
21
|
+
telemetryMaxStepsPerFlush: 50,
|
|
22
|
+
mem0AutoCapture: true,
|
|
23
|
+
clarifyMaxRounds: 2,
|
|
24
|
+
editBudgetMaxOps: 12,
|
|
25
|
+
};
|
|
26
|
+
export function resolveResourceBudget(env = process.env) {
|
|
27
|
+
const lowResource = envFlagOn(env, "KUBBISEC_LOW_RESOURCE");
|
|
28
|
+
const defaults = lowResource ? LOW_RESOURCE_DEFAULTS : NORMAL_RESOURCE_DEFAULTS;
|
|
29
|
+
return {
|
|
30
|
+
lowResource,
|
|
31
|
+
...defaults,
|
|
32
|
+
mem0AutoCapture: lowResource ? false : isMemoryEnabled(env),
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=resource-budget.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resource-budget.js","sourceRoot":"","sources":["../../src/config/resource-budget.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAgBhE,MAAM,CAAC,MAAM,qBAAqB,GAAwC;IACxE,eAAe,EAAE,CAAC;IAClB,aAAa,EAAE,CAAC;IAChB,UAAU,EAAE,CAAC;IACb,cAAc,EAAE,CAAC;IACjB,oBAAoB,EAAE,CAAC;IACvB,wBAAwB,EAAE,CAAC;IAC3B,yBAAyB,EAAE,EAAE;IAC7B,eAAe,EAAE,KAAK;IACtB,gBAAgB,EAAE,CAAC;IACnB,gBAAgB,EAAE,CAAC;CACpB,CAAC;AAEF,MAAM,CAAC,MAAM,wBAAwB,GAAwC;IAC3E,eAAe,EAAE,CAAC;IAClB,aAAa,EAAE,CAAC;IAChB,UAAU,EAAE,CAAC;IACb,cAAc,EAAE,CAAC;IACjB,oBAAoB,EAAE,CAAC;IACvB,wBAAwB,EAAE,CAAC;IAC3B,yBAAyB,EAAE,EAAE;IAC7B,eAAe,EAAE,IAAI;IACrB,gBAAgB,EAAE,CAAC;IACnB,gBAAgB,EAAE,EAAE;CACrB,CAAC;AAEF,MAAM,UAAU,qBAAqB,CAAC,MAAyB,OAAO,CAAC,GAAG;IACxE,MAAM,WAAW,GAAG,SAAS,CAAC,GAAG,EAAE,uBAAuB,CAAC,CAAC;IAC5D,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,wBAAwB,CAAC;IAEhF,OAAO;QACL,WAAW;QACX,GAAG,QAAQ;QACX,eAAe,EAAE,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC;KAC5D,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/** Shared KubbiSec AI TUI copy (CLI extensions). */
|
|
2
|
+
export declare const KUBBISEC_PRODUCT_NAME = "KubbiSec Assistant";
|
|
3
|
+
export declare const KUBBISEC_RAIL_HINT = "chat \u00B7 org BYOK";
|
|
4
|
+
export declare const KUBBISEC_PROVIDER_LABEL = "kubbisec";
|
|
5
|
+
export declare const KUBBISEC_RAIL_LINE = "KubbiSec Assistant \u00B7 chat \u00B7 org BYOK";
|
|
6
|
+
export declare const KUBBISEC_HEADER_TAGLINE = "ASPM remediation \u00B7 org BYOK proxy";
|
|
7
|
+
export declare const KUBBISEC_HEADER_HINTS = "kubbisec fix \u00B7 kubbisec watch \u00B7 kubbisec ls \u00B7 /help";
|
|
8
|
+
//# sourceMappingURL=kubbisec-shell-copy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kubbisec-shell-copy.d.ts","sourceRoot":"","sources":["../../src/copy/kubbisec-shell-copy.ts"],"names":[],"mappings":"AAAA,oDAAoD;AACpD,eAAO,MAAM,qBAAqB,uBAAuB,CAAC;AAC1D,eAAO,MAAM,kBAAkB,yBAAoB,CAAC;AACpD,eAAO,MAAM,uBAAuB,aAAa,CAAC;AAClD,eAAO,MAAM,kBAAkB,mDAAqD,CAAC;AACrF,eAAO,MAAM,uBAAuB,2CAAsC,CAAC;AAC3E,eAAO,MAAM,qBAAqB,uEAAwD,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/** Shared KubbiSec AI TUI copy (CLI extensions). */
|
|
2
|
+
export const KUBBISEC_PRODUCT_NAME = "KubbiSec Assistant";
|
|
3
|
+
export const KUBBISEC_RAIL_HINT = "chat · org BYOK";
|
|
4
|
+
export const KUBBISEC_PROVIDER_LABEL = "kubbisec";
|
|
5
|
+
export const KUBBISEC_RAIL_LINE = `${KUBBISEC_PRODUCT_NAME} · ${KUBBISEC_RAIL_HINT}`;
|
|
6
|
+
export const KUBBISEC_HEADER_TAGLINE = "ASPM remediation · org BYOK proxy";
|
|
7
|
+
export const KUBBISEC_HEADER_HINTS = "kubbisec fix · kubbisec watch · kubbisec ls · /help";
|
|
8
|
+
//# sourceMappingURL=kubbisec-shell-copy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kubbisec-shell-copy.js","sourceRoot":"","sources":["../../src/copy/kubbisec-shell-copy.ts"],"names":[],"mappings":"AAAA,oDAAoD;AACpD,MAAM,CAAC,MAAM,qBAAqB,GAAG,oBAAoB,CAAC;AAC1D,MAAM,CAAC,MAAM,kBAAkB,GAAG,iBAAiB,CAAC;AACpD,MAAM,CAAC,MAAM,uBAAuB,GAAG,UAAU,CAAC;AAClD,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,qBAAqB,MAAM,kBAAkB,EAAE,CAAC;AACrF,MAAM,CAAC,MAAM,uBAAuB,GAAG,mCAAmC,CAAC;AAC3E,MAAM,CAAC,MAAM,qBAAqB,GAAG,qDAAqD,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# Edit format (normative)
|
|
2
|
+
|
|
3
|
+
SkillOpt overlay edits use ADD / DEL / REP operations inside a fenced `edits` block.
|
|
4
|
+
|
|
5
|
+
```edits
|
|
6
|
+
ADD after "## Usage":
|
|
7
|
+
- New guidance line.
|
|
8
|
+
|
|
9
|
+
DEL line matching "deprecated step".
|
|
10
|
+
|
|
11
|
+
REP "old text" with "new text".
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
Rules:
|
|
15
|
+
- One operation per block section.
|
|
16
|
+
- No frontmatter changes.
|
|
17
|
+
- Maximum operations enforced by edit budget.
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export declare const CLI_LOCAL_MAX_OUTPUT_CHARS = 12000;
|
|
2
|
+
export declare const NAUS_LOCAL_RUN_TIMEOUT_MS: number;
|
|
3
|
+
export declare function extendedContextEnabled(): boolean;
|
|
4
|
+
export declare function resolveWorkspace(): string;
|
|
5
|
+
export declare function truncateCliOutput(text: string, max?: number): string;
|
|
6
|
+
export declare function denyExtendedContextMessage(): {
|
|
7
|
+
content: Array<{
|
|
8
|
+
type: "text";
|
|
9
|
+
text: string;
|
|
10
|
+
}>;
|
|
11
|
+
};
|
|
12
|
+
export declare function formatExecResult(bin: string, args: string[], cwd: string, result: {
|
|
13
|
+
code: number;
|
|
14
|
+
stdout: string;
|
|
15
|
+
stderr: string;
|
|
16
|
+
}): string;
|
|
17
|
+
export declare function execCapture(bin: string, args: string[], cwd: string, options?: {
|
|
18
|
+
signal?: AbortSignal;
|
|
19
|
+
timeoutMs?: number;
|
|
20
|
+
}): Promise<{
|
|
21
|
+
code: number;
|
|
22
|
+
stdout: string;
|
|
23
|
+
stderr: string;
|
|
24
|
+
}>;
|
|
25
|
+
export declare function resolvePathInWorkspace(relativePath: string, workspace: string): string;
|
|
26
|
+
//# sourceMappingURL=cli-local-shared.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-local-shared.d.ts","sourceRoot":"","sources":["../../src/extensions/cli-local-shared.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,0BAA0B,QAAS,CAAC;AACjD,eAAO,MAAM,yBAAyB,QAAiB,CAAC;AAExD,wBAAgB,sBAAsB,IAAI,OAAO,CAEhD;AAED,wBAAgB,gBAAgB,IAAI,MAAM,CAKzC;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,SAA6B,GAAG,MAAM,CAGxF;AAED,wBAAgB,0BAA0B,IAAI;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAU/F;AAED,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EAAE,EACd,GAAG,EAAE,MAAM,EACX,MAAM,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACvD,MAAM,CAWR;AAED,wBAAgB,WAAW,CACzB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EAAE,EACd,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,WAAW,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GACrD,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAsD3D;AAED,wBAAgB,sBAAsB,CAAC,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAOtF"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { spawn } from "node:child_process";
|
|
2
|
+
import * as path from "node:path";
|
|
3
|
+
export const CLI_LOCAL_MAX_OUTPUT_CHARS = 12_000;
|
|
4
|
+
export const NAUS_LOCAL_RUN_TIMEOUT_MS = 15 * 60 * 1000;
|
|
5
|
+
export function extendedContextEnabled() {
|
|
6
|
+
return process.env.KUBBISEC_CHAT_EXTENDED_CONTEXT === "1";
|
|
7
|
+
}
|
|
8
|
+
export function resolveWorkspace() {
|
|
9
|
+
const fromEnv = process.env.KUBBISEC_LOCAL_WORKSPACE?.trim() ||
|
|
10
|
+
process.env.KUBBISEC_AI_WORKSPACE?.trim();
|
|
11
|
+
return fromEnv ? path.resolve(fromEnv) : process.cwd();
|
|
12
|
+
}
|
|
13
|
+
export function truncateCliOutput(text, max = CLI_LOCAL_MAX_OUTPUT_CHARS) {
|
|
14
|
+
if (text.length <= max)
|
|
15
|
+
return text;
|
|
16
|
+
return `${text.slice(0, max)}\n\n… (output truncated at ${max} chars)`;
|
|
17
|
+
}
|
|
18
|
+
export function denyExtendedContextMessage() {
|
|
19
|
+
return {
|
|
20
|
+
content: [
|
|
21
|
+
{
|
|
22
|
+
type: "text",
|
|
23
|
+
text: "Extended local CLI context is disabled. Restart with: kubbisec chat --extended-context [-w <workspace>]",
|
|
24
|
+
},
|
|
25
|
+
],
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
export function formatExecResult(bin, args, cwd, result) {
|
|
29
|
+
const combined = [result.stdout, result.stderr].filter(Boolean).join("\n");
|
|
30
|
+
return truncateCliOutput([
|
|
31
|
+
`command: ${bin} ${args.join(" ")}`,
|
|
32
|
+
`cwd: ${cwd}`,
|
|
33
|
+
`exit: ${result.code}`,
|
|
34
|
+
"",
|
|
35
|
+
combined.trim() || "(no output)",
|
|
36
|
+
].join("\n"));
|
|
37
|
+
}
|
|
38
|
+
export function execCapture(bin, args, cwd, options) {
|
|
39
|
+
return new Promise((resolve, reject) => {
|
|
40
|
+
const child = spawn(bin, args, {
|
|
41
|
+
cwd,
|
|
42
|
+
env: process.env,
|
|
43
|
+
stdio: ["ignore", "pipe", "pipe"],
|
|
44
|
+
});
|
|
45
|
+
let stdout = "";
|
|
46
|
+
let stderr = "";
|
|
47
|
+
let timedOut = false;
|
|
48
|
+
const timer = options?.timeoutMs != null
|
|
49
|
+
? setTimeout(() => {
|
|
50
|
+
timedOut = true;
|
|
51
|
+
child.kill("SIGTERM");
|
|
52
|
+
}, options.timeoutMs)
|
|
53
|
+
: undefined;
|
|
54
|
+
const onAbort = () => {
|
|
55
|
+
child.kill("SIGTERM");
|
|
56
|
+
};
|
|
57
|
+
options?.signal?.addEventListener("abort", onAbort);
|
|
58
|
+
child.stdout?.on("data", (c) => {
|
|
59
|
+
stdout += String(c);
|
|
60
|
+
});
|
|
61
|
+
child.stderr?.on("data", (c) => {
|
|
62
|
+
stderr += String(c);
|
|
63
|
+
});
|
|
64
|
+
child.on("error", reject);
|
|
65
|
+
child.on("close", (code) => {
|
|
66
|
+
if (timer)
|
|
67
|
+
clearTimeout(timer);
|
|
68
|
+
options?.signal?.removeEventListener("abort", onAbort);
|
|
69
|
+
if (options?.signal?.aborted) {
|
|
70
|
+
resolve({
|
|
71
|
+
code: 130,
|
|
72
|
+
stdout,
|
|
73
|
+
stderr: `${stderr}\n(aborted)`.trim(),
|
|
74
|
+
});
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
if (timedOut) {
|
|
78
|
+
resolve({
|
|
79
|
+
code: 124,
|
|
80
|
+
stdout,
|
|
81
|
+
stderr: `${stderr}\n(timed out after ${options?.timeoutMs}ms)`.trim(),
|
|
82
|
+
});
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
resolve({ code: code ?? 1, stdout, stderr });
|
|
86
|
+
});
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
export function resolvePathInWorkspace(relativePath, workspace) {
|
|
90
|
+
const resolved = path.resolve(workspace, relativePath);
|
|
91
|
+
const ws = path.resolve(workspace);
|
|
92
|
+
if (!resolved.startsWith(ws)) {
|
|
93
|
+
throw new Error("path must stay inside the workspace");
|
|
94
|
+
}
|
|
95
|
+
return resolved;
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=cli-local-shared.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-local-shared.js","sourceRoot":"","sources":["../../src/extensions/cli-local-shared.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
type ExtensionApi = {
|
|
2
|
+
registerTool: (def: {
|
|
3
|
+
name: string;
|
|
4
|
+
label: string;
|
|
5
|
+
description: string;
|
|
6
|
+
parameters: unknown;
|
|
7
|
+
execute: (toolCallId: string, params: Record<string, unknown>, signal: AbortSignal) => Promise<{
|
|
8
|
+
content: Array<{
|
|
9
|
+
type: "text";
|
|
10
|
+
text: string;
|
|
11
|
+
}>;
|
|
12
|
+
}>;
|
|
13
|
+
}) => void;
|
|
14
|
+
};
|
|
15
|
+
export default function kubbisecAspmLocal(api: ExtensionApi): void;
|
|
16
|
+
export {};
|
|
17
|
+
//# sourceMappingURL=kubbisec-aspm-local.extension.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kubbisec-aspm-local.extension.d.ts","sourceRoot":"","sources":["../../src/extensions/kubbisec-aspm-local.extension.ts"],"names":[],"mappings":"AAwBA,KAAK,YAAY,GAAG;IAClB,YAAY,EAAE,CAAC,GAAG,EAAE;QAClB,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,OAAO,CAAC;QACpB,OAAO,EAAE,CACP,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,MAAM,EAAE,WAAW,KAChB,OAAO,CAAC;YAAE,OAAO,EAAE,KAAK,CAAC;gBAAE,IAAI,EAAE,MAAM,CAAC;gBAAC,IAAI,EAAE,MAAM,CAAA;aAAE,CAAC,CAAA;SAAE,CAAC,CAAC;KAClE,KAAK,IAAI,CAAC;CACZ,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,iBAAiB,CAAC,GAAG,EAAE,YAAY,GAAG,IAAI,CAyHjE"}
|