loadInvokeConfig loads and merges configuration from JSON file and CLI flags
(cmd *cobra.Command)
| 1330 | ncaID = strings.TrimSpace(ncaID) |
| 1331 | priorityText = strings.TrimSpace(priorityText) |
| 1332 | if !found || ncaID == "" || priorityText == "" { |
| 1333 | return "", 0, fmt.Errorf("expected <nca-id>:<priority> with a non-empty NCA ID") |
| 1334 | } |
| 1335 | |
| 1336 | priority, err := strconv.ParseUint(priorityText, 10, 32) |
| 1337 | if err != nil { |
| 1338 | return "", 0, fmt.Errorf("priority must be an integer from 0 to %d", uint64(^uint32(0))) |
| 1339 | } |
| 1340 | return ncaID, uint32(priority), nil |
| 1341 | } |
| 1342 | |
| 1343 | func validateLLMInvocationConfig(config *LLMInvocationConfigInput) error { |
| 1344 | if config == nil || config.Priority == nil { |
| 1345 | return nil |
| 1346 | } |
| 1347 | |
| 1348 | priority := config.Priority |
| 1349 | if len(priority.PerAccountPriority) > 64 { |
| 1350 | return fmt.Errorf("at most 64 distinct NCA ID priority overrides are allowed") |
| 1351 | } |
| 1352 | if len(priority.PerAccountPriority) > 0 && priority.DefaultPriority == nil { |
| 1353 | return fmt.Errorf("defaultPriority is required when perAccountPriority is configured") |
| 1354 | } |
| 1355 | for ncaID := range priority.PerAccountPriority { |
| 1356 | if strings.TrimSpace(ncaID) == "" { |
| 1357 | return fmt.Errorf("perAccountPriority NCA ID must not be empty") |
| 1358 | } |
| 1359 | } |
| 1360 | return nil |
| 1361 | } |
| 1362 | |
| 1363 | func llmInvocationConfigToClient(config *LLMInvocationConfigInput) *client.LLMInvocationConfigDto { |
| 1364 | if config == nil { |
| 1365 | return nil |
| 1366 | } |
| 1367 | |
| 1368 | result := &client.LLMInvocationConfigDto{} |
| 1369 | if config.Priority == nil { |
| 1370 | return result |
| 1371 | } |
| 1372 | |
| 1373 | priority := &client.PriorityDto{DefaultPriority: config.Priority.DefaultPriority} |
| 1374 | if config.Priority.PerAccountPriority != nil { |
| 1375 | priority.PerAccountPriority = make(map[string]uint32, len(config.Priority.PerAccountPriority)) |
| 1376 | for ncaID, value := range config.Priority.PerAccountPriority { |
| 1377 | priority.PerAccountPriority[ncaID] = value |
| 1378 | } |
| 1379 | } |
| 1380 | result.Priority = priority |
| 1381 | return result |
| 1382 | } |
| 1383 | |
| 1384 | func applyCreateHelmFlagOverrides(cmd *cobra.Command, config *CreateConfig) { |
| 1385 | if cmd.Flags().Changed("helm-chart") { |
| 1386 | config.HelmChart = createFlags.helmChart |
| 1387 | } |
| 1388 | if cmd.Flags().Changed("helm-chart-service") { |
| 1389 | config.HelmChartServiceName = createFlags.helmChartServiceName |