@numa-tech/numa 1.12.7 → 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 (99) hide show
  1. package/README.md +266 -47
  2. package/dist/ai-registry/bridge.d.ts +8 -0
  3. package/dist/ai-registry/bridge.js +63 -0
  4. package/dist/ai-registry/bridge.js.map +1 -0
  5. package/dist/ai-registry/client.d.ts +29 -3
  6. package/dist/ai-registry/client.js +112 -8
  7. package/dist/ai-registry/client.js.map +1 -1
  8. package/dist/ai-registry/commands.js +367 -112
  9. package/dist/ai-registry/commands.js.map +1 -1
  10. package/dist/ai-registry/errors.d.ts +2 -1
  11. package/dist/ai-registry/errors.js +12 -1
  12. package/dist/ai-registry/errors.js.map +1 -1
  13. package/dist/ai-registry/mcp-installer.d.ts +1 -0
  14. package/dist/ai-registry/mcp-installer.js +4 -0
  15. package/dist/ai-registry/mcp-installer.js.map +1 -1
  16. package/dist/ai-registry/namespace.d.ts +17 -0
  17. package/dist/ai-registry/namespace.js +53 -0
  18. package/dist/ai-registry/namespace.js.map +1 -0
  19. package/dist/ai-registry/schemas.d.ts +127 -2
  20. package/dist/ai-registry/schemas.js +42 -2
  21. package/dist/ai-registry/schemas.js.map +1 -1
  22. package/dist/ai-registry/sync.d.ts +23 -0
  23. package/dist/ai-registry/sync.js +276 -0
  24. package/dist/ai-registry/sync.js.map +1 -0
  25. package/dist/ai-registry/tui.d.ts +2 -0
  26. package/dist/ai-registry/tui.js +140 -0
  27. package/dist/ai-registry/tui.js.map +1 -0
  28. package/dist/ai-registry/workspace.d.ts +191 -0
  29. package/dist/ai-registry/workspace.js +167 -0
  30. package/dist/ai-registry/workspace.js.map +1 -0
  31. package/dist/app-config.d.ts +3 -2
  32. package/dist/app-config.js +5 -3
  33. package/dist/app-config.js.map +1 -1
  34. package/dist/application-candidates/client.d.ts +167 -0
  35. package/dist/application-candidates/client.js +103 -0
  36. package/dist/application-candidates/client.js.map +1 -0
  37. package/dist/application-candidates/commands.d.ts +13 -0
  38. package/dist/application-candidates/commands.js +225 -0
  39. package/dist/application-candidates/commands.js.map +1 -0
  40. package/dist/application-candidates/schemas.d.ts +171 -0
  41. package/dist/application-candidates/schemas.js +80 -0
  42. package/dist/application-candidates/schemas.js.map +1 -0
  43. package/dist/application-onboarding/client.d.ts +256 -0
  44. package/dist/application-onboarding/client.js +213 -0
  45. package/dist/application-onboarding/client.js.map +1 -0
  46. package/dist/application-onboarding/commands.d.ts +64 -0
  47. package/dist/application-onboarding/commands.js +694 -0
  48. package/dist/application-onboarding/commands.js.map +1 -0
  49. package/dist/application-onboarding/errors.d.ts +11 -0
  50. package/dist/application-onboarding/errors.js +51 -0
  51. package/dist/application-onboarding/errors.js.map +1 -0
  52. package/dist/application-onboarding/schemas.d.ts +1167 -0
  53. package/dist/application-onboarding/schemas.js +459 -0
  54. package/dist/application-onboarding/schemas.js.map +1 -0
  55. package/dist/application-onboarding/scm-credentials.d.ts +8 -0
  56. package/dist/application-onboarding/scm-credentials.js +98 -0
  57. package/dist/application-onboarding/scm-credentials.js.map +1 -0
  58. package/dist/application-onboarding/tui-model.d.ts +131 -0
  59. package/dist/application-onboarding/tui-model.js +554 -0
  60. package/dist/application-onboarding/tui-model.js.map +1 -0
  61. package/dist/application-onboarding/tui.d.ts +14 -0
  62. package/dist/application-onboarding/tui.js +554 -0
  63. package/dist/application-onboarding/tui.js.map +1 -0
  64. package/dist/cli.js +43 -7
  65. package/dist/cli.js.map +1 -1
  66. package/dist/command-catalog.d.ts +1 -0
  67. package/dist/command-catalog.js +231 -10
  68. package/dist/command-catalog.js.map +1 -1
  69. package/dist/config-page.js +2 -0
  70. package/dist/config-page.js.map +1 -1
  71. package/dist/config.d.ts +1 -0
  72. package/dist/config.js +1 -0
  73. package/dist/config.js.map +1 -1
  74. package/dist/pipeline/client.d.ts +10 -6
  75. package/dist/pipeline/client.js +7 -4
  76. package/dist/pipeline/client.js.map +1 -1
  77. package/dist/pipeline/commands.d.ts +5 -1
  78. package/dist/pipeline/commands.js +89 -18
  79. package/dist/pipeline/commands.js.map +1 -1
  80. package/dist/pipeline/schemas.d.ts +7 -7
  81. package/dist/pipeline/schemas.js +2 -2
  82. package/dist/pipeline/schemas.js.map +1 -1
  83. package/dist/platform-profile.d.ts +8 -2
  84. package/dist/platform-profile.js +5 -2
  85. package/dist/platform-profile.js.map +1 -1
  86. package/dist/web-console-page.d.ts +3 -3
  87. package/dist/web-console-page.js +75 -20
  88. package/dist/web-console-page.js.map +1 -1
  89. package/dist/web-console.d.ts +1 -1
  90. package/dist/web-console.js +50 -3
  91. package/dist/web-console.js.map +1 -1
  92. package/package.json +8 -5
  93. package/skills/numa-ai-registry/SKILL.md +25 -19
  94. package/skills/numa-ai-registry/evals/evals.json +10 -10
  95. package/skills/numa-ai-registry/references/command-contract.md +41 -6
  96. package/skills/numa-cli/SKILL.md +44 -0
  97. package/skills/numa-cli/agents/openai.yaml +4 -0
  98. package/skills/numa-cli/evals/evals.json +35 -0
  99. package/skills/numa-cli/references/pipeline-release.md +107 -0
@@ -0,0 +1,256 @@
1
+ import type { AuthConfig } from "../config.js";
2
+ import { type KeycloakTokenProvider } from "../oauth.js";
3
+ import { OnboardingSessionSchema, type JsonValue, type OnboardingCapabilities, type OnboardingEvent, type OnboardingMode, type OnboardingPreflight, type OnboardingSession, type OnboardingSessionState, type OnboardingTask, type ScmAdminConnection, type ScmAdminConnectionInput, type ScmConnection, type ScmCredentialUpdate, type ScmProvider, type ScmRepository } from "./schemas.js";
4
+ export interface OnboardingClientDependencies {
5
+ fetch?: typeof fetch;
6
+ tokenProvider?: KeycloakTokenProvider;
7
+ }
8
+ export interface OnboardingApi {
9
+ getCapabilities(): Promise<OnboardingCapabilities>;
10
+ listCatalogOptions(type: "team" | "system" | "business-domain" | "environment", options?: {
11
+ search?: string;
12
+ limit?: number;
13
+ }): Promise<{
14
+ items: Array<Record<string, unknown>>;
15
+ nextCursor?: string | null;
16
+ }>;
17
+ listTechnologyStacks(options?: {
18
+ status?: string;
19
+ }): Promise<{
20
+ items: Array<Record<string, unknown>>;
21
+ nextCursor?: string | null;
22
+ }>;
23
+ listTemplates(options?: {
24
+ technologyStackCode?: string;
25
+ repoMode?: string;
26
+ }): Promise<{
27
+ items: Array<Record<string, unknown>>;
28
+ nextCursor?: string | null;
29
+ }>;
30
+ listScmConnections(options?: {
31
+ provider?: ScmProvider;
32
+ search?: string;
33
+ }): Promise<{
34
+ items: ScmConnection[];
35
+ nextCursor: string | null;
36
+ }>;
37
+ listRepositories(connectionCode: string, options?: {
38
+ search?: string;
39
+ cursor?: string;
40
+ limit?: number;
41
+ }): Promise<{
42
+ items: ScmRepository[];
43
+ nextCursor: string | null;
44
+ hasMore: boolean;
45
+ }>;
46
+ listAdminScmConnections(): Promise<{
47
+ items: ScmAdminConnection[];
48
+ nextCursor: string | null;
49
+ }>;
50
+ getAdminScmConnection(connectionCode: string): Promise<ScmAdminConnection>;
51
+ createAdminScmConnection(input: ScmAdminConnectionInput): Promise<ScmAdminConnection>;
52
+ updateAdminScmConnection(connectionCode: string, input: ScmAdminConnectionInput & {
53
+ version: number;
54
+ }): Promise<ScmAdminConnection>;
55
+ rotateAdminScmCredential(connectionCode: string, input: ScmCredentialUpdate): Promise<ScmAdminConnection>;
56
+ probeAdminScmConnection(connectionCode: string, input: {
57
+ version: number;
58
+ }): Promise<ScmAdminConnection>;
59
+ disableAdminScmConnection(connectionCode: string, version: number): Promise<void>;
60
+ createSession(mode: OnboardingMode): Promise<OnboardingSession>;
61
+ listSessions(options?: {
62
+ state?: OnboardingSessionState;
63
+ mine?: boolean;
64
+ cursor?: string;
65
+ }): Promise<{
66
+ items: OnboardingSession[];
67
+ nextCursor: string | null;
68
+ }>;
69
+ getSession(sessionNo: string): Promise<OnboardingSession>;
70
+ updateSession(sessionNo: string, input: {
71
+ revision: number;
72
+ currentStep: string;
73
+ draft: JsonValue;
74
+ }): Promise<OnboardingSession>;
75
+ preflight(sessionNo: string): Promise<OnboardingPreflight>;
76
+ apply(sessionNo: string, input: {
77
+ planHash: string;
78
+ idempotencyKey: string;
79
+ }): Promise<OnboardingTask>;
80
+ getEvents(sessionNo: string, afterSequence?: number): Promise<{
81
+ items: OnboardingEvent[];
82
+ nextSequence: number;
83
+ }>;
84
+ getAssessment(sessionNo: string): Promise<Record<string, unknown>>;
85
+ cancel(sessionNo: string): Promise<void>;
86
+ retry(sessionNo: string): Promise<void>;
87
+ resume(sessionNo: string): Promise<void>;
88
+ reassess(sessionNo: string): Promise<void>;
89
+ }
90
+ export declare class OnboardingClient implements OnboardingApi {
91
+ private readonly config;
92
+ private readonly fetchImpl;
93
+ private readonly tokenProvider;
94
+ constructor(config: AuthConfig, dependencies?: OnboardingClientDependencies);
95
+ private authenticatedFetch;
96
+ private json;
97
+ getCapabilities(): Promise<OnboardingCapabilities>;
98
+ listCatalogOptions(type: "team" | "system" | "business-domain" | "environment", options?: {
99
+ search?: string;
100
+ limit?: number;
101
+ }): Promise<{
102
+ [x: string]: unknown;
103
+ items: Record<string, unknown>[];
104
+ nextCursor?: string | null | undefined;
105
+ }>;
106
+ listTechnologyStacks(options?: {
107
+ status?: string;
108
+ }): Promise<{
109
+ [x: string]: unknown;
110
+ items: Record<string, unknown>[];
111
+ nextCursor?: string | null | undefined;
112
+ }>;
113
+ listTemplates(options?: {
114
+ technologyStackCode?: string;
115
+ repoMode?: string;
116
+ }): Promise<{
117
+ [x: string]: unknown;
118
+ items: Record<string, unknown>[];
119
+ nextCursor?: string | null | undefined;
120
+ }>;
121
+ listScmConnections(options?: {
122
+ provider?: ScmProvider;
123
+ search?: string;
124
+ }): Promise<{
125
+ items: {
126
+ code: string;
127
+ name: string;
128
+ provider: "CODEUP" | "GITHUB";
129
+ organizationKey: string;
130
+ health: string;
131
+ capabilities: Record<string, boolean>;
132
+ lastCheckedAt?: string | null | undefined;
133
+ }[];
134
+ nextCursor: string | null;
135
+ }>;
136
+ listRepositories(connectionCode: string, options?: {
137
+ search?: string;
138
+ cursor?: string;
139
+ limit?: number;
140
+ }): Promise<{
141
+ items: {
142
+ externalId: string;
143
+ namespace?: string | undefined;
144
+ name: string;
145
+ fullName?: string | undefined;
146
+ namespacePath?: string | undefined;
147
+ defaultBranch: string;
148
+ headRevision: string;
149
+ visibility?: string | undefined;
150
+ archived: boolean;
151
+ webUrl?: string | undefined;
152
+ }[];
153
+ nextCursor: string | null;
154
+ hasMore: boolean;
155
+ }>;
156
+ listAdminScmConnections(): Promise<{
157
+ items: {
158
+ id?: number | undefined;
159
+ code: string;
160
+ name: string;
161
+ provider: "CODEUP" | "GITHUB";
162
+ baseUrl: string;
163
+ organizationKey: string;
164
+ authType: "CODEUP_OPENAPI" | "GITHUB_APP" | "GITHUB_PAT";
165
+ aliyunAccountId?: number | null | undefined;
166
+ aliyunAssumeRoleId?: number | null | undefined;
167
+ capabilities: Record<string, boolean>;
168
+ status: "ACTIVE" | "DEGRADED" | "DISABLED" | "ERROR";
169
+ lastCheckedAt?: string | null | undefined;
170
+ lastError?: string | null | undefined;
171
+ version: number;
172
+ credentialConfigured: boolean;
173
+ credentialVersion?: number | undefined;
174
+ credentialUpdatedAt?: string | null | undefined;
175
+ }[];
176
+ nextCursor: string | null;
177
+ }>;
178
+ getAdminScmConnection(connectionCode: string): Promise<ScmAdminConnection>;
179
+ createAdminScmConnection(input: ScmAdminConnectionInput): Promise<ScmAdminConnection>;
180
+ updateAdminScmConnection(connectionCode: string, input: ScmAdminConnectionInput & {
181
+ version: number;
182
+ }): Promise<ScmAdminConnection>;
183
+ rotateAdminScmCredential(connectionCode: string, input: ScmCredentialUpdate): Promise<ScmAdminConnection>;
184
+ probeAdminScmConnection(connectionCode: string, input: {
185
+ version: number;
186
+ }): Promise<ScmAdminConnection>;
187
+ disableAdminScmConnection(connectionCode: string, version: number): Promise<void>;
188
+ createSession(mode: OnboardingMode): Promise<OnboardingSession>;
189
+ listSessions(options?: {
190
+ state?: OnboardingSessionState;
191
+ mine?: boolean;
192
+ cursor?: string;
193
+ }): Promise<{
194
+ items: Array<import("zod").output<typeof OnboardingSessionSchema>>;
195
+ nextCursor: string | null;
196
+ }>;
197
+ getSession(sessionNo: string): Promise<OnboardingSession>;
198
+ updateSession(sessionNo: string, input: {
199
+ revision: number;
200
+ currentStep: string;
201
+ draft: JsonValue;
202
+ }): Promise<OnboardingSession>;
203
+ preflight(sessionNo: string): Promise<OnboardingPreflight>;
204
+ apply(sessionNo: string, input: {
205
+ planHash: string;
206
+ idempotencyKey: string;
207
+ }): Promise<OnboardingTask>;
208
+ getEvents(sessionNo: string, afterSequence?: number): Promise<{
209
+ items: {
210
+ [x: string]: unknown;
211
+ sequenceNo: number;
212
+ eventType: string;
213
+ stepCode?: string | null | undefined;
214
+ stepState?: "COMPENSATED" | "FAILED" | "PENDING" | "RUNNING" | "SKIPPED" | "SUCCEEDED" | "WAITING" | null | undefined;
215
+ message: string;
216
+ output?: {
217
+ taskNo?: string | undefined;
218
+ planHash?: string | undefined;
219
+ applicationId?: string | number | undefined;
220
+ repositoryId?: string | number | undefined;
221
+ repositoryExternalId?: string | number | undefined;
222
+ repositoryFullName?: string | undefined;
223
+ repositoryUrl?: string | undefined;
224
+ repositoryHead?: string | undefined;
225
+ branch?: string | undefined;
226
+ changeRequestNumber?: string | number | undefined;
227
+ changeRequestUrl?: string | undefined;
228
+ changeRequestState?: string | undefined;
229
+ assessmentId?: string | number | undefined;
230
+ assessmentStatus?: string | undefined;
231
+ score?: number | undefined;
232
+ blockerCount?: number | undefined;
233
+ failCount?: number | undefined;
234
+ warnCount?: number | undefined;
235
+ jenkinsCandidateBindingIds?: (string | number)[] | undefined;
236
+ jenkinsPendingTiers?: string[] | undefined;
237
+ retryAfterSeconds?: number | undefined;
238
+ recoveryAction?: string | undefined;
239
+ bundleDigest?: string | undefined;
240
+ templateRevision?: string | undefined;
241
+ } | null | undefined;
242
+ errorCode?: string | null | undefined;
243
+ retryable: boolean;
244
+ actorType?: "RUNNER" | "SYSTEM" | "USER" | undefined;
245
+ actor?: string | null | undefined;
246
+ occurredAt?: string | undefined;
247
+ }[];
248
+ nextSequence: number;
249
+ }>;
250
+ getAssessment(sessionNo: string): Promise<Record<string, unknown>>;
251
+ cancel(sessionNo: string): Promise<void>;
252
+ retry(sessionNo: string): Promise<void>;
253
+ resume(sessionNo: string): Promise<void>;
254
+ reassess(sessionNo: string): Promise<void>;
255
+ private sessionAction;
256
+ }
@@ -0,0 +1,213 @@
1
+ import { resolveBackendUrl } from "../backend.js";
2
+ import { ensureAccessToken, fetchWithKeycloakIdentity } from "../oauth.js";
3
+ import { OnboardingError, redactOnboardingText } from "./errors.js";
4
+ import { OnboardingApiErrorSchema, OnboardingAssessmentSchema, OnboardingCapabilitiesSchema, OnboardingEventListSchema, OnboardingObjectListSchema, OnboardingPreflightSchema, OnboardingSessionListSchema, OnboardingSessionSchema, OnboardingTaskSchema, ScmAdminConnectionListSchema, ScmAdminConnectionSchema, ScmConnectionListSchema, ScmRepositoryPageSchema } from "./schemas.js";
5
+ const API_ROOT = "/api/v1/application-onboarding";
6
+ const ADMIN_SCM_ROOT = "/api/v1/admin/scm-connections";
7
+ async function responseBody(response) {
8
+ const text = await response.text();
9
+ if (!text)
10
+ return {};
11
+ try {
12
+ return JSON.parse(text);
13
+ }
14
+ catch {
15
+ return text;
16
+ }
17
+ }
18
+ function requestIdFrom(response, body) {
19
+ if (body && typeof body === "object" && "requestId" in body && typeof body.requestId === "string") {
20
+ return body.requestId;
21
+ }
22
+ return response.headers.get("x-request-id") ?? undefined;
23
+ }
24
+ function retryAfterSeconds(response) {
25
+ const value = response.headers.get("retry-after")?.trim();
26
+ if (!value)
27
+ return undefined;
28
+ if (/^\d+$/u.test(value))
29
+ return Number(value);
30
+ const timestamp = Date.parse(value);
31
+ if (!Number.isFinite(timestamp))
32
+ return undefined;
33
+ return Math.max(0, Math.ceil((timestamp - Date.now()) / 1000));
34
+ }
35
+ function apiFailure(response, body) {
36
+ const parsed = OnboardingApiErrorSchema.safeParse(body);
37
+ const retryAfter = retryAfterSeconds(response);
38
+ const retryableStatus = response.status === 429 || (response.status >= 500 && response.status !== 501);
39
+ const message = parsed.success
40
+ ? parsed.data.message ?? response.statusText ?? "Application onboarding API request failed."
41
+ : typeof body === "string"
42
+ ? body
43
+ : response.statusText || "Application onboarding API request failed.";
44
+ return new OnboardingError(`Application onboarding API HTTP ${response.status}: ${redactOnboardingText(message)}${retryAfter == null ? "" : ` Retry after ${retryAfter} second(s).`}`, parsed.success ? parsed.data.code ?? (response.status === 429 ? "onboarding_rate_limited" : "onboarding_api_error") : response.status === 429 ? "onboarding_rate_limited" : "onboarding_api_error", response.status, requestIdFrom(response, body), parsed.success ? Boolean(parsed.data.retryable) || retryableStatus : retryableStatus, parsed.success ? { fieldErrors: parsed.data.fieldErrors ?? [] } : undefined, retryAfter);
45
+ }
46
+ function safeSessionNo(value) {
47
+ const trimmed = value.trim();
48
+ if (!trimmed || trimmed.length > 160 || /[/?#\\\u0000-\u001f\u007f]/u.test(trimmed)) {
49
+ throw new OnboardingError("session-no is invalid.", "onboarding_input_invalid");
50
+ }
51
+ return trimmed;
52
+ }
53
+ function queryPath(path, values) {
54
+ const query = new URLSearchParams();
55
+ for (const [key, value] of Object.entries(values)) {
56
+ if (value != null && value !== "")
57
+ query.set(key, String(value));
58
+ }
59
+ return query.size ? `${path}?${query.toString()}` : path;
60
+ }
61
+ export class OnboardingClient {
62
+ config;
63
+ fetchImpl;
64
+ tokenProvider;
65
+ constructor(config, dependencies = {}) {
66
+ this.config = config;
67
+ this.fetchImpl = dependencies.fetch ?? fetch;
68
+ this.tokenProvider = dependencies.tokenProvider ?? ensureAccessToken;
69
+ }
70
+ async authenticatedFetch(path, init = {}) {
71
+ const url = resolveBackendUrl(this.config, { method: "GET", path });
72
+ const headers = new Headers(init.headers);
73
+ if (!headers.has("Accept"))
74
+ headers.set("Accept", "application/json");
75
+ if (init.body != null && typeof init.body === "string")
76
+ headers.set("Content-Type", "application/json");
77
+ return fetchWithKeycloakIdentity(this.config, url, () => ({ ...init, headers }), { fetch: this.fetchImpl, tokenProvider: this.tokenProvider });
78
+ }
79
+ async json(path, schema, init = {}, expectedStatuses) {
80
+ const response = await this.authenticatedFetch(path, init);
81
+ const body = await responseBody(response);
82
+ if (!response.ok)
83
+ throw apiFailure(response, body);
84
+ if (expectedStatuses && !expectedStatuses.includes(response.status)) {
85
+ throw new OnboardingError(`Application onboarding API returned HTTP ${response.status}; expected ${expectedStatuses.join(" or ")}.`, "onboarding_invalid_response", response.status, requestIdFrom(response, body));
86
+ }
87
+ const parsed = schema.safeParse(body);
88
+ if (!parsed.success) {
89
+ throw new OnboardingError(`Application onboarding API returned an invalid response: ${parsed.error.message}`, "onboarding_invalid_response", response.status, requestIdFrom(response, body));
90
+ }
91
+ return parsed.data;
92
+ }
93
+ getCapabilities() {
94
+ return this.json(`${API_ROOT}/capabilities`, OnboardingCapabilitiesSchema);
95
+ }
96
+ listCatalogOptions(type, options = {}) {
97
+ return this.json(queryPath("/api/v1/catalog/options", {
98
+ type,
99
+ q: options.search,
100
+ limit: options.limit ?? 50
101
+ }), OnboardingObjectListSchema);
102
+ }
103
+ listTechnologyStacks(options = {}) {
104
+ return this.json(queryPath(`${API_ROOT}/technology-stacks`, options), OnboardingObjectListSchema);
105
+ }
106
+ listTemplates(options = {}) {
107
+ return this.json(queryPath(`${API_ROOT}/templates`, options), OnboardingObjectListSchema);
108
+ }
109
+ listScmConnections(options = {}) {
110
+ return this.json(queryPath(`${API_ROOT}/scm-connections`, options), ScmConnectionListSchema);
111
+ }
112
+ listRepositories(connectionCode, options = {}) {
113
+ const connection = encodeURIComponent(safeSessionNo(connectionCode));
114
+ return this.json(queryPath(`${API_ROOT}/scm-connections/${connection}/repositories`, options), ScmRepositoryPageSchema);
115
+ }
116
+ listAdminScmConnections() {
117
+ return this.json(ADMIN_SCM_ROOT, ScmAdminConnectionListSchema);
118
+ }
119
+ getAdminScmConnection(connectionCode) {
120
+ return this.json(`${ADMIN_SCM_ROOT}/${encodeURIComponent(safeSessionNo(connectionCode))}`, ScmAdminConnectionSchema);
121
+ }
122
+ createAdminScmConnection(input) {
123
+ return this.json(ADMIN_SCM_ROOT, ScmAdminConnectionSchema, {
124
+ method: "POST",
125
+ body: JSON.stringify(input)
126
+ }, [200, 201]);
127
+ }
128
+ updateAdminScmConnection(connectionCode, input) {
129
+ return this.json(`${ADMIN_SCM_ROOT}/${encodeURIComponent(safeSessionNo(connectionCode))}`, ScmAdminConnectionSchema, {
130
+ method: "PUT",
131
+ body: JSON.stringify(input)
132
+ });
133
+ }
134
+ rotateAdminScmCredential(connectionCode, input) {
135
+ return this.json(`${ADMIN_SCM_ROOT}/${encodeURIComponent(safeSessionNo(connectionCode))}/credentials`, ScmAdminConnectionSchema, {
136
+ method: "PUT",
137
+ body: JSON.stringify(input)
138
+ });
139
+ }
140
+ probeAdminScmConnection(connectionCode, input) {
141
+ return this.json(`${ADMIN_SCM_ROOT}/${encodeURIComponent(safeSessionNo(connectionCode))}/probe`, ScmAdminConnectionSchema, {
142
+ method: "POST",
143
+ body: JSON.stringify(input)
144
+ });
145
+ }
146
+ async disableAdminScmConnection(connectionCode, version) {
147
+ const path = queryPath(`${ADMIN_SCM_ROOT}/${encodeURIComponent(safeSessionNo(connectionCode))}`, { version });
148
+ const response = await this.authenticatedFetch(path, { method: "DELETE" });
149
+ const body = await responseBody(response);
150
+ if (!response.ok)
151
+ throw apiFailure(response, body);
152
+ if (![200, 204].includes(response.status)) {
153
+ throw new OnboardingError(`Application onboarding API returned HTTP ${response.status}; expected 200 or 204.`, "onboarding_invalid_response", response.status, requestIdFrom(response, body));
154
+ }
155
+ }
156
+ createSession(mode) {
157
+ return this.json(`${API_ROOT}/sessions`, OnboardingSessionSchema, {
158
+ method: "POST",
159
+ body: JSON.stringify({ mode })
160
+ }, [200, 201]);
161
+ }
162
+ listSessions(options = {}) {
163
+ return this.json(queryPath(`${API_ROOT}/sessions`, options), OnboardingSessionListSchema);
164
+ }
165
+ getSession(sessionNo) {
166
+ return this.json(`${API_ROOT}/sessions/${encodeURIComponent(safeSessionNo(sessionNo))}`, OnboardingSessionSchema);
167
+ }
168
+ updateSession(sessionNo, input) {
169
+ return this.json(`${API_ROOT}/sessions/${encodeURIComponent(safeSessionNo(sessionNo))}`, OnboardingSessionSchema, {
170
+ method: "PUT",
171
+ body: JSON.stringify(input)
172
+ });
173
+ }
174
+ preflight(sessionNo) {
175
+ return this.json(`${API_ROOT}/sessions/${encodeURIComponent(safeSessionNo(sessionNo))}/preflight`, OnboardingPreflightSchema, {
176
+ method: "POST"
177
+ });
178
+ }
179
+ apply(sessionNo, input) {
180
+ return this.json(`${API_ROOT}/sessions/${encodeURIComponent(safeSessionNo(sessionNo))}/apply`, OnboardingTaskSchema, {
181
+ method: "POST",
182
+ headers: { "Idempotency-Key": input.idempotencyKey },
183
+ body: JSON.stringify({ planHash: input.planHash })
184
+ }, [200, 202]);
185
+ }
186
+ getEvents(sessionNo, afterSequence) {
187
+ return this.json(queryPath(`${API_ROOT}/sessions/${encodeURIComponent(safeSessionNo(sessionNo))}/events`, { afterSequence }), OnboardingEventListSchema);
188
+ }
189
+ async getAssessment(sessionNo) {
190
+ return this.json(`${API_ROOT}/sessions/${encodeURIComponent(safeSessionNo(sessionNo))}/assessment`, OnboardingAssessmentSchema);
191
+ }
192
+ cancel(sessionNo) {
193
+ return this.sessionAction(sessionNo, "cancel");
194
+ }
195
+ retry(sessionNo) {
196
+ return this.sessionAction(sessionNo, "retry");
197
+ }
198
+ resume(sessionNo) {
199
+ return this.sessionAction(sessionNo, "resume");
200
+ }
201
+ reassess(sessionNo) {
202
+ return this.sessionAction(sessionNo, "reassess");
203
+ }
204
+ async sessionAction(sessionNo, action) {
205
+ const response = await this.authenticatedFetch(`${API_ROOT}/sessions/${encodeURIComponent(safeSessionNo(sessionNo))}/${action}`, { method: "POST" });
206
+ if (!response.ok)
207
+ throw apiFailure(response, await responseBody(response));
208
+ if (![200, 202, 204].includes(response.status)) {
209
+ throw new OnboardingError(`Application onboarding API returned HTTP ${response.status}; expected 200, 202, or 204.`, "onboarding_invalid_response", response.status, requestIdFrom(response, undefined));
210
+ }
211
+ }
212
+ }
213
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/application-onboarding/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,64 @@
1
+ import type { Command } from "commander";
2
+ import { type OnboardingApi } from "./client.js";
3
+ import { OnboardingError } from "./errors.js";
4
+ import { type OnboardingEvent, type OnboardingEventOutput, type OnboardingMode, type OnboardingSession, type OnboardingSessionState, type OnboardingSpec, type ScmAuthType, type ScmConnection, type ScmCredentialBundle, type ScmCredentialUpdate } from "./schemas.js";
5
+ import { runOnboardingTui } from "./tui.js";
6
+ export interface ApplicationOnboardingCommandDependencies {
7
+ clientFactory?: () => OnboardingApi;
8
+ interactive?: () => boolean;
9
+ runTui?: typeof runOnboardingTui;
10
+ sleep?: (milliseconds: number, signal?: AbortSignal) => Promise<void>;
11
+ }
12
+ export interface OnboardingSpecExecutionResult {
13
+ session: OnboardingSession;
14
+ preflight?: Awaited<ReturnType<OnboardingApi["preflight"]>>;
15
+ task?: Awaited<ReturnType<OnboardingApi["apply"]>>;
16
+ idempotencyKey?: string;
17
+ }
18
+ export interface OnboardingExecutionView {
19
+ state: OnboardingSessionState;
20
+ currentStep: string | null;
21
+ summary: string;
22
+ active: boolean;
23
+ terminal: boolean;
24
+ lastSequence: number;
25
+ retryable: boolean;
26
+ errorCode: string | null;
27
+ eventOutput: OnboardingEventOutput;
28
+ }
29
+ export interface OnboardingInspection {
30
+ session: OnboardingSession;
31
+ events: OnboardingEvent[];
32
+ lastSequence: number;
33
+ execution: OnboardingExecutionView;
34
+ }
35
+ export type OnboardingRecoveryAction = "cancel" | "retry" | "resume" | "reassess";
36
+ export type ApplicationCatalogOptionType = "team" | "system" | "business-domain" | "environment";
37
+ export declare function publicOnboardingEvent(event: OnboardingEvent): OnboardingEvent;
38
+ export declare function onboardingExecutionView(session: OnboardingSession, events?: OnboardingEvent[]): OnboardingExecutionView;
39
+ export declare function parseOnboardingMode(value: string): OnboardingMode;
40
+ export declare function parseApplicationCatalogOptionType(value: string): ApplicationCatalogOptionType;
41
+ export declare function resolveScmConnection(client: Pick<OnboardingApi, "listScmConnections">, code: string): Promise<ScmConnection>;
42
+ export declare function scmCredentialUpdate(version: number, authType: ScmAuthType, credential: ScmCredentialBundle): ScmCredentialUpdate;
43
+ export declare function readOnboardingSpec(path: string): Promise<OnboardingSpec>;
44
+ export declare function executeOnboardingSpec(client: OnboardingApi, spec: OnboardingSpec, options?: {
45
+ mode?: OnboardingMode;
46
+ sessionNo?: string;
47
+ plan?: boolean;
48
+ apply?: boolean;
49
+ idempotencyKey?: string;
50
+ }): Promise<OnboardingSpecExecutionResult>;
51
+ export declare function watchOnboardingEvents(client: Pick<OnboardingApi, "getEvents" | "getSession">, sessionNo: string, options?: {
52
+ afterSequence?: number;
53
+ sleep?: (milliseconds: number, signal?: AbortSignal) => Promise<void>;
54
+ signal?: AbortSignal;
55
+ onEvent?: (event: OnboardingEvent) => void;
56
+ onSession?: (session: OnboardingSession) => void;
57
+ onReconnect?: (error: OnboardingError) => void;
58
+ }): Promise<{
59
+ session: OnboardingSession;
60
+ lastSequence: number;
61
+ }>;
62
+ export declare function inspectOnboardingSession(client: Pick<OnboardingApi, "getEvents" | "getSession">, sessionNo: string, afterSequence?: number): Promise<OnboardingInspection>;
63
+ export declare function executeOnboardingAction(client: Pick<OnboardingApi, OnboardingRecoveryAction | "getEvents" | "getSession">, sessionNo: string, action: OnboardingRecoveryAction): Promise<OnboardingInspection>;
64
+ export declare function registerApplicationOnboardingCommands(program: Command, dependencies?: ApplicationOnboardingCommandDependencies): void;