@iamramo/zanat-cli 0.5.4 → 0.5.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -10,14 +10,14 @@ npm install -g @iamramo/zanat-cli
10
10
 
11
11
  ## Commands
12
12
 
13
- | Command | Description | Usage |
14
- | -------- | ----------------------------------------------------------- | ------------------------------------ |
15
- | `init` | Initialize zanat configuration and clone the hub repository | `zanat init` |
16
- | `sync` | Pull the latest changes from the hub repository | `zanat sync` |
17
- | `search` | Search for available skills in the hub | `zanat search [query]` |
18
- | `add` | Add a skill to your local skills | `zanat add <source>/<skill-name>` |
19
- | `remove` | Remove a skill from your local skills | `zanat remove <source>/<skill-name>` |
20
- | `list` | List all added skills | `zanat list` |
13
+ | Command | Description | Usage |
14
+ | -------- | ----------------------------------------------------------- | ------------------------------------- |
15
+ | `init` | Initialize zanat configuration and clone the hub repository | `zanat init` |
16
+ | `sync` | Pull the latest changes from the hub repository | `zanat sync` |
17
+ | `search` | Search for available skills in the hub | `zanat search [query]` |
18
+ | `add` | Add a skill to your local skills | `zanat add <namespace.skill-name>` |
19
+ | `remove` | Remove a skill from your local skills | `zanat remove <namespace.skill-name>` |
20
+ | `list` | List all added skills | `zanat list` |
21
21
 
22
22
  ## Getting Started
23
23
 
@@ -38,13 +38,19 @@ npm install -g @iamramo/zanat-cli
38
38
  3. **Add a skill:**
39
39
 
40
40
  ```bash
41
- zanat add yurchi/code-review
41
+ zanat add yurchi.code-review
42
+ ```
43
+
44
+ You can also use nested namespaces:
45
+
46
+ ```bash
47
+ zanat add company.team.code-review
42
48
  ```
43
49
 
44
50
  4. **Remove a skill:**
45
51
 
46
52
  ```bash
47
- zanat remove yurchi/code-review
53
+ zanat remove yurchi.code-review
48
54
  ```
49
55
 
50
56
  5. **List added skills:**
package/dist/cli.js CHANGED
@@ -15,11 +15,11 @@ program
15
15
  program.command('sync').description('Sync with the hub repository').action(syncCommand);
16
16
  program
17
17
  .command('add <skill>')
18
- .description('Add a skill (format: source/skill-name)')
18
+ .description('Add a skill (format: namespace.skill-name or namespace.sub.skill-name)')
19
19
  .action(addCommand);
20
20
  program
21
21
  .command('remove <skill>')
22
- .description('Remove a skill (format: source/skill-name)')
22
+ .description('Remove a skill (format: namespace.skill-name or namespace.sub.skill-name)')
23
23
  .action(removeCommand);
24
24
  program.command('list').description('List added skills').action(listCommand);
25
25
  program.command('search [query]').description('Search for skills in the hub').action(searchCommand);
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,WAAW,MAAM,iBAAiB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,2BAA2B,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AAE5F,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,kDAAkD,CAAC;KAC/D,MAAM,CAAC,WAAW,CAAC,CAAC;AAEvB,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,8BAA8B,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AAExF,OAAO;KACJ,OAAO,CAAC,aAAa,CAAC;KACtB,WAAW,CAAC,yCAAyC,CAAC;KACtD,MAAM,CAAC,UAAU,CAAC,CAAC;AAEtB,OAAO;KACJ,OAAO,CAAC,gBAAgB,CAAC;KACzB,WAAW,CAAC,4CAA4C,CAAC;KACzD,MAAM,CAAC,aAAa,CAAC,CAAC;AAEzB,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AAE7E,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,WAAW,CAAC,8BAA8B,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;AAEpG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,4BAA4B,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;AAE1F,OAAO,CAAC,KAAK,EAAE,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,WAAW,MAAM,iBAAiB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,2BAA2B,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AAE5F,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,kDAAkD,CAAC;KAC/D,MAAM,CAAC,WAAW,CAAC,CAAC;AAEvB,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,8BAA8B,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AAExF,OAAO;KACJ,OAAO,CAAC,aAAa,CAAC;KACtB,WAAW,CAAC,wEAAwE,CAAC;KACrF,MAAM,CAAC,UAAU,CAAC,CAAC;AAEtB,OAAO;KACJ,OAAO,CAAC,gBAAgB,CAAC;KACzB,WAAW,CAAC,2EAA2E,CAAC;KACxF,MAAM,CAAC,aAAa,CAAC,CAAC;AAEzB,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AAE7E,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,WAAW,CAAC,8BAA8B,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;AAEpG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,4BAA4B,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;AAE1F,OAAO,CAAC,KAAK,EAAE,CAAC"}
@@ -5,9 +5,9 @@ export const addCommand = async (skillArg) => {
5
5
  logger.info(`Adding skill: ${skillArg}...`);
6
6
  try {
7
7
  await ensureHubExists();
8
- const { source, skillName } = validateSkillArg(skillArg);
9
- await installSkill(source, skillName);
10
- logger.success(`Added zanat.${source}.${skillName}`);
8
+ const { namespace, skillName } = validateSkillArg(skillArg);
9
+ await installSkill(namespace, skillName);
10
+ logger.success(`Added ${skillArg}`);
11
11
  }
12
12
  catch (error) {
13
13
  logger.error('Failed to add', error);
@@ -1 +1 @@
1
- {"version":3,"file":"add.js","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE3E,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,EAAE,QAAgB,EAAiB,EAAE;IAClE,MAAM,CAAC,IAAI,CAAC,iBAAiB,QAAQ,KAAK,CAAC,CAAC;IAE5C,IAAI,CAAC;QACH,MAAM,eAAe,EAAE,CAAC;QACxB,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QACzD,MAAM,YAAY,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAEtC,MAAM,CAAC,OAAO,CAAC,eAAe,MAAM,IAAI,SAAS,EAAE,CAAC,CAAC;IACvD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;QACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC"}
1
+ {"version":3,"file":"add.js","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE3E,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,EAAE,QAAgB,EAAiB,EAAE;IAClE,MAAM,CAAC,IAAI,CAAC,iBAAiB,QAAQ,KAAK,CAAC,CAAC;IAE5C,IAAI,CAAC;QACH,MAAM,eAAe,EAAE,CAAC;QACxB,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAC5D,MAAM,YAAY,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAEzC,MAAM,CAAC,OAAO,CAAC,SAAS,QAAQ,EAAE,CAAC,CAAC;IACtC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;QACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC"}
@@ -5,9 +5,9 @@ export const removeCommand = async (skillArg) => {
5
5
  logger.info(`Removing skill: ${skillArg}...`);
6
6
  try {
7
7
  await ensureHubExists();
8
- const { source, skillName } = validateSkillArg(skillArg);
9
- await removeSkill(source, skillName);
10
- logger.success(`Removed zanat.${source}.${skillName}`);
8
+ const { namespace, skillName } = validateSkillArg(skillArg);
9
+ await removeSkill(namespace, skillName);
10
+ logger.success(`Removed ${skillArg}`);
11
11
  }
12
12
  catch (error) {
13
13
  logger.error('Failed to remove', error);
@@ -1 +1 @@
1
- {"version":3,"file":"remove.js","sourceRoot":"","sources":["../../src/commands/remove.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE3E,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EAAE,QAAgB,EAAiB,EAAE;IACrE,MAAM,CAAC,IAAI,CAAC,mBAAmB,QAAQ,KAAK,CAAC,CAAC;IAE9C,IAAI,CAAC;QACH,MAAM,eAAe,EAAE,CAAC;QACxB,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QACzD,MAAM,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAErC,MAAM,CAAC,OAAO,CAAC,iBAAiB,MAAM,IAAI,SAAS,EAAE,CAAC,CAAC;IACzD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;QACxC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC"}
1
+ {"version":3,"file":"remove.js","sourceRoot":"","sources":["../../src/commands/remove.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE3E,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EAAE,QAAgB,EAAiB,EAAE;IACrE,MAAM,CAAC,IAAI,CAAC,mBAAmB,QAAQ,KAAK,CAAC,CAAC;IAE9C,IAAI,CAAC;QACH,MAAM,eAAe,EAAE,CAAC;QACxB,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAC5D,MAAM,WAAW,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAExC,MAAM,CAAC,OAAO,CAAC,WAAW,QAAQ,EAAE,CAAC,CAAC;IACxC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;QACxC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC"}
@@ -18,13 +18,13 @@ export const searchCommand = async (query) => {
18
18
  return;
19
19
  }
20
20
  results.forEach((skill) => {
21
- console.log(chalk.green('•'), `${skill.source}/${skill.name}`);
21
+ console.log(chalk.green('•'), skill.fullName);
22
22
  logger.dim(` ${skill.description}`);
23
23
  logger.blank();
24
24
  });
25
25
  logger.dim(`Found ${results.length} skill${results.length === 1 ? '' : 's'}`);
26
26
  logger.blank();
27
- logger.dim('Add a skill with: zanat add <source>/<skill-name>');
27
+ logger.dim('Add a skill with: zanat add <namespace.skill-name>');
28
28
  }
29
29
  catch (error) {
30
30
  logger.error('Failed to search', error);
@@ -1 +1 @@
1
- {"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EAAE,KAAc,EAAiB,EAAE;IACnE,IAAI,CAAC;QACH,MAAM,eAAe,EAAE,CAAC;QAExB,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,CAAC,IAAI,CAAC,mBAAmB,KAAK,MAAM,CAAC,CAAC;QAC9C,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QACnC,CAAC;QACD,MAAM,CAAC,KAAK,EAAE,CAAC;QAEf,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,KAAK,CAAC,CAAC;QAE1C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;YAC/B,OAAO;QACT,CAAC;QAED,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YACxB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;YAC/D,MAAM,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;YACrC,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,GAAG,CAAC,SAAS,OAAO,CAAC,MAAM,SAAS,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;QAC9E,MAAM,CAAC,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC;IAClE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;QACxC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC"}
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EAAE,KAAc,EAAiB,EAAE;IACnE,IAAI,CAAC;QACH,MAAM,eAAe,EAAE,CAAC;QAExB,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,CAAC,IAAI,CAAC,mBAAmB,KAAK,MAAM,CAAC,CAAC;QAC9C,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QACnC,CAAC;QACD,MAAM,CAAC,KAAK,EAAE,CAAC;QAEf,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,KAAK,CAAC,CAAC;QAE1C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;YAC/B,OAAO;QACT,CAAC;QAED,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YACxB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;YAC9C,MAAM,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;YACrC,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,GAAG,CAAC,SAAS,OAAO,CAAC,MAAM,SAAS,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;QAC9E,MAAM,CAAC,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC;IACnE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;QACxC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { z } from 'zod';
2
+ export declare const SegmentNameSchema: z.ZodString;
3
+ //# sourceMappingURL=segment-name.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"segment-name.d.ts","sourceRoot":"","sources":["../../src/schemas/segment-name.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,iBAAiB,aAQ3B,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { z } from 'zod';
2
+ import { STARTS_WITH_LOWERCASE, ALLOWED_CHARS_ONLY, MIN_LENGTH, MAX_LENGTH } from './common.js';
3
+ export const SegmentNameSchema = z
4
+ .string()
5
+ .min(MIN_LENGTH, `Segment must be at least ${MIN_LENGTH} characters`)
6
+ .max(MAX_LENGTH, `Segment must be at most ${MAX_LENGTH} characters`)
7
+ .regex(STARTS_WITH_LOWERCASE, 'Segment must start with a lowercase letter')
8
+ .regex(ALLOWED_CHARS_ONLY, 'Segment can only contain lowercase letters, numbers, hyphens, and underscores');
9
+ //# sourceMappingURL=segment-name.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"segment-name.js","sourceRoot":"","sources":["../../src/schemas/segment-name.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEhG,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC;KAC/B,MAAM,EAAE;KACR,GAAG,CAAC,UAAU,EAAE,4BAA4B,UAAU,aAAa,CAAC;KACpE,GAAG,CAAC,UAAU,EAAE,2BAA2B,UAAU,aAAa,CAAC;KACnE,KAAK,CAAC,qBAAqB,EAAE,4CAA4C,CAAC;KAC1E,KAAK,CACJ,kBAAkB,EAClB,+EAA+E,CAChF,CAAC"}
@@ -1,9 +1,9 @@
1
1
  import { z } from 'zod';
2
2
  export declare const SkillArgSchema: z.ZodPipe<z.ZodPipe<z.ZodString, z.ZodTransform<{
3
- source: string | undefined;
3
+ namespace: string[];
4
4
  skillName: string | undefined;
5
5
  }, string>>, z.ZodObject<{
6
- source: z.ZodString;
6
+ namespace: z.ZodArray<z.ZodString>;
7
7
  skillName: z.ZodString;
8
8
  }, z.core.$strip>>;
9
9
  export type SkillArg = z.infer<typeof SkillArgSchema>;
@@ -1 +1 @@
1
- {"version":3,"file":"skill-arg.d.ts","sourceRoot":"","sources":["../../src/schemas/skill-arg.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,cAAc;;;;;;kBAcxB,CAAC;AAEJ,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC"}
1
+ {"version":3,"file":"skill-arg.d.ts","sourceRoot":"","sources":["../../src/schemas/skill-arg.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,cAAc;;;;;;kBAqBxB,CAAC;AAEJ,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC"}
@@ -1,17 +1,22 @@
1
1
  import { z } from 'zod';
2
- import { SourceNameSchema } from './source-name.js';
3
- import { SkillNameSchema } from './skill-name.js';
2
+ import { SegmentNameSchema } from './segment-name.js';
4
3
  export const SkillArgSchema = z
5
4
  .string()
6
- .transform((val) => {
7
- const parts = val.split('/');
8
- if (parts.length !== 2) {
9
- throw new Error('Invalid format. Use: source/skill-name (e.g., mycompany/hello-world)');
5
+ .transform((val, ctx) => {
6
+ const parts = val.split('.');
7
+ if (parts.length < 2) {
8
+ ctx.addIssue({
9
+ code: z.ZodIssueCode.custom,
10
+ message: 'Invalid format. Use: namespace.skill-name or namespace.subnamespace.skill-name (e.g., mycompany.hello-world or mycompany.team.hello-world)',
11
+ });
12
+ return z.NEVER;
10
13
  }
11
- return { source: parts[0], skillName: parts[1] };
14
+ const skillName = parts[parts.length - 1];
15
+ const namespace = parts.slice(0, -1);
16
+ return { namespace, skillName };
12
17
  })
13
18
  .pipe(z.object({
14
- source: SourceNameSchema,
15
- skillName: SkillNameSchema,
19
+ namespace: z.array(SegmentNameSchema).min(1),
20
+ skillName: SegmentNameSchema,
16
21
  }));
17
22
  //# sourceMappingURL=skill-arg.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"skill-arg.js","sourceRoot":"","sources":["../../src/schemas/skill-arg.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC;KAC5B,MAAM,EAAE;KACR,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE;IACjB,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC7B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAC;IAC1F,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;AACnD,CAAC,CAAC;KACD,IAAI,CACH,CAAC,CAAC,MAAM,CAAC;IACP,MAAM,EAAE,gBAAgB;IACxB,SAAS,EAAE,eAAe;CAC3B,CAAC,CACH,CAAC"}
1
+ {"version":3,"file":"skill-arg.js","sourceRoot":"","sources":["../../src/schemas/skill-arg.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtD,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC;KAC5B,MAAM,EAAE;KACR,SAAS,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;IACtB,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC7B,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,GAAG,CAAC,QAAQ,CAAC;YACX,IAAI,EAAE,CAAC,CAAC,YAAY,CAAC,MAAM;YAC3B,OAAO,EACL,4IAA4I;SAC/I,CAAC,CAAC;QACH,OAAO,CAAC,CAAC,KAAK,CAAC;IACjB,CAAC;IACD,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC1C,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACrC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;AAClC,CAAC,CAAC;KACD,IAAI,CACH,CAAC,CAAC,MAAM,CAAC;IACP,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5C,SAAS,EAAE,iBAAiB;CAC7B,CAAC,CACH,CAAC"}
@@ -6,7 +6,7 @@ export const validateSkillArg = (skillArg) => {
6
6
  if (!result.success) {
7
7
  const errorMessage = result.error.issues[0]?.message ?? 'Invalid skill format';
8
8
  logger.error(errorMessage);
9
- logger.dim('Example: mycompany/hello-world');
9
+ logger.dim('Example: mycompany.hello-world or mycompany.team.hello-world');
10
10
  process.exit(1);
11
11
  }
12
12
  return result.data;
@@ -1 +1 @@
1
- {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/utils/validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAiB,MAAM,yBAAyB,CAAC;AACxE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,QAAgB,EAAY,EAAE;IAC7D,MAAM,MAAM,GAAG,cAAc,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IAClD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,IAAI,sBAAsB,CAAC;QAC/E,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAC3B,MAAM,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;QAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,IAAmB,EAAE;IACvD,MAAM,SAAS,GAAG,MAAM,WAAW,EAAE,CAAC;IACtC,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;QACvD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC"}
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/utils/validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAiB,MAAM,yBAAyB,CAAC;AACxE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,QAAgB,EAAY,EAAE;IAC7D,MAAM,MAAM,GAAG,cAAc,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IAClD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,IAAI,sBAAsB,CAAC;QAC/E,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAC3B,MAAM,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAC;QAC3E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,IAAmB,EAAE;IACvD,MAAM,SAAS,GAAG,MAAM,WAAW,EAAE,CAAC;IACtC,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;QACvD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@iamramo/zanat-cli",
3
- "version": "0.5.4",
3
+ "version": "0.5.6",
4
4
  "description": "CLI for zanat - a skill hub for AI agents",
5
5
  "type": "module",
6
6
  "main": "dist/cli.js",