@kubbisec/ai-linux-arm64 0.1.4 → 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.
Files changed (98) hide show
  1. package/bin/kubbisec +0 -0
  2. package/bundled/clarify/clarify-gate.d.ts +27 -0
  3. package/bundled/clarify/clarify-gate.d.ts.map +1 -0
  4. package/bundled/clarify/clarify-gate.js +152 -0
  5. package/bundled/clarify/clarify-gate.js.map +1 -0
  6. package/bundled/clarify/clarify-ui-state.d.ts +12 -0
  7. package/bundled/clarify/clarify-ui-state.d.ts.map +1 -0
  8. package/bundled/clarify/clarify-ui-state.js +27 -0
  9. package/bundled/clarify/clarify-ui-state.js.map +1 -0
  10. package/bundled/clarify/parse-clarify-answer.d.ts +16 -0
  11. package/bundled/clarify/parse-clarify-answer.d.ts.map +1 -0
  12. package/bundled/clarify/parse-clarify-answer.js +22 -0
  13. package/bundled/clarify/parse-clarify-answer.js.map +1 -0
  14. package/bundled/clarify/question-format.d.ts +36 -0
  15. package/bundled/clarify/question-format.d.ts.map +1 -0
  16. package/bundled/clarify/question-format.js +150 -0
  17. package/bundled/clarify/question-format.js.map +1 -0
  18. package/bundled/clarify/questionnaire-tool.d.ts +25 -0
  19. package/bundled/clarify/questionnaire-tool.d.ts.map +1 -0
  20. package/bundled/clarify/questionnaire-tool.js +157 -0
  21. package/bundled/clarify/questionnaire-tool.js.map +1 -0
  22. package/bundled/clarify/session-questionnaire.d.ts +23 -0
  23. package/bundled/clarify/session-questionnaire.d.ts.map +1 -0
  24. package/bundled/clarify/session-questionnaire.js +319 -0
  25. package/bundled/clarify/session-questionnaire.js.map +1 -0
  26. package/bundled/clarify/session-questionnaire.types.d.ts +45 -0
  27. package/bundled/clarify/session-questionnaire.types.d.ts.map +1 -0
  28. package/bundled/clarify/session-questionnaire.types.js +13 -0
  29. package/bundled/clarify/session-questionnaire.types.js.map +1 -0
  30. package/bundled/config/config.d.ts +14 -0
  31. package/bundled/config/config.d.ts.map +1 -0
  32. package/bundled/config/config.js +58 -0
  33. package/bundled/config/config.js.map +1 -0
  34. package/bundled/config/ensure-kubbisec-project-settings.d.ts +20 -0
  35. package/bundled/config/ensure-kubbisec-project-settings.d.ts.map +1 -0
  36. package/bundled/config/ensure-kubbisec-project-settings.js +65 -0
  37. package/bundled/config/ensure-kubbisec-project-settings.js.map +1 -0
  38. package/bundled/config/feature-flags.d.ts +2 -0
  39. package/bundled/config/feature-flags.d.ts.map +1 -0
  40. package/bundled/config/feature-flags.js +2 -0
  41. package/bundled/config/feature-flags.js.map +1 -0
  42. package/bundled/config/format-kubbisec-footer-status.d.ts +2 -0
  43. package/bundled/config/format-kubbisec-footer-status.d.ts.map +1 -0
  44. package/bundled/config/format-kubbisec-footer-status.js +21 -0
  45. package/bundled/config/format-kubbisec-footer-status.js.map +1 -0
  46. package/bundled/config/resolve-agents-context-file.d.ts +4 -0
  47. package/bundled/config/resolve-agents-context-file.d.ts.map +1 -0
  48. package/bundled/config/resolve-agents-context-file.js +48 -0
  49. package/bundled/config/resolve-agents-context-file.js.map +1 -0
  50. package/bundled/config/resource-budget.d.ts +17 -0
  51. package/bundled/config/resource-budget.d.ts.map +1 -0
  52. package/bundled/config/resource-budget.js +35 -0
  53. package/bundled/config/resource-budget.js.map +1 -0
  54. package/bundled/copy/kubbisec-shell-copy.d.ts +8 -0
  55. package/bundled/copy/kubbisec-shell-copy.d.ts.map +1 -0
  56. package/bundled/copy/kubbisec-shell-copy.js +8 -0
  57. package/bundled/copy/kubbisec-shell-copy.js.map +1 -0
  58. package/bundled/node_modules/@kubbisec/chat-memory/dist/client.d.ts +20 -0
  59. package/bundled/node_modules/@kubbisec/chat-memory/dist/client.d.ts.map +1 -0
  60. package/bundled/node_modules/@kubbisec/chat-memory/dist/client.js +121 -0
  61. package/bundled/node_modules/@kubbisec/chat-memory/dist/client.js.map +1 -0
  62. package/bundled/node_modules/@kubbisec/chat-memory/dist/feature-flags.d.ts +15 -0
  63. package/bundled/node_modules/@kubbisec/chat-memory/dist/feature-flags.d.ts.map +1 -0
  64. package/bundled/node_modules/@kubbisec/chat-memory/dist/feature-flags.js +34 -0
  65. package/bundled/node_modules/@kubbisec/chat-memory/dist/feature-flags.js.map +1 -0
  66. package/bundled/node_modules/@kubbisec/chat-memory/dist/index.d.ts +12 -0
  67. package/bundled/node_modules/@kubbisec/chat-memory/dist/index.d.ts.map +1 -0
  68. package/bundled/node_modules/@kubbisec/chat-memory/dist/index.js +35 -0
  69. package/bundled/node_modules/@kubbisec/chat-memory/dist/index.js.map +1 -0
  70. package/bundled/node_modules/@kubbisec/chat-memory/dist/sanitizer.d.ts +4 -0
  71. package/bundled/node_modules/@kubbisec/chat-memory/dist/sanitizer.d.ts.map +1 -0
  72. package/bundled/node_modules/@kubbisec/chat-memory/dist/sanitizer.js +89 -0
  73. package/bundled/node_modules/@kubbisec/chat-memory/dist/sanitizer.js.map +1 -0
  74. package/bundled/node_modules/@kubbisec/chat-memory/dist/storage-paths.d.ts +2 -0
  75. package/bundled/node_modules/@kubbisec/chat-memory/dist/storage-paths.d.ts.map +1 -0
  76. package/bundled/node_modules/@kubbisec/chat-memory/dist/storage-paths.js +13 -0
  77. package/bundled/node_modules/@kubbisec/chat-memory/dist/storage-paths.js.map +1 -0
  78. package/bundled/node_modules/@kubbisec/chat-memory/dist/types.d.ts +24 -0
  79. package/bundled/node_modules/@kubbisec/chat-memory/dist/types.d.ts.map +1 -0
  80. package/bundled/node_modules/@kubbisec/chat-memory/dist/types.js +9 -0
  81. package/bundled/node_modules/@kubbisec/chat-memory/dist/types.js.map +1 -0
  82. package/bundled/node_modules/@kubbisec/chat-memory/package.json +32 -0
  83. package/bundled/node_modules/@kubbisec/home/dist/index.d.ts +3 -0
  84. package/bundled/node_modules/@kubbisec/home/dist/index.d.ts.map +1 -0
  85. package/bundled/node_modules/@kubbisec/home/dist/index.js +3 -0
  86. package/bundled/node_modules/@kubbisec/home/dist/index.js.map +1 -0
  87. package/bundled/node_modules/@kubbisec/home/dist/migrate.d.ts +10 -0
  88. package/bundled/node_modules/@kubbisec/home/dist/migrate.d.ts.map +1 -0
  89. package/bundled/node_modules/@kubbisec/home/dist/migrate.js +107 -0
  90. package/bundled/node_modules/@kubbisec/home/dist/migrate.js.map +1 -0
  91. package/bundled/node_modules/@kubbisec/home/dist/paths.d.ts +22 -0
  92. package/bundled/node_modules/@kubbisec/home/dist/paths.d.ts.map +1 -0
  93. package/bundled/node_modules/@kubbisec/home/dist/paths.js +69 -0
  94. package/bundled/node_modules/@kubbisec/home/dist/paths.js.map +1 -0
  95. package/bundled/node_modules/@kubbisec/home/package.json +26 -0
  96. package/bundled/resolve-bundled-dist-root.js +165 -0
  97. package/bundled/resolve-bundled-dist-root.js.map +1 -0
  98. package/package.json +1 -1
@@ -0,0 +1,157 @@
1
+ import { Type } from "@earendil-works/pi-ai";
2
+ import { formatQuestionFromInput, inferScenarioFromMessage, suggestScenarioFields, } from "./question-format.js";
3
+ import { askQuestion, applyPendingAnswer, completeQuestionnaire, hasMinimumRemediationScope, mergeRecordedFields, } from "./session-questionnaire.js";
4
+ export function executeQuestionnaireTool(questionnaire, input, userMessage) {
5
+ const action = input.action;
6
+ if (action === "status") {
7
+ const scenario = input.scenario ??
8
+ questionnaire.scenario ??
9
+ inferScenarioFromMessage(userMessage ?? "");
10
+ const suggestion = suggestScenarioFields(scenario, questionnaire.fields);
11
+ const lines = [
12
+ `Status: ${questionnaire.status}`,
13
+ `Scenario: ${scenario}`,
14
+ `Awaiting answer: ${questionnaire.awaitingUserAnswer ? "yes" : "no"}`,
15
+ `History: ${questionnaire.history.length} answer(s)`,
16
+ suggestion.missingFields.length
17
+ ? `Missing hints: ${suggestion.missingFields.join(", ")}`
18
+ : "No missing hinted fields for this scenario.",
19
+ ];
20
+ if (suggestion.nextHint) {
21
+ lines.push("", `Suggested next field: ${suggestion.nextHint.field} (${suggestion.nextHint.purpose})`, `Example question: ${suggestion.nextHint.exampleQuestion}`, `Example options: ${suggestion.nextHint.exampleOptions.join(" | ")}`);
22
+ }
23
+ return {
24
+ ok: true,
25
+ action,
26
+ status: questionnaire.status,
27
+ message: lines.join("\n"),
28
+ questionnaire,
29
+ };
30
+ }
31
+ if (action === "complete") {
32
+ const next = completeQuestionnaire(input.fields ? { ...questionnaire, fields: mergeRecordedFields(questionnaire.fields, input.fields) } : questionnaire);
33
+ return {
34
+ ok: true,
35
+ action,
36
+ status: next.status,
37
+ message: "Scope questionnaire marked ready. Mutation tools may proceed when policy allows.",
38
+ questionnaire: next,
39
+ };
40
+ }
41
+ if (action === "record") {
42
+ if (!input.fields || Object.keys(input.fields).length === 0) {
43
+ return {
44
+ ok: false,
45
+ action,
46
+ status: questionnaire.status,
47
+ message: "record requires at least one field in `fields`.",
48
+ questionnaire,
49
+ };
50
+ }
51
+ const merged = mergeRecordedFields(questionnaire.fields, input.fields);
52
+ let next = {
53
+ ...questionnaire,
54
+ fields: merged,
55
+ scenario: input.scenario ?? questionnaire.scenario,
56
+ updatedAt: new Date().toISOString(),
57
+ };
58
+ if (hasMinimumRemediationScope(merged) || input.scenario === "explore" || input.scenario === "review") {
59
+ next = completeQuestionnaire(next);
60
+ }
61
+ return {
62
+ ok: true,
63
+ action,
64
+ status: next.status,
65
+ message: next.status === "ready"
66
+ ? "Recorded scope fields and marked questionnaire ready."
67
+ : "Recorded scope fields. Use ask for any remaining gaps.",
68
+ questionnaire: next,
69
+ };
70
+ }
71
+ if (action === "ask") {
72
+ const scenario = input.scenario ??
73
+ questionnaire.scenario ??
74
+ inferScenarioFromMessage(userMessage ?? "");
75
+ const field = input.field?.trim() ||
76
+ suggestScenarioFields(scenario, questionnaire.fields).nextHint?.field;
77
+ const question = input.question?.trim() ||
78
+ suggestScenarioFields(scenario, questionnaire.fields).nextHint?.exampleQuestion;
79
+ const options = input.options?.filter(Boolean) ||
80
+ suggestScenarioFields(scenario, questionnaire.fields).nextHint?.exampleOptions;
81
+ if (!field || !question || !options?.length) {
82
+ return {
83
+ ok: false,
84
+ action,
85
+ status: questionnaire.status,
86
+ message: "ask requires field + question + options (2–4), or a scenario with remaining hinted fields.",
87
+ questionnaire,
88
+ };
89
+ }
90
+ const { markdown, optionLabels } = formatQuestionFromInput({
91
+ question,
92
+ options,
93
+ language: input.language,
94
+ });
95
+ const next = askQuestion(questionnaire, {
96
+ field,
97
+ questionMarkdown: markdown,
98
+ optionLabels,
99
+ scenario,
100
+ });
101
+ return {
102
+ ok: true,
103
+ action,
104
+ status: next.status,
105
+ formattedQuestion: markdown,
106
+ message: [
107
+ `Question queued for field "${field}".`,
108
+ "The KubbiSec panel shows the formatted A–E options.",
109
+ "Wait for the user reply; do not repeat the full option list in chat.",
110
+ "",
111
+ markdown,
112
+ ].join("\n"),
113
+ questionnaire: next,
114
+ };
115
+ }
116
+ return {
117
+ ok: false,
118
+ action,
119
+ status: questionnaire.status,
120
+ message: `Unknown action: ${String(action)}`,
121
+ questionnaire,
122
+ };
123
+ }
124
+ export function questionnaireToolParametersSchema() {
125
+ return Type.Object({
126
+ action: Type.Union([
127
+ Type.Literal("ask"),
128
+ Type.Literal("record"),
129
+ Type.Literal("complete"),
130
+ Type.Literal("status"),
131
+ ]),
132
+ field: Type.Optional(Type.String({ description: "Scope field key, e.g. projectIds, severityMin" })),
133
+ question: Type.Optional(Type.String({ description: "Question text tailored to the scenario" })),
134
+ options: Type.Optional(Type.Array(Type.String(), {
135
+ description: "2–4 short option labels (tool assigns A–D)",
136
+ minItems: 2,
137
+ maxItems: 4,
138
+ })),
139
+ scenario: Type.Optional(Type.Union([
140
+ Type.Literal("remediation"),
141
+ Type.Literal("plan"),
142
+ Type.Literal("explore"),
143
+ Type.Literal("review"),
144
+ ])),
145
+ fields: Type.Optional(Type.Object({}, {
146
+ description: "Partial scope fields for record/complete",
147
+ additionalProperties: true,
148
+ })),
149
+ language: Type.Optional(Type.Union([Type.Literal("pt"), Type.Literal("en")])),
150
+ });
151
+ }
152
+ export function applyParsedUserAnswerIfPending(questionnaire, parsed) {
153
+ if (!questionnaire.awaitingUserAnswer || !questionnaire.pending)
154
+ return questionnaire;
155
+ return applyPendingAnswer(questionnaire, parsed);
156
+ }
157
+ //# sourceMappingURL=questionnaire-tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"questionnaire-tool.js","sourceRoot":"","sources":["../../src/clarify/questionnaire-tool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import type { ClarifyAnswer } from "./parse-clarify-answer.js";
2
+ import type { QuestionnaireScenario, SessionQuestionnaire, SessionQuestionnaireFields } from "./session-questionnaire.types.js";
3
+ export declare const SESSION_QUESTIONNAIRE_FILENAME = "session-questionnaire.json";
4
+ export declare function resolveSessionQuestionnairePath(cwd: string): string;
5
+ export declare function readDefaultProjectId(): string | undefined;
6
+ export declare function createCollectingQuestionnaire(sessionId: string): SessionQuestionnaire;
7
+ export declare function readSessionQuestionnaire(cwd: string, sessionIdFallback: string): SessionQuestionnaire;
8
+ export declare function writeSessionQuestionnaire(cwd: string, questionnaire: SessionQuestionnaire): void;
9
+ export declare function hasMinimumRemediationScope(fields: SessionQuestionnaireFields): boolean;
10
+ export declare function setFieldValue(fields: SessionQuestionnaireFields, field: string, value: string): SessionQuestionnaireFields;
11
+ export declare function mergeRecordedFields(fields: SessionQuestionnaireFields, partial: Partial<SessionQuestionnaireFields> & Record<string, unknown>): SessionQuestionnaireFields;
12
+ export declare function askQuestion(questionnaire: SessionQuestionnaire, input: {
13
+ field: string;
14
+ questionMarkdown: string;
15
+ optionLabels: string[];
16
+ scenario?: QuestionnaireScenario | null;
17
+ }): SessionQuestionnaire;
18
+ export declare function completeQuestionnaire(questionnaire: SessionQuestionnaire): SessionQuestionnaire;
19
+ export declare function shouldAcceptClarifyAnswer(questionnaire: SessionQuestionnaire, parsed: ClarifyAnswer): boolean;
20
+ export declare function applyPendingAnswer(questionnaire: SessionQuestionnaire, answer: ClarifyAnswer): SessionQuestionnaire;
21
+ export declare function finalizeQuestionnaireAtRoundLimit(questionnaire: SessionQuestionnaire, maxRounds: number): SessionQuestionnaire;
22
+ export declare function buildClarifyProgressLabel(questionnaire: SessionQuestionnaire): string;
23
+ //# sourceMappingURL=session-questionnaire.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-questionnaire.d.ts","sourceRoot":"","sources":["../../src/clarify/session-questionnaire.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAS/D,OAAO,KAAK,EAEV,qBAAqB,EACrB,oBAAoB,EACpB,0BAA0B,EAC3B,MAAM,kCAAkC,CAAC;AAS1C,eAAO,MAAM,8BAA8B,+BAA+B,CAAC;AAE3E,wBAAgB,+BAA+B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAOnE;AAED,wBAAgB,oBAAoB,IAAI,MAAM,GAAG,SAAS,CAUzD;AA6ED,wBAAgB,6BAA6B,CAAC,SAAS,EAAE,MAAM,GAAG,oBAAoB,CAarF;AAED,wBAAgB,wBAAwB,CACtC,GAAG,EAAE,MAAM,EACX,iBAAiB,EAAE,MAAM,GACxB,oBAAoB,CAiBtB;AAED,wBAAgB,yBAAyB,CACvC,GAAG,EAAE,MAAM,EACX,aAAa,EAAE,oBAAoB,GAClC,IAAI,CAeN;AAED,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,0BAA0B,GAAG,OAAO,CAMtF;AAED,wBAAgB,aAAa,CAC3B,MAAM,EAAE,0BAA0B,EAClC,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,GACZ,0BAA0B,CAkC5B;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,0BAA0B,EAClC,OAAO,EAAE,OAAO,CAAC,0BAA0B,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACrE,0BAA0B,CA8B5B;AAED,wBAAgB,WAAW,CACzB,aAAa,EAAE,oBAAoB,EACnC,KAAK,EAAE;IACL,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,QAAQ,CAAC,EAAE,qBAAqB,GAAG,IAAI,CAAC;CACzC,GACA,oBAAoB,CActB;AAED,wBAAgB,qBAAqB,CACnC,aAAa,EAAE,oBAAoB,GAClC,oBAAoB,CAQtB;AAED,wBAAgB,yBAAyB,CACvC,aAAa,EAAE,oBAAoB,EACnC,MAAM,EAAE,aAAa,GACpB,OAAO,CAST;AAED,wBAAgB,kBAAkB,CAChC,aAAa,EAAE,oBAAoB,EACnC,MAAM,EAAE,aAAa,GACpB,oBAAoB,CA2DtB;AAED,wBAAgB,iCAAiC,CAC/C,aAAa,EAAE,oBAAoB,EACnC,SAAS,EAAE,MAAM,GAChB,oBAAoB,CAUtB;AAED,wBAAgB,yBAAyB,CAAC,aAAa,EAAE,oBAAoB,GAAG,MAAM,CAIrF"}
@@ -0,0 +1,319 @@
1
+ import { resolveOptionLabel, severityFromOptionLabel, } from "./question-format.js";
2
+ import { KUBBISEC_CONTEXT_DIR, KUBBISEC_PROJECT_CONFIG_DIR, } from "../config/ensure-kubbisec-project-settings.js";
3
+ import { SESSION_QUESTIONNAIRE_SCHEMA, createEmptyFields, } from "./session-questionnaire.types.js";
4
+ import * as fs from "node:fs";
5
+ import * as path from "node:path";
6
+ import { getKubbisecConfigPath } from "@kubbisec/home";
7
+ export const SESSION_QUESTIONNAIRE_FILENAME = "session-questionnaire.json";
8
+ export function resolveSessionQuestionnairePath(cwd) {
9
+ return path.join(cwd, KUBBISEC_PROJECT_CONFIG_DIR, KUBBISEC_CONTEXT_DIR, SESSION_QUESTIONNAIRE_FILENAME);
10
+ }
11
+ export function readDefaultProjectId() {
12
+ const fromEnv = process.env.KUBBISEC_CONTEXT_PROJECT_ID?.trim();
13
+ if (fromEnv)
14
+ return fromEnv;
15
+ try {
16
+ const raw = fs.readFileSync(getKubbisecConfigPath(), "utf8");
17
+ const parsed = JSON.parse(raw);
18
+ return parsed.defaultProject?.trim() || undefined;
19
+ }
20
+ catch {
21
+ return undefined;
22
+ }
23
+ }
24
+ function isRecord(value) {
25
+ return typeof value === "object" && value !== null && !Array.isArray(value);
26
+ }
27
+ function parseFields(raw) {
28
+ const base = createEmptyFields();
29
+ if (!isRecord(raw))
30
+ return base;
31
+ if (Array.isArray(raw.projectIds)) {
32
+ base.projectIds = raw.projectIds.filter((id) => typeof id === "string");
33
+ }
34
+ if (typeof raw.severityMin === "string")
35
+ base.severityMin = raw.severityMin;
36
+ if (raw.remediationMode === "auto" || raw.remediationMode === "suggestion") {
37
+ base.remediationMode = raw.remediationMode;
38
+ }
39
+ if (typeof raw.nausConstraints === "string")
40
+ base.nausConstraints = raw.nausConstraints;
41
+ if (typeof raw.extendedContext === "boolean")
42
+ base.extendedContext = raw.extendedContext;
43
+ if (typeof raw.customNotes === "string")
44
+ base.customNotes = raw.customNotes;
45
+ if (isRecord(raw.extras)) {
46
+ for (const [key, value] of Object.entries(raw.extras)) {
47
+ if (typeof value === "string")
48
+ base.extras[key] = value;
49
+ }
50
+ }
51
+ return base;
52
+ }
53
+ function applyDefaultProjectPrefill(fields) {
54
+ if (fields.projectIds.length > 0)
55
+ return fields;
56
+ const defaultProject = readDefaultProjectId();
57
+ if (!defaultProject)
58
+ return fields;
59
+ return { ...fields, projectIds: [defaultProject] };
60
+ }
61
+ function parsePending(raw) {
62
+ if (!isRecord(raw))
63
+ return null;
64
+ if (typeof raw.field !== "string" || typeof raw.questionMarkdown !== "string")
65
+ return null;
66
+ const optionLabels = Array.isArray(raw.optionLabels)
67
+ ? raw.optionLabels.filter((v) => typeof v === "string")
68
+ : [];
69
+ return { field: raw.field, questionMarkdown: raw.questionMarkdown, optionLabels };
70
+ }
71
+ function parseQuestionnaire(raw, sessionIdFallback) {
72
+ if (!isRecord(raw))
73
+ return null;
74
+ const sessionId = typeof raw.sessionId === "string" && raw.sessionId.trim()
75
+ ? raw.sessionId.trim()
76
+ : sessionIdFallback;
77
+ const status = raw.status === "ready" ? "ready" : "collecting";
78
+ const updatedAt = typeof raw.updatedAt === "string" && raw.updatedAt.trim()
79
+ ? raw.updatedAt
80
+ : new Date().toISOString();
81
+ const scenario = raw.scenario === "plan" ||
82
+ raw.scenario === "explore" ||
83
+ raw.scenario === "review" ||
84
+ raw.scenario === "remediation"
85
+ ? raw.scenario
86
+ : null;
87
+ return {
88
+ $schema: SESSION_QUESTIONNAIRE_SCHEMA,
89
+ sessionId,
90
+ status,
91
+ scenario,
92
+ updatedAt,
93
+ fields: applyDefaultProjectPrefill(parseFields(raw.fields)),
94
+ history: Array.isArray(raw.history) ? raw.history : [],
95
+ awaitingUserAnswer: typeof raw.awaitingUserAnswer === "boolean" ? raw.awaitingUserAnswer : false,
96
+ pending: parsePending(raw.pending),
97
+ };
98
+ }
99
+ export function createCollectingQuestionnaire(sessionId) {
100
+ const now = new Date().toISOString();
101
+ return {
102
+ $schema: SESSION_QUESTIONNAIRE_SCHEMA,
103
+ sessionId,
104
+ status: "collecting",
105
+ scenario: null,
106
+ updatedAt: now,
107
+ fields: applyDefaultProjectPrefill(createEmptyFields()),
108
+ history: [],
109
+ awaitingUserAnswer: false,
110
+ pending: null,
111
+ };
112
+ }
113
+ export function readSessionQuestionnaire(cwd, sessionIdFallback) {
114
+ const filePath = resolveSessionQuestionnairePath(cwd);
115
+ try {
116
+ const raw = fs.readFileSync(filePath, "utf8");
117
+ const parsed = parseQuestionnaire(JSON.parse(raw), sessionIdFallback);
118
+ if (parsed) {
119
+ if (parsed.sessionId !== sessionIdFallback) {
120
+ return createCollectingQuestionnaire(sessionIdFallback);
121
+ }
122
+ return parsed;
123
+ }
124
+ }
125
+ catch (error) {
126
+ if (error.code !== "ENOENT") {
127
+ console.warn("[kubbisec-clarify] Invalid session questionnaire state; resetting.");
128
+ }
129
+ }
130
+ return createCollectingQuestionnaire(sessionIdFallback);
131
+ }
132
+ export function writeSessionQuestionnaire(cwd, questionnaire) {
133
+ const filePath = resolveSessionQuestionnairePath(cwd);
134
+ fs.mkdirSync(path.dirname(filePath), { recursive: true, mode: 0o755 });
135
+ const payload = {
136
+ ...questionnaire,
137
+ updatedAt: new Date().toISOString(),
138
+ };
139
+ const tmpPath = `${filePath}.${process.pid}.tmp`;
140
+ fs.writeFileSync(tmpPath, `${JSON.stringify(payload, null, 2)}\n`, {
141
+ encoding: "utf8",
142
+ mode: 0o600,
143
+ });
144
+ fs.renameSync(tmpPath, filePath);
145
+ }
146
+ export function hasMinimumRemediationScope(fields) {
147
+ return (fields.projectIds.length > 0 &&
148
+ Boolean(fields.severityMin) &&
149
+ Boolean(fields.remediationMode));
150
+ }
151
+ export function setFieldValue(fields, field, value) {
152
+ const next = {
153
+ ...fields,
154
+ projectIds: [...fields.projectIds],
155
+ extras: { ...fields.extras },
156
+ };
157
+ switch (field) {
158
+ case "projectIds":
159
+ next.projectIds = value ? [value] : [];
160
+ break;
161
+ case "severityMin":
162
+ next.severityMin = severityFromOptionLabel(value);
163
+ break;
164
+ case "remediationMode":
165
+ next.remediationMode = /sugest|suggest|manual|híbrido|hibrido|plano/i.test(value)
166
+ ? "suggestion"
167
+ : "auto";
168
+ break;
169
+ case "nausConstraints":
170
+ next.nausConstraints = value;
171
+ break;
172
+ case "extendedContext":
173
+ next.extendedContext = /^(sim|yes|true|1|a)$/i.test(value);
174
+ break;
175
+ case "customNotes":
176
+ next.customNotes = [next.customNotes, value].filter(Boolean).join("\n") || value;
177
+ break;
178
+ default:
179
+ next.extras[field] = value;
180
+ break;
181
+ }
182
+ return next;
183
+ }
184
+ export function mergeRecordedFields(fields, partial) {
185
+ let next = { ...fields, projectIds: [...fields.projectIds], extras: { ...fields.extras } };
186
+ if (Array.isArray(partial.projectIds)) {
187
+ next.projectIds = partial.projectIds.filter((id) => typeof id === "string");
188
+ }
189
+ if (typeof partial.severityMin === "string")
190
+ next.severityMin = partial.severityMin;
191
+ if (partial.remediationMode === "auto" || partial.remediationMode === "suggestion") {
192
+ next.remediationMode = partial.remediationMode;
193
+ }
194
+ if (typeof partial.nausConstraints === "string")
195
+ next.nausConstraints = partial.nausConstraints;
196
+ if (typeof partial.extendedContext === "boolean")
197
+ next.extendedContext = partial.extendedContext;
198
+ if (typeof partial.customNotes === "string")
199
+ next.customNotes = partial.customNotes;
200
+ for (const [key, value] of Object.entries(partial)) {
201
+ if (key === "projectIds" ||
202
+ key === "severityMin" ||
203
+ key === "remediationMode" ||
204
+ key === "nausConstraints" ||
205
+ key === "extendedContext" ||
206
+ key === "customNotes" ||
207
+ key === "extras") {
208
+ continue;
209
+ }
210
+ if (typeof value === "string")
211
+ next.extras[key] = value;
212
+ }
213
+ return next;
214
+ }
215
+ export function askQuestion(questionnaire, input) {
216
+ const now = new Date().toISOString();
217
+ return {
218
+ ...questionnaire,
219
+ status: "collecting",
220
+ scenario: input.scenario ?? questionnaire.scenario,
221
+ awaitingUserAnswer: true,
222
+ pending: {
223
+ field: input.field,
224
+ questionMarkdown: input.questionMarkdown,
225
+ optionLabels: input.optionLabels,
226
+ },
227
+ updatedAt: now,
228
+ };
229
+ }
230
+ export function completeQuestionnaire(questionnaire) {
231
+ return {
232
+ ...questionnaire,
233
+ status: "ready",
234
+ awaitingUserAnswer: false,
235
+ pending: null,
236
+ updatedAt: new Date().toISOString(),
237
+ };
238
+ }
239
+ export function shouldAcceptClarifyAnswer(questionnaire, parsed) {
240
+ if (parsed.kind === "invalid")
241
+ return false;
242
+ if (parsed.kind === "ready")
243
+ return true;
244
+ if (questionnaire.awaitingUserAnswer && questionnaire.pending) {
245
+ return parsed.kind === "option";
246
+ }
247
+ return parsed.kind === "option";
248
+ }
249
+ export function applyPendingAnswer(questionnaire, answer) {
250
+ const pending = questionnaire.pending;
251
+ if (!pending) {
252
+ if (answer.kind === "ready")
253
+ return completeQuestionnaire(questionnaire);
254
+ return questionnaire;
255
+ }
256
+ const now = new Date().toISOString();
257
+ if (answer.kind === "ready") {
258
+ return completeQuestionnaire(questionnaire);
259
+ }
260
+ if (answer.kind === "invalid") {
261
+ return { ...questionnaire, updatedAt: now };
262
+ }
263
+ let value = answer.kind === "custom"
264
+ ? answer.text
265
+ : answer.detail ??
266
+ resolveOptionLabel(answer.optionId, pending.optionLabels) ??
267
+ answer.optionId;
268
+ if (pending.field === "projectIds" && answer.kind === "option" && answer.optionId === "A") {
269
+ const label = resolveOptionLabel("A", pending.optionLabels) ?? "";
270
+ if (/padrão|padrao|sessão|sessao|default|session/i.test(label)) {
271
+ const defaultProject = readDefaultProjectId();
272
+ if (defaultProject)
273
+ value = defaultProject;
274
+ }
275
+ }
276
+ const fields = setFieldValue(questionnaire.fields, pending.field, value);
277
+ const history = [
278
+ ...questionnaire.history,
279
+ {
280
+ field: pending.field,
281
+ question: pending.questionMarkdown.split("\n")[0] ?? pending.field,
282
+ askedAt: now,
283
+ answer: answer.kind === "option"
284
+ ? {
285
+ kind: "option",
286
+ optionId: answer.optionId,
287
+ detail: answer.detail,
288
+ label: resolveOptionLabel(answer.optionId, pending.optionLabels) ?? undefined,
289
+ }
290
+ : { kind: "custom", text: answer.text },
291
+ },
292
+ ];
293
+ return {
294
+ ...questionnaire,
295
+ fields,
296
+ history,
297
+ awaitingUserAnswer: false,
298
+ pending: null,
299
+ updatedAt: now,
300
+ };
301
+ }
302
+ export function finalizeQuestionnaireAtRoundLimit(questionnaire, maxRounds) {
303
+ if (questionnaire.history.length < maxRounds)
304
+ return questionnaire;
305
+ const note = `Questionnaire capped at ${maxRounds} rounds; proceeding with partial scope.`;
306
+ return completeQuestionnaire({
307
+ ...questionnaire,
308
+ fields: {
309
+ ...questionnaire.fields,
310
+ customNotes: [questionnaire.fields.customNotes, note].filter(Boolean).join("\n"),
311
+ },
312
+ });
313
+ }
314
+ export function buildClarifyProgressLabel(questionnaire) {
315
+ const answered = questionnaire.history.length;
316
+ const total = Math.max(answered + (questionnaire.awaitingUserAnswer ? 1 : 0), 1);
317
+ return `Questionário · ${Math.min(answered + 1, total)}/${total}`;
318
+ }
319
+ //# sourceMappingURL=session-questionnaire.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-questionnaire.js","sourceRoot":"","sources":["../../src/clarify/session-questionnaire.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ export declare const SESSION_QUESTIONNAIRE_SCHEMA: "kubbisec.sessionQuestionnaire.v2";
2
+ export type SessionQuestionnaireStatus = "collecting" | "ready";
3
+ export type ClarifyOptionId = "A" | "B" | "C" | "D" | "E";
4
+ export type QuestionnaireScenario = "remediation" | "plan" | "explore" | "review";
5
+ export type SessionQuestionnaireFields = {
6
+ projectIds: string[];
7
+ severityMin: string | null;
8
+ remediationMode: "auto" | "suggestion" | null;
9
+ nausConstraints: string | null;
10
+ extendedContext: boolean | null;
11
+ customNotes: string | null;
12
+ extras: Record<string, string>;
13
+ };
14
+ export type QuestionnaireHistoryEntry = {
15
+ field: string;
16
+ question: string;
17
+ askedAt: string;
18
+ answer: {
19
+ kind: "option";
20
+ optionId: ClarifyOptionId;
21
+ detail?: string;
22
+ label?: string;
23
+ } | {
24
+ kind: "custom";
25
+ text: string;
26
+ };
27
+ };
28
+ export type PendingQuestion = {
29
+ field: string;
30
+ questionMarkdown: string;
31
+ optionLabels: string[];
32
+ };
33
+ export type SessionQuestionnaire = {
34
+ $schema: typeof SESSION_QUESTIONNAIRE_SCHEMA;
35
+ sessionId: string;
36
+ status: SessionQuestionnaireStatus;
37
+ scenario: QuestionnaireScenario | null;
38
+ updatedAt: string;
39
+ fields: SessionQuestionnaireFields;
40
+ history: QuestionnaireHistoryEntry[];
41
+ awaitingUserAnswer: boolean;
42
+ pending: PendingQuestion | null;
43
+ };
44
+ export declare function createEmptyFields(): SessionQuestionnaireFields;
45
+ //# sourceMappingURL=session-questionnaire.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-questionnaire.types.d.ts","sourceRoot":"","sources":["../../src/clarify/session-questionnaire.types.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,4BAA4B,EAAG,kCAA2C,CAAC;AAExF,MAAM,MAAM,0BAA0B,GAAG,YAAY,GAAG,OAAO,CAAC;AAEhE,MAAM,MAAM,eAAe,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAE1D,MAAM,MAAM,qBAAqB,GAAG,aAAa,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,CAAC;AAElF,MAAM,MAAM,0BAA0B,GAAG;IACvC,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,eAAe,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAAC;IAC9C,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,eAAe,EAAE,OAAO,GAAG,IAAI,CAAC;IAChC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EACF;QAAE,IAAI,EAAE,QAAQ,CAAC;QAAC,QAAQ,EAAE,eAAe,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAC9E;QAAE,IAAI,EAAE,QAAQ,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CACtC,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,OAAO,EAAE,OAAO,4BAA4B,CAAC;IAC7C,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,0BAA0B,CAAC;IACnC,QAAQ,EAAE,qBAAqB,GAAG,IAAI,CAAC;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,0BAA0B,CAAC;IACnC,OAAO,EAAE,yBAAyB,EAAE,CAAC;IACrC,kBAAkB,EAAE,OAAO,CAAC;IAC5B,OAAO,EAAE,eAAe,GAAG,IAAI,CAAC;CACjC,CAAC;AAEF,wBAAgB,iBAAiB,IAAI,0BAA0B,CAU9D"}
@@ -0,0 +1,13 @@
1
+ export const SESSION_QUESTIONNAIRE_SCHEMA = "kubbisec.sessionQuestionnaire.v2";
2
+ export function createEmptyFields() {
3
+ return {
4
+ projectIds: [],
5
+ severityMin: null,
6
+ remediationMode: null,
7
+ nausConstraints: null,
8
+ extendedContext: null,
9
+ customNotes: null,
10
+ extras: {},
11
+ };
12
+ }
13
+ //# sourceMappingURL=session-questionnaire.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-questionnaire.types.js","sourceRoot":"","sources":["../../src/clarify/session-questionnaire.types.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,4BAA4B,GAAG,kCAA2C,CAAC;AA6CxF,MAAM,UAAU,iBAAiB;IAC/B,OAAO;QACL,UAAU,EAAE,EAAE;QACd,WAAW,EAAE,IAAI;QACjB,eAAe,EAAE,IAAI;QACrB,eAAe,EAAE,IAAI;QACrB,eAAe,EAAE,IAAI;QACrB,WAAW,EAAE,IAAI;QACjB,MAAM,EAAE,EAAE;KACX,CAAC;AACJ,CAAC"}
@@ -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"}