azclaude-copilot 0.5.2 → 0.5.3

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
@@ -758,11 +758,11 @@ An agent is a sub-process. Use one when work must happen **in parallel** or **in
758
758
 
759
759
  ## Verified
760
760
 
761
- 1763 tests. Every template, command, capability, agent, hook, and CLI feature verified.
761
+ 1767 tests. Every template, command, capability, agent, hook, and CLI feature verified.
762
762
 
763
763
  ```bash
764
764
  bash tests/test-features.sh
765
- # Results: 1763 passed, 0 failed, 1763 total
765
+ # Results: 1767 passed, 0 failed, 1767 total
766
766
  ```
767
767
 
768
768
  ---
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "azclaude-copilot",
3
- "version": "0.5.2",
3
+ "version": "0.5.3",
4
4
  "description": "AI coding environment — 39 commands, 10 skills, 15 agents, memory, reflexes, evolution. Install: npx azclaude-copilot@latest, then open Claude Code.",
5
5
  "bin": {
6
6
  "azclaude": "bin/cli.js",
@@ -33,6 +33,30 @@ process.stdin.on('end', () => {
33
33
  const cachWrite = data.context_window?.current_usage?.cache_creation_input_tokens || 0;
34
34
  const cachRead = data.context_window?.current_usage?.cache_read_input_tokens || 0;
35
35
 
36
+ // ── Agent + Skill usage (from observations.jsonl — tracked by post-tool-use hook) ──
37
+ const fs = require('fs');
38
+ const path = require('path');
39
+ const projectDir = data.workspace?.current_dir || data.workspace?.project_dir || process.cwd();
40
+ const sessionPid = process.ppid || process.pid;
41
+ let agentCount = 0, skillCount = 0;
42
+ try {
43
+ const obsPath = path.join(projectDir, '.claude', 'memory', 'reflexes', 'observations.jsonl');
44
+ if (fs.existsSync(obsPath)) {
45
+ const lines = fs.readFileSync(obsPath, 'utf8').split('\n').filter(Boolean);
46
+ for (const line of lines) {
47
+ try {
48
+ const obs = JSON.parse(line);
49
+ // Count only this session's observations
50
+ if (String(obs.session) !== String(sessionPid)) continue;
51
+ if (obs.tool === 'Agent' || obs.tool === 'Task') agentCount++;
52
+ if (obs.tool === 'Skill') skillCount++;
53
+ // Also count Read calls on SKILL.md files as skill usage
54
+ if (obs.tool === 'Read' && obs.file && /skills\/.*SKILL\.md/.test(obs.file)) skillCount++;
55
+ } catch (_) {}
56
+ }
57
+ }
58
+ } catch (_) {}
59
+
36
60
  // ── Format helpers ──
37
61
  const durSec = Math.floor(durMs / 1000);
38
62
  const mins = Math.floor(durSec / 60);
@@ -134,6 +158,12 @@ process.stdin.on('end', () => {
134
158
  line2 += `${DIM}In:${fmtTok(inputTok)} Out:${fmtTok(outputTok)}${RESET} `;
135
159
  }
136
160
 
161
+ // Agent + Skill counts (only show if > 0 — means AZCLAUDE is being used)
162
+ if (agentCount > 0 || skillCount > 0) {
163
+ if (agentCount > 0) line2 += `${CYAN}A:${agentCount}${RESET} `;
164
+ if (skillCount > 0) line2 += `${CYAN}S:${skillCount}${RESET} `;
165
+ }
166
+
137
167
  // Duration
138
168
  line2 += `${DIM}${mins}m${secs}s${RESET}`;
139
169