@numa-tech/numa 1.12.8 → 1.12.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/README.md +127 -4
  2. package/dist/application-candidates/client.d.ts +167 -0
  3. package/dist/application-candidates/client.js +103 -0
  4. package/dist/application-candidates/client.js.map +1 -0
  5. package/dist/application-candidates/commands.d.ts +13 -0
  6. package/dist/application-candidates/commands.js +225 -0
  7. package/dist/application-candidates/commands.js.map +1 -0
  8. package/dist/application-candidates/schemas.d.ts +171 -0
  9. package/dist/application-candidates/schemas.js +80 -0
  10. package/dist/application-candidates/schemas.js.map +1 -0
  11. package/dist/application-onboarding/client.d.ts +256 -0
  12. package/dist/application-onboarding/client.js +213 -0
  13. package/dist/application-onboarding/client.js.map +1 -0
  14. package/dist/application-onboarding/commands.d.ts +64 -0
  15. package/dist/application-onboarding/commands.js +694 -0
  16. package/dist/application-onboarding/commands.js.map +1 -0
  17. package/dist/application-onboarding/errors.d.ts +11 -0
  18. package/dist/application-onboarding/errors.js +51 -0
  19. package/dist/application-onboarding/errors.js.map +1 -0
  20. package/dist/application-onboarding/schemas.d.ts +1167 -0
  21. package/dist/application-onboarding/schemas.js +459 -0
  22. package/dist/application-onboarding/schemas.js.map +1 -0
  23. package/dist/application-onboarding/scm-credentials.d.ts +8 -0
  24. package/dist/application-onboarding/scm-credentials.js +98 -0
  25. package/dist/application-onboarding/scm-credentials.js.map +1 -0
  26. package/dist/application-onboarding/tui-model.d.ts +131 -0
  27. package/dist/application-onboarding/tui-model.js +554 -0
  28. package/dist/application-onboarding/tui-model.js.map +1 -0
  29. package/dist/application-onboarding/tui.d.ts +14 -0
  30. package/dist/application-onboarding/tui.js +554 -0
  31. package/dist/application-onboarding/tui.js.map +1 -0
  32. package/dist/cli.js +18 -4
  33. package/dist/cli.js.map +1 -1
  34. package/dist/command-catalog.js +134 -0
  35. package/dist/command-catalog.js.map +1 -1
  36. package/dist/web-console.js +4 -3
  37. package/dist/web-console.js.map +1 -1
  38. package/package.json +4 -4
  39. package/skills/numa-cli/SKILL.md +44 -0
  40. package/skills/numa-cli/agents/openai.yaml +4 -0
  41. package/skills/numa-cli/evals/evals.json +35 -0
  42. package/skills/numa-cli/references/pipeline-release.md +107 -0
@@ -0,0 +1,225 @@
1
+ import { readFile, stat } from "node:fs/promises";
2
+ import process from "node:process";
3
+ import { loadAppConfig } from "../app-config.js";
4
+ import { loadConfig } from "../config.js";
5
+ import { CredentialFreeOnboardingValueSchema } from "../application-onboarding/schemas.js";
6
+ import { OnboardingError, sanitizeOnboardingOutput } from "../application-onboarding/errors.js";
7
+ import { ApplicationCandidateClient } from "./client.js";
8
+ import { ApplicationCandidateReviewInputSchema, ApplicationCandidateStatusSchema } from "./schemas.js";
9
+ const MAX_REVIEW_FILE_BYTES = 1_000_000;
10
+ function addExamples(command, examples, notes = []) {
11
+ const noteSection = notes.length
12
+ ? `\n说明:\n${notes.map((item) => ` - ${item}`).join("\n")}\n`
13
+ : "";
14
+ return command.addHelpText("after", `${noteSection}\nExamples:\n${examples.map((item) => ` ${item}`).join("\n")}\n`);
15
+ }
16
+ function snakeCase(key) {
17
+ return key.replace(/([a-z0-9])([A-Z])/gu, "$1_$2").toLowerCase();
18
+ }
19
+ function stableOutput(value) {
20
+ const safe = sanitizeOnboardingOutput(value);
21
+ if (Array.isArray(safe))
22
+ return safe.map(stableOutput);
23
+ if (safe && typeof safe === "object") {
24
+ return Object.fromEntries(Object.entries(safe).map(([key, item]) => [snakeCase(key), stableOutput(item)]));
25
+ }
26
+ return safe;
27
+ }
28
+ async function jsonEnabled(command) {
29
+ const configured = await loadAppConfig();
30
+ return Boolean(command.optsWithGlobals().json || configured.output === "json");
31
+ }
32
+ async function output(command, payload, textValue) {
33
+ if (await jsonEnabled(command)) {
34
+ process.stdout.write(`${JSON.stringify(stableOutput(payload), null, 2)}\n`);
35
+ }
36
+ else {
37
+ process.stdout.write(`${String(sanitizeOnboardingOutput(textValue))}\n`);
38
+ }
39
+ }
40
+ export function parseApplicationCandidateStatus(value) {
41
+ if (value == null)
42
+ return undefined;
43
+ const parsed = ApplicationCandidateStatusSchema.safeParse(value.trim().toUpperCase());
44
+ if (!parsed.success) {
45
+ throw new OnboardingError("status must be new, reviewing, conflicted, confirmed, merged, or ignored.", "application_candidate_input_invalid");
46
+ }
47
+ return parsed.data;
48
+ }
49
+ function integer(value, label, options) {
50
+ if (value == null && options.fallback != null)
51
+ return options.fallback;
52
+ const parsed = Number(value);
53
+ if (!Number.isInteger(parsed) || parsed < options.minimum || parsed > options.maximum) {
54
+ throw new OnboardingError(`${label} must be an integer between ${options.minimum} and ${options.maximum}.`, "application_candidate_input_invalid");
55
+ }
56
+ return parsed;
57
+ }
58
+ export function parseApplicationCandidateIds(values) {
59
+ const ids = Array.from(new Set(values.map((value) => integer(value, "candidate-id", {
60
+ minimum: 1,
61
+ maximum: Number.MAX_SAFE_INTEGER
62
+ }))));
63
+ if (ids.length > 200) {
64
+ throw new OnboardingError("At most 200 application candidate IDs can be processed at once.", "application_candidate_input_invalid");
65
+ }
66
+ return ids;
67
+ }
68
+ function candidateCode(candidate) {
69
+ const code = candidate.proposedFields.code;
70
+ return typeof code === "string" && code.trim() ? code : "-";
71
+ }
72
+ function candidateName(candidate) {
73
+ const name = candidate.proposedFields.name;
74
+ return typeof name === "string" && name.trim() ? name : "-";
75
+ }
76
+ function candidateLine(candidate) {
77
+ return `${candidate.id}\t${candidate.status}\t${candidate.operation}\t${candidateCode(candidate)}\t${candidateName(candidate)}\tconfidence:${candidate.confidence}`;
78
+ }
79
+ function batchLine(result) {
80
+ const lines = result.results.map((item) => `${item.candidateId}\t${item.valid ? "READY" : "BLOCKED"}\t${item.code}\t${item.entityId ?? "-"}\t${item.message}`);
81
+ return `${result.succeeded}/${result.requested} 成功,${result.conflicted} 冲突${lines.length ? `\n${lines.join("\n")}` : ""}`;
82
+ }
83
+ async function readReviewInput(path) {
84
+ let metadata;
85
+ try {
86
+ metadata = await stat(path);
87
+ }
88
+ catch (error) {
89
+ throw new OnboardingError(`Cannot read candidate review JSON: ${error.message}`, "application_candidate_input_invalid");
90
+ }
91
+ if (!metadata.isFile() || metadata.size > MAX_REVIEW_FILE_BYTES) {
92
+ throw new OnboardingError(`Candidate review input must be a JSON file no larger than ${MAX_REVIEW_FILE_BYTES} bytes.`, "application_candidate_input_invalid");
93
+ }
94
+ let contents;
95
+ try {
96
+ contents = await readFile(path, "utf8");
97
+ }
98
+ catch (error) {
99
+ throw new OnboardingError(`Cannot read candidate review JSON: ${error.message}`, "application_candidate_input_invalid");
100
+ }
101
+ let raw;
102
+ try {
103
+ raw = JSON.parse(contents);
104
+ }
105
+ catch (error) {
106
+ throw new OnboardingError(`Cannot read candidate review JSON: ${error.message}`, "application_candidate_input_invalid");
107
+ }
108
+ const credentialFree = CredentialFreeOnboardingValueSchema.safeParse(raw);
109
+ if (!credentialFree.success) {
110
+ throw new OnboardingError("Candidate review input cannot contain credentials or secret references.", "application_candidate_input_invalid");
111
+ }
112
+ const parsed = ApplicationCandidateReviewInputSchema.safeParse(raw);
113
+ if (!parsed.success) {
114
+ throw new OnboardingError(`Candidate review input is invalid: ${parsed.error.message}`, "application_candidate_input_invalid");
115
+ }
116
+ return parsed.data;
117
+ }
118
+ function requireApplicationDecision(result) {
119
+ const nonApplication = result.results.filter((item) => item.entityType != null && item.entityType !== "APPLICATION");
120
+ if (nonApplication.length) {
121
+ throw new OnboardingError("app candidate only accepts APPLICATION candidates.", "application_candidate_entity_type_invalid", undefined, undefined, false, { candidateIds: nonApplication.map((item) => item.candidateId) });
122
+ }
123
+ }
124
+ export async function adoptApplicationCandidates(client, candidateIds) {
125
+ const preview = await client.previewCandidates(candidateIds);
126
+ requireApplicationDecision(preview);
127
+ if (preview.conflicted > 0 || preview.succeeded !== preview.requested) {
128
+ throw new OnboardingError("Application candidate preview is blocked; review the reported conflicts before adopt.", "application_candidate_preview_blocked", 409, undefined, false, preview);
129
+ }
130
+ const adoption = await client.adoptCandidates(candidateIds);
131
+ return { preview, adoption };
132
+ }
133
+ export function registerApplicationCandidateCommands(app, dependencies = {}) {
134
+ const client = () => dependencies.clientFactory?.()
135
+ ?? new ApplicationCandidateClient(loadConfig("platform"));
136
+ const candidate = app.command("candidate")
137
+ .description("审查发现候选,并将 Jenkins Job 候选收录到应用目录")
138
+ .addHelpText("after", `
139
+ 术语:
140
+ 收录(adopt) 将应用候选创建或合并到正式应用目录,并确认候选携带的 Jenkins Job 绑定。
141
+ 后端仍使用 promote API 以保持兼容;CLI 不使用“转正”,避免与发布晋级或人员转正混淆。
142
+
143
+ 安全边界:
144
+ adopt 必须先通过服务端 preview,并要求显式 --yes。
145
+ CLI 不接收 Jenkins 凭据;网关和后端继续执行管理员 Scope、冲突和审计校验。
146
+ `);
147
+ addExamples(candidate.command("list")
148
+ .description("列出应用发现候选;返回的 id 用于 inspect、preview、review 和 adopt")
149
+ .option("--status <status>", "new|reviewing|conflicted|confirmed|merged|ignored")
150
+ .option("--source-id <id>", "按发现源 ID 过滤")
151
+ .option("--search <text>", "按候选键或建议字段搜索")
152
+ .option("--page <number>", "从 0 开始的页码", "0")
153
+ .option("--size <number>", "每页条数 1-200", "50")
154
+ .action(async (options, command) => {
155
+ const result = await client().listCandidates({
156
+ status: parseApplicationCandidateStatus(options.status),
157
+ sourceId: options.sourceId == null ? undefined : integer(options.sourceId, "source-id", {
158
+ minimum: 1, maximum: Number.MAX_SAFE_INTEGER
159
+ }),
160
+ search: options.search?.trim() || undefined,
161
+ page: integer(options.page, "page", { minimum: 0, maximum: 1_000_000, fallback: 0 }),
162
+ size: integer(options.size, "size", { minimum: 1, maximum: 200, fallback: 50 })
163
+ });
164
+ await output(command, { ok: true, candidates: result }, result.content.map(candidateLine).join("\n") || "没有找到应用候选");
165
+ }), ["numa app candidate list --status new --json"]);
166
+ addExamples(candidate.command("inspect <candidate-id>")
167
+ .description("查看应用候选、建议字段、Jenkins 关系和证据")
168
+ .action(async (candidateId, _options, command) => {
169
+ const id = parseApplicationCandidateIds([candidateId])[0];
170
+ const result = await client().getCandidate(id);
171
+ if (result.entityType !== "APPLICATION") {
172
+ throw new OnboardingError(`Candidate ${id} is ${result.entityType}, not APPLICATION.`, "application_candidate_entity_type_invalid");
173
+ }
174
+ await output(command, { ok: true, candidate: result }, JSON.stringify(stableOutput(result), null, 2));
175
+ }), ["numa app candidate inspect 123 --json"]);
176
+ addExamples(candidate.command("preview <candidate-ids...>")
177
+ .description("预检一个或多个应用候选,不产生目录或 Jenkins 绑定写入")
178
+ .action(async (candidateIds, _options, command) => {
179
+ const result = await client().previewCandidates(parseApplicationCandidateIds(candidateIds));
180
+ requireApplicationDecision(result);
181
+ await output(command, { ok: result.conflicted === 0, preview: result }, batchLine(result));
182
+ if (result.conflicted > 0)
183
+ process.exitCode = 1;
184
+ }), ["numa app candidate preview 123 124 --json"]);
185
+ addExamples(candidate.command("review <candidate-id>")
186
+ .description("用完整 JSON 建议修复候选字段、关系或 CREATE/MERGE 决策")
187
+ .requiredOption("--input <file>", "无凭据的候选 review JSON")
188
+ .requiredOption("--revision <number>", "候选当前 version,用于乐观锁")
189
+ .action(async (candidateId, options, command) => {
190
+ const id = parseApplicationCandidateIds([candidateId])[0];
191
+ const applicationCandidates = client();
192
+ const current = await applicationCandidates.getCandidate(id);
193
+ if (current.entityType !== "APPLICATION") {
194
+ throw new OnboardingError(`Candidate ${id} is ${current.entityType}, not APPLICATION.`, "application_candidate_entity_type_invalid");
195
+ }
196
+ const result = await applicationCandidates.updateCandidate(id, {
197
+ ...await readReviewInput(options.input),
198
+ expectedVersion: integer(options.revision, "revision", {
199
+ minimum: 0, maximum: Number.MAX_SAFE_INTEGER
200
+ })
201
+ });
202
+ await output(command, { ok: true, candidate: result }, candidateLine(result));
203
+ }), ["numa app candidate review 123 --input candidate-review.json --revision 4 --json"], [
204
+ "review JSON 必须完整包含 operation、proposedFields、proposedRelationships 和 confidence。",
205
+ "先 inspect 获取当前 version;发生版本冲突时重新 inspect,不覆盖其他审核人的修改。"
206
+ ]);
207
+ addExamples(candidate.command("adopt <candidate-ids...>")
208
+ .description("确认收录一个或多个应用候选;创建或合并应用并确认 Jenkins Job 绑定")
209
+ .option("--yes", "确认执行目录与 Jenkins 绑定写入")
210
+ .action(async (candidateIds, options, command) => {
211
+ if (!options.yes) {
212
+ throw new OnboardingError("Adopting application candidates requires --yes.", "application_candidate_confirmation_required");
213
+ }
214
+ const ids = parseApplicationCandidateIds(candidateIds);
215
+ const applicationCandidates = client();
216
+ const { preview, adoption } = await adoptApplicationCandidates(applicationCandidates, ids);
217
+ await output(command, { ok: adoption.conflicted === 0, preview, adoption }, batchLine(adoption));
218
+ if (adoption.conflicted > 0)
219
+ process.exitCode = 1;
220
+ }), ["numa app candidate adopt 123 --yes --json", "numa app candidate adopt 123 124 --yes --json"], [
221
+ "adopt 会先调用服务端 preview;任何候选被阻断时,本次不会提交收录。",
222
+ "批量收录由服务端逐候选事务处理;并发变化仍可能产生部分冲突,JSON 会返回逐项结果。"
223
+ ]);
224
+ }
225
+ //# sourceMappingURL=commands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/application-candidates/commands.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,171 @@
1
+ import { z } from "zod";
2
+ export declare const ApplicationCandidateStatusSchema: z.ZodEnum<{
3
+ CONFIRMED: "CONFIRMED";
4
+ CONFLICTED: "CONFLICTED";
5
+ IGNORED: "IGNORED";
6
+ MERGED: "MERGED";
7
+ NEW: "NEW";
8
+ REVIEWING: "REVIEWING";
9
+ }>;
10
+ export declare const ApplicationCandidateOperationSchema: z.ZodEnum<{
11
+ CREATE: "CREATE";
12
+ MERGE: "MERGE";
13
+ UPDATE: "UPDATE";
14
+ }>;
15
+ export declare const ApplicationCandidateEvidenceSchema: z.ZodObject<{
16
+ id: z.ZodNumber;
17
+ discoveredResourceId: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
18
+ evidenceKey: z.ZodOptional<z.ZodString>;
19
+ evidenceType: z.ZodOptional<z.ZodString>;
20
+ evidencePath: z.ZodOptional<z.ZodNullable<z.ZodString>>;
21
+ evidenceValue: z.ZodOptional<z.ZodNullable<z.ZodString>>;
22
+ weight: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
23
+ }, z.core.$loose>;
24
+ export declare const ApplicationCandidateSchema: z.ZodObject<{
25
+ id: z.ZodNumber;
26
+ candidateKey: z.ZodString;
27
+ sourceId: z.ZodNumber;
28
+ lastRunId: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
29
+ entityType: z.ZodString;
30
+ operation: z.ZodEnum<{
31
+ CREATE: "CREATE";
32
+ MERGE: "MERGE";
33
+ UPDATE: "UPDATE";
34
+ }>;
35
+ targetEntityId: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
36
+ proposedFields: z.ZodRecord<z.ZodString, z.ZodUnknown>;
37
+ proposedRelationships: z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
38
+ confidence: z.ZodNumber;
39
+ status: z.ZodEnum<{
40
+ CONFIRMED: "CONFIRMED";
41
+ CONFLICTED: "CONFLICTED";
42
+ IGNORED: "IGNORED";
43
+ MERGED: "MERGED";
44
+ NEW: "NEW";
45
+ REVIEWING: "REVIEWING";
46
+ }>;
47
+ conflictReason: z.ZodOptional<z.ZodNullable<z.ZodString>>;
48
+ resolutionNote: z.ZodOptional<z.ZodNullable<z.ZodString>>;
49
+ reviewedBy: z.ZodOptional<z.ZodNullable<z.ZodString>>;
50
+ reviewedAt: z.ZodOptional<z.ZodNullable<z.ZodString>>;
51
+ promotedEntityType: z.ZodOptional<z.ZodNullable<z.ZodString>>;
52
+ promotedEntityId: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
53
+ version: z.ZodNumber;
54
+ evidence: z.ZodDefault<z.ZodArray<z.ZodObject<{
55
+ id: z.ZodNumber;
56
+ discoveredResourceId: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
57
+ evidenceKey: z.ZodOptional<z.ZodString>;
58
+ evidenceType: z.ZodOptional<z.ZodString>;
59
+ evidencePath: z.ZodOptional<z.ZodNullable<z.ZodString>>;
60
+ evidenceValue: z.ZodOptional<z.ZodNullable<z.ZodString>>;
61
+ weight: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
62
+ }, z.core.$loose>>>;
63
+ }, z.core.$loose>;
64
+ export declare const ApplicationCandidatePageSchema: z.ZodObject<{
65
+ content: z.ZodArray<z.ZodObject<{
66
+ id: z.ZodNumber;
67
+ candidateKey: z.ZodString;
68
+ sourceId: z.ZodNumber;
69
+ lastRunId: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
70
+ entityType: z.ZodString;
71
+ operation: z.ZodEnum<{
72
+ CREATE: "CREATE";
73
+ MERGE: "MERGE";
74
+ UPDATE: "UPDATE";
75
+ }>;
76
+ targetEntityId: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
77
+ proposedFields: z.ZodRecord<z.ZodString, z.ZodUnknown>;
78
+ proposedRelationships: z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
79
+ confidence: z.ZodNumber;
80
+ status: z.ZodEnum<{
81
+ CONFIRMED: "CONFIRMED";
82
+ CONFLICTED: "CONFLICTED";
83
+ IGNORED: "IGNORED";
84
+ MERGED: "MERGED";
85
+ NEW: "NEW";
86
+ REVIEWING: "REVIEWING";
87
+ }>;
88
+ conflictReason: z.ZodOptional<z.ZodNullable<z.ZodString>>;
89
+ resolutionNote: z.ZodOptional<z.ZodNullable<z.ZodString>>;
90
+ reviewedBy: z.ZodOptional<z.ZodNullable<z.ZodString>>;
91
+ reviewedAt: z.ZodOptional<z.ZodNullable<z.ZodString>>;
92
+ promotedEntityType: z.ZodOptional<z.ZodNullable<z.ZodString>>;
93
+ promotedEntityId: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
94
+ version: z.ZodNumber;
95
+ evidence: z.ZodDefault<z.ZodArray<z.ZodObject<{
96
+ id: z.ZodNumber;
97
+ discoveredResourceId: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
98
+ evidenceKey: z.ZodOptional<z.ZodString>;
99
+ evidenceType: z.ZodOptional<z.ZodString>;
100
+ evidencePath: z.ZodOptional<z.ZodNullable<z.ZodString>>;
101
+ evidenceValue: z.ZodOptional<z.ZodNullable<z.ZodString>>;
102
+ weight: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
103
+ }, z.core.$loose>>>;
104
+ }, z.core.$loose>>;
105
+ totalElements: z.ZodNumber;
106
+ page: z.ZodNumber;
107
+ size: z.ZodNumber;
108
+ totalPages: z.ZodNumber;
109
+ }, z.core.$loose>;
110
+ export declare const ApplicationCandidateDecisionSchema: z.ZodObject<{
111
+ candidateId: z.ZodNumber;
112
+ valid: z.ZodBoolean;
113
+ code: z.ZodString;
114
+ message: z.ZodDefault<z.ZodString>;
115
+ missingFields: z.ZodDefault<z.ZodArray<z.ZodString>>;
116
+ entityType: z.ZodOptional<z.ZodNullable<z.ZodString>>;
117
+ entityId: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
118
+ resultingStatus: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
119
+ CONFIRMED: "CONFIRMED";
120
+ CONFLICTED: "CONFLICTED";
121
+ IGNORED: "IGNORED";
122
+ MERGED: "MERGED";
123
+ NEW: "NEW";
124
+ REVIEWING: "REVIEWING";
125
+ }>>>;
126
+ }, z.core.$loose>;
127
+ export declare const ApplicationCandidateBatchResultSchema: z.ZodObject<{
128
+ requested: z.ZodNumber;
129
+ succeeded: z.ZodNumber;
130
+ conflicted: z.ZodNumber;
131
+ results: z.ZodArray<z.ZodObject<{
132
+ candidateId: z.ZodNumber;
133
+ valid: z.ZodBoolean;
134
+ code: z.ZodString;
135
+ message: z.ZodDefault<z.ZodString>;
136
+ missingFields: z.ZodDefault<z.ZodArray<z.ZodString>>;
137
+ entityType: z.ZodOptional<z.ZodNullable<z.ZodString>>;
138
+ entityId: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
139
+ resultingStatus: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
140
+ CONFIRMED: "CONFIRMED";
141
+ CONFLICTED: "CONFLICTED";
142
+ IGNORED: "IGNORED";
143
+ MERGED: "MERGED";
144
+ NEW: "NEW";
145
+ REVIEWING: "REVIEWING";
146
+ }>>>;
147
+ }, z.core.$loose>>;
148
+ }, z.core.$loose>;
149
+ export declare const ApplicationCandidateReviewInputSchema: z.ZodObject<{
150
+ operation: z.ZodEnum<{
151
+ CREATE: "CREATE";
152
+ MERGE: "MERGE";
153
+ UPDATE: "UPDATE";
154
+ }>;
155
+ targetEntityId: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
156
+ proposedFields: z.ZodRecord<z.ZodString, z.ZodUnknown>;
157
+ proposedRelationships: z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
158
+ confidence: z.ZodNumber;
159
+ resolutionNote: z.ZodOptional<z.ZodNullable<z.ZodString>>;
160
+ }, z.core.$strict>;
161
+ export declare const ApplicationCandidateApiErrorSchema: z.ZodObject<{
162
+ code: z.ZodOptional<z.ZodString>;
163
+ message: z.ZodOptional<z.ZodString>;
164
+ requestId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
165
+ details: z.ZodOptional<z.ZodUnknown>;
166
+ }, z.core.$loose>;
167
+ export type ApplicationCandidateStatus = z.infer<typeof ApplicationCandidateStatusSchema>;
168
+ export type ApplicationCandidate = z.infer<typeof ApplicationCandidateSchema>;
169
+ export type ApplicationCandidatePage = z.infer<typeof ApplicationCandidatePageSchema>;
170
+ export type ApplicationCandidateBatchResult = z.infer<typeof ApplicationCandidateBatchResultSchema>;
171
+ export type ApplicationCandidateReviewInput = z.infer<typeof ApplicationCandidateReviewInputSchema>;
@@ -0,0 +1,80 @@
1
+ import { z } from "zod";
2
+ export const ApplicationCandidateStatusSchema = z.enum([
3
+ "NEW",
4
+ "REVIEWING",
5
+ "CONFIRMED",
6
+ "MERGED",
7
+ "IGNORED",
8
+ "CONFLICTED"
9
+ ]);
10
+ export const ApplicationCandidateOperationSchema = z.enum(["CREATE", "UPDATE", "MERGE"]);
11
+ const CandidateFieldsSchema = z.record(z.string(), z.unknown());
12
+ const CandidateRelationshipsSchema = z.array(z.record(z.string(), z.unknown()));
13
+ export const ApplicationCandidateEvidenceSchema = z.object({
14
+ id: z.number().int().positive(),
15
+ discoveredResourceId: z.number().int().positive().nullable().optional(),
16
+ evidenceKey: z.string().optional(),
17
+ evidenceType: z.string().optional(),
18
+ evidencePath: z.string().nullable().optional(),
19
+ evidenceValue: z.string().nullable().optional(),
20
+ weight: z.number().nullable().optional()
21
+ }).passthrough();
22
+ export const ApplicationCandidateSchema = z.object({
23
+ id: z.number().int().positive(),
24
+ candidateKey: z.string().trim().min(1),
25
+ sourceId: z.number().int().positive(),
26
+ lastRunId: z.number().int().positive().nullable().optional(),
27
+ entityType: z.string().trim().min(1),
28
+ operation: ApplicationCandidateOperationSchema,
29
+ targetEntityId: z.number().int().positive().nullable().optional(),
30
+ proposedFields: CandidateFieldsSchema,
31
+ proposedRelationships: CandidateRelationshipsSchema,
32
+ confidence: z.number().min(0).max(1),
33
+ status: ApplicationCandidateStatusSchema,
34
+ conflictReason: z.string().nullable().optional(),
35
+ resolutionNote: z.string().nullable().optional(),
36
+ reviewedBy: z.string().nullable().optional(),
37
+ reviewedAt: z.string().nullable().optional(),
38
+ promotedEntityType: z.string().nullable().optional(),
39
+ promotedEntityId: z.number().int().positive().nullable().optional(),
40
+ version: z.number().int().nonnegative(),
41
+ evidence: z.array(ApplicationCandidateEvidenceSchema).default([])
42
+ }).passthrough();
43
+ export const ApplicationCandidatePageSchema = z.object({
44
+ content: z.array(ApplicationCandidateSchema),
45
+ totalElements: z.number().int().nonnegative(),
46
+ page: z.number().int().nonnegative(),
47
+ size: z.number().int().positive(),
48
+ totalPages: z.number().int().nonnegative()
49
+ }).passthrough();
50
+ export const ApplicationCandidateDecisionSchema = z.object({
51
+ candidateId: z.number().int().positive(),
52
+ valid: z.boolean(),
53
+ code: z.string().trim().min(1),
54
+ message: z.string().default(""),
55
+ missingFields: z.array(z.string()).default([]),
56
+ entityType: z.string().nullable().optional(),
57
+ entityId: z.number().int().positive().nullable().optional(),
58
+ resultingStatus: ApplicationCandidateStatusSchema.nullable().optional()
59
+ }).passthrough();
60
+ export const ApplicationCandidateBatchResultSchema = z.object({
61
+ requested: z.number().int().nonnegative(),
62
+ succeeded: z.number().int().nonnegative(),
63
+ conflicted: z.number().int().nonnegative(),
64
+ results: z.array(ApplicationCandidateDecisionSchema)
65
+ }).passthrough();
66
+ export const ApplicationCandidateReviewInputSchema = z.object({
67
+ operation: ApplicationCandidateOperationSchema,
68
+ targetEntityId: z.number().int().positive().nullable().optional(),
69
+ proposedFields: CandidateFieldsSchema,
70
+ proposedRelationships: CandidateRelationshipsSchema,
71
+ confidence: z.number().min(0).max(1),
72
+ resolutionNote: z.string().trim().max(2_000).nullable().optional()
73
+ }).strict();
74
+ export const ApplicationCandidateApiErrorSchema = z.object({
75
+ code: z.string().optional(),
76
+ message: z.string().optional(),
77
+ requestId: z.string().nullable().optional(),
78
+ details: z.unknown().optional()
79
+ }).passthrough();
80
+ //# sourceMappingURL=schemas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/application-candidates/schemas.ts"],"names":[],"mappings":"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"}