@kubbisec/ai-linux-x64 0.1.4 → 0.1.6
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/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 +66 -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/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/api-url.d.ts +8 -0
- package/bundled/node_modules/@kubbisec/home/dist/api-url.d.ts.map +1 -0
- package/bundled/node_modules/@kubbisec/home/dist/api-url.js +19 -0
- package/bundled/node_modules/@kubbisec/home/dist/api-url.js.map +1 -0
- package/bundled/node_modules/@kubbisec/home/dist/cli-auth.types.d.ts +16 -0
- package/bundled/node_modules/@kubbisec/home/dist/cli-auth.types.d.ts.map +1 -0
- package/bundled/node_modules/@kubbisec/home/dist/cli-auth.types.js +22 -0
- package/bundled/node_modules/@kubbisec/home/dist/cli-auth.types.js.map +1 -0
- package/bundled/node_modules/@kubbisec/home/dist/index.d.ts +5 -0
- package/bundled/node_modules/@kubbisec/home/dist/index.d.ts.map +1 -0
- package/bundled/node_modules/@kubbisec/home/dist/index.js +5 -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/resolve-bundled-dist-root.js +165 -0
- package/bundled/resolve-bundled-dist-root.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import * as os from "node:os";
|
|
2
|
+
import * as fs from "node:fs";
|
|
3
|
+
import * as path from "node:path";
|
|
4
|
+
import { getAiStateDir, getKubbisecConfigPath, resolveKubbisecApiUrl, } 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: resolveKubbisecApiUrl(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
|
+
const persisted = {
|
|
38
|
+
apiKey: next.apiKey,
|
|
39
|
+
orgId: next.orgId,
|
|
40
|
+
defaultProject: next.defaultProject,
|
|
41
|
+
clientId: next.clientId,
|
|
42
|
+
};
|
|
43
|
+
fs.writeFileSync(getKubbisecConfigPath(), `${JSON.stringify(persisted, null, 2)}\n`, {
|
|
44
|
+
mode: 0o600,
|
|
45
|
+
});
|
|
46
|
+
return next;
|
|
47
|
+
}
|
|
48
|
+
export function clearConfig() {
|
|
49
|
+
const configFile = getKubbisecConfigPath();
|
|
50
|
+
if (fs.existsSync(configFile))
|
|
51
|
+
fs.unlinkSync(configFile);
|
|
52
|
+
}
|
|
53
|
+
export function requireConfig() {
|
|
54
|
+
const cfg = loadConfig();
|
|
55
|
+
if (!cfg.apiKey?.trim()) {
|
|
56
|
+
throw new Error("Not logged in. Run: kubbisec login");
|
|
57
|
+
}
|
|
58
|
+
return {
|
|
59
|
+
apiUrl: resolveKubbisecApiUrl(cfg.apiUrl),
|
|
60
|
+
apiKey: cfg.apiKey.trim(),
|
|
61
|
+
orgId: cfg.orgId?.trim() || undefined,
|
|
62
|
+
defaultProject: cfg.defaultProject?.trim() || undefined,
|
|
63
|
+
clientId: cfg.clientId?.trim() || `kubbisec-${os.hostname()}`,
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
//# 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,20 @@
|
|
|
1
|
+
import type { MemoryRecord, MemoryScope } from "./types.js";
|
|
2
|
+
export declare function searchChatMemory(scope: MemoryScope, query: string, limit?: number): Promise<MemoryRecord[]>;
|
|
3
|
+
export declare function addChatMemoryTurn(scope: MemoryScope, text: string, metadata?: Record<string, string>): Promise<MemoryRecord | null>;
|
|
4
|
+
export declare function forgetChatMemory(scope: MemoryScope, memoryId: string): Promise<boolean>;
|
|
5
|
+
export declare function forgetAllChatMemory(scope: Partial<MemoryScope>): Promise<number>;
|
|
6
|
+
export declare function listChatMemories(scope: Partial<MemoryScope>): MemoryRecord[];
|
|
7
|
+
/** Test helper — clears the in-memory store. */
|
|
8
|
+
export declare function resetChatMemoryStoreForTests(): void;
|
|
9
|
+
export type MemoryStatus = {
|
|
10
|
+
enabled: boolean;
|
|
11
|
+
storageDir: string;
|
|
12
|
+
count: number;
|
|
13
|
+
scopes: {
|
|
14
|
+
organizationId?: string;
|
|
15
|
+
userId?: string;
|
|
16
|
+
byProject: Record<string, number>;
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
export declare function getMemoryStatus(scope: Partial<MemoryScope>): MemoryStatus;
|
|
20
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAyB5D,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,WAAW,EAClB,KAAK,EAAE,MAAM,EACb,KAAK,SAAI,GACR,OAAO,CAAC,YAAY,EAAE,CAAC,CAiBzB;AAED,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,WAAW,EAClB,IAAI,EAAE,MAAM,EACZ,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAChC,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAqB9B;AAED,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAO7F;AAED,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAatF;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,YAAY,EAAE,CAO5E;AAED,gDAAgD;AAChD,wBAAgB,4BAA4B,IAAI,IAAI,CAEnD;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE;QACN,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACnC,CAAC;CACH,CAAC;AAEF,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,YAAY,CAmBzE"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import { randomUUID } from "node:crypto";
|
|
2
|
+
import { sanitizeMemoryText } from "./sanitizer.js";
|
|
3
|
+
import { isMemoryEnabled } from "./feature-flags.js";
|
|
4
|
+
import { resolveMemoryDir } from "./storage-paths.js";
|
|
5
|
+
const inMemoryStore = [];
|
|
6
|
+
function matchesScope(record, scope) {
|
|
7
|
+
if (record.scope.organizationId !== scope.organizationId)
|
|
8
|
+
return false;
|
|
9
|
+
if (record.scope.userId !== scope.userId)
|
|
10
|
+
return false;
|
|
11
|
+
if (scope.projectId && record.scope.projectId !== scope.projectId)
|
|
12
|
+
return false;
|
|
13
|
+
return true;
|
|
14
|
+
}
|
|
15
|
+
function scoreMatch(text, query) {
|
|
16
|
+
const q = query.toLowerCase().trim();
|
|
17
|
+
if (!q)
|
|
18
|
+
return 0;
|
|
19
|
+
const t = text.toLowerCase();
|
|
20
|
+
if (t.includes(q))
|
|
21
|
+
return q.length;
|
|
22
|
+
const tokens = q.split(/\s+/).filter(Boolean);
|
|
23
|
+
return tokens.reduce((acc, token) => (t.includes(token) ? acc + token.length : acc), 0);
|
|
24
|
+
}
|
|
25
|
+
export async function searchChatMemory(scope, query, limit = 5) {
|
|
26
|
+
if (!isMemoryEnabled())
|
|
27
|
+
return [];
|
|
28
|
+
const hits = inMemoryStore
|
|
29
|
+
.filter((record) => matchesScope(record, scope))
|
|
30
|
+
.map((record) => ({ record, score: scoreMatch(record.text, query) }))
|
|
31
|
+
.filter(({ score }) => score > 0 || !query.trim())
|
|
32
|
+
.sort((a, b) => b.score - a.score || b.record.createdAt.localeCompare(a.record.createdAt))
|
|
33
|
+
.slice(0, limit)
|
|
34
|
+
.map(({ record }) => {
|
|
35
|
+
const sanitized = sanitizeMemoryText(record.text);
|
|
36
|
+
if (sanitized.rejected || !sanitized.text.trim())
|
|
37
|
+
return null;
|
|
38
|
+
return { ...record, text: sanitized.text };
|
|
39
|
+
})
|
|
40
|
+
.filter((r) => r !== null);
|
|
41
|
+
return hits;
|
|
42
|
+
}
|
|
43
|
+
export async function addChatMemoryTurn(scope, text, metadata) {
|
|
44
|
+
if (!isMemoryEnabled())
|
|
45
|
+
return null;
|
|
46
|
+
const sanitized = sanitizeMemoryText(text);
|
|
47
|
+
if (sanitized.rejected || !sanitized.text.trim()) {
|
|
48
|
+
if (process.env.KUBBISEC_DEBUG === "1") {
|
|
49
|
+
console.warn(`memory sanitize rejected: ${sanitized.reason ?? "unknown"}`);
|
|
50
|
+
}
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
const record = {
|
|
54
|
+
id: randomUUID(),
|
|
55
|
+
text: sanitized.text,
|
|
56
|
+
scope: { ...scope },
|
|
57
|
+
createdAt: new Date().toISOString(),
|
|
58
|
+
metadata,
|
|
59
|
+
};
|
|
60
|
+
inMemoryStore.push(record);
|
|
61
|
+
return record;
|
|
62
|
+
}
|
|
63
|
+
export async function forgetChatMemory(scope, memoryId) {
|
|
64
|
+
const idx = inMemoryStore.findIndex((record) => record.id === memoryId && matchesScope(record, scope));
|
|
65
|
+
if (idx === -1)
|
|
66
|
+
return false;
|
|
67
|
+
inMemoryStore.splice(idx, 1);
|
|
68
|
+
return true;
|
|
69
|
+
}
|
|
70
|
+
export async function forgetAllChatMemory(scope) {
|
|
71
|
+
if (!scope.organizationId || !scope.userId)
|
|
72
|
+
return 0;
|
|
73
|
+
const before = inMemoryStore.length;
|
|
74
|
+
for (let i = inMemoryStore.length - 1; i >= 0; i -= 1) {
|
|
75
|
+
const record = inMemoryStore[i];
|
|
76
|
+
if (!record)
|
|
77
|
+
continue;
|
|
78
|
+
if (record.scope.organizationId !== scope.organizationId)
|
|
79
|
+
continue;
|
|
80
|
+
if (record.scope.userId !== scope.userId)
|
|
81
|
+
continue;
|
|
82
|
+
if (scope.projectId && record.scope.projectId !== scope.projectId)
|
|
83
|
+
continue;
|
|
84
|
+
inMemoryStore.splice(i, 1);
|
|
85
|
+
}
|
|
86
|
+
return before - inMemoryStore.length;
|
|
87
|
+
}
|
|
88
|
+
export function listChatMemories(scope) {
|
|
89
|
+
return inMemoryStore.filter((record) => {
|
|
90
|
+
if (scope.organizationId && record.scope.organizationId !== scope.organizationId)
|
|
91
|
+
return false;
|
|
92
|
+
if (scope.userId && record.scope.userId !== scope.userId)
|
|
93
|
+
return false;
|
|
94
|
+
if (scope.projectId && record.scope.projectId !== scope.projectId)
|
|
95
|
+
return false;
|
|
96
|
+
return true;
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
/** Test helper — clears the in-memory store. */
|
|
100
|
+
export function resetChatMemoryStoreForTests() {
|
|
101
|
+
inMemoryStore.length = 0;
|
|
102
|
+
}
|
|
103
|
+
export function getMemoryStatus(scope) {
|
|
104
|
+
const records = listChatMemories(scope);
|
|
105
|
+
const byProject = {};
|
|
106
|
+
for (const record of records) {
|
|
107
|
+
const key = record.scope.projectId ?? "(global)";
|
|
108
|
+
byProject[key] = (byProject[key] ?? 0) + 1;
|
|
109
|
+
}
|
|
110
|
+
return {
|
|
111
|
+
enabled: isMemoryEnabled(),
|
|
112
|
+
storageDir: resolveMemoryDir(),
|
|
113
|
+
count: records.length,
|
|
114
|
+
scopes: {
|
|
115
|
+
organizationId: scope.organizationId,
|
|
116
|
+
userId: scope.userId,
|
|
117
|
+
byProject,
|
|
118
|
+
},
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/** Truthy only when env value is exactly "1". */
|
|
2
|
+
export declare function envFlagOn(env: NodeJS.ProcessEnv, key: string): boolean;
|
|
3
|
+
export declare function isMemoryEnabled(env?: NodeJS.ProcessEnv): boolean;
|
|
4
|
+
export type ChatMode = "default" | "plan" | "review";
|
|
5
|
+
export type KubbisecAiFeatureFlags = {
|
|
6
|
+
skillOpt: boolean;
|
|
7
|
+
mem0: boolean;
|
|
8
|
+
lowResource: boolean;
|
|
9
|
+
orchestrate: boolean;
|
|
10
|
+
chatMode: ChatMode;
|
|
11
|
+
};
|
|
12
|
+
export declare function parseChatMode(raw: string | undefined): ChatMode;
|
|
13
|
+
export declare function isSkillRouterEnabled(env?: NodeJS.ProcessEnv): boolean;
|
|
14
|
+
export declare function resolveFeatureFlags(env?: NodeJS.ProcessEnv): KubbisecAiFeatureFlags;
|
|
15
|
+
//# sourceMappingURL=feature-flags.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feature-flags.d.ts","sourceRoot":"","sources":["../src/feature-flags.ts"],"names":[],"mappings":"AAAA,iDAAiD;AACjD,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAEtE;AAED,wBAAgB,eAAe,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,OAAO,CAI7E;AAED,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,QAAQ,CAAC;AAErD,MAAM,MAAM,sBAAsB,GAAG;IACnC,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,OAAO,CAAC;IACd,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,QAAQ,CAAC;CACpB,CAAC;AAIF,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,QAAQ,CAM/D;AAED,wBAAgB,oBAAoB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,OAAO,CAElF;AAED,wBAAgB,mBAAmB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,sBAAsB,CAWhG"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/** Truthy only when env value is exactly "1". */
|
|
2
|
+
export function envFlagOn(env, key) {
|
|
3
|
+
return env[key]?.trim() === "1";
|
|
4
|
+
}
|
|
5
|
+
export function isMemoryEnabled(env = process.env) {
|
|
6
|
+
if (envFlagOn(env, "KUBBISEC_MEMORY_DISABLED"))
|
|
7
|
+
return false;
|
|
8
|
+
if (env.KUBBISEC_MEM0?.trim() === "0")
|
|
9
|
+
return false;
|
|
10
|
+
return true;
|
|
11
|
+
}
|
|
12
|
+
const CHAT_MODES = new Set(["default", "plan", "review"]);
|
|
13
|
+
export function parseChatMode(raw) {
|
|
14
|
+
const value = (raw ?? "default").trim().toLowerCase();
|
|
15
|
+
if (!CHAT_MODES.has(value)) {
|
|
16
|
+
throw new Error(`Invalid KUBBISEC_CHAT_MODE: ${raw ?? ""}`);
|
|
17
|
+
}
|
|
18
|
+
return value;
|
|
19
|
+
}
|
|
20
|
+
export function isSkillRouterEnabled(env = process.env) {
|
|
21
|
+
return envFlagOn(env, "KUBBISEC_SKILL_ROUTER");
|
|
22
|
+
}
|
|
23
|
+
export function resolveFeatureFlags(env = process.env) {
|
|
24
|
+
const chatModeRaw = env.KUBBISEC_CHAT_MODE?.trim();
|
|
25
|
+
const chatMode = chatModeRaw ? parseChatMode(chatModeRaw) : "default";
|
|
26
|
+
return {
|
|
27
|
+
skillOpt: envFlagOn(env, "KUBBISEC_SKILL_OPT"),
|
|
28
|
+
mem0: isMemoryEnabled(env),
|
|
29
|
+
lowResource: envFlagOn(env, "KUBBISEC_LOW_RESOURCE"),
|
|
30
|
+
orchestrate: envFlagOn(env, "KUBBISEC_ORCHESTRATE"),
|
|
31
|
+
chatMode,
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=feature-flags.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feature-flags.js","sourceRoot":"","sources":["../src/feature-flags.ts"],"names":[],"mappings":"AAAA,iDAAiD;AACjD,MAAM,UAAU,SAAS,CAAC,GAAsB,EAAE,GAAW;IAC3D,OAAO,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,KAAK,GAAG,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,MAAyB,OAAO,CAAC,GAAG;IAClE,IAAI,SAAS,CAAC,GAAG,EAAE,0BAA0B,CAAC;QAAE,OAAO,KAAK,CAAC;IAC7D,IAAI,GAAG,CAAC,aAAa,EAAE,IAAI,EAAE,KAAK,GAAG;QAAE,OAAO,KAAK,CAAC;IACpD,OAAO,IAAI,CAAC;AACd,CAAC;AAYD,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;AAE1D,MAAM,UAAU,aAAa,CAAC,GAAuB;IACnD,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACtD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,+BAA+B,GAAG,IAAI,EAAE,EAAE,CAAC,CAAC;IAC9D,CAAC;IACD,OAAO,KAAiB,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,MAAyB,OAAO,CAAC,GAAG;IACvE,OAAO,SAAS,CAAC,GAAG,EAAE,uBAAuB,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,MAAyB,OAAO,CAAC,GAAG;IACtE,MAAM,WAAW,GAAG,GAAG,CAAC,kBAAkB,EAAE,IAAI,EAAE,CAAC;IACnD,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAEtE,OAAO;QACL,QAAQ,EAAE,SAAS,CAAC,GAAG,EAAE,oBAAoB,CAAC;QAC9C,IAAI,EAAE,eAAe,CAAC,GAAG,CAAC;QAC1B,WAAW,EAAE,SAAS,CAAC,GAAG,EAAE,uBAAuB,CAAC;QACpD,WAAW,EAAE,SAAS,CAAC,GAAG,EAAE,sBAAsB,CAAC;QACnD,QAAQ;KACT,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export type { MemoryRecord, MemoryScope, SanitizeResult, MemoryAllowedTopic } from "./types.js";
|
|
2
|
+
export { MEMORY_ALLOWED_TOPICS } from "./types.js";
|
|
3
|
+
export { sanitizeMemoryText, MEMORY_BLOCKLIST } from "./sanitizer.js";
|
|
4
|
+
export { searchChatMemory, addChatMemoryTurn, forgetChatMemory, forgetAllChatMemory, listChatMemories, getMemoryStatus, resetChatMemoryStoreForTests, type MemoryStatus, } from "./client.js";
|
|
5
|
+
export { resolveMemoryDir } from "./storage-paths.js";
|
|
6
|
+
export { envFlagOn, isMemoryEnabled, isSkillRouterEnabled, parseChatMode, resolveFeatureFlags, type ChatMode, type KubbisecAiFeatureFlags, } from "./feature-flags.js";
|
|
7
|
+
export declare const MEMORY_INJECT_HEADER = "## KubbiSec \u2014 mem\u00F3rias relevantes\n";
|
|
8
|
+
export declare function buildMemoryInjectBlock(memories: Array<{
|
|
9
|
+
text: string;
|
|
10
|
+
}>, maxBytes?: number): string;
|
|
11
|
+
export declare function extractRememberCandidates(userMessage: string, assistantMessage: string): string[];
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChG,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACtE,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EACf,4BAA4B,EAC5B,KAAK,YAAY,GAClB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EACL,SAAS,EACT,eAAe,EACf,oBAAoB,EACpB,aAAa,EACb,mBAAmB,EACnB,KAAK,QAAQ,EACb,KAAK,sBAAsB,GAC5B,MAAM,oBAAoB,CAAC;AAE5B,eAAO,MAAM,oBAAoB,kDAAwC,CAAC;AAE1E,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,EACjC,QAAQ,SAAO,GACd,MAAM,CAYR;AAED,wBAAgB,yBAAyB,CAAC,WAAW,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,MAAM,EAAE,CAmBjG"}
|