@copado/agentia-cli 1.0.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 (42) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/README.md +481 -278
  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 +1 -1
  14. package/dist/lib/extension/assets.js +4 -0
  15. package/dist/lib/extension/create.js +3 -0
  16. package/dist/lib/extension/git.js +17 -0
  17. package/dist/lib/extension/index.js +27 -0
  18. package/dist/lib/extension/install.js +4 -0
  19. package/dist/lib/extension/manifest.js +21 -0
  20. package/dist/lib/extension/package.js +3 -0
  21. package/dist/lib/extension/paths.js +5 -0
  22. package/dist/lib/extension/publish.js +3 -0
  23. package/dist/lib/extension/sf-deploy.js +8 -0
  24. package/dist/lib/extension/source.js +7 -0
  25. package/dist/lib/extension/uninstall.js +3 -0
  26. package/dist/lib/function-types.js +3 -1
  27. package/dist/lib/mcp/work-tools.js +19 -6
  28. package/dist/lib/project-setup.js +5 -4
  29. package/dist/lib/runtime.js +1 -1
  30. package/dist/lib/setup-skills.js +4 -1
  31. package/dist/lib/setup-templates.js +1 -4
  32. package/dist/lib/template-types.js +3 -1
  33. package/dist/lib/work-committed-metadata.js +4 -0
  34. package/dist/lib/work-get.js +2 -1
  35. package/oclif.manifest.json +414 -7
  36. package/package.json +1 -1
  37. package/templates/rules/cursor/agentia.mdc +29 -0
  38. package/templates/skills/agentia/SKILL.md +29 -0
  39. package/templates/skills/agentia-cicd/SKILL.md +3 -1
  40. package/templates/skills/agentia-cicd/references/extensions.md +49 -0
  41. package/templates/skills/agentia-cicd/references/work.md +6 -4
  42. package/templates/AGENTS.md +0 -24
@@ -1,4 +1,5 @@
1
1
  import {modules} from './runtime.js';
2
+ const SETUP_RULES_MANAGED_MARKER = modules["setup-skills.js"]["SETUP_RULES_MANAGED_MARKER"]
2
3
  const SETUP_SKILL_MANAGED_MARKER = modules["setup-skills.js"]["SETUP_SKILL_MANAGED_MARKER"]
3
4
  const SETUP_SKILL_PACKS = modules["setup-skills.js"]["SETUP_SKILL_PACKS"]
4
5
  const SETUP_SKILL_TARGETS = modules["setup-skills.js"]["SETUP_SKILL_TARGETS"]
@@ -9,8 +10,10 @@ const resetSetupSkillsDepsForTests = modules["setup-skills.js"]["resetSetupSkill
9
10
  const resolveSelectedSkillPacks = modules["setup-skills.js"]["resolveSelectedSkillPacks"]
10
11
  const resolveSetupSkillTarget = modules["setup-skills.js"]["resolveSetupSkillTarget"]
11
12
  const resolveSetupSkillTargets = modules["setup-skills.js"]["resolveSetupSkillTargets"]
13
+ const rulesDestinationForTarget = modules["setup-skills.js"]["rulesDestinationForTarget"]
14
+ const runSetupRules = modules["setup-skills.js"]["runSetupRules"]
12
15
  const runSetupSkills = modules["setup-skills.js"]["runSetupSkills"]
13
16
  const setSetupSkillsDepsForTests = modules["setup-skills.js"]["setSetupSkillsDepsForTests"]
14
17
  const skillDirectoryForPack = modules["setup-skills.js"]["skillDirectoryForPack"]
15
18
  const skillRootDirectory = modules["setup-skills.js"]["skillRootDirectory"]
16
- export {SETUP_SKILL_MANAGED_MARKER, SETUP_SKILL_PACKS, SETUP_SKILL_TARGETS, formatSetupSkillPack, isSetupSkillPack, isSetupSkillTarget, resetSetupSkillsDepsForTests, resolveSelectedSkillPacks, resolveSetupSkillTarget, resolveSetupSkillTargets, runSetupSkills, setSetupSkillsDepsForTests, skillDirectoryForPack, skillRootDirectory};
19
+ export {SETUP_RULES_MANAGED_MARKER, SETUP_SKILL_MANAGED_MARKER, SETUP_SKILL_PACKS, SETUP_SKILL_TARGETS, formatSetupSkillPack, isSetupSkillPack, isSetupSkillTarget, resetSetupSkillsDepsForTests, resolveSelectedSkillPacks, resolveSetupSkillTarget, resolveSetupSkillTargets, rulesDestinationForTarget, runSetupRules, runSetupSkills, setSetupSkillsDepsForTests, skillDirectoryForPack, skillRootDirectory};
@@ -1,13 +1,10 @@
1
1
  import {modules} from './runtime.js';
2
- const AGENTIA_AGENTS_END_MARKER = modules["setup-templates.js"]["AGENTIA_AGENTS_END_MARKER"]
3
- const AGENTIA_AGENTS_START_MARKER = modules["setup-templates.js"]["AGENTIA_AGENTS_START_MARKER"]
4
2
  const AGENTIA_APEX_TESTS_GITIGNORE_ENTRY = modules["setup-templates.js"]["AGENTIA_APEX_TESTS_GITIGNORE_ENTRY"]
5
3
  const AGENTIA_DIR_GITIGNORE_ENTRIES = modules["setup-templates.js"]["AGENTIA_DIR_GITIGNORE_ENTRIES"]
6
4
  const AGENTIA_GITIGNORE_ENTRIES = modules["setup-templates.js"]["AGENTIA_GITIGNORE_ENTRIES"]
7
5
  const AGENTIA_GITIGNORE_ENTRY = modules["setup-templates.js"]["AGENTIA_GITIGNORE_ENTRY"]
8
6
  const AGENTIA_IDEX_GITIGNORE_ENTRY = modules["setup-templates.js"]["AGENTIA_IDEX_GITIGNORE_ENTRY"]
9
- const BUNDLED_AGENTS_MD = modules["setup-templates.js"]["BUNDLED_AGENTS_MD"]
10
7
  const SAMPLE_QUALITY_GATES_UNIX = modules["setup-templates.js"]["SAMPLE_QUALITY_GATES_UNIX"]
11
8
  const SAMPLE_QUALITY_GATES_WINDOWS = modules["setup-templates.js"]["SAMPLE_QUALITY_GATES_WINDOWS"]
12
9
  const qualityGatesExplanation = modules["setup-templates.js"]["qualityGatesExplanation"]
13
- export {AGENTIA_AGENTS_END_MARKER, AGENTIA_AGENTS_START_MARKER, AGENTIA_APEX_TESTS_GITIGNORE_ENTRY, AGENTIA_DIR_GITIGNORE_ENTRIES, AGENTIA_GITIGNORE_ENTRIES, AGENTIA_GITIGNORE_ENTRY, AGENTIA_IDEX_GITIGNORE_ENTRY, BUNDLED_AGENTS_MD, SAMPLE_QUALITY_GATES_UNIX, SAMPLE_QUALITY_GATES_WINDOWS, qualityGatesExplanation};
10
+ export {AGENTIA_APEX_TESTS_GITIGNORE_ENTRY, AGENTIA_DIR_GITIGNORE_ENTRIES, AGENTIA_GITIGNORE_ENTRIES, AGENTIA_GITIGNORE_ENTRY, AGENTIA_IDEX_GITIGNORE_ENTRY, SAMPLE_QUALITY_GATES_UNIX, SAMPLE_QUALITY_GATES_WINDOWS, qualityGatesExplanation};
@@ -3,6 +3,8 @@ const TEMPLATES_API_BASE = modules["template-types.js"]["TEMPLATES_API_BASE"]
3
3
  const TEMPLATE_API_NAME_REGEX = modules["template-types.js"]["TEMPLATE_API_NAME_REGEX"]
4
4
  const TEMPLATE_DISK_DIR = modules["template-types.js"]["TEMPLATE_DISK_DIR"]
5
5
  const TEMPLATE_LIST_TYPES = modules["template-types.js"]["TEMPLATE_LIST_TYPES"]
6
+ const TEMPLATE_STEP_RESPONSE_ONLY_KEYS = modules["template-types.js"]["TEMPLATE_STEP_RESPONSE_ONLY_KEYS"]
7
+ const TEMPLATE_UPSERT_RESPONSE_ONLY_KEYS = modules["template-types.js"]["TEMPLATE_UPSERT_RESPONSE_ONLY_KEYS"]
6
8
  const assertValidTemplateApiName = modules["template-types.js"]["assertValidTemplateApiName"]
7
9
  const defaultTemplateDiskPath = modules["template-types.js"]["defaultTemplateDiskPath"]
8
10
  const diskDocumentToTemplateInput = modules["template-types.js"]["diskDocumentToTemplateInput"]
@@ -18,4 +20,4 @@ const templateEndpoint = modules["template-types.js"]["templateEndpoint"]
18
20
  const templateToDiskDocument = modules["template-types.js"]["templateToDiskDocument"]
19
21
  const templatesEndpoint = modules["template-types.js"]["templatesEndpoint"]
20
22
  const writeTemplateDiskFile = modules["template-types.js"]["writeTemplateDiskFile"]
21
- export {TEMPLATES_API_BASE, TEMPLATE_API_NAME_REGEX, TEMPLATE_DISK_DIR, TEMPLATE_LIST_TYPES, assertValidTemplateApiName, defaultTemplateDiskPath, diskDocumentToTemplateInput, formatTemplateDetail, formatTemplateTable, normalizeTemplate, normalizeTemplateUpsertPayload, normalizeTemplatesList, normalizeTemplatesListPage, resolveTemplateOutputPath, templateDefaultsEndpoint, templateEndpoint, templateToDiskDocument, templatesEndpoint, writeTemplateDiskFile};
23
+ export {TEMPLATES_API_BASE, TEMPLATE_API_NAME_REGEX, TEMPLATE_DISK_DIR, TEMPLATE_LIST_TYPES, TEMPLATE_STEP_RESPONSE_ONLY_KEYS, TEMPLATE_UPSERT_RESPONSE_ONLY_KEYS, assertValidTemplateApiName, defaultTemplateDiskPath, diskDocumentToTemplateInput, formatTemplateDetail, formatTemplateTable, normalizeTemplate, normalizeTemplateUpsertPayload, normalizeTemplatesList, normalizeTemplatesListPage, resolveTemplateOutputPath, templateDefaultsEndpoint, templateEndpoint, templateToDiskDocument, templatesEndpoint, writeTemplateDiskFile};
@@ -0,0 +1,4 @@
1
+ import {modules} from './runtime.js';
2
+ const fetchWorkCommittedMetadata = modules["work-committed-metadata.js"]["fetchWorkCommittedMetadata"]
3
+ const formatCommittedMetadataSection = modules["work-committed-metadata.js"]["formatCommittedMetadataSection"]
4
+ export {fetchWorkCommittedMetadata, formatCommittedMetadataSection};
@@ -1,4 +1,5 @@
1
1
  import {modules} from './runtime.js';
2
2
  const fetchWorkItem = modules["work-get.js"]["fetchWorkItem"]
3
+ const fetchWorkItemWithOptions = modules["work-get.js"]["fetchWorkItemWithOptions"]
3
4
  const fetchWorkItems = modules["work-get.js"]["fetchWorkItems"]
4
- export {fetchWorkItem, fetchWorkItems};
5
+ export {fetchWorkItem, fetchWorkItemWithOptions, fetchWorkItems};
@@ -33,7 +33,7 @@
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. 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.",
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
38
  "<%= config.bin %> <%= command.id %>",
39
39
  "<%= config.bin %> <%= command.id %> --skip-auth"
@@ -3104,7 +3104,7 @@
3104
3104
  "required": false
3105
3105
  }
3106
3106
  },
3107
- "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).",
3108
3108
  "examples": [
3109
3109
  "<%= config.bin %> <%= command.id %> --message \"Commit AccountService\" --metadata-name AccountService --metadata-type ApexClass --metadata-category SFDX --action Add",
3110
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",
@@ -3177,7 +3177,7 @@
3177
3177
  "type": "option"
3178
3178
  },
3179
3179
  "metadata-category": {
3180
- "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.",
3181
3181
  "name": "metadata-category",
3182
3182
  "hasDynamicHelp": false,
3183
3183
  "multiple": false,
@@ -3947,6 +3947,405 @@
3947
3947
  "update.js"
3948
3948
  ]
3949
3949
  },
3950
+ "cicd:extension:create": {
3951
+ "aliases": [],
3952
+ "args": {},
3953
+ "description": "Create or refresh a Copado extension manifest at copado/extension_manifest.json (scans copado/functions and copado/templates)",
3954
+ "examples": [
3955
+ "<%= config.bin %> <%= command.id %> --name my-extension --version 1.0.0",
3956
+ "<%= config.bin %> <%= command.id %> --name my-extension --overwrite --json"
3957
+ ],
3958
+ "flags": {
3959
+ "json": {
3960
+ "description": "Format output as json.",
3961
+ "helpGroup": "GLOBAL",
3962
+ "name": "json",
3963
+ "allowNo": false,
3964
+ "type": "boolean"
3965
+ },
3966
+ "name": {
3967
+ "char": "n",
3968
+ "description": "Extension name (alphanumeric, underscore, hyphen)",
3969
+ "name": "name",
3970
+ "required": true,
3971
+ "hasDynamicHelp": false,
3972
+ "multiple": false,
3973
+ "type": "option"
3974
+ },
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,
3985
+ "hasDynamicHelp": false,
3986
+ "multiple": false,
3987
+ "type": "option"
3988
+ }
3989
+ },
3990
+ "hasDynamicHelp": false,
3991
+ "hiddenAliases": [],
3992
+ "id": "cicd:extension:create",
3993
+ "pluginAlias": "@copado/agentia-cli",
3994
+ "pluginName": "@copado/agentia-cli",
3995
+ "pluginType": "core",
3996
+ "strict": true,
3997
+ "enableJsonFlag": true,
3998
+ "experimental": true,
3999
+ "isESM": true,
4000
+ "relativePath": [
4001
+ "dist",
4002
+ "commands",
4003
+ "cicd",
4004
+ "extension",
4005
+ "create.js"
4006
+ ]
4007
+ },
4008
+ "cicd:extension:install": {
4009
+ "aliases": [],
4010
+ "args": {
4011
+ "source": {
4012
+ "description": "Git repository URL, owner/repo slug, or local directory path",
4013
+ "name": "source",
4014
+ "required": false
4015
+ }
4016
+ },
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",
4018
+ "examples": [
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"
4023
+ ],
4024
+ "flags": {
4025
+ "json": {
4026
+ "description": "Format output as json.",
4027
+ "helpGroup": "GLOBAL",
4028
+ "name": "json",
4029
+ "allowNo": false,
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"
4097
+ }
4098
+ },
4099
+ "hasDynamicHelp": false,
4100
+ "hiddenAliases": [],
4101
+ "id": "cicd:extension:install",
4102
+ "pluginAlias": "@copado/agentia-cli",
4103
+ "pluginName": "@copado/agentia-cli",
4104
+ "pluginType": "core",
4105
+ "strict": true,
4106
+ "enableJsonFlag": true,
4107
+ "experimental": true,
4108
+ "isESM": true,
4109
+ "relativePath": [
4110
+ "dist",
4111
+ "commands",
4112
+ "cicd",
4113
+ "extension",
4114
+ "install.js"
4115
+ ]
4116
+ },
4117
+ "cicd:extension:package": {
4118
+ "aliases": [],
4119
+ "args": {},
4120
+ "description": "Validate a Copado extension for publish (requires semver version; optional --version bump)",
4121
+ "examples": [
4122
+ "<%= config.bin %> <%= command.id %>",
4123
+ "<%= config.bin %> <%= command.id %> --version 1.2.0 --json"
4124
+ ],
4125
+ "flags": {
4126
+ "json": {
4127
+ "description": "Format output as json.",
4128
+ "helpGroup": "GLOBAL",
4129
+ "name": "json",
4130
+ "allowNo": false,
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"
4140
+ }
4141
+ },
4142
+ "hasDynamicHelp": false,
4143
+ "hiddenAliases": [],
4144
+ "id": "cicd:extension:package",
4145
+ "pluginAlias": "@copado/agentia-cli",
4146
+ "pluginName": "@copado/agentia-cli",
4147
+ "pluginType": "core",
4148
+ "strict": true,
4149
+ "enableJsonFlag": true,
4150
+ "experimental": true,
4151
+ "isESM": true,
4152
+ "relativePath": [
4153
+ "dist",
4154
+ "commands",
4155
+ "cicd",
4156
+ "extension",
4157
+ "package.js"
4158
+ ]
4159
+ },
4160
+ "cicd:extension:publish": {
4161
+ "aliases": [],
4162
+ "args": {},
4163
+ "description": "Push the current extension commit and create an annotated semver git tag (vX.Y.Z) for install pinning",
4164
+ "examples": [
4165
+ "<%= config.bin %> <%= command.id %>",
4166
+ "<%= config.bin %> <%= command.id %> --version 1.2.0 --remote origin --json",
4167
+ "<%= config.bin %> <%= command.id %> --version 0.1.0 --local --force"
4168
+ ],
4169
+ "flags": {
4170
+ "json": {
4171
+ "description": "Format output as json.",
4172
+ "helpGroup": "GLOBAL",
4173
+ "name": "json",
4174
+ "allowNo": false,
4175
+ "type": "boolean"
4176
+ },
4177
+ "allow-dirty": {
4178
+ "description": "Allow publish with a dirty working tree",
4179
+ "name": "allow-dirty",
4180
+ "allowNo": false,
4181
+ "type": "boolean"
4182
+ },
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"
4188
+ },
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"
4194
+ },
4195
+ "remote": {
4196
+ "description": "Git remote to push (default origin; ignored with --local)",
4197
+ "name": "remote",
4198
+ "default": "origin",
4199
+ "hasDynamicHelp": false,
4200
+ "multiple": false,
4201
+ "type": "option"
4202
+ },
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,
4207
+ "hasDynamicHelp": false,
4208
+ "multiple": false,
4209
+ "type": "option"
4210
+ }
4211
+ },
4212
+ "hasDynamicHelp": false,
4213
+ "hiddenAliases": [],
4214
+ "id": "cicd:extension:publish",
4215
+ "pluginAlias": "@copado/agentia-cli",
4216
+ "pluginName": "@copado/agentia-cli",
4217
+ "pluginType": "core",
4218
+ "strict": true,
4219
+ "enableJsonFlag": true,
4220
+ "experimental": true,
4221
+ "isESM": true,
4222
+ "relativePath": [
4223
+ "dist",
4224
+ "commands",
4225
+ "cicd",
4226
+ "extension",
4227
+ "publish.js"
4228
+ ]
4229
+ },
4230
+ "cicd:extension:uninstall": {
4231
+ "aliases": [],
4232
+ "args": {
4233
+ "source": {
4234
+ "description": "Git repository URL, owner/repo slug, or local directory path",
4235
+ "name": "source",
4236
+ "required": false
4237
+ }
4238
+ },
4239
+ "description": "Uninstall a Copado extension by deleting the functions and job templates listed in its manifest from the authenticated Copado org",
4240
+ "examples": [
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"
4243
+ ],
4244
+ "flags": {
4245
+ "json": {
4246
+ "description": "Format output as json.",
4247
+ "helpGroup": "GLOBAL",
4248
+ "name": "json",
4249
+ "allowNo": false,
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"
4288
+ }
4289
+ },
4290
+ "hasDynamicHelp": false,
4291
+ "hiddenAliases": [],
4292
+ "id": "cicd:extension:uninstall",
4293
+ "pluginAlias": "@copado/agentia-cli",
4294
+ "pluginName": "@copado/agentia-cli",
4295
+ "pluginType": "core",
4296
+ "strict": true,
4297
+ "enableJsonFlag": true,
4298
+ "experimental": true,
4299
+ "isESM": true,
4300
+ "relativePath": [
4301
+ "dist",
4302
+ "commands",
4303
+ "cicd",
4304
+ "extension",
4305
+ "uninstall.js"
4306
+ ]
4307
+ },
4308
+ "cicd:extension:validate": {
4309
+ "aliases": [],
4310
+ "args": {},
4311
+ "description": "Validate a Copado extension manifest against copado/functions and copado/templates on disk",
4312
+ "examples": [
4313
+ "<%= config.bin %> <%= command.id %>",
4314
+ "<%= config.bin %> <%= command.id %> --require-version --json"
4315
+ ],
4316
+ "flags": {
4317
+ "json": {
4318
+ "description": "Format output as json.",
4319
+ "helpGroup": "GLOBAL",
4320
+ "name": "json",
4321
+ "allowNo": false,
4322
+ "type": "boolean"
4323
+ },
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
+ },
3950
4349
  "cicd:function:defaults": {
3951
4350
  "aliases": [],
3952
4351
  "args": {},
@@ -7624,7 +8023,7 @@
7624
8023
  "type": "option"
7625
8024
  },
7626
8025
  "metadata-category": {
7627
- "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.",
7628
8027
  "name": "metadata-category",
7629
8028
  "hasDynamicHelp": false,
7630
8029
  "multiple": false,
@@ -8122,6 +8521,8 @@
8122
8521
  "<%= config.bin %> <%= command.id %>",
8123
8522
  "<%= config.bin %> <%= command.id %> a0SKC000000CmZ2AU",
8124
8523
  "<%= config.bin %> <%= command.id %> a0SKC000000CmZ2AU --json",
8524
+ "<%= config.bin %> <%= command.id %> a0SKC000000CmZ2AU --committed-metadata",
8525
+ "<%= config.bin %> <%= command.id %> a0SKC000000CmZ2AU --committed-metadata --json",
8125
8526
  "<%= config.bin %> <%= command.id %> a0SKC000000CmZ2AU --user-stories-ahead-behind",
8126
8527
  "<%= config.bin %> <%= command.id %> a0SKC000000CmZ2AU --user-stories-ahead-behind --json"
8127
8528
  ],
@@ -8133,6 +8534,12 @@
8133
8534
  "allowNo": false,
8134
8535
  "type": "boolean"
8135
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
+ },
8136
8543
  "user-stories-ahead-behind": {
8137
8544
  "description": "When the user story has a pipeline and source environment, compare user stories ahead of and behind the next pipeline environment",
8138
8545
  "name": "user-stories-ahead-behind",
@@ -9092,7 +9499,7 @@
9092
9499
  "type": "boolean"
9093
9500
  },
9094
9501
  "force": {
9095
- "description": "Replace conflicting unmanaged Agentia skill files",
9502
+ "description": "Replace conflicting unmanaged Agentia skill or rules files",
9096
9503
  "name": "force",
9097
9504
  "allowNo": false,
9098
9505
  "type": "boolean"
@@ -9179,7 +9586,7 @@
9179
9586
  "type": "boolean"
9180
9587
  },
9181
9588
  "force": {
9182
- "description": "Replace conflicting unmanaged Agentia skill files",
9589
+ "description": "Replace conflicting unmanaged Agentia skill or rules files",
9183
9590
  "name": "force",
9184
9591
  "allowNo": false,
9185
9592
  "type": "boolean"
@@ -20441,5 +20848,5 @@
20441
20848
  ]
20442
20849
  }
20443
20850
  },
20444
- "version": "1.0.0"
20851
+ "version": "1.1.0"
20445
20852
  }
package/package.json CHANGED
@@ -235,7 +235,7 @@
235
235
  }
236
236
  },
237
237
  "type": "module",
238
- "version": "1.0.0",
238
+ "version": "1.1.0",
239
239
  "x-agentia-protected-build": true,
240
240
  "x-agentia-protected-files": [
241
241
  "dist/lib/runtime.js"
@@ -0,0 +1,29 @@
1
+ ---
2
+ description: Use Agentia for Copado CICD, Testing, AI, and advanced pipeline workflows
3
+ alwaysApply: false
4
+ ---
5
+
6
+ <!-- Agentia managed rules: agentia setup skills -->
7
+
8
+ # Agentia CLI
9
+
10
+ Use Agentia to manage Copado work items. Prefer registered Agentia MCP tools; otherwise use the CLI with `--json`.
11
+
12
+ Authentication must be configured before operational commands. Never print credentials, tokens, or unmasked environment variables.
13
+
14
+ ## Copado workflow
15
+
16
+ `list → get → set → (implement & git commit) → test → publish → submit [--done|--deploy]`
17
+
18
+ Read records before changing them and use IDs returned by Copado. Do not skip `work set` before coding; use one story per feature branch. Keep the working tree clean for lifecycle commands, and confirm promotion/deployment intent before `done`.
19
+
20
+ ## Agent Skills
21
+
22
+ Load exactly one copy of each applicable installed Agentia skill:
23
+
24
+ - `agentia-cicd`: Copado stories, commits, publish, submit, done, promotions, jobs, Functions, Job Templates, environments, pipelines, Slack notification configure, and data.
25
+ - `agentia-testing`: Copado Robotic Testing operations.
26
+ - `agentia-ai`: Copado AI operations.
27
+ - `agentia-adv`: advanced pipeline workflows.
28
+
29
+ Project-specific instructions take precedence over managed Agentia skills. Refresh managed skills with `agentia setup skills update`; do not hand-edit managed files.
@@ -0,0 +1,29 @@
1
+ ---
2
+ name: agentia
3
+ description: Use when working with Agentia or Copado CICD, Robotic Testing, AI, pipelines, user stories, commits, promotions, deployments, jobs, environments, credentials, or data templates.
4
+ ---
5
+
6
+ <!-- Agentia managed skill file: agentia setup skills -->
7
+
8
+ # Agentia CLI
9
+
10
+ Use Agentia to manage Copado work items. Prefer registered Agentia MCP tools; otherwise use the CLI with `--json`.
11
+
12
+ Authentication must be configured before operational commands. Never print credentials, tokens, or unmasked environment variables.
13
+
14
+ ## Copado workflow
15
+
16
+ `list → get → set → (implement & git commit) → test → publish → submit [--done|--deploy]`
17
+
18
+ Read records before changing them and use IDs returned by Copado. Do not skip `work set` before coding; use one story per feature branch. Keep the working tree clean for lifecycle commands, and confirm promotion/deployment intent before `done`.
19
+
20
+ ## Agent Skills
21
+
22
+ Use the applicable installed domain skill for detailed instructions:
23
+
24
+ - `agentia-cicd`: Copado stories, commits, publish, submit, done, promotions, jobs, Functions, Job Templates, environments, pipelines, Slack notification configure, and data.
25
+ - `agentia-testing`: Copado Robotic Testing operations.
26
+ - `agentia-ai`: Copado AI operations.
27
+ - `agentia-adv`: advanced pipeline workflows.
28
+
29
+ Project-specific instructions take precedence over managed Agentia skills. Refresh managed skills with `agentia setup skills update`; do not hand-edit managed files.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: agentia-cicd
3
- description: Use this skill when managing Copado CICD work with the Agentia CLI or Agentia MCP tools: user stories (including current/active story context), cloud commit/promote, work publish/submit/done, promotion runs and conflicts, job executions, Copado Functions, Job Templates, environments, credentials, pipelines, stages, Slack pipeline notification subscriptions, and release data templates. Use it whenever the user asks an agent to operate Copado CICD from a terminal, IDE, or headless workflow.
3
+ description: Use this skill when managing Copado CICD work with the Agentia CLI or Agentia MCP tools: user stories (including current/active story context), cloud commit/promote, work publish/submit/done, promotion runs and conflicts, job executions, Copado Functions, Job Templates, git-hosted CICD extensions, environments, credentials, pipelines, stages, Slack pipeline notification subscriptions, and release data templates. Use it whenever the user asks an agent to operate Copado CICD from a terminal, IDE, or headless workflow.
4
4
  ---
5
5
 
6
6
  <!-- Agentia managed skill file: agentia setup skills -->
@@ -24,6 +24,7 @@ Prefer Agentia MCP tools when they are available and match the task. Use CLI exa
24
24
  - Promotion lookup, run, resume, merge conflicts, and story-centric promotion: [references/promotions.md](references/promotions.md)
25
25
  - Copado JobExecution lookup, actions, logs, and monitoring: [references/jobs.md](references/jobs.md)
26
26
  - Copado Functions lifecycle, remote run/results, and local Docker run: [references/functions.md](references/functions.md)
27
+ - Git-hosted Copado CICD extensions (`cicd extension`, experimental): [references/extensions.md](references/extensions.md)
27
28
  - Copado Job Templates (`cicd template`, not data templates): [references/templates.md](references/templates.md)
28
29
  - Copado environments, environment credentials, and browser authentication: [references/environments-and-credentials.md](references/environments-and-credentials.md)
29
30
  - Pipelines, environment connections, stages, and stage connections: [references/pipelines.md](references/pipelines.md)
@@ -38,6 +39,7 @@ Prefer Agentia MCP tools when they are available and match the task. Use CLI exa
38
39
  - For local project work, keep the tracked working tree clean before commands that require it: `work set`, `work publish`, and `work submit`. If `work set` returns `status: "warning"`, show the message and do not assume a feature branch was created; branch keys are cleared and the work item id/name/title are still recorded in config.user.json.
39
40
  - Treat `cicd job` as Copado CICD JobExecution. It is different from CRT `testing job`.
40
41
  - Treat `cicd function` as Copado Function definitions and runs. It is different from JobExecution (`cicd job`) and Job Templates (`cicd template`).
42
+ - Treat `cicd extension` as experimental git-hosted packaging of Functions/Templates (plus optional `force-app`). It is different from per-asset `cicd function` / `cicd template` upserts.
41
43
  - Treat `cicd template` as Copado Job Templates via `/release/jobs/templates`. It is different from Release Data Templates (`cicd data template`).
42
44
  - Treat `cicd work test` as local quality gates (`--local` is the default). It is different from CRT `testing test run`.
43
45
  - Treat `cicd work test apex` as the Apex test runner that local quality gates (`.agentia_quality_gates.*`) usually call. An empty `--apex-test-classes` list skips Salesforce CLI. It can also be invoked directly. It is different from CRT.