@copado/agentia-cli 1.0.0-rc.0 → 1.1.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 (47) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/README.md +494 -284
  3. package/dist/commands/cicd/cloud/commit.js +7 -2
  4. package/dist/commands/cicd/extension/create.js +53 -0
  5. package/dist/commands/cicd/extension/install.js +127 -0
  6. package/dist/commands/cicd/extension/package.js +35 -0
  7. package/dist/commands/cicd/extension/publish.js +61 -0
  8. package/dist/commands/cicd/extension/uninstall.js +99 -0
  9. package/dist/commands/cicd/extension/validate.js +47 -0
  10. package/dist/commands/cicd/work/get.js +18 -2
  11. package/dist/commands/setup/skills/create.js +1 -1
  12. package/dist/commands/setup/skills/update.js +1 -1
  13. package/dist/commands/setup.js +15 -3
  14. package/dist/commands/update.js +11 -4
  15. package/dist/lib/cli-update.js +6 -1
  16. package/dist/lib/defaults-store.js +3 -1
  17. package/dist/lib/extension/assets.js +4 -0
  18. package/dist/lib/extension/create.js +3 -0
  19. package/dist/lib/extension/git.js +17 -0
  20. package/dist/lib/extension/index.js +27 -0
  21. package/dist/lib/extension/install.js +4 -0
  22. package/dist/lib/extension/manifest.js +21 -0
  23. package/dist/lib/extension/package.js +3 -0
  24. package/dist/lib/extension/paths.js +5 -0
  25. package/dist/lib/extension/publish.js +3 -0
  26. package/dist/lib/extension/sf-deploy.js +8 -0
  27. package/dist/lib/extension/source.js +7 -0
  28. package/dist/lib/extension/uninstall.js +3 -0
  29. package/dist/lib/function-types.js +3 -1
  30. package/dist/lib/mcp/work-tools.js +19 -6
  31. package/dist/lib/project-setup.js +5 -4
  32. package/dist/lib/runtime.js +1 -1
  33. package/dist/lib/setup-skills.js +4 -1
  34. package/dist/lib/setup-templates.js +1 -4
  35. package/dist/lib/template-types.js +3 -1
  36. package/dist/lib/version-warning.js +3 -0
  37. package/dist/lib/work-committed-metadata.js +4 -0
  38. package/dist/lib/work-get.js +2 -1
  39. package/oclif.manifest.json +886 -471
  40. package/package.json +1 -1
  41. package/templates/rules/cursor/agentia.mdc +29 -0
  42. package/templates/skills/agentia/SKILL.md +29 -0
  43. package/templates/skills/agentia-cicd/SKILL.md +3 -1
  44. package/templates/skills/agentia-cicd/references/extensions.md +49 -0
  45. package/templates/skills/agentia-cicd/references/pipelines.md +1 -1
  46. package/templates/skills/agentia-cicd/references/work.md +6 -4
  47. package/templates/AGENTS.md +0 -24
@@ -33,11 +33,19 @@
33
33
  "setup": {
34
34
  "aliases": [],
35
35
  "args": {},
36
- "description": "Prepare this machine and the current project for Agentia. Guides CICD, AI, and CRT authentication, Cursor MCP, local quality gates, and AGENTS.md. Git is optional: .gitignore is updated only inside a repository, and generated files are not committed.",
36
+ "description": "Prepare this machine and the current project for Agentia. Guides CICD, AI, and CRT authentication, Cursor MCP, local quality gates, Agent Skills, agent rules, and removal of a legacy AGENTS.md section. Use --skip-auth to skip authentication and continue with Cursor MCP and project setup. Git is optional: .gitignore is updated only inside a repository, and generated files are not committed.",
37
37
  "examples": [
38
- "<%= config.bin %> <%= command.id %>"
38
+ "<%= config.bin %> <%= command.id %>",
39
+ "<%= config.bin %> <%= command.id %> --skip-auth"
39
40
  ],
40
- "flags": {},
41
+ "flags": {
42
+ "skip-auth": {
43
+ "description": "Skip CICD, AI, and CRT authentication; continue with Cursor MCP and project setup",
44
+ "name": "skip-auth",
45
+ "allowNo": false,
46
+ "type": "boolean"
47
+ }
48
+ },
41
49
  "hasDynamicHelp": false,
42
50
  "hiddenAliases": [],
43
51
  "id": "setup",
@@ -74,7 +82,7 @@
74
82
  "type": "boolean"
75
83
  },
76
84
  "channel": {
77
- "description": "npm dist-tag to check (rc or latest). Omit to auto-select: prerelease installs compare rc and latest; stable installs use latest only.",
85
+ "description": "npm dist-tag to check or install (rc or latest). Also saves that channel as the preferred update channel when an install runs. Omit to auto-select from the stored preference or install type: prerelease installs and an rc preference compare rc and latest; stable installs with a latest preference (or no preference) use latest only.",
78
86
  "name": "channel",
79
87
  "hasDynamicHelp": false,
80
88
  "multiple": false,
@@ -85,7 +93,7 @@
85
93
  "type": "option"
86
94
  },
87
95
  "check": {
88
- "description": "Check for an update without installing it",
96
+ "description": "Check for an update without installing it or changing the preferred channel",
89
97
  "name": "check",
90
98
  "allowNo": false,
91
99
  "type": "boolean"
@@ -3096,7 +3104,7 @@
3096
3104
  "required": false
3097
3105
  }
3098
3106
  },
3099
- "description": "Create a Copado cloud metadata commit for a user story. Preflights the story, submits POST /release/commit, and polls the job monitor by default. For local Git work, use git add/commit then `cicd work publish`. Permission and full-metadata selections belong on `cicd work publish`.",
3107
+ "description": "Create a Copado cloud metadata commit for a user story.\nPreflights the story, submits POST /release/commit, and polls the job monitor by default.\nFor local Git work, use git add/commit then `cicd work publish`. Permission and full-metadata selections belong on `cicd work publish`.\n\nNOTE: Do not use this command along with local development (git operations, cicd work push/submit).",
3100
3108
  "examples": [
3101
3109
  "<%= config.bin %> <%= command.id %> --message \"Commit AccountService\" --metadata-name AccountService --metadata-type ApexClass --metadata-category SFDX --action Add",
3102
3110
  "<%= config.bin %> <%= command.id %> a07XXXXXXXXXXXXXXX --message \"Update Aura files\" --metadata-name accountEditor --metadata-type AuraDefinitionBundle --metadata-category SFDX --action SelectiveCommit --selection accountEditor/accountEditor.cmp --selection accountEditor/accountEditorController.js",
@@ -3169,7 +3177,7 @@
3169
3177
  "type": "option"
3170
3178
  },
3171
3179
  "metadata-category": {
3172
- "description": "Metadata category for simple input. Maps to change field c. For Salesforce metadata, always set SFDX so Copado stores c:SFDX. Omitting it omits c, and SFDX deploy steps log \"Salesforce changes not found.\" and skip the deploy while the job can still report Successful.",
3180
+ "description": "Required metadata category for simple input. Maps to change field c. For Salesforce metadata, set SFDX so Copado stores c:SFDX. Without c:SFDX, SFDX deploy steps log \"Salesforce changes not found.\" and skip the deploy while the job can still report Successful.",
3173
3181
  "name": "metadata-category",
3174
3182
  "hasDynamicHelp": false,
3175
3183
  "multiple": false,
@@ -3939,13 +3947,13 @@
3939
3947
  "update.js"
3940
3948
  ]
3941
3949
  },
3942
- "cicd:function:defaults": {
3950
+ "cicd:extension:create": {
3943
3951
  "aliases": [],
3944
3952
  "args": {},
3945
- "description": "Scaffold default Copado Function metadata and script without writing to Salesforce",
3953
+ "description": "Create or refresh a Copado extension manifest at copado/extension_manifest.json (scans copado/functions and copado/templates)",
3946
3954
  "examples": [
3947
- "<%= config.bin %> <%= command.id %> --name MyFunction",
3948
- "<%= config.bin %> <%= command.id %> --name MyFunction --runtime python --json"
3955
+ "<%= config.bin %> <%= command.id %> --name my-extension --version 1.0.0",
3956
+ "<%= config.bin %> <%= command.id %> --name my-extension --overwrite --json"
3949
3957
  ],
3950
3958
  "flags": {
3951
3959
  "json": {
@@ -3955,67 +3963,63 @@
3955
3963
  "allowNo": false,
3956
3964
  "type": "boolean"
3957
3965
  },
3958
- "image-name": {
3959
- "description": "Function container image",
3960
- "name": "image-name",
3961
- "default": "copado-function-core:v1",
3962
- "hasDynamicHelp": false,
3963
- "multiple": false,
3964
- "type": "option"
3965
- },
3966
3966
  "name": {
3967
- "description": "Function display name used to scaffold defaults",
3967
+ "char": "n",
3968
+ "description": "Extension name (alphanumeric, underscore, hyphen)",
3968
3969
  "name": "name",
3969
3970
  "required": true,
3970
3971
  "hasDynamicHelp": false,
3971
3972
  "multiple": false,
3972
3973
  "type": "option"
3973
3974
  },
3974
- "runtime": {
3975
- "description": "Script runtime",
3976
- "name": "runtime",
3977
- "default": "bash",
3975
+ "overwrite": {
3976
+ "description": "Overwrite an existing extension_manifest.json",
3977
+ "name": "overwrite",
3978
+ "allowNo": false,
3979
+ "type": "boolean"
3980
+ },
3981
+ "version": {
3982
+ "description": "Initial semver version written to the manifest (X.Y.Z)",
3983
+ "name": "version",
3984
+ "required": false,
3978
3985
  "hasDynamicHelp": false,
3979
3986
  "multiple": false,
3980
- "options": [
3981
- "bash",
3982
- "node",
3983
- "python"
3984
- ],
3985
3987
  "type": "option"
3986
3988
  }
3987
3989
  },
3988
3990
  "hasDynamicHelp": false,
3989
3991
  "hiddenAliases": [],
3990
- "id": "cicd:function:defaults",
3992
+ "id": "cicd:extension:create",
3991
3993
  "pluginAlias": "@copado/agentia-cli",
3992
3994
  "pluginName": "@copado/agentia-cli",
3993
3995
  "pluginType": "core",
3994
3996
  "strict": true,
3995
3997
  "enableJsonFlag": true,
3996
- "experimental": false,
3998
+ "experimental": true,
3997
3999
  "isESM": true,
3998
4000
  "relativePath": [
3999
4001
  "dist",
4000
4002
  "commands",
4001
4003
  "cicd",
4002
- "function",
4003
- "defaults.js"
4004
+ "extension",
4005
+ "create.js"
4004
4006
  ]
4005
4007
  },
4006
- "cicd:function:delete": {
4008
+ "cicd:extension:install": {
4007
4009
  "aliases": [],
4008
4010
  "args": {
4009
- "api-name": {
4010
- "description": "Function API name",
4011
- "name": "api-name",
4012
- "required": true
4011
+ "source": {
4012
+ "description": "Git repository URL, owner/repo slug, or local directory path",
4013
+ "name": "source",
4014
+ "required": false
4013
4015
  }
4014
4016
  },
4015
- "description": "Delete a Copado Function by API name",
4017
+ "description": "Install a Copado extension from a git URL or local folder: upsert functions and job templates via the CICD Gateway; deploy force-app with Salesforce CLI unless excluded",
4016
4018
  "examples": [
4017
- "<%= config.bin %> <%= command.id %> myFunction",
4018
- "<%= config.bin %> <%= command.id %> myFunction --json"
4019
+ "<%= config.bin %> <%= command.id %> https://gitlab.com/org/my-ext.git --version 1.2.0 --yes",
4020
+ "<%= config.bin %> <%= command.id %> ./my-extension --version 0.1.0 --exclude-sf-deploy --yes",
4021
+ "<%= config.bin %> <%= command.id %> /tmp/my-extension.git --ref v0.1.0 --sf-alias destOrg --yes",
4022
+ "<%= config.bin %> <%= command.id %> ./my-extension --version 1.2.0 --exclude-sf-deploy --yes --json"
4019
4023
  ],
4020
4024
  "flags": {
4021
4025
  "json": {
@@ -4024,39 +4028,99 @@
4024
4028
  "name": "json",
4025
4029
  "allowNo": false,
4026
4030
  "type": "boolean"
4031
+ },
4032
+ "dry-run": {
4033
+ "description": "Materialize and validate, print the install plan, but do not upsert or deploy",
4034
+ "name": "dry-run",
4035
+ "allowNo": false,
4036
+ "type": "boolean"
4037
+ },
4038
+ "exclude-sf-deploy": {
4039
+ "description": "Skip Salesforce metadata deploy even when force-app is present",
4040
+ "name": "exclude-sf-deploy",
4041
+ "allowNo": false,
4042
+ "type": "boolean"
4043
+ },
4044
+ "ignore-unknown-assets": {
4045
+ "description": "Ignore unsupported manifest asset arrays instead of failing",
4046
+ "name": "ignore-unknown-assets",
4047
+ "allowNo": false,
4048
+ "type": "boolean"
4049
+ },
4050
+ "ref": {
4051
+ "description": "Git ref to install (tag, branch, or commit). Prefer --version for semver tags.",
4052
+ "name": "ref",
4053
+ "required": false,
4054
+ "hasDynamicHelp": false,
4055
+ "multiple": false,
4056
+ "type": "option"
4057
+ },
4058
+ "sf-alias": {
4059
+ "description": "Salesforce CLI org alias or username for force-app deploy (required when force-app is present unless --exclude-sf-deploy)",
4060
+ "name": "sf-alias",
4061
+ "required": false,
4062
+ "hasDynamicHelp": false,
4063
+ "multiple": false,
4064
+ "type": "option"
4065
+ },
4066
+ "source": {
4067
+ "description": "Git URL or local path (alternative to the positional source argument)",
4068
+ "name": "source",
4069
+ "required": false,
4070
+ "hasDynamicHelp": false,
4071
+ "multiple": false,
4072
+ "type": "option"
4073
+ },
4074
+ "url": {
4075
+ "description": "Deprecated alias of --source",
4076
+ "hidden": true,
4077
+ "name": "url",
4078
+ "required": false,
4079
+ "hasDynamicHelp": false,
4080
+ "multiple": false,
4081
+ "type": "option"
4082
+ },
4083
+ "version": {
4084
+ "description": "Semver version to install (checks out tag vX.Y.Z)",
4085
+ "name": "version",
4086
+ "required": false,
4087
+ "hasDynamicHelp": false,
4088
+ "multiple": false,
4089
+ "type": "option"
4090
+ },
4091
+ "yes": {
4092
+ "char": "y",
4093
+ "description": "Skip the interactive confirmation prompt (required for non-interactive / --json installs that are not --dry-run)",
4094
+ "name": "yes",
4095
+ "allowNo": false,
4096
+ "type": "boolean"
4027
4097
  }
4028
4098
  },
4029
4099
  "hasDynamicHelp": false,
4030
4100
  "hiddenAliases": [],
4031
- "id": "cicd:function:delete",
4101
+ "id": "cicd:extension:install",
4032
4102
  "pluginAlias": "@copado/agentia-cli",
4033
4103
  "pluginName": "@copado/agentia-cli",
4034
4104
  "pluginType": "core",
4035
4105
  "strict": true,
4036
4106
  "enableJsonFlag": true,
4037
- "experimental": false,
4107
+ "experimental": true,
4038
4108
  "isESM": true,
4039
4109
  "relativePath": [
4040
4110
  "dist",
4041
4111
  "commands",
4042
4112
  "cicd",
4043
- "function",
4044
- "delete.js"
4113
+ "extension",
4114
+ "install.js"
4045
4115
  ]
4046
4116
  },
4047
- "cicd:function:get": {
4117
+ "cicd:extension:package": {
4048
4118
  "aliases": [],
4049
- "args": {
4050
- "api-name": {
4051
- "description": "Function API name",
4052
- "name": "api-name",
4053
- "required": true
4054
- }
4055
- },
4056
- "description": "Get a Copado Function by API name",
4119
+ "args": {},
4120
+ "description": "Validate a Copado extension for publish (requires semver version; optional --version bump)",
4057
4121
  "examples": [
4058
- "<%= config.bin %> <%= command.id %> myFunction",
4059
- "<%= config.bin %> <%= command.id %> myFunction --json"
4122
+ "<%= config.bin %> <%= command.id %>",
4123
+ "<%= config.bin %> <%= command.id %> --version 1.2.0 --json"
4060
4124
  ],
4061
4125
  "flags": {
4062
4126
  "json": {
@@ -4065,38 +4129,42 @@
4065
4129
  "name": "json",
4066
4130
  "allowNo": false,
4067
4131
  "type": "boolean"
4132
+ },
4133
+ "version": {
4134
+ "description": "Set or bump the manifest semver version before validating",
4135
+ "name": "version",
4136
+ "required": false,
4137
+ "hasDynamicHelp": false,
4138
+ "multiple": false,
4139
+ "type": "option"
4068
4140
  }
4069
4141
  },
4070
4142
  "hasDynamicHelp": false,
4071
4143
  "hiddenAliases": [],
4072
- "id": "cicd:function:get",
4144
+ "id": "cicd:extension:package",
4073
4145
  "pluginAlias": "@copado/agentia-cli",
4074
4146
  "pluginName": "@copado/agentia-cli",
4075
4147
  "pluginType": "core",
4076
4148
  "strict": true,
4077
4149
  "enableJsonFlag": true,
4078
- "experimental": false,
4150
+ "experimental": true,
4079
4151
  "isESM": true,
4080
4152
  "relativePath": [
4081
4153
  "dist",
4082
4154
  "commands",
4083
4155
  "cicd",
4084
- "function",
4085
- "get.js"
4156
+ "extension",
4157
+ "package.js"
4086
4158
  ]
4087
4159
  },
4088
- "cicd:function:list": {
4160
+ "cicd:extension:publish": {
4089
4161
  "aliases": [],
4090
4162
  "args": {},
4091
- "description": "List Copado Functions",
4163
+ "description": "Push the current extension commit and create an annotated semver git tag (vX.Y.Z) for install pinning",
4092
4164
  "examples": [
4093
4165
  "<%= config.bin %> <%= command.id %>",
4094
- "<%= config.bin %> <%= command.id %> --type all",
4095
- "<%= config.bin %> <%= command.id %> --name MyFunction --size S",
4096
- "<%= config.bin %> <%= command.id %> --image-name copado-function-core:v1",
4097
- "<%= config.bin %> <%= command.id %> --page-size 50",
4098
- "<%= config.bin %> <%= command.id %> --cursor NEXT --json",
4099
- "<%= config.bin %> <%= command.id %> --json"
4166
+ "<%= config.bin %> <%= command.id %> --version 1.2.0 --remote origin --json",
4167
+ "<%= config.bin %> <%= command.id %> --version 0.1.0 --local --force"
4100
4168
  ],
4101
4169
  "flags": {
4102
4170
  "json": {
@@ -4106,85 +4174,72 @@
4106
4174
  "allowNo": false,
4107
4175
  "type": "boolean"
4108
4176
  },
4109
- "cursor": {
4110
- "description": "Opaque pagination cursor from a previous list response (nextCursor)",
4111
- "name": "cursor",
4112
- "hasDynamicHelp": false,
4113
- "multiple": false,
4114
- "type": "option"
4115
- },
4116
- "page-size": {
4117
- "description": "Number of records per page (1-200)",
4118
- "name": "page-size",
4119
- "hasDynamicHelp": false,
4120
- "multiple": false,
4121
- "type": "option"
4177
+ "allow-dirty": {
4178
+ "description": "Allow publish with a dirty working tree",
4179
+ "name": "allow-dirty",
4180
+ "allowNo": false,
4181
+ "type": "boolean"
4122
4182
  },
4123
- "image-name": {
4124
- "description": "Filter by function container image",
4125
- "name": "image-name",
4126
- "hasDynamicHelp": false,
4127
- "multiple": false,
4128
- "type": "option"
4183
+ "force": {
4184
+ "description": "Recreate the local tag and push even if the tag already exists",
4185
+ "name": "force",
4186
+ "allowNo": false,
4187
+ "type": "boolean"
4129
4188
  },
4130
- "name": {
4131
- "description": "Filter by name",
4132
- "name": "name",
4133
- "hasDynamicHelp": false,
4134
- "multiple": false,
4135
- "type": "option"
4189
+ "local": {
4190
+ "description": "Create the annotated tag locally without pushing to a remote (offline / local e2e)",
4191
+ "name": "local",
4192
+ "allowNo": false,
4193
+ "type": "boolean"
4136
4194
  },
4137
- "size": {
4138
- "description": "Filter by function size",
4139
- "name": "size",
4195
+ "remote": {
4196
+ "description": "Git remote to push (default origin; ignored with --local)",
4197
+ "name": "remote",
4198
+ "default": "origin",
4140
4199
  "hasDynamicHelp": false,
4141
4200
  "multiple": false,
4142
4201
  "type": "option"
4143
4202
  },
4144
- "type": {
4145
- "description": "List Custom functions only, or all functions",
4146
- "name": "type",
4147
- "default": "custom",
4203
+ "version": {
4204
+ "description": "Require this semver in the manifest before tagging (writes it only if already committed; fails if the bump is uncommitted)",
4205
+ "name": "version",
4206
+ "required": false,
4148
4207
  "hasDynamicHelp": false,
4149
4208
  "multiple": false,
4150
- "options": [
4151
- "custom",
4152
- "all"
4153
- ],
4154
4209
  "type": "option"
4155
4210
  }
4156
4211
  },
4157
4212
  "hasDynamicHelp": false,
4158
4213
  "hiddenAliases": [],
4159
- "id": "cicd:function:list",
4214
+ "id": "cicd:extension:publish",
4160
4215
  "pluginAlias": "@copado/agentia-cli",
4161
4216
  "pluginName": "@copado/agentia-cli",
4162
4217
  "pluginType": "core",
4163
4218
  "strict": true,
4164
4219
  "enableJsonFlag": true,
4165
- "experimental": false,
4220
+ "experimental": true,
4166
4221
  "isESM": true,
4167
4222
  "relativePath": [
4168
4223
  "dist",
4169
4224
  "commands",
4170
4225
  "cicd",
4171
- "function",
4172
- "list.js"
4226
+ "extension",
4227
+ "publish.js"
4173
4228
  ]
4174
4229
  },
4175
- "cicd:function:open": {
4230
+ "cicd:extension:uninstall": {
4176
4231
  "aliases": [],
4177
4232
  "args": {
4178
- "id": {
4179
- "description": "Function ID",
4180
- "name": "id",
4181
- "required": true
4233
+ "source": {
4234
+ "description": "Git repository URL, owner/repo slug, or local directory path",
4235
+ "name": "source",
4236
+ "required": false
4182
4237
  }
4183
4238
  },
4184
- "description": "Open a Copado Function in the browser",
4239
+ "description": "Uninstall a Copado extension by deleting the functions and job templates listed in its manifest from the authenticated Copado org",
4185
4240
  "examples": [
4186
- "<%= config.bin %> <%= command.id %> <function-id>",
4187
- "<%= config.bin %> <%= command.id %> <function-id> --json"
4241
+ "<%= config.bin %> <%= command.id %> ./my-extension --version 0.1.0 --yes",
4242
+ "<%= config.bin %> <%= command.id %> https://gitlab.com/org/my-ext.git --ref v0.1.0 --yes --json"
4188
4243
  ],
4189
4244
  "flags": {
4190
4245
  "json": {
@@ -4193,40 +4248,70 @@
4193
4248
  "name": "json",
4194
4249
  "allowNo": false,
4195
4250
  "type": "boolean"
4251
+ },
4252
+ "dry-run": {
4253
+ "description": "Show which assets would be deleted without calling the gateway",
4254
+ "name": "dry-run",
4255
+ "allowNo": false,
4256
+ "type": "boolean"
4257
+ },
4258
+ "ref": {
4259
+ "description": "Git ref to read the manifest from",
4260
+ "name": "ref",
4261
+ "required": false,
4262
+ "hasDynamicHelp": false,
4263
+ "multiple": false,
4264
+ "type": "option"
4265
+ },
4266
+ "source": {
4267
+ "description": "Git URL or local path (alternative to the positional source argument)",
4268
+ "name": "source",
4269
+ "required": false,
4270
+ "hasDynamicHelp": false,
4271
+ "multiple": false,
4272
+ "type": "option"
4273
+ },
4274
+ "version": {
4275
+ "description": "Semver version whose tag (vX.Y.Z) supplies the manifest",
4276
+ "name": "version",
4277
+ "required": false,
4278
+ "hasDynamicHelp": false,
4279
+ "multiple": false,
4280
+ "type": "option"
4281
+ },
4282
+ "yes": {
4283
+ "char": "y",
4284
+ "description": "Skip the interactive confirmation prompt (required for non-interactive / --json uninstalls that are not --dry-run)",
4285
+ "name": "yes",
4286
+ "allowNo": false,
4287
+ "type": "boolean"
4196
4288
  }
4197
4289
  },
4198
4290
  "hasDynamicHelp": false,
4199
4291
  "hiddenAliases": [],
4200
- "id": "cicd:function:open",
4292
+ "id": "cicd:extension:uninstall",
4201
4293
  "pluginAlias": "@copado/agentia-cli",
4202
4294
  "pluginName": "@copado/agentia-cli",
4203
4295
  "pluginType": "core",
4204
4296
  "strict": true,
4205
4297
  "enableJsonFlag": true,
4206
- "experimental": false,
4298
+ "experimental": true,
4207
4299
  "isESM": true,
4208
4300
  "relativePath": [
4209
4301
  "dist",
4210
4302
  "commands",
4211
4303
  "cicd",
4212
- "function",
4213
- "open.js"
4304
+ "extension",
4305
+ "uninstall.js"
4214
4306
  ]
4215
4307
  },
4216
- "cicd:function:run-local": {
4308
+ "cicd:extension:validate": {
4217
4309
  "aliases": [],
4218
- "args": {
4219
- "script": {
4220
- "description": "Path to the local function script (.sh, .js, or .py)",
4221
- "name": "script",
4222
- "required": true
4223
- }
4224
- },
4225
- "description": "Run a Copado Function script locally in Docker (no CICD gateway). Override --image when the Copado registry is unavailable.",
4310
+ "args": {},
4311
+ "description": "Validate a Copado extension manifest against copado/functions and copado/templates on disk",
4226
4312
  "examples": [
4227
- "<%= config.bin %> <%= command.id %> copado/functions/myFunction.sh",
4228
- "<%= config.bin %> <%= command.id %> ./myFunction.js --cwd . --image my-registry/function-core:v1 --parameter ENV=dev --json",
4229
- "<%= config.bin %> <%= command.id %> ./myFunction.py --runtime python --platform linux/amd64"
4313
+ "<%= config.bin %> <%= command.id %>",
4314
+ "<%= config.bin %> <%= command.id %> --require-version --json"
4230
4315
  ],
4231
4316
  "flags": {
4232
4317
  "json": {
@@ -4236,15 +4321,337 @@
4236
4321
  "allowNo": false,
4237
4322
  "type": "boolean"
4238
4323
  },
4239
- "cwd": {
4240
- "description": "Host directory bind-mounted at /app inside the container (defaults to the current working directory)",
4241
- "name": "cwd",
4242
- "hasDynamicHelp": false,
4243
- "multiple": false,
4244
- "type": "option"
4245
- },
4246
- "image": {
4247
- "char": "i",
4324
+ "require-version": {
4325
+ "description": "Require a semver version field (needed for package/publish)",
4326
+ "name": "require-version",
4327
+ "allowNo": false,
4328
+ "type": "boolean"
4329
+ }
4330
+ },
4331
+ "hasDynamicHelp": false,
4332
+ "hiddenAliases": [],
4333
+ "id": "cicd:extension:validate",
4334
+ "pluginAlias": "@copado/agentia-cli",
4335
+ "pluginName": "@copado/agentia-cli",
4336
+ "pluginType": "core",
4337
+ "strict": true,
4338
+ "enableJsonFlag": true,
4339
+ "experimental": true,
4340
+ "isESM": true,
4341
+ "relativePath": [
4342
+ "dist",
4343
+ "commands",
4344
+ "cicd",
4345
+ "extension",
4346
+ "validate.js"
4347
+ ]
4348
+ },
4349
+ "cicd:function:defaults": {
4350
+ "aliases": [],
4351
+ "args": {},
4352
+ "description": "Scaffold default Copado Function metadata and script without writing to Salesforce",
4353
+ "examples": [
4354
+ "<%= config.bin %> <%= command.id %> --name MyFunction",
4355
+ "<%= config.bin %> <%= command.id %> --name MyFunction --runtime python --json"
4356
+ ],
4357
+ "flags": {
4358
+ "json": {
4359
+ "description": "Format output as json.",
4360
+ "helpGroup": "GLOBAL",
4361
+ "name": "json",
4362
+ "allowNo": false,
4363
+ "type": "boolean"
4364
+ },
4365
+ "image-name": {
4366
+ "description": "Function container image",
4367
+ "name": "image-name",
4368
+ "default": "copado-function-core:v1",
4369
+ "hasDynamicHelp": false,
4370
+ "multiple": false,
4371
+ "type": "option"
4372
+ },
4373
+ "name": {
4374
+ "description": "Function display name used to scaffold defaults",
4375
+ "name": "name",
4376
+ "required": true,
4377
+ "hasDynamicHelp": false,
4378
+ "multiple": false,
4379
+ "type": "option"
4380
+ },
4381
+ "runtime": {
4382
+ "description": "Script runtime",
4383
+ "name": "runtime",
4384
+ "default": "bash",
4385
+ "hasDynamicHelp": false,
4386
+ "multiple": false,
4387
+ "options": [
4388
+ "bash",
4389
+ "node",
4390
+ "python"
4391
+ ],
4392
+ "type": "option"
4393
+ }
4394
+ },
4395
+ "hasDynamicHelp": false,
4396
+ "hiddenAliases": [],
4397
+ "id": "cicd:function:defaults",
4398
+ "pluginAlias": "@copado/agentia-cli",
4399
+ "pluginName": "@copado/agentia-cli",
4400
+ "pluginType": "core",
4401
+ "strict": true,
4402
+ "enableJsonFlag": true,
4403
+ "experimental": false,
4404
+ "isESM": true,
4405
+ "relativePath": [
4406
+ "dist",
4407
+ "commands",
4408
+ "cicd",
4409
+ "function",
4410
+ "defaults.js"
4411
+ ]
4412
+ },
4413
+ "cicd:function:delete": {
4414
+ "aliases": [],
4415
+ "args": {
4416
+ "api-name": {
4417
+ "description": "Function API name",
4418
+ "name": "api-name",
4419
+ "required": true
4420
+ }
4421
+ },
4422
+ "description": "Delete a Copado Function by API name",
4423
+ "examples": [
4424
+ "<%= config.bin %> <%= command.id %> myFunction",
4425
+ "<%= config.bin %> <%= command.id %> myFunction --json"
4426
+ ],
4427
+ "flags": {
4428
+ "json": {
4429
+ "description": "Format output as json.",
4430
+ "helpGroup": "GLOBAL",
4431
+ "name": "json",
4432
+ "allowNo": false,
4433
+ "type": "boolean"
4434
+ }
4435
+ },
4436
+ "hasDynamicHelp": false,
4437
+ "hiddenAliases": [],
4438
+ "id": "cicd:function:delete",
4439
+ "pluginAlias": "@copado/agentia-cli",
4440
+ "pluginName": "@copado/agentia-cli",
4441
+ "pluginType": "core",
4442
+ "strict": true,
4443
+ "enableJsonFlag": true,
4444
+ "experimental": false,
4445
+ "isESM": true,
4446
+ "relativePath": [
4447
+ "dist",
4448
+ "commands",
4449
+ "cicd",
4450
+ "function",
4451
+ "delete.js"
4452
+ ]
4453
+ },
4454
+ "cicd:function:get": {
4455
+ "aliases": [],
4456
+ "args": {
4457
+ "api-name": {
4458
+ "description": "Function API name",
4459
+ "name": "api-name",
4460
+ "required": true
4461
+ }
4462
+ },
4463
+ "description": "Get a Copado Function by API name",
4464
+ "examples": [
4465
+ "<%= config.bin %> <%= command.id %> myFunction",
4466
+ "<%= config.bin %> <%= command.id %> myFunction --json"
4467
+ ],
4468
+ "flags": {
4469
+ "json": {
4470
+ "description": "Format output as json.",
4471
+ "helpGroup": "GLOBAL",
4472
+ "name": "json",
4473
+ "allowNo": false,
4474
+ "type": "boolean"
4475
+ }
4476
+ },
4477
+ "hasDynamicHelp": false,
4478
+ "hiddenAliases": [],
4479
+ "id": "cicd:function:get",
4480
+ "pluginAlias": "@copado/agentia-cli",
4481
+ "pluginName": "@copado/agentia-cli",
4482
+ "pluginType": "core",
4483
+ "strict": true,
4484
+ "enableJsonFlag": true,
4485
+ "experimental": false,
4486
+ "isESM": true,
4487
+ "relativePath": [
4488
+ "dist",
4489
+ "commands",
4490
+ "cicd",
4491
+ "function",
4492
+ "get.js"
4493
+ ]
4494
+ },
4495
+ "cicd:function:list": {
4496
+ "aliases": [],
4497
+ "args": {},
4498
+ "description": "List Copado Functions",
4499
+ "examples": [
4500
+ "<%= config.bin %> <%= command.id %>",
4501
+ "<%= config.bin %> <%= command.id %> --type all",
4502
+ "<%= config.bin %> <%= command.id %> --name MyFunction --size S",
4503
+ "<%= config.bin %> <%= command.id %> --image-name copado-function-core:v1",
4504
+ "<%= config.bin %> <%= command.id %> --page-size 50",
4505
+ "<%= config.bin %> <%= command.id %> --cursor NEXT --json",
4506
+ "<%= config.bin %> <%= command.id %> --json"
4507
+ ],
4508
+ "flags": {
4509
+ "json": {
4510
+ "description": "Format output as json.",
4511
+ "helpGroup": "GLOBAL",
4512
+ "name": "json",
4513
+ "allowNo": false,
4514
+ "type": "boolean"
4515
+ },
4516
+ "cursor": {
4517
+ "description": "Opaque pagination cursor from a previous list response (nextCursor)",
4518
+ "name": "cursor",
4519
+ "hasDynamicHelp": false,
4520
+ "multiple": false,
4521
+ "type": "option"
4522
+ },
4523
+ "page-size": {
4524
+ "description": "Number of records per page (1-200)",
4525
+ "name": "page-size",
4526
+ "hasDynamicHelp": false,
4527
+ "multiple": false,
4528
+ "type": "option"
4529
+ },
4530
+ "image-name": {
4531
+ "description": "Filter by function container image",
4532
+ "name": "image-name",
4533
+ "hasDynamicHelp": false,
4534
+ "multiple": false,
4535
+ "type": "option"
4536
+ },
4537
+ "name": {
4538
+ "description": "Filter by name",
4539
+ "name": "name",
4540
+ "hasDynamicHelp": false,
4541
+ "multiple": false,
4542
+ "type": "option"
4543
+ },
4544
+ "size": {
4545
+ "description": "Filter by function size",
4546
+ "name": "size",
4547
+ "hasDynamicHelp": false,
4548
+ "multiple": false,
4549
+ "type": "option"
4550
+ },
4551
+ "type": {
4552
+ "description": "List Custom functions only, or all functions",
4553
+ "name": "type",
4554
+ "default": "custom",
4555
+ "hasDynamicHelp": false,
4556
+ "multiple": false,
4557
+ "options": [
4558
+ "custom",
4559
+ "all"
4560
+ ],
4561
+ "type": "option"
4562
+ }
4563
+ },
4564
+ "hasDynamicHelp": false,
4565
+ "hiddenAliases": [],
4566
+ "id": "cicd:function:list",
4567
+ "pluginAlias": "@copado/agentia-cli",
4568
+ "pluginName": "@copado/agentia-cli",
4569
+ "pluginType": "core",
4570
+ "strict": true,
4571
+ "enableJsonFlag": true,
4572
+ "experimental": false,
4573
+ "isESM": true,
4574
+ "relativePath": [
4575
+ "dist",
4576
+ "commands",
4577
+ "cicd",
4578
+ "function",
4579
+ "list.js"
4580
+ ]
4581
+ },
4582
+ "cicd:function:open": {
4583
+ "aliases": [],
4584
+ "args": {
4585
+ "id": {
4586
+ "description": "Function ID",
4587
+ "name": "id",
4588
+ "required": true
4589
+ }
4590
+ },
4591
+ "description": "Open a Copado Function in the browser",
4592
+ "examples": [
4593
+ "<%= config.bin %> <%= command.id %> <function-id>",
4594
+ "<%= config.bin %> <%= command.id %> <function-id> --json"
4595
+ ],
4596
+ "flags": {
4597
+ "json": {
4598
+ "description": "Format output as json.",
4599
+ "helpGroup": "GLOBAL",
4600
+ "name": "json",
4601
+ "allowNo": false,
4602
+ "type": "boolean"
4603
+ }
4604
+ },
4605
+ "hasDynamicHelp": false,
4606
+ "hiddenAliases": [],
4607
+ "id": "cicd:function:open",
4608
+ "pluginAlias": "@copado/agentia-cli",
4609
+ "pluginName": "@copado/agentia-cli",
4610
+ "pluginType": "core",
4611
+ "strict": true,
4612
+ "enableJsonFlag": true,
4613
+ "experimental": false,
4614
+ "isESM": true,
4615
+ "relativePath": [
4616
+ "dist",
4617
+ "commands",
4618
+ "cicd",
4619
+ "function",
4620
+ "open.js"
4621
+ ]
4622
+ },
4623
+ "cicd:function:run-local": {
4624
+ "aliases": [],
4625
+ "args": {
4626
+ "script": {
4627
+ "description": "Path to the local function script (.sh, .js, or .py)",
4628
+ "name": "script",
4629
+ "required": true
4630
+ }
4631
+ },
4632
+ "description": "Run a Copado Function script locally in Docker (no CICD gateway). Override --image when the Copado registry is unavailable.",
4633
+ "examples": [
4634
+ "<%= config.bin %> <%= command.id %> copado/functions/myFunction.sh",
4635
+ "<%= config.bin %> <%= command.id %> ./myFunction.js --cwd . --image my-registry/function-core:v1 --parameter ENV=dev --json",
4636
+ "<%= config.bin %> <%= command.id %> ./myFunction.py --runtime python --platform linux/amd64"
4637
+ ],
4638
+ "flags": {
4639
+ "json": {
4640
+ "description": "Format output as json.",
4641
+ "helpGroup": "GLOBAL",
4642
+ "name": "json",
4643
+ "allowNo": false,
4644
+ "type": "boolean"
4645
+ },
4646
+ "cwd": {
4647
+ "description": "Host directory bind-mounted at /app inside the container (defaults to the current working directory)",
4648
+ "name": "cwd",
4649
+ "hasDynamicHelp": false,
4650
+ "multiple": false,
4651
+ "type": "option"
4652
+ },
4653
+ "image": {
4654
+ "char": "i",
4248
4655
  "description": "Docker image used to run the function. Override when the Copado image registry is unavailable (e.g. for partners).",
4249
4656
  "name": "image",
4250
4657
  "default": "copado-function-core:v1",
@@ -7616,7 +8023,7 @@
7616
8023
  "type": "option"
7617
8024
  },
7618
8025
  "metadata-category": {
7619
- "description": "Metadata category for simple input. Maps to change field c. For Salesforce metadata, always set SFDX so Copado stores c:SFDX. Omitting it omits c, and SFDX deploy steps log \"Salesforce changes not found.\" and skip the deploy while the job can still report Successful.",
8026
+ "description": "Required metadata category for simple input. Maps to change field c. For Salesforce metadata, set SFDX so Copado stores c:SFDX. Without c:SFDX, SFDX deploy steps log \"Salesforce changes not found.\" and skip the deploy while the job can still report Successful.",
7620
8027
  "name": "metadata-category",
7621
8028
  "hasDynamicHelp": false,
7622
8029
  "multiple": false,
@@ -8114,6 +8521,8 @@
8114
8521
  "<%= config.bin %> <%= command.id %>",
8115
8522
  "<%= config.bin %> <%= command.id %> a0SKC000000CmZ2AU",
8116
8523
  "<%= config.bin %> <%= command.id %> a0SKC000000CmZ2AU --json",
8524
+ "<%= config.bin %> <%= command.id %> a0SKC000000CmZ2AU --committed-metadata",
8525
+ "<%= config.bin %> <%= command.id %> a0SKC000000CmZ2AU --committed-metadata --json",
8117
8526
  "<%= config.bin %> <%= command.id %> a0SKC000000CmZ2AU --user-stories-ahead-behind",
8118
8527
  "<%= config.bin %> <%= command.id %> a0SKC000000CmZ2AU --user-stories-ahead-behind --json"
8119
8528
  ],
@@ -8125,6 +8534,12 @@
8125
8534
  "allowNo": false,
8126
8535
  "type": "boolean"
8127
8536
  },
8537
+ "committed-metadata": {
8538
+ "description": "Also include the Story committed metadata list in output",
8539
+ "name": "committed-metadata",
8540
+ "allowNo": false,
8541
+ "type": "boolean"
8542
+ },
8128
8543
  "user-stories-ahead-behind": {
8129
8544
  "description": "When the user story has a pipeline and source environment, compare user stories ahead of and behind the next pipeline environment",
8130
8545
  "name": "user-stories-ahead-behind",
@@ -9084,7 +9499,7 @@
9084
9499
  "type": "boolean"
9085
9500
  },
9086
9501
  "force": {
9087
- "description": "Replace conflicting unmanaged Agentia skill files",
9502
+ "description": "Replace conflicting unmanaged Agentia skill or rules files",
9088
9503
  "name": "force",
9089
9504
  "allowNo": false,
9090
9505
  "type": "boolean"
@@ -9171,7 +9586,7 @@
9171
9586
  "type": "boolean"
9172
9587
  },
9173
9588
  "force": {
9174
- "description": "Replace conflicting unmanaged Agentia skill files",
9589
+ "description": "Replace conflicting unmanaged Agentia skill or rules files",
9175
9590
  "name": "force",
9176
9591
  "allowNo": false,
9177
9592
  "type": "boolean"
@@ -17208,23 +17623,174 @@
17208
17623
  "multiple": false,
17209
17624
  "type": "option"
17210
17625
  },
17211
- "show": {
17212
- "description": "Print decoded metadata content to stdout after retrieval",
17213
- "name": "show",
17214
- "allowNo": false,
17215
- "type": "boolean"
17216
- },
17217
- "source": {
17218
- "description": "Content source",
17219
- "name": "source",
17220
- "default": "ENVIRONMENT",
17626
+ "show": {
17627
+ "description": "Print decoded metadata content to stdout after retrieval",
17628
+ "name": "show",
17629
+ "allowNo": false,
17630
+ "type": "boolean"
17631
+ },
17632
+ "source": {
17633
+ "description": "Content source",
17634
+ "name": "source",
17635
+ "default": "ENVIRONMENT",
17636
+ "hasDynamicHelp": false,
17637
+ "multiple": false,
17638
+ "options": [
17639
+ "ENVIRONMENT",
17640
+ "REPOSITORY",
17641
+ "GIT_MIRROR",
17642
+ "ORG_CACHE"
17643
+ ],
17644
+ "type": "option"
17645
+ },
17646
+ "source-credential-id": {
17647
+ "description": "Source org credential Id",
17648
+ "name": "source-credential-id",
17649
+ "hasDynamicHelp": false,
17650
+ "multiple": false,
17651
+ "type": "option"
17652
+ },
17653
+ "source-org-id": {
17654
+ "description": "Source org Id",
17655
+ "name": "source-org-id",
17656
+ "hasDynamicHelp": false,
17657
+ "multiple": false,
17658
+ "type": "option"
17659
+ }
17660
+ },
17661
+ "hasDynamicHelp": false,
17662
+ "hiddenAliases": [],
17663
+ "id": "cicd:metadata:content:get",
17664
+ "pluginAlias": "@copado/agentia-cli",
17665
+ "pluginName": "@copado/agentia-cli",
17666
+ "pluginType": "core",
17667
+ "strict": true,
17668
+ "enableJsonFlag": true,
17669
+ "experimental": false,
17670
+ "isESM": true,
17671
+ "relativePath": [
17672
+ "dist",
17673
+ "commands",
17674
+ "cicd",
17675
+ "metadata",
17676
+ "content",
17677
+ "get.js"
17678
+ ]
17679
+ },
17680
+ "cicd:metadata:dependency:list": {
17681
+ "aliases": [],
17682
+ "args": {},
17683
+ "description": "Retrieve metadata dependencies via the CICD gateway",
17684
+ "examples": [
17685
+ "<%= config.bin %> <%= command.id %> --metadata-name MyClass --metadata-type ApexClass --pipeline-id <id> --source-org-id <id> --source-credential-id <id>",
17686
+ "cat request.json | <%= config.bin %> <%= command.id %> --stdin",
17687
+ "<%= config.bin %> <%= command.id %> --from-changes --base-ref origin/main --retrieve-mode all --pipeline-id <id> --source-org-id <id> --source-credential-id <id>"
17688
+ ],
17689
+ "flags": {
17690
+ "json": {
17691
+ "description": "Format output as json.",
17692
+ "helpGroup": "GLOBAL",
17693
+ "name": "json",
17694
+ "allowNo": false,
17695
+ "type": "boolean"
17696
+ },
17697
+ "base-ref": {
17698
+ "description": "Base Git ref used with --from-changes",
17699
+ "name": "base-ref",
17700
+ "default": "origin/main",
17701
+ "hasDynamicHelp": false,
17702
+ "multiple": false,
17703
+ "type": "option"
17704
+ },
17705
+ "file": {
17706
+ "char": "f",
17707
+ "description": "Path to a JSON dependency request body",
17708
+ "name": "file",
17709
+ "hasDynamicHelp": false,
17710
+ "multiple": false,
17711
+ "type": "option"
17712
+ },
17713
+ "from-changes": {
17714
+ "description": "Build metadata selections from committed branch changes and staged index files",
17715
+ "name": "from-changes",
17716
+ "allowNo": false,
17717
+ "type": "boolean"
17718
+ },
17719
+ "metadata-category": {
17720
+ "description": "Optional metadata category",
17721
+ "name": "metadata-category",
17722
+ "hasDynamicHelp": false,
17723
+ "multiple": false,
17724
+ "type": "option"
17725
+ },
17726
+ "metadata-name": {
17727
+ "description": "Metadata component name",
17728
+ "name": "metadata-name",
17729
+ "hasDynamicHelp": false,
17730
+ "multiple": false,
17731
+ "type": "option"
17732
+ },
17733
+ "metadata-raw-json": {
17734
+ "description": "Optional raw metadata JSON for the selection",
17735
+ "name": "metadata-raw-json",
17736
+ "hasDynamicHelp": false,
17737
+ "multiple": false,
17738
+ "type": "option"
17739
+ },
17740
+ "metadata-type": {
17741
+ "description": "Metadata type, for example ApexClass",
17742
+ "name": "metadata-type",
17743
+ "hasDynamicHelp": false,
17744
+ "multiple": false,
17745
+ "type": "option"
17746
+ },
17747
+ "module-type": {
17748
+ "description": "Optional addon module type",
17749
+ "name": "module-type",
17750
+ "hasDynamicHelp": false,
17751
+ "multiple": false,
17752
+ "options": [
17753
+ "vlocity",
17754
+ "data_cloud"
17755
+ ],
17756
+ "type": "option"
17757
+ },
17758
+ "pipeline-id": {
17759
+ "description": "Pipeline Id",
17760
+ "name": "pipeline-id",
17761
+ "hasDynamicHelp": false,
17762
+ "multiple": false,
17763
+ "type": "option"
17764
+ },
17765
+ "platform-experience": {
17766
+ "description": "Gateway platform experience header",
17767
+ "name": "platform-experience",
17768
+ "default": "salesforce",
17769
+ "hasDynamicHelp": false,
17770
+ "multiple": false,
17771
+ "options": [
17772
+ "salesforce",
17773
+ "sfdx",
17774
+ "metacache",
17775
+ "db"
17776
+ ],
17777
+ "type": "option"
17778
+ },
17779
+ "result-id": {
17780
+ "description": "Optional result Id from a prior metadata operation",
17781
+ "name": "result-id",
17782
+ "hasDynamicHelp": false,
17783
+ "multiple": false,
17784
+ "type": "option"
17785
+ },
17786
+ "retrieve-mode": {
17787
+ "description": "Dependency retrieve mode",
17788
+ "name": "retrieve-mode",
17221
17789
  "hasDynamicHelp": false,
17222
17790
  "multiple": false,
17223
17791
  "options": [
17224
- "ENVIRONMENT",
17225
- "REPOSITORY",
17226
- "GIT_MIRROR",
17227
- "ORG_CACHE"
17792
+ "all",
17793
+ "diff_only"
17228
17794
  ],
17229
17795
  "type": "option"
17230
17796
  },
@@ -17241,11 +17807,24 @@
17241
17807
  "hasDynamicHelp": false,
17242
17808
  "multiple": false,
17243
17809
  "type": "option"
17810
+ },
17811
+ "stdin": {
17812
+ "description": "Read a JSON dependency request body from stdin",
17813
+ "name": "stdin",
17814
+ "allowNo": false,
17815
+ "type": "boolean"
17816
+ },
17817
+ "target-org-id": {
17818
+ "description": "Target org Id",
17819
+ "name": "target-org-id",
17820
+ "hasDynamicHelp": false,
17821
+ "multiple": false,
17822
+ "type": "option"
17244
17823
  }
17245
17824
  },
17246
17825
  "hasDynamicHelp": false,
17247
17826
  "hiddenAliases": [],
17248
- "id": "cicd:metadata:content:get",
17827
+ "id": "cicd:metadata:dependency:list",
17249
17828
  "pluginAlias": "@copado/agentia-cli",
17250
17829
  "pluginName": "@copado/agentia-cli",
17251
17830
  "pluginType": "core",
@@ -17258,8 +17837,8 @@
17258
17837
  "commands",
17259
17838
  "cicd",
17260
17839
  "metadata",
17261
- "content",
17262
- "get.js"
17840
+ "dependency",
17841
+ "list.js"
17263
17842
  ]
17264
17843
  },
17265
17844
  "cicd:metadata:index:compare": {
@@ -18551,98 +19130,6 @@
18551
19130
  "unset.js"
18552
19131
  ]
18553
19132
  },
18554
- "cicd:promotion:job-step:update": {
18555
- "aliases": [],
18556
- "args": {
18557
- "id": {
18558
- "description": "Promotion job step ID",
18559
- "name": "id",
18560
- "required": true
18561
- }
18562
- },
18563
- "description": "Update a promotion manual task",
18564
- "examples": [
18565
- "<%= config.bin %> <%= command.id %> <job-step-id> --promotion <promotion-id> --status Complete",
18566
- "<%= config.bin %> <%= command.id %> <job-step-id> -p <promotion-name> --task-comments \"Completed by QA\"",
18567
- "<%= config.bin %> <%= command.id %> <job-step-id> -p <promotion-id> --assignee-id 005... --assignee-name \"Jane Doe\" --json"
18568
- ],
18569
- "flags": {
18570
- "json": {
18571
- "description": "Format output as json.",
18572
- "helpGroup": "GLOBAL",
18573
- "name": "json",
18574
- "allowNo": false,
18575
- "type": "boolean"
18576
- },
18577
- "assignee-id": {
18578
- "description": "Salesforce user ID assigned to the manual task",
18579
- "name": "assignee-id",
18580
- "hasDynamicHelp": false,
18581
- "multiple": false,
18582
- "type": "option"
18583
- },
18584
- "assignee-name": {
18585
- "description": "Name of the user assigned to the manual task",
18586
- "name": "assignee-name",
18587
- "hasDynamicHelp": false,
18588
- "multiple": false,
18589
- "type": "option"
18590
- },
18591
- "promotion": {
18592
- "char": "p",
18593
- "description": "Copado promotion ID or name",
18594
- "name": "promotion",
18595
- "required": true,
18596
- "hasDynamicHelp": false,
18597
- "multiple": false,
18598
- "type": "option"
18599
- },
18600
- "status": {
18601
- "description": "Manual task status",
18602
- "name": "status",
18603
- "hasDynamicHelp": false,
18604
- "multiple": false,
18605
- "options": [
18606
- "Complete",
18607
- "Incomplete",
18608
- "Pending"
18609
- ],
18610
- "type": "option"
18611
- },
18612
- "task-comments": {
18613
- "description": "Manual task comments",
18614
- "name": "task-comments",
18615
- "hasDynamicHelp": false,
18616
- "multiple": false,
18617
- "type": "option"
18618
- },
18619
- "task-description": {
18620
- "description": "Manual task description",
18621
- "name": "task-description",
18622
- "hasDynamicHelp": false,
18623
- "multiple": false,
18624
- "type": "option"
18625
- }
18626
- },
18627
- "hasDynamicHelp": false,
18628
- "hiddenAliases": [],
18629
- "id": "cicd:promotion:job-step:update",
18630
- "pluginAlias": "@copado/agentia-cli",
18631
- "pluginName": "@copado/agentia-cli",
18632
- "pluginType": "core",
18633
- "strict": true,
18634
- "enableJsonFlag": true,
18635
- "experimental": false,
18636
- "isESM": true,
18637
- "relativePath": [
18638
- "dist",
18639
- "commands",
18640
- "cicd",
18641
- "promotion",
18642
- "job-step",
18643
- "update.js"
18644
- ]
18645
- },
18646
19133
  "cicd:promotion:conflict:get": {
18647
19134
  "aliases": [],
18648
19135
  "args": {
@@ -18869,16 +19356,21 @@
18869
19356
  "unresolve.js"
18870
19357
  ]
18871
19358
  },
18872
- "cicd:repository:auth:setup": {
19359
+ "cicd:promotion:job-step:update": {
18873
19360
  "aliases": [],
18874
19361
  "args": {
18875
19362
  "id": {
18876
- "description": "Copado Git repository ID",
19363
+ "description": "Promotion job step ID",
18877
19364
  "name": "id",
18878
19365
  "required": true
18879
19366
  }
18880
19367
  },
18881
- "description": "Interactively configure repository authentication; OAuth is selected by default",
19368
+ "description": "Update a promotion manual task",
19369
+ "examples": [
19370
+ "<%= config.bin %> <%= command.id %> <job-step-id> --promotion <promotion-id> --status Complete",
19371
+ "<%= config.bin %> <%= command.id %> <job-step-id> -p <promotion-name> --task-comments \"Completed by QA\"",
19372
+ "<%= config.bin %> <%= command.id %> <job-step-id> -p <promotion-id> --assignee-id 005... --assignee-name \"Jane Doe\" --json"
19373
+ ],
18882
19374
  "flags": {
18883
19375
  "json": {
18884
19376
  "description": "Format output as json.",
@@ -18887,16 +19379,59 @@
18887
19379
  "allowNo": false,
18888
19380
  "type": "boolean"
18889
19381
  },
18890
- "overwrite": {
18891
- "description": "Replace an existing HTTPS or SSH credential",
18892
- "name": "overwrite",
18893
- "allowNo": false,
18894
- "type": "boolean"
19382
+ "assignee-id": {
19383
+ "description": "Salesforce user ID assigned to the manual task",
19384
+ "name": "assignee-id",
19385
+ "hasDynamicHelp": false,
19386
+ "multiple": false,
19387
+ "type": "option"
19388
+ },
19389
+ "assignee-name": {
19390
+ "description": "Name of the user assigned to the manual task",
19391
+ "name": "assignee-name",
19392
+ "hasDynamicHelp": false,
19393
+ "multiple": false,
19394
+ "type": "option"
19395
+ },
19396
+ "promotion": {
19397
+ "char": "p",
19398
+ "description": "Copado promotion ID or name",
19399
+ "name": "promotion",
19400
+ "required": true,
19401
+ "hasDynamicHelp": false,
19402
+ "multiple": false,
19403
+ "type": "option"
19404
+ },
19405
+ "status": {
19406
+ "description": "Manual task status",
19407
+ "name": "status",
19408
+ "hasDynamicHelp": false,
19409
+ "multiple": false,
19410
+ "options": [
19411
+ "Complete",
19412
+ "Incomplete",
19413
+ "Pending"
19414
+ ],
19415
+ "type": "option"
19416
+ },
19417
+ "task-comments": {
19418
+ "description": "Manual task comments",
19419
+ "name": "task-comments",
19420
+ "hasDynamicHelp": false,
19421
+ "multiple": false,
19422
+ "type": "option"
19423
+ },
19424
+ "task-description": {
19425
+ "description": "Manual task description",
19426
+ "name": "task-description",
19427
+ "hasDynamicHelp": false,
19428
+ "multiple": false,
19429
+ "type": "option"
18895
19430
  }
18896
19431
  },
18897
19432
  "hasDynamicHelp": false,
18898
19433
  "hiddenAliases": [],
18899
- "id": "cicd:repository:auth:setup",
19434
+ "id": "cicd:promotion:job-step:update",
18900
19435
  "pluginAlias": "@copado/agentia-cli",
18901
19436
  "pluginName": "@copado/agentia-cli",
18902
19437
  "pluginType": "core",
@@ -18908,57 +19443,39 @@
18908
19443
  "dist",
18909
19444
  "commands",
18910
19445
  "cicd",
18911
- "repository",
18912
- "auth",
18913
- "setup.js"
19446
+ "promotion",
19447
+ "job-step",
19448
+ "update.js"
18914
19449
  ]
18915
19450
  },
18916
- "cicd:work:test:apex": {
19451
+ "cicd:repository:auth:setup": {
18917
19452
  "aliases": [],
18918
- "args": {},
18919
- "description": "Run specified Apex test classes via Salesforce CLI (`sf apex run test`) with code coverage. Usually run from project-root local quality gates (`.agentia_quality_gates.sh` / `.agentia_quality_gates.cmd`) when those scripts are configured. When `--apex-test-classes` is omitted or empty, logs that no Apex tests were specified and exits without running Salesforce CLI. Failed runs save `.agentia/apex.tests.<user-story>.json`; successful runs delete that file. `--rerun-failed-apex-tests` runs the previously failed classes (optionally filtered by `--apex-test-classes`). Prints the test-run summary when the run passes, or failing tests with their messages and stack traces when it fails. Exits with the same process exit code as Salesforce CLI (`sf`), including 100 when Apex tests fail.",
18920
- "examples": [
18921
- "<%= config.bin %> <%= command.id %> -t HelloWorldTest",
18922
- "<%= config.bin %> <%= command.id %> --apex-test-classes=MyTest,OtherTest",
18923
- "<%= config.bin %> <%= command.id %> -t MyTest,OtherTest -w 10 --json",
18924
- "<%= config.bin %> <%= command.id %> -t \"$AGENTIA_APEX_TEST_CLASSES\"",
18925
- "<%= config.bin %> <%= command.id %> --rerun-failed-apex-tests"
18926
- ],
18927
- "flags": {
18928
- "json": {
18929
- "description": "Format output as json.",
18930
- "helpGroup": "GLOBAL",
18931
- "name": "json",
18932
- "allowNo": false,
18933
- "type": "boolean"
18934
- },
18935
- "apex-test-classes": {
18936
- "char": "t",
18937
- "description": "Comma-separated Apex test class names to run. Omit or leave empty to skip without running Salesforce CLI.",
18938
- "name": "apex-test-classes",
18939
- "hasDynamicHelp": false,
18940
- "multiple": false,
18941
- "type": "option"
18942
- },
18943
- "rerun-failed-apex-tests": {
18944
- "description": "Rerun Apex classes saved from the last failure for this user story (`.agentia/apex.tests.<user-story>.json`). Combined with --apex-test-classes, only matching failed classes run.",
18945
- "name": "rerun-failed-apex-tests",
19453
+ "args": {
19454
+ "id": {
19455
+ "description": "Copado Git repository ID",
19456
+ "name": "id",
19457
+ "required": true
19458
+ }
19459
+ },
19460
+ "description": "Interactively configure repository authentication; OAuth is selected by default",
19461
+ "flags": {
19462
+ "json": {
19463
+ "description": "Format output as json.",
19464
+ "helpGroup": "GLOBAL",
19465
+ "name": "json",
18946
19466
  "allowNo": false,
18947
19467
  "type": "boolean"
18948
19468
  },
18949
- "wait": {
18950
- "char": "w",
18951
- "description": "Minutes to wait for Salesforce CLI Apex test results",
18952
- "name": "wait",
18953
- "default": 60,
18954
- "hasDynamicHelp": false,
18955
- "multiple": false,
18956
- "type": "option"
19469
+ "overwrite": {
19470
+ "description": "Replace an existing HTTPS or SSH credential",
19471
+ "name": "overwrite",
19472
+ "allowNo": false,
19473
+ "type": "boolean"
18957
19474
  }
18958
19475
  },
18959
19476
  "hasDynamicHelp": false,
18960
19477
  "hiddenAliases": [],
18961
- "id": "cicd:work:test:apex",
19478
+ "id": "cicd:repository:auth:setup",
18962
19479
  "pluginAlias": "@copado/agentia-cli",
18963
19480
  "pluginName": "@copado/agentia-cli",
18964
19481
  "pluginType": "core",
@@ -18970,9 +19487,9 @@
18970
19487
  "dist",
18971
19488
  "commands",
18972
19489
  "cicd",
18973
- "work",
18974
- "test",
18975
- "apex.js"
19490
+ "repository",
19491
+ "auth",
19492
+ "setup.js"
18976
19493
  ]
18977
19494
  },
18978
19495
  "cicd:work:deployment-step:create": {
@@ -19581,6 +20098,68 @@
19581
20098
  "update.js"
19582
20099
  ]
19583
20100
  },
20101
+ "cicd:work:test:apex": {
20102
+ "aliases": [],
20103
+ "args": {},
20104
+ "description": "Run specified Apex test classes via Salesforce CLI (`sf apex run test`) with code coverage. Usually run from project-root local quality gates (`.agentia_quality_gates.sh` / `.agentia_quality_gates.cmd`) when those scripts are configured. When `--apex-test-classes` is omitted or empty, logs that no Apex tests were specified and exits without running Salesforce CLI. Failed runs save `.agentia/apex.tests.<user-story>.json`; successful runs delete that file. `--rerun-failed-apex-tests` runs the previously failed classes (optionally filtered by `--apex-test-classes`). Prints the test-run summary when the run passes, or failing tests with their messages and stack traces when it fails. Exits with the same process exit code as Salesforce CLI (`sf`), including 100 when Apex tests fail.",
20105
+ "examples": [
20106
+ "<%= config.bin %> <%= command.id %> -t HelloWorldTest",
20107
+ "<%= config.bin %> <%= command.id %> --apex-test-classes=MyTest,OtherTest",
20108
+ "<%= config.bin %> <%= command.id %> -t MyTest,OtherTest -w 10 --json",
20109
+ "<%= config.bin %> <%= command.id %> -t \"$AGENTIA_APEX_TEST_CLASSES\"",
20110
+ "<%= config.bin %> <%= command.id %> --rerun-failed-apex-tests"
20111
+ ],
20112
+ "flags": {
20113
+ "json": {
20114
+ "description": "Format output as json.",
20115
+ "helpGroup": "GLOBAL",
20116
+ "name": "json",
20117
+ "allowNo": false,
20118
+ "type": "boolean"
20119
+ },
20120
+ "apex-test-classes": {
20121
+ "char": "t",
20122
+ "description": "Comma-separated Apex test class names to run. Omit or leave empty to skip without running Salesforce CLI.",
20123
+ "name": "apex-test-classes",
20124
+ "hasDynamicHelp": false,
20125
+ "multiple": false,
20126
+ "type": "option"
20127
+ },
20128
+ "rerun-failed-apex-tests": {
20129
+ "description": "Rerun Apex classes saved from the last failure for this user story (`.agentia/apex.tests.<user-story>.json`). Combined with --apex-test-classes, only matching failed classes run.",
20130
+ "name": "rerun-failed-apex-tests",
20131
+ "allowNo": false,
20132
+ "type": "boolean"
20133
+ },
20134
+ "wait": {
20135
+ "char": "w",
20136
+ "description": "Minutes to wait for Salesforce CLI Apex test results",
20137
+ "name": "wait",
20138
+ "default": 60,
20139
+ "hasDynamicHelp": false,
20140
+ "multiple": false,
20141
+ "type": "option"
20142
+ }
20143
+ },
20144
+ "hasDynamicHelp": false,
20145
+ "hiddenAliases": [],
20146
+ "id": "cicd:work:test:apex",
20147
+ "pluginAlias": "@copado/agentia-cli",
20148
+ "pluginName": "@copado/agentia-cli",
20149
+ "pluginType": "core",
20150
+ "strict": true,
20151
+ "enableJsonFlag": true,
20152
+ "experimental": false,
20153
+ "isESM": true,
20154
+ "relativePath": [
20155
+ "dist",
20156
+ "commands",
20157
+ "cicd",
20158
+ "work",
20159
+ "test",
20160
+ "apex.js"
20161
+ ]
20162
+ },
19584
20163
  "testing:job:schedule:get": {
19585
20164
  "aliases": [],
19586
20165
  "args": {
@@ -20118,170 +20697,6 @@
20118
20697
  "get.js"
20119
20698
  ]
20120
20699
  },
20121
- "cicd:metadata:dependency:list": {
20122
- "aliases": [],
20123
- "args": {},
20124
- "description": "Retrieve metadata dependencies via the CICD gateway",
20125
- "examples": [
20126
- "<%= config.bin %> <%= command.id %> --metadata-name MyClass --metadata-type ApexClass --pipeline-id <id> --source-org-id <id> --source-credential-id <id>",
20127
- "cat request.json | <%= config.bin %> <%= command.id %> --stdin",
20128
- "<%= config.bin %> <%= command.id %> --from-changes --base-ref origin/main --retrieve-mode all --pipeline-id <id> --source-org-id <id> --source-credential-id <id>"
20129
- ],
20130
- "flags": {
20131
- "json": {
20132
- "description": "Format output as json.",
20133
- "helpGroup": "GLOBAL",
20134
- "name": "json",
20135
- "allowNo": false,
20136
- "type": "boolean"
20137
- },
20138
- "base-ref": {
20139
- "description": "Base Git ref used with --from-changes",
20140
- "name": "base-ref",
20141
- "default": "origin/main",
20142
- "hasDynamicHelp": false,
20143
- "multiple": false,
20144
- "type": "option"
20145
- },
20146
- "file": {
20147
- "char": "f",
20148
- "description": "Path to a JSON dependency request body",
20149
- "name": "file",
20150
- "hasDynamicHelp": false,
20151
- "multiple": false,
20152
- "type": "option"
20153
- },
20154
- "from-changes": {
20155
- "description": "Build metadata selections from committed branch changes and staged index files",
20156
- "name": "from-changes",
20157
- "allowNo": false,
20158
- "type": "boolean"
20159
- },
20160
- "metadata-category": {
20161
- "description": "Optional metadata category",
20162
- "name": "metadata-category",
20163
- "hasDynamicHelp": false,
20164
- "multiple": false,
20165
- "type": "option"
20166
- },
20167
- "metadata-name": {
20168
- "description": "Metadata component name",
20169
- "name": "metadata-name",
20170
- "hasDynamicHelp": false,
20171
- "multiple": false,
20172
- "type": "option"
20173
- },
20174
- "metadata-raw-json": {
20175
- "description": "Optional raw metadata JSON for the selection",
20176
- "name": "metadata-raw-json",
20177
- "hasDynamicHelp": false,
20178
- "multiple": false,
20179
- "type": "option"
20180
- },
20181
- "metadata-type": {
20182
- "description": "Metadata type, for example ApexClass",
20183
- "name": "metadata-type",
20184
- "hasDynamicHelp": false,
20185
- "multiple": false,
20186
- "type": "option"
20187
- },
20188
- "module-type": {
20189
- "description": "Optional addon module type",
20190
- "name": "module-type",
20191
- "hasDynamicHelp": false,
20192
- "multiple": false,
20193
- "options": [
20194
- "vlocity",
20195
- "data_cloud"
20196
- ],
20197
- "type": "option"
20198
- },
20199
- "pipeline-id": {
20200
- "description": "Pipeline Id",
20201
- "name": "pipeline-id",
20202
- "hasDynamicHelp": false,
20203
- "multiple": false,
20204
- "type": "option"
20205
- },
20206
- "platform-experience": {
20207
- "description": "Gateway platform experience header",
20208
- "name": "platform-experience",
20209
- "default": "salesforce",
20210
- "hasDynamicHelp": false,
20211
- "multiple": false,
20212
- "options": [
20213
- "salesforce",
20214
- "sfdx",
20215
- "metacache",
20216
- "db"
20217
- ],
20218
- "type": "option"
20219
- },
20220
- "result-id": {
20221
- "description": "Optional result Id from a prior metadata operation",
20222
- "name": "result-id",
20223
- "hasDynamicHelp": false,
20224
- "multiple": false,
20225
- "type": "option"
20226
- },
20227
- "retrieve-mode": {
20228
- "description": "Dependency retrieve mode",
20229
- "name": "retrieve-mode",
20230
- "hasDynamicHelp": false,
20231
- "multiple": false,
20232
- "options": [
20233
- "all",
20234
- "diff_only"
20235
- ],
20236
- "type": "option"
20237
- },
20238
- "source-credential-id": {
20239
- "description": "Source org credential Id",
20240
- "name": "source-credential-id",
20241
- "hasDynamicHelp": false,
20242
- "multiple": false,
20243
- "type": "option"
20244
- },
20245
- "source-org-id": {
20246
- "description": "Source org Id",
20247
- "name": "source-org-id",
20248
- "hasDynamicHelp": false,
20249
- "multiple": false,
20250
- "type": "option"
20251
- },
20252
- "stdin": {
20253
- "description": "Read a JSON dependency request body from stdin",
20254
- "name": "stdin",
20255
- "allowNo": false,
20256
- "type": "boolean"
20257
- },
20258
- "target-org-id": {
20259
- "description": "Target org Id",
20260
- "name": "target-org-id",
20261
- "hasDynamicHelp": false,
20262
- "multiple": false,
20263
- "type": "option"
20264
- }
20265
- },
20266
- "hasDynamicHelp": false,
20267
- "hiddenAliases": [],
20268
- "id": "cicd:metadata:dependency:list",
20269
- "pluginAlias": "@copado/agentia-cli",
20270
- "pluginName": "@copado/agentia-cli",
20271
- "pluginType": "core",
20272
- "strict": true,
20273
- "enableJsonFlag": true,
20274
- "experimental": false,
20275
- "isESM": true,
20276
- "relativePath": [
20277
- "dist",
20278
- "commands",
20279
- "cicd",
20280
- "metadata",
20281
- "dependency",
20282
- "list.js"
20283
- ]
20284
- },
20285
20700
  "cicd:repository:auth:https:configure": {
20286
20701
  "aliases": [],
20287
20702
  "args": {
@@ -20433,5 +20848,5 @@
20433
20848
  ]
20434
20849
  }
20435
20850
  },
20436
- "version": "1.0.0-rc.0"
20851
+ "version": "1.1.0"
20437
20852
  }