@tantawowa/hosanna-tools 3.23.0 → 3.25.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.
package/README.md CHANGED
@@ -1,5 +1,23 @@
1
1
  # hosanna-tools
2
2
 
3
+ ## Agent skills
4
+
5
+ The repository instructions use TantaWowa's ClickUp workflow skills, Matt
6
+ Pocock's engineering skills, and pstack's `unslop` skill. Install them once on
7
+ each developer machine:
8
+
9
+ ```sh
10
+ npx -y skills add TantaWowa/hosanna-tools --global --skill work-on-ticket hope-platform-planning hope-platform-architecture-ownership --agent '*' --full-depth --yes
11
+ npx -y skills add mattpocock/skills --global --all
12
+ npx -y skills add cursor/plugins --global --skill unslop --agent '*' --full-depth --yes
13
+ ```
14
+
15
+ The first command requires GitHub access to the private `hosanna-tools`
16
+ repository. The install does not grant ClickUp access, so connect the team's
17
+ ClickUp integration in your agent before using `work-on-ticket`. Start a new
18
+ Codex, Cursor, or Claude Code session after installing.
19
+ Run `npx -y skills update --global --yes` to update the installed skills later.
20
+
3
21
  ## Documentation
4
22
 
5
23
  - **[MCP debugger](src/support-tools/mcp-server/README.md)** — `hst mcp:start`, debugger tools, commands by use case, examples, and RASP certification capture.
@@ -1,6 +1,6 @@
1
1
  {
2
- "buildDate": "2026-08-22T01:30:54+00:00",
3
- "buildDateISO": "2026-08-22T01:30:54.098Z",
2
+ "buildDate": "2026-08-27T21:31:44+00:00",
3
+ "buildDateISO": "2026-08-27T21:31:44.774Z",
4
4
  "timeZone": "UTC",
5
- "gitHash": "23f0241"
5
+ "gitHash": "b4ed27a"
6
6
  }
package/dist/cli.js CHANGED
@@ -1740,12 +1740,18 @@ async function runEnvironmentCommand(action, verbose) {
1740
1740
  const validation = await mod.validateLicense(key);
1741
1741
  if (!validation.valid) {
1742
1742
  console.error(`❌ HSC license is not valid: ${validation.code} ${validation.detail}`.trim());
1743
+ for (const warning of mod.getLicenseConfigurationWarnings(key)) {
1744
+ console.error(` ⚠ ${warning}`);
1745
+ }
1743
1746
  process.exit(1);
1744
1747
  }
1745
1748
  const filePath = mod.storeLicenseKey(key);
1746
1749
  console.info(`✅ License validated and stored at ${filePath}`);
1747
1750
  if (validation.expiry)
1748
1751
  console.info(` Expires: ${validation.expiry}`);
1752
+ for (const warning of mod.getLicenseConfigurationWarnings(key)) {
1753
+ console.warn(` ⚠ ${warning}`);
1754
+ }
1749
1755
  process.exit(0);
1750
1756
  }
1751
1757
  catch (err) {
@@ -1756,20 +1762,27 @@ async function runEnvironmentCommand(action, verbose) {
1756
1762
  .command('license:status', 'Validate the stored license and print its entitlements (flavour, platforms, tier)', yargs => yargs, async () => {
1757
1763
  try {
1758
1764
  const mod = await Promise.resolve().then(() => __importStar(require('./updater/license-manager.js')));
1759
- const key = mod.requireLicenseKey();
1760
- const info = await mod.getLicenseInfo(key);
1765
+ const credential = mod.requireLicenseCredential();
1766
+ const info = await mod.getLicenseInfo(credential.key);
1761
1767
  if (!info.validation.valid) {
1762
1768
  console.error(`❌ License is not valid: ${info.validation.code} ${info.validation.detail}`.trim());
1769
+ for (const warning of mod.getLicenseConfigurationWarnings()) {
1770
+ console.error(` ⚠ ${warning}`);
1771
+ }
1763
1772
  process.exit(1);
1764
1773
  }
1765
1774
  console.info('✅ License is valid');
1766
1775
  if (info.validation.expiry)
1767
1776
  console.info(` Expires: ${info.validation.expiry}`);
1777
+ console.info(` Credential: ${credential.source === 'environment' ? 'HSC_LICENSE_KEY' : credential.filePath}`);
1768
1778
  const flavours = mod.entitledFlavours(info.entitlements);
1769
1779
  const platforms = mod.entitledPlatforms(info.entitlements);
1770
1780
  console.info(` Flavour: ${flavours.length ? flavours[flavours.length - 1] : '(none)'}`);
1771
1781
  console.info(` Platforms: ${platforms.length ? platforms.join(', ') : '(none)'}`);
1772
1782
  console.info(` Entitlements: ${info.entitlements.join(', ') || '(none)'}`);
1783
+ for (const warning of mod.getLicenseConfigurationWarnings()) {
1784
+ console.warn(` ⚠ ${warning}`);
1785
+ }
1773
1786
  process.exit(0);
1774
1787
  }
1775
1788
  catch (err) {