@equinor/fusion-framework-cli-plugin-ai-base 4.0.4 → 4.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/dist/esm/configure-fusion-ai.js +21 -0
  3. package/dist/esm/configure-fusion-ai.js.map +1 -0
  4. package/dist/esm/fusion-ai-config.js +2 -0
  5. package/dist/esm/fusion-ai-config.js.map +1 -0
  6. package/dist/esm/index.js +3 -2
  7. package/dist/esm/index.js.map +1 -1
  8. package/dist/esm/{config.js → load-fusion-ai-config.js} +3 -21
  9. package/dist/esm/load-fusion-ai-config.js.map +1 -0
  10. package/dist/esm/options/{schema.js → ai-options-schema.js} +1 -1
  11. package/dist/esm/options/ai-options-schema.js.map +1 -0
  12. package/dist/esm/options/index.js +1 -1
  13. package/dist/esm/options/index.js.map +1 -1
  14. package/dist/esm/options/options.js +9 -1
  15. package/dist/esm/options/options.js.map +1 -1
  16. package/dist/esm/options/with-options.js +6 -0
  17. package/dist/esm/options/with-options.js.map +1 -1
  18. package/dist/esm/{register.js → register-ai-plugin.js} +3 -2
  19. package/dist/esm/register-ai-plugin.js.map +1 -0
  20. package/dist/esm/setup-framework.js +5 -0
  21. package/dist/esm/setup-framework.js.map +1 -1
  22. package/dist/esm/version.js +1 -1
  23. package/dist/tsconfig.tsbuildinfo +1 -1
  24. package/dist/types/configure-fusion-ai.d.ts +21 -0
  25. package/dist/types/fusion-ai-config.d.ts +11 -0
  26. package/dist/types/index.d.ts +4 -2
  27. package/dist/types/{config.d.ts → load-fusion-ai-config.d.ts} +2 -31
  28. package/dist/types/options/{schema.d.ts → ai-options-schema.d.ts} +2 -2
  29. package/dist/types/options/index.d.ts +1 -1
  30. package/dist/types/options/options.d.ts +7 -0
  31. package/dist/types/version.d.ts +1 -1
  32. package/package.json +7 -7
  33. package/src/configure-fusion-ai.ts +22 -0
  34. package/src/fusion-ai-config.ts +11 -0
  35. package/src/index.ts +4 -7
  36. package/src/{config.ts → load-fusion-ai-config.ts} +3 -33
  37. package/src/options/index.ts +1 -1
  38. package/src/options/options.ts +11 -1
  39. package/src/options/with-options.ts +6 -0
  40. package/src/{register.ts → register-ai-plugin.ts} +2 -1
  41. package/src/setup-framework.ts +5 -0
  42. package/src/version.ts +1 -1
  43. package/dist/esm/config.js.map +0 -1
  44. package/dist/esm/options/schema.js.map +0 -1
  45. package/dist/esm/register.js.map +0 -1
  46. /package/dist/types/{register.d.ts → register-ai-plugin.d.ts} +0 -0
  47. /package/src/options/{schema.ts → ai-options-schema.ts} +0 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,31 @@
1
1
  # @equinor/fusion-framework-cli-plugin-ai-base
2
2
 
3
+ ## 4.0.6
4
+
5
+ ### Patch Changes
6
+
7
+ - 80c3e4a: Internal: Consolidate the eight single-export CLI option files under `src/options/` back into `options.ts` to reduce file fragmentation. No change to the public API or option behavior.
8
+ - 80c3e4a: Internal: renamed 53 source files across `ai-base`, `ai-chat`, `ai-index`, and `copilot` to comply with the `filename-convention` lint rule (e.g. `config.ts` → `load-fusion-ai-config.ts`, `tools/write-file.ts` → `tools/create-write-file-tool.ts`, `prompts/plan.prompt.ts` → `prompts/create-plan-prompt.ts`). No public API changes.
9
+ - Updated dependencies [80c3e4a]
10
+ - Updated dependencies [80c3e4a]
11
+ - Updated dependencies [80c3e4a]
12
+ - Updated dependencies [80c3e4a]
13
+ - Updated dependencies [80c3e4a]
14
+ - Updated dependencies [80c3e4a]
15
+ - Updated dependencies [80c3e4a]
16
+ - Updated dependencies [80c3e4a]
17
+ - Updated dependencies [80c3e4a]
18
+ - @equinor/fusion-framework-module-ai@6.0.2
19
+ - @equinor/fusion-framework-module@6.1.1
20
+ - @equinor/fusion-imports@2.0.1
21
+
22
+ ## 4.0.5
23
+
24
+ ### Patch Changes
25
+
26
+ - Updated dependencies [edb7e4f]
27
+ - @equinor/fusion-framework-module-ai@6.0.1
28
+
3
29
  ## 4.0.4
4
30
 
5
31
  ### Patch Changes
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Configuration factory function for Fusion AI operations.
3
+ *
4
+ * This helper function provides type safety and consistency for creating AI configuration
5
+ * functions. It accepts a function that returns configuration (either synchronously or
6
+ * asynchronously) and returns it unchanged, providing a typed interface for consumers.
7
+ *
8
+ * @param fn - Function that returns Fusion AI configuration (sync or async)
9
+ * @returns The same configuration function, typed for use with loadFusionAIConfig
10
+ *
11
+ * @example
12
+ * ```ts
13
+ * // fusion-ai.config.ts
14
+ * export default configureFusionAI(async () => ({
15
+ * apiKey: process.env.OPENAI_API_KEY,
16
+ * deployment: 'gpt-4',
17
+ * }));
18
+ * ```
19
+ */
20
+ export const configureFusionAI = (fn) => fn;
21
+ //# sourceMappingURL=configure-fusion-ai.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configure-fusion-ai.js","sourceRoot":"","sources":["../../src/configure-fusion-ai.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAA2B,EAAwB,EAAE,EAAE,CAAC,EAAE,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=fusion-ai-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fusion-ai-config.js","sourceRoot":"","sources":["../../src/fusion-ai-config.ts"],"names":[],"mappings":""}
package/dist/esm/index.js CHANGED
@@ -8,7 +8,8 @@
8
8
  *
9
9
  * @packageDocumentation
10
10
  */
11
- export { configureFusionAI, loadFusionAIConfig, } from './config.js';
11
+ export { configureFusionAI } from './configure-fusion-ai.js';
12
+ export { loadFusionAIConfig } from './load-fusion-ai-config.js';
12
13
  export { setupFramework } from './setup-framework.js';
13
- export { registerAiPlugin } from './register.js';
14
+ export { registerAiPlugin } from './register-ai-plugin.js';
14
15
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAGL,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,cAAc,EAA0B,MAAM,sBAAsB,CAAC;AAC9E,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAkC,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChG,OAAO,EAAE,cAAc,EAA0B,MAAM,sBAAsB,CAAC;AAC9E,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC"}
@@ -1,30 +1,11 @@
1
1
  import { importConfig } from '@equinor/fusion-imports';
2
- /**
3
- * Configuration factory function for Fusion AI operations.
4
- *
5
- * This helper function provides type safety and consistency for creating AI configuration
6
- * functions. It accepts a function that returns configuration (either synchronously or
7
- * asynchronously) and returns it unchanged, providing a typed interface for consumers.
8
- *
9
- * @param fn - Function that returns Fusion AI configuration (sync or async)
10
- * @returns The same configuration function, typed for use with loadFusionAIConfig
11
- *
12
- * @example
13
- * ```ts
14
- * // fusion-ai.config.ts
15
- * export default configureFusionAI(async () => ({
16
- * apiKey: process.env.OPENAI_API_KEY,
17
- * deployment: 'gpt-4',
18
- * }));
19
- * ```
20
- */
21
- export const configureFusionAI = (fn) => fn;
22
2
  /**
23
3
  * Loads and resolves Fusion AI configuration from a file.
24
4
  *
25
5
  * The config file should export a function (via `configureFusionAI`) that returns
26
6
  * the configuration object. The function can be synchronous or asynchronous.
27
7
  *
8
+ * @template T - Shape of the resolved Fusion AI configuration object.
28
9
  * @param configPath - Path to the config file without extension (default: 'fusion-ai.config')
29
10
  * @param options - Optional parameters for loading the configuration
30
11
  * @returns Promise resolving to the loaded and executed configuration
@@ -48,6 +29,7 @@ export async function loadFusionAIConfig(configPath = 'fusion-ai.config', option
48
29
  });
49
30
  // Execute the configuration function (handles both sync and async)
50
31
  const configFn = result.config;
32
+ // Config files export a function via configureFusionAI; execute it to resolve the value.
51
33
  if (typeof configFn === 'function') {
52
34
  return await configFn();
53
35
  }
@@ -55,4 +37,4 @@ export async function loadFusionAIConfig(configPath = 'fusion-ai.config', option
55
37
  return configFn;
56
38
  }
57
39
  export default loadFusionAIConfig;
58
- //# sourceMappingURL=config.js.map
40
+ //# sourceMappingURL=load-fusion-ai-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"load-fusion-ai-config.js","sourceRoot":"","sources":["../../src/load-fusion-ai-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAsBvD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,UAAU,GAAW,kBAAkB,EACvC,OAAO,GAA8B,EAAE;IAEvC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;IAExD,gFAAgF;IAChF,MAAM,MAAM,GAAG,MAAM,YAAY,CAAuB,UAAU,EAAE;QAClE,OAAO;QACP,UAAU;KACX,CAAC,CAAC;IAEH,mEAAmE;IACnE,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC;IAC/B,yFAAyF;IACzF,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE,CAAC;QACnC,OAAO,MAAM,QAAQ,EAAE,CAAC;IAC1B,CAAC;IACD,sEAAsE;IACtE,OAAO,QAAa,CAAC;AACvB,CAAC;AAED,eAAe,kBAAkB,CAAC"}
@@ -23,4 +23,4 @@ export const AiOptionsSchema = z
23
23
  debug: z.coerce.boolean().default(false),
24
24
  })
25
25
  .describe('Base Fusion AI command options');
26
- //# sourceMappingURL=schema.js.map
26
+ //# sourceMappingURL=ai-options-schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-options-schema.js","sourceRoot":"","sources":["../../../src/options/ai-options-schema.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAC;AAEpB;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC;KAC7B,MAAM,CAAC;IACN,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC1B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACvC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACxC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACvC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;CACzC,CAAC;KACD,QAAQ,CAAC,gCAAgC,CAAC,CAAC"}
@@ -11,5 +11,5 @@
11
11
  */
12
12
  export { default as options } from './options.js';
13
13
  export { withOptions } from './with-options.js';
14
- export { AiOptionsSchema } from './schema.js';
14
+ export { AiOptionsSchema } from './ai-options-schema.js';
15
15
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/options/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAsB,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/options/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAsB,MAAM,wBAAwB,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import { createOption } from 'commander';
2
- // Default Fusion AAD identifiers (same defaults as the CLI's auth options)
2
+ // Default Fusion AAD tenant ID (same default as the CLI's auth options)
3
3
  const DEFAULT_TENANT_ID = '3aa4a235-b6e2-48d5-9195-7fcf05b459b0';
4
+ // Default Fusion AAD client ID (same default as the CLI's auth options)
4
5
  const DEFAULT_CLIENT_ID = 'a318b8e1-0295-4e17-98d5-35f67dfeba14';
5
6
  const DEFAULT_MODEL_CHAT = 'gpt-5.1-chat';
6
7
  const DEFAULT_MODEL_EMBED = 'text-embedding-3-large';
@@ -34,6 +35,13 @@ export const indexNameOption = createOption('--index-name <name>', 'Azure AI Sea
34
35
  export const debugOption = createOption('-d, --debug', 'Enable debug mode for verbose logging')
35
36
  .env('RUNNER_DEBUG')
36
37
  .default(false);
38
+ /**
39
+ * Aggregated Commander option definitions for Fusion AI CLI commands.
40
+ *
41
+ * @remarks
42
+ * Individual options are defined above and re-exported here for convenient
43
+ * access as a single object.
44
+ */
37
45
  export default {
38
46
  envOption,
39
47
  tokenOption,
@@ -1 +1 @@
1
- {"version":3,"file":"options.js","sourceRoot":"","sources":["../../../src/options/options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEzC,2EAA2E;AAC3E,MAAM,iBAAiB,GAAG,sCAA+C,CAAC;AAC1E,MAAM,iBAAiB,GAAG,sCAA+C,CAAC;AAC1E,MAAM,kBAAkB,GAAG,cAAuB,CAAC;AACnD,MAAM,mBAAmB,GAAG,wBAAiC,CAAC;AAE9D,wEAAwE;AACxE,MAAM,CAAC,MAAM,SAAS,GAAG,YAAY,CAAC,aAAa,EAAE,0CAA0C,CAAC;KAC7F,GAAG,CAAC,YAAY,CAAC;KACjB,OAAO,CAAC,IAAI,CAAC,CAAC;AAEjB,yDAAyD;AACzD,MAAM,CAAC,MAAM,WAAW,GAAG,YAAY,CACrC,iBAAiB,EACjB,4DAA4D,CAC7D;KACE,GAAG,CAAC,cAAc,CAAC;KACnB,OAAO,CAAC,SAAS,CAAC,CAAC;AAEtB,yCAAyC;AACzC,MAAM,CAAC,MAAM,cAAc,GAAG,YAAY,CAAC,kBAAkB,EAAE,oBAAoB,CAAC;KACjF,GAAG,CAAC,kBAAkB,CAAC;KACvB,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAE9B,yCAAyC;AACzC,MAAM,CAAC,MAAM,cAAc,GAAG,YAAY,CAAC,kBAAkB,EAAE,gCAAgC,CAAC;KAC7F,GAAG,CAAC,kBAAkB,CAAC;KACvB,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAE9B,8CAA8C;AAC9C,MAAM,CAAC,MAAM,eAAe,GAAG,YAAY,CACzC,qBAAqB,EACrB,yCAAyC,CAC1C;KACE,GAAG,CAAC,sBAAsB,CAAC;KAC3B,OAAO,CAAC,kBAAkB,CAAC,CAAC;AAE/B,gDAAgD;AAChD,MAAM,CAAC,MAAM,gBAAgB,GAAG,YAAY,CAC1C,sBAAsB,EACtB,8CAA8C,CAC/C;KACE,GAAG,CAAC,uBAAuB,CAAC;KAC5B,OAAO,CAAC,mBAAmB,CAAC,CAAC;AAEhC,8CAA8C;AAC9C,MAAM,CAAC,MAAM,eAAe,GAAG,YAAY,CACzC,qBAAqB,EACrB,4BAA4B,CAC7B,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;AAE9B,8DAA8D;AAC9D,MAAM,CAAC,MAAM,WAAW,GAAG,YAAY,CAAC,aAAa,EAAE,uCAAuC,CAAC;KAC5F,GAAG,CAAC,cAAc,CAAC;KACnB,OAAO,CAAC,KAAK,CAAC,CAAC;AAElB,eAAe;IACb,SAAS;IACT,WAAW;IACX,cAAc;IACd,cAAc;IACd,eAAe;IACf,gBAAgB;IAChB,eAAe;IACf,WAAW;CACZ,CAAC"}
1
+ {"version":3,"file":"options.js","sourceRoot":"","sources":["../../../src/options/options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEzC,wEAAwE;AACxE,MAAM,iBAAiB,GAAG,sCAA+C,CAAC;AAE1E,wEAAwE;AACxE,MAAM,iBAAiB,GAAG,sCAA+C,CAAC;AAE1E,MAAM,kBAAkB,GAAG,cAAuB,CAAC;AACnD,MAAM,mBAAmB,GAAG,wBAAiC,CAAC;AAE9D,wEAAwE;AACxE,MAAM,CAAC,MAAM,SAAS,GAAG,YAAY,CAAC,aAAa,EAAE,0CAA0C,CAAC;KAC7F,GAAG,CAAC,YAAY,CAAC;KACjB,OAAO,CAAC,IAAI,CAAC,CAAC;AAEjB,yDAAyD;AACzD,MAAM,CAAC,MAAM,WAAW,GAAG,YAAY,CACrC,iBAAiB,EACjB,4DAA4D,CAC7D;KACE,GAAG,CAAC,cAAc,CAAC;KACnB,OAAO,CAAC,SAAS,CAAC,CAAC;AAEtB,yCAAyC;AACzC,MAAM,CAAC,MAAM,cAAc,GAAG,YAAY,CAAC,kBAAkB,EAAE,oBAAoB,CAAC;KACjF,GAAG,CAAC,kBAAkB,CAAC;KACvB,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAE9B,yCAAyC;AACzC,MAAM,CAAC,MAAM,cAAc,GAAG,YAAY,CAAC,kBAAkB,EAAE,gCAAgC,CAAC;KAC7F,GAAG,CAAC,kBAAkB,CAAC;KACvB,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAE9B,8CAA8C;AAC9C,MAAM,CAAC,MAAM,eAAe,GAAG,YAAY,CACzC,qBAAqB,EACrB,yCAAyC,CAC1C;KACE,GAAG,CAAC,sBAAsB,CAAC;KAC3B,OAAO,CAAC,kBAAkB,CAAC,CAAC;AAE/B,gDAAgD;AAChD,MAAM,CAAC,MAAM,gBAAgB,GAAG,YAAY,CAC1C,sBAAsB,EACtB,8CAA8C,CAC/C;KACE,GAAG,CAAC,uBAAuB,CAAC;KAC5B,OAAO,CAAC,mBAAmB,CAAC,CAAC;AAEhC,8CAA8C;AAC9C,MAAM,CAAC,MAAM,eAAe,GAAG,YAAY,CACzC,qBAAqB,EACrB,4BAA4B,CAC7B,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;AAE9B,8DAA8D;AAC9D,MAAM,CAAC,MAAM,WAAW,GAAG,YAAY,CAAC,aAAa,EAAE,uCAAuC,CAAC;KAC5F,GAAG,CAAC,cAAc,CAAC;KACnB,OAAO,CAAC,KAAK,CAAC,CAAC;AAElB;;;;;;GAMG;AACH,eAAe;IACb,SAAS;IACT,WAAW;IACX,cAAc;IACd,cAAc;IACd,eAAe;IACf,gBAAgB;IAChB,eAAe;IACf,WAAW;CACZ,CAAC"}
@@ -23,20 +23,26 @@ export const withOptions = (command, args) => {
23
23
  command.addOption(tenantIdOption);
24
24
  command.addOption(clientIdOption);
25
25
  command.addOption(debugOption);
26
+ // Optional options are only added when the corresponding feature flag is set.
26
27
  if (args?.includeChat)
27
28
  command.addOption(chatModelOption);
29
+ // Embed option is opt-in via includeEmbedding.
28
30
  if (args?.includeEmbedding)
29
31
  command.addOption(embedModelOption);
32
+ // Search option is opt-in via includeSearch.
30
33
  if (args?.includeSearch)
31
34
  command.addOption(indexNameOption);
32
35
  command.hook('preAction', (thisCommand) => {
33
36
  const opts = thisCommand.opts();
37
+ // Enforce chat model presence when the chat option was requested.
34
38
  if (args?.includeChat && !opts.chatModel?.trim()) {
35
39
  throw new InvalidOptionArgumentError('Chat model name is required. Provide --chat-model or set FUSION_AI_CHAT_MODEL.');
36
40
  }
41
+ // Enforce embed model presence when the embedding option was requested.
37
42
  if (args?.includeEmbedding && !opts.embedModel?.trim()) {
38
43
  throw new InvalidOptionArgumentError('Embedding model name is required. Provide --embed-model or set FUSION_AI_EMBED_MODEL.');
39
44
  }
45
+ // Enforce index name presence when the search option was requested.
40
46
  if (args?.includeSearch && !opts.indexName?.trim()) {
41
47
  throw new InvalidOptionArgumentError('Index name is required. Provide --index-name or set FUSION_AI_INDEX_NAME.');
42
48
  }
@@ -1 +1 @@
1
- {"version":3,"file":"with-options.js","sourceRoot":"","sources":["../../../src/options/with-options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,0BAA0B,EAAE,MAAM,WAAW,CAAC;AACrE,OAAO,EACL,eAAe,EACf,cAAc,EACd,WAAW,EACX,gBAAgB,EAChB,SAAS,EACT,eAAe,EACf,cAAc,EACd,WAAW,GACZ,MAAM,cAAc,CAAC;AAEtB;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,OAAgB,EAChB,IAIE,EACO,EAAE;IACX,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IAC/B,OAAO,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAClC,OAAO,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAClC,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IAE/B,IAAI,IAAI,EAAE,WAAW;QAAE,OAAO,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;IAC1D,IAAI,IAAI,EAAE,gBAAgB;QAAE,OAAO,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;IAChE,IAAI,IAAI,EAAE,aAAa;QAAE,OAAO,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;IAE5D,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,WAAW,EAAE,EAAE;QACxC,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC;QAEhC,IAAI,IAAI,EAAE,WAAW,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC;YACjD,MAAM,IAAI,0BAA0B,CAClC,gFAAgF,CACjF,CAAC;QACJ,CAAC;QACD,IAAI,IAAI,EAAE,gBAAgB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC;YACvD,MAAM,IAAI,0BAA0B,CAClC,uFAAuF,CACxF,CAAC;QACJ,CAAC;QACD,IAAI,IAAI,EAAE,aAAa,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC;YACnD,MAAM,IAAI,0BAA0B,CAClC,2EAA2E,CAC5E,CAAC;QACJ,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"with-options.js","sourceRoot":"","sources":["../../../src/options/with-options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,0BAA0B,EAAE,MAAM,WAAW,CAAC;AACrE,OAAO,EACL,eAAe,EACf,cAAc,EACd,WAAW,EACX,gBAAgB,EAChB,SAAS,EACT,eAAe,EACf,cAAc,EACd,WAAW,GACZ,MAAM,cAAc,CAAC;AAEtB;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,OAAgB,EAChB,IAIE,EACO,EAAE;IACX,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IAC/B,OAAO,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAClC,OAAO,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAClC,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IAE/B,8EAA8E;IAC9E,IAAI,IAAI,EAAE,WAAW;QAAE,OAAO,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;IAC1D,+CAA+C;IAC/C,IAAI,IAAI,EAAE,gBAAgB;QAAE,OAAO,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;IAChE,6CAA6C;IAC7C,IAAI,IAAI,EAAE,aAAa;QAAE,OAAO,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;IAE5D,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,WAAW,EAAE,EAAE;QACxC,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC;QAEhC,kEAAkE;QAClE,IAAI,IAAI,EAAE,WAAW,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC;YACjD,MAAM,IAAI,0BAA0B,CAClC,gFAAgF,CACjF,CAAC;QACJ,CAAC;QACD,wEAAwE;QACxE,IAAI,IAAI,EAAE,gBAAgB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC;YACvD,MAAM,IAAI,0BAA0B,CAClC,uFAAuF,CACxF,CAAC;QACJ,CAAC;QACD,oEAAoE;QACpE,IAAI,IAAI,EAAE,aAAa,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC;YACnD,MAAM,IAAI,0BAA0B,CAClC,2EAA2E,CAC5E,CAAC;QACJ,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF,eAAe,WAAW,CAAC"}
@@ -21,8 +21,9 @@ import { createCommand } from 'commander';
21
21
  * ```
22
22
  */
23
23
  export function registerAiPlugin(program, command) {
24
- // Create 'ai' command group if it doesn't exist
24
+ // Look up an existing 'ai' command group before creating a new one.
25
25
  let aiCommand = program.commands.find((cmd) => cmd.name() === 'ai');
26
+ // Create 'ai' command group if it doesn't exist
26
27
  if (!aiCommand) {
27
28
  aiCommand = createCommand('ai').description('Commands for interacting with AI models and Azure OpenAI services');
28
29
  program.addCommand(aiCommand);
@@ -30,4 +31,4 @@ export function registerAiPlugin(program, command) {
30
31
  aiCommand.addCommand(command);
31
32
  }
32
33
  export default registerAiPlugin;
33
- //# sourceMappingURL=register.js.map
34
+ //# sourceMappingURL=register-ai-plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-ai-plugin.js","sourceRoot":"","sources":["../../src/register-ai-plugin.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE1C;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAgB,EAAE,OAAgB;IACjE,oEAAoE;IACpE,IAAI,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,IAAI,CAAC,CAAC;IACpE,gDAAgD;IAChD,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,SAAS,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,WAAW,CACzC,mEAAmE,CACpE,CAAC;QACF,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IAChC,CAAC;IAED,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AAChC,CAAC;AAED,eAAe,gBAAgB,CAAC"}
@@ -21,12 +21,14 @@ export const setupFramework = async (options) => {
21
21
  ? { token: options.token }
22
22
  : { defaultCredential: true };
23
23
  const env = options.env ?? FusionEnv.ContinuesIntegration;
24
+ // Surface resolved environment and auth mode when debug logging is enabled.
24
25
  if (debug) {
25
26
  console.debug('[debug] Environment:', env);
26
27
  console.debug('[debug] Auth mode:', options.token ? 'static-token' : 'azure-identity');
27
28
  }
28
29
  /** Initialise the framework, resolve the AI service, and pre-cache tokens. */
29
30
  const initAndSetup = async () => {
31
+ // Trace framework initialization start when debug logging is enabled.
30
32
  if (debug)
31
33
  console.debug('[debug] Initializing framework with AI module…');
32
34
  const framework = await initializeFramework({ env, auth }, (configurator) => {
@@ -36,6 +38,7 @@ export const setupFramework = async (options) => {
36
38
  // NoAccountsError if the user has never logged in.
37
39
  const service = await framework.serviceDiscovery.resolveService('ai');
38
40
  const scopes = service.scopes ?? service.defaultScopes ?? [];
41
+ // Surface resolved service URL and scopes when debug logging is enabled.
39
42
  if (debug) {
40
43
  console.debug('[debug] AI service URL:', service.uri);
41
44
  console.debug('[debug] AI service scopes:', scopes);
@@ -43,8 +46,10 @@ export const setupFramework = async (options) => {
43
46
  // Pre-cache a token for the AI service scopes so strategy callbacks
44
47
  // don't attempt (and fail) a silent acquisition later.
45
48
  const token = await framework.auth.acquireAccessToken({ request: { scopes } });
49
+ // Guard: acquireAccessToken can resolve falsy when the token cache is empty.
46
50
  if (!token)
47
51
  throw new Error('Failed to acquire access token for the AI service.');
52
+ // Trace successful token acquisition when debug logging is enabled.
48
53
  if (debug)
49
54
  console.debug('[debug] Token acquired successfully');
50
55
  return framework;
@@ -1 +1 @@
1
- {"version":3,"file":"setup-framework.js","sourceRoot":"","sources":["../../src/setup-framework.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qCAAqC,CAAC;AAG/D,OAAO,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;AAOnF;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,EAAE,OAAkB,EAAwC,EAAE;IAC/F,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC;IAErC,iBAAiB;IACjB,wEAAwE;IACxE,+DAA+D;IAC/D,MAAM,IAAI,GAAoC,OAAO,CAAC,KAAK;QACzD,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE;QAC1B,CAAC,CAAC,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC;IAEhC,MAAM,GAAG,GAAI,OAAO,CAAC,GAAiB,IAAI,SAAS,CAAC,oBAAoB,CAAC;IAEzE,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,GAAG,CAAC,CAAC;QAC3C,OAAO,CAAC,KAAK,CAAC,oBAAoB,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;IACzF,CAAC;IAED,8EAA8E;IAC9E,MAAM,YAAY,GAAG,KAAK,IAA0C,EAAE;QACpE,IAAI,KAAK;YAAE,OAAO,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC;QAE3E,MAAM,SAAS,GAAG,MAAM,mBAAmB,CAAa,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,YAAY,EAAE,EAAE;YACtF,QAAQ,CAAC,YAAY,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;QAEH,+DAA+D;QAC/D,mDAAmD;QACnD,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,gBAAgB,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QACtE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,aAAa,IAAI,EAAE,CAAC;QAE7D,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;YACtD,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,MAAM,CAAC,CAAC;QACtD,CAAC;QAED,oEAAoE;QACpE,uDAAuD;QACvD,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;QAC/E,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;QAElF,IAAI,KAAK;YAAE,OAAO,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;QAEhE,OAAO,SAAS,CAAC;IACnB,CAAC,CAAC;IAEF,OAAO,MAAM,YAAY,EAAE,CAAC;AAC9B,CAAC,CAAC;AAEF,eAAe,cAAc,CAAC"}
1
+ {"version":3,"file":"setup-framework.js","sourceRoot":"","sources":["../../src/setup-framework.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qCAAqC,CAAC;AAG/D,OAAO,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;AAOnF;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,EAAE,OAAkB,EAAwC,EAAE;IAC/F,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC;IAErC,iBAAiB;IACjB,wEAAwE;IACxE,+DAA+D;IAC/D,MAAM,IAAI,GAAoC,OAAO,CAAC,KAAK;QACzD,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE;QAC1B,CAAC,CAAC,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC;IAEhC,MAAM,GAAG,GAAI,OAAO,CAAC,GAAiB,IAAI,SAAS,CAAC,oBAAoB,CAAC;IAEzE,4EAA4E;IAC5E,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,GAAG,CAAC,CAAC;QAC3C,OAAO,CAAC,KAAK,CAAC,oBAAoB,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;IACzF,CAAC;IAED,8EAA8E;IAC9E,MAAM,YAAY,GAAG,KAAK,IAA0C,EAAE;QACpE,sEAAsE;QACtE,IAAI,KAAK;YAAE,OAAO,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC;QAE3E,MAAM,SAAS,GAAG,MAAM,mBAAmB,CAAa,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,YAAY,EAAE,EAAE;YACtF,QAAQ,CAAC,YAAY,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;QAEH,+DAA+D;QAC/D,mDAAmD;QACnD,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,gBAAgB,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QACtE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,aAAa,IAAI,EAAE,CAAC;QAE7D,yEAAyE;QACzE,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;YACtD,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,MAAM,CAAC,CAAC;QACtD,CAAC;QAED,oEAAoE;QACpE,uDAAuD;QACvD,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;QAC/E,6EAA6E;QAC7E,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;QAElF,oEAAoE;QACpE,IAAI,KAAK;YAAE,OAAO,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;QAEhE,OAAO,SAAS,CAAC;IACnB,CAAC,CAAC;IAEF,OAAO,MAAM,YAAY,EAAE,CAAC;AAC9B,CAAC,CAAC;AAEF,eAAe,cAAc,CAAC"}
@@ -1,3 +1,3 @@
1
1
  // Generated by genversion.
2
- export const version = '4.0.4';
2
+ export const version = '4.0.6';
3
3
  //# sourceMappingURL=version.js.map