@salesforce/plugin-agent 1.42.0 → 1.43.0

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 (80) hide show
  1. package/README.md +495 -73
  2. package/lib/commands/agent/adl/file/add.d.ts +1 -1
  3. package/lib/commands/agent/adl/file/add.js +9 -5
  4. package/lib/commands/agent/adl/file/add.js.map +1 -1
  5. package/lib/commands/agent/adl/file/list.js +14 -1
  6. package/lib/commands/agent/adl/file/list.js.map +1 -1
  7. package/lib/commands/agent/adl/get.js +16 -1
  8. package/lib/commands/agent/adl/get.js.map +1 -1
  9. package/lib/commands/agent/adl/list.d.ts +1 -0
  10. package/lib/commands/agent/adl/list.js +7 -1
  11. package/lib/commands/agent/adl/list.js.map +1 -1
  12. package/lib/commands/agent/adl/update.d.ts +1 -0
  13. package/lib/commands/agent/adl/update.js +12 -0
  14. package/lib/commands/agent/adl/update.js.map +1 -1
  15. package/lib/commands/agent/adl/upload.d.ts +1 -1
  16. package/lib/commands/agent/adl/upload.js +11 -4
  17. package/lib/commands/agent/adl/upload.js.map +1 -1
  18. package/lib/commands/agent/generate/test-spec.d.ts +9 -0
  19. package/lib/commands/agent/generate/test-spec.js +195 -12
  20. package/lib/commands/agent/generate/test-spec.js.map +1 -1
  21. package/lib/commands/agent/mcp/asset/list.d.ts +16 -0
  22. package/lib/commands/agent/mcp/asset/list.js +68 -0
  23. package/lib/commands/agent/mcp/asset/list.js.map +1 -0
  24. package/lib/commands/agent/mcp/asset/replace.d.ts +18 -0
  25. package/lib/commands/agent/mcp/asset/replace.js +95 -0
  26. package/lib/commands/agent/mcp/asset/replace.js.map +1 -0
  27. package/lib/commands/agent/mcp/create.d.ts +24 -0
  28. package/lib/commands/agent/mcp/create.js +112 -0
  29. package/lib/commands/agent/mcp/create.js.map +1 -0
  30. package/lib/commands/agent/mcp/delete.d.ts +19 -0
  31. package/lib/commands/agent/mcp/delete.js +65 -0
  32. package/lib/commands/agent/mcp/delete.js.map +1 -0
  33. package/lib/commands/agent/mcp/fetch.d.ts +16 -0
  34. package/lib/commands/agent/mcp/fetch.js +68 -0
  35. package/lib/commands/agent/mcp/fetch.js.map +1 -0
  36. package/lib/commands/agent/mcp/get.d.ts +16 -0
  37. package/lib/commands/agent/mcp/get.js +58 -0
  38. package/lib/commands/agent/mcp/get.js.map +1 -0
  39. package/lib/commands/agent/mcp/list.d.ts +18 -0
  40. package/lib/commands/agent/mcp/list.js +73 -0
  41. package/lib/commands/agent/mcp/list.js.map +1 -0
  42. package/lib/commands/agent/mcp/update.d.ts +24 -0
  43. package/lib/commands/agent/mcp/update.js +115 -0
  44. package/lib/commands/agent/mcp/update.js.map +1 -0
  45. package/lib/commands/agent/preview/start.d.ts +1 -0
  46. package/lib/commands/agent/preview/start.js +4 -1
  47. package/lib/commands/agent/preview/start.js.map +1 -1
  48. package/lib/commands/agent/preview.d.ts +1 -0
  49. package/lib/commands/agent/preview.js +4 -0
  50. package/lib/commands/agent/preview.js.map +1 -1
  51. package/lib/components/agent-preview-react.d.ts +2 -1
  52. package/lib/components/agent-preview-react.js +3 -3
  53. package/lib/components/agent-preview-react.js.map +1 -1
  54. package/lib/flags.d.ts +12 -1
  55. package/lib/flags.js +31 -0
  56. package/lib/flags.js.map +1 -1
  57. package/messages/agent.adl.file.add.md +7 -3
  58. package/messages/agent.adl.list.md +4 -0
  59. package/messages/agent.adl.update.md +4 -0
  60. package/messages/agent.generate.test-spec.md +33 -5
  61. package/messages/agent.mcp.asset.list.md +25 -0
  62. package/messages/agent.mcp.asset.replace.md +49 -0
  63. package/messages/agent.mcp.create.md +61 -0
  64. package/messages/agent.mcp.delete.md +37 -0
  65. package/messages/agent.mcp.fetch.md +25 -0
  66. package/messages/agent.mcp.get.md +25 -0
  67. package/messages/agent.mcp.list.md +33 -0
  68. package/messages/agent.mcp.update.md +65 -0
  69. package/messages/shared.md +16 -0
  70. package/oclif.manifest.json +1971 -1081
  71. package/package.json +14 -4
  72. package/schemas/agent-adl-file-add.json +7 -1
  73. package/schemas/agent-mcp-asset-list.json +65 -0
  74. package/schemas/agent-mcp-asset-replace.json +65 -0
  75. package/schemas/agent-mcp-create.json +144 -0
  76. package/schemas/agent-mcp-delete.json +22 -0
  77. package/schemas/agent-mcp-fetch.json +66 -0
  78. package/schemas/agent-mcp-get.json +86 -0
  79. package/schemas/agent-mcp-list.json +101 -0
  80. package/schemas/agent-mcp-update.json +86 -0
@@ -11,7 +11,7 @@ export default class AgentAdlFileAdd extends SfCommand<AgentAdlFileAddResult> {
11
11
  'target-org': import("@oclif/core/interfaces").OptionFlag<import("@salesforce/core").Org, import("@oclif/core/interfaces").CustomOptions>;
12
12
  'api-version': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
13
13
  'library-id': import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
14
- file: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
14
+ path: import("@oclif/core/interfaces").OptionFlag<string[], import("@oclif/core/interfaces").CustomOptions>;
15
15
  };
16
16
  run(): Promise<AgentAdlFileAddResult>;
17
17
  }
@@ -32,27 +32,31 @@ export default class AgentAdlFileAdd extends SfCommand {
32
32
  char: 'i',
33
33
  required: true,
34
34
  }),
35
- file: Flags.file({
36
- summary: messages.getMessage('flags.file.summary'),
35
+ path: Flags.file({
36
+ summary: messages.getMessage('flags.path.summary'),
37
37
  char: 'f',
38
38
  required: true,
39
39
  exists: true,
40
+ multiple: true,
40
41
  }),
41
42
  };
42
43
  async run() {
43
44
  const { flags } = await this.parse(AgentAdlFileAdd);
44
45
  const connection = flags['target-org'].getConnection(flags['api-version']);
45
46
  const libraryId = flags['library-id'];
46
- const filePath = flags.file;
47
+ const filePaths = flags.path;
47
48
  let result;
48
49
  try {
49
- result = await AgentDataLibrary.addFile(connection, libraryId, filePath);
50
+ result = await AgentDataLibrary.addFile(connection, libraryId, filePaths);
50
51
  }
51
52
  catch (error) {
52
53
  const wrapped = SfError.wrap(error);
53
54
  throw new SfError(messages.getMessage('error.addFailed', [wrapped.message]), 'AddFailed', [], 4, wrapped);
54
55
  }
55
- this.log(`File added to library ${libraryId}.`);
56
+ this.log(`Added ${result.fileNames.length} file(s) to library ${libraryId}:`);
57
+ for (const name of result.fileNames) {
58
+ this.log(` ${name}`);
59
+ }
56
60
  return result;
57
61
  }
58
62
  }
@@ -1 +1 @@
1
- {"version":3,"file":"add.js","sourceRoot":"","sources":["../../../../../src/commands/agent/adl/file/add.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAsB,MAAM,oBAAoB,CAAC;AAE1E,QAAQ,CAAC,kCAAkC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC7D,MAAM,QAAQ,GAAG,QAAQ,CAAC,YAAY,CAAC,0BAA0B,EAAE,oBAAoB,CAAC,CAAC;AAIzF,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,SAAgC;IACpE,MAAM,CAAU,OAAO,GAAG,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IACzD,MAAM,CAAU,WAAW,GAAG,QAAQ,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;IACjE,MAAM,CAAU,QAAQ,GAAG,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IAC5D,MAAM,CAAU,cAAc,GAAG,IAAI,CAAC;IACtC,MAAM,CAAU,KAAK,GAAG,SAAS,CAAC;IAElC,MAAM,CAAU,KAAK,GAAG;QAC7B,YAAY,EAAE,KAAK,CAAC,WAAW,EAAE;QACjC,aAAa,EAAE,KAAK,CAAC,aAAa,EAAE;QACpC,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC;YACzB,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,0BAA0B,CAAC;YACxD,IAAI,EAAE,GAAG;YACT,QAAQ,EAAE,IAAI;SACf,CAAC;QACF,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC;YACf,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,oBAAoB,CAAC;YAClD,IAAI,EAAE,GAAG;YACT,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE,IAAI;SACb,CAAC;KACH,CAAC;IAEK,KAAK,CAAC,GAAG;QACd,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;QACpD,MAAM,UAAU,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC;QAC3E,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC;QACtC,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC;QAE5B,IAAI,MAAqB,CAAC;QAC1B,IAAI,CAAC;YACH,MAAM,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,UAAU,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;QAC3E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACpC,MAAM,IAAI,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;QAC5G,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,yBAAyB,SAAS,GAAG,CAAC,CAAC;QAChD,OAAO,MAAM,CAAC;IAChB,CAAC"}
1
+ {"version":3,"file":"add.js","sourceRoot":"","sources":["../../../../../src/commands/agent/adl/file/add.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAsB,MAAM,oBAAoB,CAAC;AAE1E,QAAQ,CAAC,kCAAkC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC7D,MAAM,QAAQ,GAAG,QAAQ,CAAC,YAAY,CAAC,0BAA0B,EAAE,oBAAoB,CAAC,CAAC;AAIzF,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,SAAgC;IACpE,MAAM,CAAU,OAAO,GAAG,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IACzD,MAAM,CAAU,WAAW,GAAG,QAAQ,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;IACjE,MAAM,CAAU,QAAQ,GAAG,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IAC5D,MAAM,CAAU,cAAc,GAAG,IAAI,CAAC;IACtC,MAAM,CAAU,KAAK,GAAG,SAAS,CAAC;IAElC,MAAM,CAAU,KAAK,GAAG;QAC7B,YAAY,EAAE,KAAK,CAAC,WAAW,EAAE;QACjC,aAAa,EAAE,KAAK,CAAC,aAAa,EAAE;QACpC,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC;YACzB,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,0BAA0B,CAAC;YACxD,IAAI,EAAE,GAAG;YACT,QAAQ,EAAE,IAAI;SACf,CAAC;QACF,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC;YACf,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,oBAAoB,CAAC;YAClD,IAAI,EAAE,GAAG;YACT,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE,IAAI;YACZ,QAAQ,EAAE,IAAI;SACf,CAAC;KACH,CAAC;IAEK,KAAK,CAAC,GAAG;QACd,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;QACpD,MAAM,UAAU,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC;QAC3E,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC;QACtC,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC;QAE7B,IAAI,MAAqB,CAAC;QAC1B,IAAI,CAAC;YACH,MAAM,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,UAAU,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;QAC5E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACpC,MAAM,IAAI,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;QAC5G,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,SAAS,MAAM,CAAC,SAAS,CAAC,MAAM,uBAAuB,SAAS,GAAG,CAAC,CAAC;QAC9E,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YACpC,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;QACxB,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC"}
@@ -44,7 +44,20 @@ export default class AgentAdlFileList extends SfCommand {
44
44
  const wrapped = SfError.wrap(error);
45
45
  throw new SfError(messages.getMessage('error.listFailed', [wrapped.message]), 'ListFailed', [], 4, wrapped);
46
46
  }
47
- this.log(`Found ${files.length} file(s).`);
47
+ if (!this.jsonEnabled() && files.length > 0) {
48
+ this.table({
49
+ data: files,
50
+ columns: [
51
+ { key: 'fileName', name: 'File Name' },
52
+ { key: 'fileSize', name: 'Size (bytes)' },
53
+ { key: 'fileId', name: 'File ID' },
54
+ { key: 'createdDate', name: 'Created' },
55
+ ],
56
+ });
57
+ }
58
+ else if (!this.jsonEnabled()) {
59
+ this.log('No files found.');
60
+ }
48
61
  return { files };
49
62
  }
50
63
  }
@@ -1 +1 @@
1
- {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../../../src/commands/agent/adl/file/list.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAyB,MAAM,oBAAoB,CAAC;AAE7E,QAAQ,CAAC,kCAAkC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC7D,MAAM,QAAQ,GAAG,QAAQ,CAAC,YAAY,CAAC,0BAA0B,EAAE,qBAAqB,CAAC,CAAC;AAI1F,MAAM,CAAC,OAAO,OAAO,gBAAiB,SAAQ,SAAiC;IACtE,MAAM,CAAU,OAAO,GAAG,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IACzD,MAAM,CAAU,WAAW,GAAG,QAAQ,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;IACjE,MAAM,CAAU,QAAQ,GAAG,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IAC5D,MAAM,CAAU,cAAc,GAAG,IAAI,CAAC;IACtC,MAAM,CAAU,KAAK,GAAG,SAAS,CAAC;IAElC,MAAM,CAAU,KAAK,GAAG;QAC7B,YAAY,EAAE,KAAK,CAAC,WAAW,EAAE;QACjC,aAAa,EAAE,KAAK,CAAC,aAAa,EAAE;QACpC,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC;YACzB,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,0BAA0B,CAAC;YACxD,IAAI,EAAE,GAAG;YACT,QAAQ,EAAE,IAAI;SACf,CAAC;KACH,CAAC;IAEK,KAAK,CAAC,GAAG;QACd,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QACrD,MAAM,UAAU,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC;QAE3E,IAAI,KAAyB,CAAC;QAC9B,IAAI,CAAC;YACH,KAAK,GAAG,MAAM,gBAAgB,CAAC,SAAS,CAAC,UAAU,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;QAC5E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACpC,MAAM,IAAI,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;QAC9G,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,SAAS,KAAK,CAAC,MAAM,WAAW,CAAC,CAAC;QAC3C,OAAO,EAAE,KAAK,EAAE,CAAC;IACnB,CAAC"}
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../../../src/commands/agent/adl/file/list.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAyB,MAAM,oBAAoB,CAAC;AAE7E,QAAQ,CAAC,kCAAkC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC7D,MAAM,QAAQ,GAAG,QAAQ,CAAC,YAAY,CAAC,0BAA0B,EAAE,qBAAqB,CAAC,CAAC;AAI1F,MAAM,CAAC,OAAO,OAAO,gBAAiB,SAAQ,SAAiC;IACtE,MAAM,CAAU,OAAO,GAAG,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IACzD,MAAM,CAAU,WAAW,GAAG,QAAQ,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;IACjE,MAAM,CAAU,QAAQ,GAAG,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IAC5D,MAAM,CAAU,cAAc,GAAG,IAAI,CAAC;IACtC,MAAM,CAAU,KAAK,GAAG,SAAS,CAAC;IAElC,MAAM,CAAU,KAAK,GAAG;QAC7B,YAAY,EAAE,KAAK,CAAC,WAAW,EAAE;QACjC,aAAa,EAAE,KAAK,CAAC,aAAa,EAAE;QACpC,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC;YACzB,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,0BAA0B,CAAC;YACxD,IAAI,EAAE,GAAG;YACT,QAAQ,EAAE,IAAI;SACf,CAAC;KACH,CAAC;IAEK,KAAK,CAAC,GAAG;QACd,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QACrD,MAAM,UAAU,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC;QAE3E,IAAI,KAAyB,CAAC;QAC9B,IAAI,CAAC;YACH,KAAK,GAAG,MAAM,gBAAgB,CAAC,SAAS,CAAC,UAAU,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;QAC5E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACpC,MAAM,IAAI,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;QAC9G,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5C,IAAI,CAAC,KAAK,CAAC;gBACT,IAAI,EAAE,KAAK;gBACX,OAAO,EAAE;oBACP,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE;oBACtC,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,EAAE;oBACzC,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE;oBAClC,EAAE,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,EAAE;iBACxC;aACF,CAAC,CAAC;QACL,CAAC;aAAM,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YAC/B,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QAC9B,CAAC;QAED,OAAO,EAAE,KAAK,EAAE,CAAC;IACnB,CAAC"}
@@ -44,7 +44,22 @@ export default class AgentAdlGet extends SfCommand {
44
44
  const wrapped = SfError.wrap(error);
45
45
  throw new SfError(messages.getMessage('error.getFailed', [wrapped.message]), 'GetFailed', [], 4, wrapped);
46
46
  }
47
- this.log(`Library: ${result.masterLabel} (${result.libraryId}) — ${result.sourceType} — ${String(result.status)}`);
47
+ if (!this.jsonEnabled()) {
48
+ this.log(`Library: ${result.masterLabel} (${result.libraryId})`);
49
+ this.log(` Source Type: ${result.sourceType}`);
50
+ this.log(` Status: ${String(result.status)}`);
51
+ if (result.retrieverId) {
52
+ this.log(` Retriever ID: ${result.retrieverId}`);
53
+ this.log(` rag_feature_config_id: ARFPC_${result.libraryId}`);
54
+ }
55
+ if (result.description) {
56
+ this.log(` Description: ${result.description}`);
57
+ }
58
+ const fileCount = result.groundingSource?.groundingFileRefs?.length;
59
+ if (fileCount) {
60
+ this.log(` Files: ${String(fileCount)}`);
61
+ }
62
+ }
48
63
  return result;
49
64
  }
50
65
  }
@@ -1 +1 @@
1
- {"version":3,"file":"get.js","sourceRoot":"","sources":["../../../../src/commands/agent/adl/get.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAA0B,MAAM,oBAAoB,CAAC;AAE9E,QAAQ,CAAC,kCAAkC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC7D,MAAM,QAAQ,GAAG,QAAQ,CAAC,YAAY,CAAC,0BAA0B,EAAE,eAAe,CAAC,CAAC;AAIpF,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,SAA4B;IAC5D,MAAM,CAAU,OAAO,GAAG,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IACzD,MAAM,CAAU,WAAW,GAAG,QAAQ,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;IACjE,MAAM,CAAU,QAAQ,GAAG,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IAC5D,MAAM,CAAU,cAAc,GAAG,IAAI,CAAC;IACtC,MAAM,CAAU,KAAK,GAAG,SAAS,CAAC;IAElC,MAAM,CAAU,KAAK,GAAG;QAC7B,YAAY,EAAE,KAAK,CAAC,WAAW,EAAE;QACjC,aAAa,EAAE,KAAK,CAAC,aAAa,EAAE;QACpC,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC;YACzB,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,0BAA0B,CAAC;YACxD,IAAI,EAAE,GAAG;YACT,QAAQ,EAAE,IAAI;SACf,CAAC;KACH,CAAC;IAEK,KAAK,CAAC,GAAG;QACd,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAChD,MAAM,UAAU,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC;QAE3E,IAAI,MAAyB,CAAC;QAC9B,IAAI,CAAC;YACH,MAAM,GAAG,MAAM,gBAAgB,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;QACvE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACpC,MAAM,IAAI,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;QAC5G,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,YAAY,MAAM,CAAC,WAAW,KAAK,MAAM,CAAC,SAAS,OAAO,MAAM,CAAC,UAAU,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACnH,OAAO,MAAM,CAAC;IAChB,CAAC"}
1
+ {"version":3,"file":"get.js","sourceRoot":"","sources":["../../../../src/commands/agent/adl/get.ts"],"names":[],"mappings":"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"}
@@ -12,6 +12,7 @@ export default class AgentAdlList extends SfCommand<AgentAdlListResult> {
12
12
  static readonly flags: {
13
13
  'target-org': import("@oclif/core/interfaces").OptionFlag<import("@salesforce/core").Org, import("@oclif/core/interfaces").CustomOptions>;
14
14
  'api-version': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
15
+ 'source-type': import("@oclif/core/interfaces").OptionFlag<"sfdrive" | "knowledge" | "retriever" | undefined, import("@oclif/core/interfaces").CustomOptions>;
15
16
  };
16
17
  run(): Promise<AgentAdlListResult>;
17
18
  }
@@ -27,13 +27,19 @@ export default class AgentAdlList extends SfCommand {
27
27
  static flags = {
28
28
  'target-org': Flags.requiredOrg(),
29
29
  'api-version': Flags.orgApiVersion(),
30
+ 'source-type': Flags.option({
31
+ summary: messages.getMessage('flags.source-type.summary'),
32
+ options: ['sfdrive', 'knowledge', 'retriever'],
33
+ })(),
30
34
  };
31
35
  async run() {
32
36
  const { flags } = await this.parse(AgentAdlList);
33
37
  const connection = flags['target-org'].getConnection(flags['api-version']);
34
38
  let result;
35
39
  try {
36
- result = await AgentDataLibrary.list(connection);
40
+ result = await AgentDataLibrary.list(connection, {
41
+ sourceType: flags['source-type'],
42
+ });
37
43
  }
38
44
  catch (error) {
39
45
  const wrapped = SfError.wrap(error);
@@ -1 +1 @@
1
- {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../../src/commands/agent/adl/list.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAA2B,MAAM,oBAAoB,CAAC;AAE/E,QAAQ,CAAC,kCAAkC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC7D,MAAM,QAAQ,GAAG,QAAQ,CAAC,YAAY,CAAC,0BAA0B,EAAE,gBAAgB,CAAC,CAAC;AAIrF,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,SAA6B;IAC9D,MAAM,CAAU,OAAO,GAAG,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IACzD,MAAM,CAAU,WAAW,GAAG,QAAQ,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;IACjE,MAAM,CAAU,QAAQ,GAAG,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IAC5D,MAAM,CAAU,cAAc,GAAG,IAAI,CAAC;IACtC,MAAM,CAAU,KAAK,GAAG,SAAS,CAAC;IAElC,MAAM,CAAU,KAAK,GAAG;QAC7B,YAAY,EAAE,KAAK,CAAC,WAAW,EAAE;QACjC,aAAa,EAAE,KAAK,CAAC,aAAa,EAAE;KACrC,CAAC;IAEK,KAAK,CAAC,GAAG;QACd,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QACjD,MAAM,UAAU,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC;QAE3E,IAAI,MAA2C,CAAC;QAChD,IAAI,CAAC;YACH,MAAM,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACnD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACpC,MAAM,IAAI,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;QAC9G,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,IAAI,CAAC,KAAK,CAAC;gBACT,IAAI,EAAE,MAAM,CAAC,SAAS;gBACtB,OAAO,EAAE;oBACP,EAAE,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,EAAE;oBACpC,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,YAAY,EAAE;oBACxC,EAAE,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE;oBAC1C,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE;oBACjC,EAAE,GAAG,EAAE,eAAe,EAAE,IAAI,EAAE,gBAAgB,EAAE;iBACjD;aACF,CAAC,CAAC;QACL,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC"}
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../../src/commands/agent/adl/list.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAA2B,MAAM,oBAAoB,CAAC;AAE/E,QAAQ,CAAC,kCAAkC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC7D,MAAM,QAAQ,GAAG,QAAQ,CAAC,YAAY,CAAC,0BAA0B,EAAE,gBAAgB,CAAC,CAAC;AAIrF,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,SAA6B;IAC9D,MAAM,CAAU,OAAO,GAAG,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IACzD,MAAM,CAAU,WAAW,GAAG,QAAQ,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;IACjE,MAAM,CAAU,QAAQ,GAAG,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IAC5D,MAAM,CAAU,cAAc,GAAG,IAAI,CAAC;IACtC,MAAM,CAAU,KAAK,GAAG,SAAS,CAAC;IAElC,MAAM,CAAU,KAAK,GAAG;QAC7B,YAAY,EAAE,KAAK,CAAC,WAAW,EAAE;QACjC,aAAa,EAAE,KAAK,CAAC,aAAa,EAAE;QACpC,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC;YAC1B,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,2BAA2B,CAAC;YACzD,OAAO,EAAE,CAAC,SAAS,EAAE,WAAW,EAAE,WAAW,CAAU;SACxD,CAAC,EAAE;KACL,CAAC;IAEK,KAAK,CAAC,GAAG;QACd,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QACjD,MAAM,UAAU,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC;QAE3E,IAAI,MAA2C,CAAC;QAChD,IAAI,CAAC;YACH,MAAM,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,UAAU,EAAE;gBAC/C,UAAU,EAAE,KAAK,CAAC,aAAa,CAAC;aACjC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACpC,MAAM,IAAI,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;QAC9G,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,IAAI,CAAC,KAAK,CAAC;gBACT,IAAI,EAAE,MAAM,CAAC,SAAS;gBACtB,OAAO,EAAE;oBACP,EAAE,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,EAAE;oBACpC,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,YAAY,EAAE;oBACxC,EAAE,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE;oBAC1C,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE;oBACjC,EAAE,GAAG,EAAE,eAAe,EAAE,IAAI,EAAE,gBAAgB,EAAE;iBACjD;aACF,CAAC,CAAC;QACL,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC"}
@@ -15,6 +15,7 @@ export default class AgentAdlUpdate extends SfCommand<AgentAdlUpdateResult> {
15
15
  description: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
16
16
  'content-fields': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
17
17
  'restrict-to-public-articles': import("@oclif/core/interfaces").BooleanFlag<boolean>;
18
+ 'retriever-id': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
18
19
  };
19
20
  run(): Promise<AgentAdlUpdateResult>;
20
21
  }
@@ -46,6 +46,9 @@ export default class AgentAdlUpdate extends SfCommand {
46
46
  summary: messages.getMessage('flags.restrict-to-public-articles.summary'),
47
47
  allowNo: true,
48
48
  }),
49
+ 'retriever-id': Flags.string({
50
+ summary: messages.getMessage('flags.retriever-id.summary'),
51
+ }),
49
52
  };
50
53
  async run() {
51
54
  const { flags } = await this.parse(AgentAdlUpdate);
@@ -75,6 +78,15 @@ export default class AgentAdlUpdate extends SfCommand {
75
78
  };
76
79
  }
77
80
  }
81
+ if (flags['retriever-id']) {
82
+ if (hasKnowledgeFlags) {
83
+ throw new SfError('Cannot combine --retriever-id with --content-fields or --restrict-to-public-articles.', 'ConflictingFlags', [], 1);
84
+ }
85
+ input.groundingSource = {
86
+ sourceType: 'RETRIEVER',
87
+ retrieverId: flags['retriever-id'],
88
+ };
89
+ }
78
90
  let result;
79
91
  try {
80
92
  result = await AgentDataLibrary.update(connection, flags['library-id'], input);
@@ -1 +1 @@
1
- {"version":3,"file":"update.js","sourceRoot":"","sources":["../../../../src/commands/agent/adl/update.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAmD,MAAM,oBAAoB,CAAC;AAEvG,QAAQ,CAAC,kCAAkC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC7D,MAAM,QAAQ,GAAG,QAAQ,CAAC,YAAY,CAAC,0BAA0B,EAAE,kBAAkB,CAAC,CAAC;AAIvF,MAAM,CAAC,OAAO,OAAO,cAAe,SAAQ,SAA+B;IAClE,MAAM,CAAU,OAAO,GAAG,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IACzD,MAAM,CAAU,WAAW,GAAG,QAAQ,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;IACjE,MAAM,CAAU,QAAQ,GAAG,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IAC5D,MAAM,CAAU,cAAc,GAAG,IAAI,CAAC;IACtC,MAAM,CAAU,KAAK,GAAG,SAAS,CAAC;IAElC,MAAM,CAAU,KAAK,GAAG;QAC7B,YAAY,EAAE,KAAK,CAAC,WAAW,EAAE;QACjC,aAAa,EAAE,KAAK,CAAC,aAAa,EAAE;QACpC,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC;YACzB,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,0BAA0B,CAAC;YACxD,IAAI,EAAE,GAAG;YACT,QAAQ,EAAE,IAAI;SACf,CAAC;QACF,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC;YACjB,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,oBAAoB,CAAC;YAClD,IAAI,EAAE,GAAG;SACV,CAAC;QACF,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC;YACxB,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,2BAA2B,CAAC;SAC1D,CAAC;QACF,gBAAgB,EAAE,KAAK,CAAC,MAAM,CAAC;YAC7B,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,8BAA8B,CAAC;SAC7D,CAAC;QACF,6BAA6B,EAAE,KAAK,CAAC,OAAO,CAAC;YAC3C,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,2CAA2C,CAAC;YACzE,OAAO,EAAE,IAAI;SACd,CAAC;KACH,CAAC;IAEK,KAAK,CAAC,GAAG;QACd,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QACnD,MAAM,UAAU,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC;QAE3E,MAAM,KAAK,GAAuB,EAAE,CAAC;QACrC,IAAI,KAAK,CAAC,IAAI;YAAE,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC;QAC/C,IAAI,KAAK,CAAC,WAAW;YAAE,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;QAE7D,MAAM,iBAAiB,GACrB,KAAK,CAAC,gBAAgB,CAAC,KAAK,SAAS,IAAI,KAAK,CAAC,6BAA6B,CAAC,KAAK,SAAS,CAAC;QAE9F,IAAI,iBAAiB,EAAE,CAAC;YACtB,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;YAC3E,IAAI,MAAM,CAAC,UAAU,KAAK,WAAW,EAAE,CAAC;gBACtC,IAAI,CAAC,IAAI,CACP,sGAAsG,CACvG,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,MAAM,eAAe,GAAsE,EAAE,CAAC;gBAC9F,IAAI,KAAK,CAAC,gBAAgB,CAAC,KAAK,SAAS,EAAE,CAAC;oBAC1C,eAAe,CAAC,aAAa,GAAG,KAAK,CAAC,gBAAgB,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC1F,CAAC;gBACD,IAAI,KAAK,CAAC,6BAA6B,CAAC,KAAK,SAAS,EAAE,CAAC;oBACvD,eAAe,CAAC,yBAAyB,GAAG,KAAK,CAAC,6BAA6B,CAAC,CAAC;gBACnF,CAAC;gBACD,KAAK,CAAC,eAAe,GAAG;oBACtB,UAAU,EAAE,WAAW;oBACvB,eAAe;iBAChB,CAAC;YACJ,CAAC;QACH,CAAC;QAED,IAAI,MAAyB,CAAC;QAC9B,IAAI,CAAC;YACH,MAAM,GAAG,MAAM,gBAAgB,CAAC,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC,YAAY,CAAC,EAAE,KAAK,CAAC,CAAC;QACjF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACpC,MAAM,IAAI,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;QAClH,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,yBAAyB,MAAM,CAAC,WAAW,MAAM,MAAM,CAAC,SAAS,IAAI,CAAC,CAAC;QAChF,OAAO,MAAM,CAAC;IAChB,CAAC"}
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../../../src/commands/agent/adl/update.ts"],"names":[],"mappings":"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"}
@@ -11,7 +11,7 @@ export default class AgentAdlUpload extends SfCommand<AgentAdlUploadResult> {
11
11
  'target-org': import("@oclif/core/interfaces").OptionFlag<import("@salesforce/core").Org, import("@oclif/core/interfaces").CustomOptions>;
12
12
  'api-version': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
13
13
  'library-id': import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
14
- file: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
14
+ file: import("@oclif/core/interfaces").OptionFlag<string[], import("@oclif/core/interfaces").CustomOptions>;
15
15
  wait: import("@oclif/core/interfaces").OptionFlag<import("@salesforce/kit").Duration, import("@oclif/core/interfaces").CustomOptions>;
16
16
  };
17
17
  run(): Promise<AgentAdlUploadResult>;
@@ -37,6 +37,7 @@ export default class AgentAdlUpload extends SfCommand {
37
37
  char: 'f',
38
38
  required: true,
39
39
  exists: true,
40
+ multiple: true,
40
41
  }),
41
42
  // eslint-disable-next-line sf-plugin/flag-min-max-default
42
43
  wait: Flags.duration({
@@ -50,10 +51,13 @@ export default class AgentAdlUpload extends SfCommand {
50
51
  const { flags } = await this.parse(AgentAdlUpload);
51
52
  const connection = flags['target-org'].getConnection(flags['api-version']);
52
53
  const libraryId = flags['library-id'];
53
- const filePath = flags.file;
54
+ const filePaths = flags.file;
55
+ const fileCount = filePaths.length;
56
+ this.log(`Uploading ${fileCount} file(s) to library ${libraryId}...`);
54
57
  let result;
55
58
  try {
56
- result = await AgentDataLibrary.upload(connection, libraryId, filePath, {
59
+ this.log('Checking upload readiness...');
60
+ result = await AgentDataLibrary.upload(connection, libraryId, filePaths, {
57
61
  waitMinutes: flags.wait?.minutes,
58
62
  });
59
63
  }
@@ -62,10 +66,13 @@ export default class AgentAdlUpload extends SfCommand {
62
66
  throw new SfError(wrapped.message, wrapped.name ?? 'UploadFailed', [], 4, wrapped);
63
67
  }
64
68
  if (result.status === 'READY') {
65
- this.log(`Library ready. retrieverId: ${String(result.retrieverId)}`);
69
+ this.log('Library ready.');
70
+ this.log(` retrieverId: ${String(result.retrieverId)}`);
71
+ this.log(` rag_feature_config_id: ${String(result.ragFeatureConfigId)}`);
66
72
  }
67
73
  else {
68
- this.log('Indexing triggered. Use "sf agent adl get" to check readiness.');
74
+ this.log(`Upload complete indexing ${fileCount} file(s).`);
75
+ this.log('Use "sf agent adl status" to check progress, or "sf agent adl get" for readiness.');
69
76
  }
70
77
  return result;
71
78
  }
@@ -1 +1 @@
1
- {"version":3,"file":"upload.js","sourceRoot":"","sources":["../../../../src/commands/agent/adl/upload.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"upload.js","sourceRoot":"","sources":["../../../../src/commands/agent/adl/upload.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,7 @@
1
1
  import { SfCommand } from '@salesforce/sf-plugins-core';
2
+ import { type NgtTestCase } from '@salesforce/agents';
2
3
  import { ComponentSet } from '@salesforce/source-deploy-retrieve';
4
+ type TestRunner = 'agentforce-studio' | 'testing-center';
3
5
  type TestCase = {
4
6
  utterance: string;
5
7
  expectedActions: string[];
@@ -67,6 +69,12 @@ export declare function getPluginsAndFunctions(subjectName: string, cs: Componen
67
69
  genAiFunctions: string[];
68
70
  }>;
69
71
  export declare function ensureYamlExtension(filePath: string): string;
72
+ /**
73
+ * Infer the test runner from the file extension of an AiEvaluationDefinition / AiTestingDefinition
74
+ * metadata XML file. Throws when the extension matches neither.
75
+ */
76
+ export declare function inferRunnerFromMdPath(mdPath: string): TestRunner;
77
+ export declare function promptForNgtTestCase(topics: string[], bots: string[], subjectName: string, caseNumber: number, log: (msg?: string) => void): Promise<NgtTestCase>;
70
78
  export default class AgentGenerateTestSpec extends SfCommand<void> {
71
79
  static readonly summary: string;
72
80
  static readonly description: string;
@@ -76,6 +84,7 @@ export default class AgentGenerateTestSpec extends SfCommand<void> {
76
84
  'from-definition': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
77
85
  'force-overwrite': import("@oclif/core/interfaces").BooleanFlag<boolean>;
78
86
  'output-file': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
87
+ 'test-runner': import("@oclif/core/interfaces").OptionFlag<"agentforce-studio" | "testing-center" | undefined, import("@oclif/core/interfaces").CustomOptions>;
79
88
  };
80
89
  run(): Promise<void>;
81
90
  }
@@ -18,7 +18,7 @@ import { join, parse } from 'node:path';
18
18
  import { existsSync } from 'node:fs';
19
19
  import { SfCommand, Flags } from '@salesforce/sf-plugins-core';
20
20
  import { Messages, SfError, SfProject } from '@salesforce/core';
21
- import { AgentTest } from '@salesforce/agents';
21
+ import { AgentTest, NgtScorerCatalog, } from '@salesforce/agents';
22
22
  import { select, input, confirm, checkbox } from '@inquirer/prompts';
23
23
  import { XMLParser } from 'fast-xml-parser';
24
24
  import { ComponentSetBuilder } from '@salesforce/source-deploy-retrieve';
@@ -26,6 +26,7 @@ import { warn } from '@oclif/core/errors';
26
26
  import { ensureArray } from '@salesforce/kit';
27
27
  import { theme } from '../../../inquirer-theme.js';
28
28
  import yesNoOrCancel from '../../../yes-no-cancel.js';
29
+ import { testRunnerFlag } from '../../../flags.js';
29
30
  Messages.importMessagesDirectoryFromMetaUrl(import.meta.url);
30
31
  const messages = Messages.loadMessages('@salesforce/plugin-agent', 'agent.generate.test-spec');
31
32
  /**
@@ -267,7 +268,7 @@ export async function getPluginsAndFunctions(subjectName, cs) {
267
268
  const plannerBundleXml = await fs.promises.readFile(genAiPlannerBundles[parsedBotVersion.BotVersion.conversationDefinitionPlanners.genAiPlannerName ?? subjectName], 'utf-8');
268
269
  const parsedPlannerBundle = parser.parse(plannerBundleXml);
269
270
  genAiFunctions = ensureArray(parsedPlannerBundle.GenAiPlannerBundle.localTopics
270
- .flatMap((topic) => topic.localActionLinks?.map((lal) => lal.functionName))
271
+ .flatMap((topic) => ensureArray(topic.localActionLinks)?.map((lal) => lal.functionName))
271
272
  .filter((f) => typeof f === 'string'));
272
273
  genAiPlugins = ensureArray(parsedPlannerBundle.GenAiPlannerBundle.localTopicLinks).reduce((acc, { genAiPluginName }) => ({
273
274
  ...acc,
@@ -291,6 +292,17 @@ export function ensureYamlExtension(filePath) {
291
292
  warn(`Provided file path does not have a .yaml or .yml extension. Normalizing to ${normalized}`);
292
293
  return normalized;
293
294
  }
295
+ /**
296
+ * Infer the test runner from the file extension of an AiEvaluationDefinition / AiTestingDefinition
297
+ * metadata XML file. Throws when the extension matches neither.
298
+ */
299
+ export function inferRunnerFromMdPath(mdPath) {
300
+ if (mdPath.endsWith('aiTestingDefinition-meta.xml'))
301
+ return 'agentforce-studio';
302
+ if (mdPath.endsWith('aiEvaluationDefinition-meta.xml'))
303
+ return 'testing-center';
304
+ throw messages.createError('error.UnknownDefinitionExtension', [mdPath]);
305
+ }
294
306
  async function promptUntilUniqueFile(subjectName, filePath) {
295
307
  const outputFile = filePath ??
296
308
  (await input({
@@ -323,10 +335,151 @@ async function promptUntilUniqueFile(subjectName, filePath) {
323
335
  * If the user provides the --force-overwrite flag, then we'll use the default file path (either the one provided by --output-file or the default path).
324
336
  * If the user doesn't provide it, we'll prompt the user for a file path until they provide a unique one or cancel.
325
337
  */
326
- async function determineFilePath(subjectName, outputFile, forceOverwrite) {
327
- const defaultFile = ensureYamlExtension(outputFile ?? join('specs', `${subjectName}-testSpec.yaml`));
338
+ async function determineFilePath(subjectName, outputFile, forceOverwrite, testRunner = 'testing-center') {
339
+ const suffix = testRunner === 'agentforce-studio' ? '-ngtTestSpec.yaml' : '-testSpec.yaml';
340
+ const defaultFile = ensureYamlExtension(outputFile ?? join('specs', `${subjectName}${suffix}`));
328
341
  return forceOverwrite ? defaultFile : promptUntilUniqueFile(subjectName, defaultFile);
329
342
  }
343
+ const NGT_BOILERPLATE_HISTORY = [
344
+ { role: 'user', message: 'example user message' },
345
+ { role: 'agent', message: 'example agent message', topic: 'Example_agent_topic' },
346
+ ];
347
+ async function promptForNgtContextVariables() {
348
+ const vars = [];
349
+ let wantsMore = await confirm({ message: 'Add context variables to this case', default: false, theme });
350
+ while (wantsMore) {
351
+ // eslint-disable-next-line no-await-in-loop
352
+ const name = await input({
353
+ message: 'Variable name',
354
+ validate: (d) => d.length > 0 || 'Name cannot be empty',
355
+ theme,
356
+ });
357
+ // eslint-disable-next-line no-await-in-loop
358
+ const value = await input({ message: 'Variable value', theme });
359
+ vars.push({ name, value });
360
+ // eslint-disable-next-line no-await-in-loop
361
+ wantsMore = await confirm({ message: 'Add another context variable', default: false, theme });
362
+ }
363
+ return vars;
364
+ }
365
+ async function promptForNgtUtterance(message) {
366
+ return input({
367
+ message,
368
+ validate: (d) => d.length > 0 || 'utterance cannot be empty',
369
+ theme,
370
+ });
371
+ }
372
+ async function promptForNgtInputs() {
373
+ const isMulti = await confirm({
374
+ message: 'Does this case have multiple input phrasings sharing one scorer set',
375
+ default: false,
376
+ theme,
377
+ });
378
+ // contextVariables / conversationHistory are decided once and shared across the input set.
379
+ const contextVariables = await promptForNgtContextVariables();
380
+ const wantsHistory = await confirm({
381
+ message: 'Generate boilerplate conversation history for this case',
382
+ default: false,
383
+ theme,
384
+ });
385
+ const conversationHistory = wantsHistory ? [...NGT_BOILERPLATE_HISTORY] : undefined;
386
+ const utterances = [];
387
+ if (!isMulti) {
388
+ utterances.push(await promptForNgtUtterance('Utterance'));
389
+ }
390
+ else {
391
+ utterances.push(await promptForNgtUtterance('Utterance #1'));
392
+ let addAnother = await confirm({ message: 'Add another input utterance', default: true, theme });
393
+ while (addAnother) {
394
+ // eslint-disable-next-line no-await-in-loop
395
+ utterances.push(await promptForNgtUtterance(`Utterance #${utterances.length + 1}`));
396
+ // eslint-disable-next-line no-await-in-loop
397
+ addAnother = await confirm({ message: 'Add another input utterance', default: false, theme });
398
+ }
399
+ }
400
+ return utterances.map((utterance) => {
401
+ const ngtInput = { utterance };
402
+ if (contextVariables.length > 0)
403
+ ngtInput.contextVariables = contextVariables;
404
+ if (conversationHistory)
405
+ ngtInput.conversationHistory = conversationHistory;
406
+ return ngtInput;
407
+ });
408
+ }
409
+ /* eslint-disable camelcase */
410
+ const NGT_SCORER_HELP = {
411
+ topic_sequence_match: 'Topic API name (DeveloperName from a GenAiPlugin).',
412
+ action_sequence_match: "Single action API name, OR a Python-list-style string for multi-action: ['Verify_Customer','Get_Order_Status'].",
413
+ agent_handoff_match: "Target agent's DeveloperName (NOT label).",
414
+ bot_response_rating: "Natural-language assertion (LLM-judged). Example: 'Agent confirms the cancellation.'",
415
+ response_match: "Natural-language assertion (LLM-judged). Example: 'Agent confirms the cancellation.'",
416
+ };
417
+ /* eslint-enable camelcase */
418
+ async function promptForNgtScorerExpected(scorerName, topics, bots, subjectName) {
419
+ const help = NGT_SCORER_HELP[scorerName] ?? '';
420
+ if (scorerName === 'topic_sequence_match' && topics.length > 0) {
421
+ return select({
422
+ message: `Expected for ${scorerName}: ${help}`,
423
+ choices: topics.map((t) => ({ name: t, value: t })),
424
+ theme,
425
+ });
426
+ }
427
+ if (scorerName === 'agent_handoff_match') {
428
+ const targets = bots.filter((b) => b !== subjectName);
429
+ if (targets.length > 0) {
430
+ return select({
431
+ message: `Expected for ${scorerName}: ${help}`,
432
+ choices: targets.map((t) => ({ name: t, value: t })),
433
+ theme,
434
+ });
435
+ }
436
+ }
437
+ return input({
438
+ message: `Expected for ${scorerName}${help ? `: ${help}` : ''}`,
439
+ validate: (d) => d.length > 0 || 'expected cannot be empty',
440
+ theme,
441
+ });
442
+ }
443
+ async function promptForNgtScorers(topics, bots, subjectName) {
444
+ const choices = Object.keys(NgtScorerCatalog).map((n) => ({ name: n, value: n }));
445
+ const selected = await checkbox({
446
+ message: 'Select scorers for this test case',
447
+ choices,
448
+ required: true,
449
+ theme,
450
+ });
451
+ const scorers = [];
452
+ for (const name of selected) {
453
+ if (NgtScorerCatalog[name].needsExpected) {
454
+ // eslint-disable-next-line no-await-in-loop
455
+ const expected = await promptForNgtScorerExpected(name, topics, bots, subjectName);
456
+ scorers.push({ name, expected });
457
+ }
458
+ else {
459
+ scorers.push({ name });
460
+ }
461
+ }
462
+ return scorers;
463
+ }
464
+ export async function promptForNgtTestCase(topics, bots, subjectName, caseNumber, log) {
465
+ const inputs = await promptForNgtInputs();
466
+ const scorers = await promptForNgtScorers(topics, bots, subjectName);
467
+ const usesTaskResolution = scorers.some((s) => s.name === 'task_resolution');
468
+ const hasHistory = inputs.some((i) => Array.isArray(i.conversationHistory) && i.conversationHistory.length > 0);
469
+ if (usesTaskResolution && !hasHistory) {
470
+ const wantsBoilerplate = await confirm({
471
+ message: 'task_resolution requires conversationHistory. Add boilerplate conversation history now',
472
+ default: true,
473
+ theme,
474
+ });
475
+ if (wantsBoilerplate) {
476
+ const stamped = inputs.map((i) => ({ ...i, conversationHistory: [...NGT_BOILERPLATE_HISTORY] }));
477
+ return { inputs: stamped, scorers };
478
+ }
479
+ log(messages.getMessage('warning.NoConversationHistoryForTaskResolution', [caseNumber.toString()]));
480
+ }
481
+ return { inputs, scorers };
482
+ }
330
483
  export default class AgentGenerateTestSpec extends SfCommand {
331
484
  static summary = messages.getMessage('summary');
332
485
  static description = messages.getMessage('description');
@@ -337,12 +490,6 @@ export default class AgentGenerateTestSpec extends SfCommand {
337
490
  char: 'd',
338
491
  exists: true,
339
492
  summary: messages.getMessage('flags.from-definition.summary'),
340
- parse: async (raw) => {
341
- if (!raw.endsWith('aiEvaluationDefinition-meta.xml')) {
342
- throw messages.createError('error.InvalidAiEvaluationDefinition');
343
- }
344
- return Promise.resolve(raw);
345
- },
346
493
  }),
347
494
  'force-overwrite': Flags.boolean({
348
495
  summary: messages.getMessage('flags.force-overwrite.summary'),
@@ -352,6 +499,7 @@ export default class AgentGenerateTestSpec extends SfCommand {
352
499
  summary: messages.getMessage('flags.output-file.summary'),
353
500
  parse: async (raw) => Promise.resolve(ensureYamlExtension(raw)),
354
501
  }),
502
+ 'test-runner': testRunnerFlag,
355
503
  };
356
504
  async run() {
357
505
  const { flags } = await this.parse(AgentGenerateTestSpec);
@@ -363,9 +511,14 @@ export default class AgentGenerateTestSpec extends SfCommand {
363
511
  },
364
512
  });
365
513
  if (flags['from-definition']) {
514
+ const inferredRunner = inferRunnerFromMdPath(flags['from-definition']);
515
+ if (flags['test-runner'] && flags['test-runner'] !== inferredRunner) {
516
+ throw messages.createError('error.RunnerMismatch', [flags['test-runner'], inferredRunner]);
517
+ }
518
+ const testRunner = flags['test-runner'] ?? inferredRunner;
366
519
  const agentTest = new AgentTest({ mdPath: flags['from-definition'] });
367
520
  const spec = await agentTest.getTestSpec();
368
- const outputFile = await determineFilePath(spec.subjectName, flags['output-file'], flags['force-overwrite']);
521
+ const outputFile = await determineFilePath(spec.subjectName, flags['output-file'], flags['force-overwrite'], testRunner);
369
522
  if (!outputFile) {
370
523
  this.log(messages.getMessage('info.cancel'));
371
524
  return;
@@ -383,6 +536,7 @@ export default class AgentGenerateTestSpec extends SfCommand {
383
536
  if (bots.length === 0) {
384
537
  throw messages.createError('error.NoAgentsFound', [directoryPaths.join(', ')]);
385
538
  }
539
+ const testRunner = flags['test-runner'] ?? 'testing-center';
386
540
  const subjectType = (await select({
387
541
  message: 'What are you testing',
388
542
  choices: ['AGENT'],
@@ -393,7 +547,7 @@ export default class AgentGenerateTestSpec extends SfCommand {
393
547
  choices: bots,
394
548
  theme,
395
549
  });
396
- const outputFile = await determineFilePath(subjectName, flags['output-file'], flags['force-overwrite']);
550
+ const outputFile = await determineFilePath(subjectName, flags['output-file'], flags['force-overwrite'], testRunner);
397
551
  if (!outputFile) {
398
552
  this.log(messages.getMessage('info.cancel'));
399
553
  return;
@@ -414,6 +568,35 @@ export default class AgentGenerateTestSpec extends SfCommand {
414
568
  message: 'Enter a description for the test (optional)',
415
569
  theme,
416
570
  });
571
+ if (testRunner === 'agentforce-studio') {
572
+ const subjectVersion = await input({
573
+ message: 'Enter the agent version (e.g. v1)',
574
+ default: 'v1',
575
+ theme,
576
+ });
577
+ const ngtTestCases = [];
578
+ do {
579
+ this.log();
580
+ this.styledHeader(`Adding test case #${ngtTestCases.length + 1}`);
581
+ // eslint-disable-next-line no-await-in-loop
582
+ const tc = await promptForNgtTestCase(Object.keys(genAiPlugins), bots, subjectName, ngtTestCases.length + 1, (msg) => this.warn(msg ?? ''));
583
+ ngtTestCases.push(tc);
584
+ } while ( // eslint-disable-next-line no-await-in-loop
585
+ await confirm({ message: 'Do you want to add another test case', default: true }));
586
+ this.log();
587
+ const ngtSpec = {
588
+ name,
589
+ description: description || undefined,
590
+ subjectType,
591
+ subjectName,
592
+ subjectVersion,
593
+ testCases: ngtTestCases,
594
+ };
595
+ const agentTest = new AgentTest({ specData: ngtSpec });
596
+ await agentTest.writeTestSpec(outputFile);
597
+ this.log(`Created ${outputFile}`);
598
+ return;
599
+ }
417
600
  const testCases = [];
418
601
  do {
419
602
  this.log();