@sanctix/client 0.1.0 → 0.1.1

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 (2) hide show
  1. package/cli/stop.js +37 -27
  2. package/package.json +1 -1
package/cli/stop.js CHANGED
@@ -32,22 +32,7 @@ export async function stop(_options = {}) {
32
32
  const auditUrl = manifest.auditUrl.replace(/\/$/, '');
33
33
  const apiKey = process.env.SANCTIX_API_KEY || readEnvKey(cwd, 'SANCTIX_API_KEY');
34
34
 
35
- // Step 4: Get session summary from audit service.
36
- const sessionRes = await httpRequestJson('GET', auditUrl + '/session/' + correlationId, {
37
- apiKey: apiKey || null,
38
- timeoutMs: 3000,
39
- });
40
- let summaryLine = null;
41
- if (sessionRes.status === 200 && sessionRes.body && typeof sessionRes.body === 'object') {
42
- const count = sessionRes.body.event_count;
43
- const chain = sessionRes.body.chain_status;
44
- summaryLine = 'Events: ' + (count !== undefined ? count : 'n/a') +
45
- (chain ? ' (chain: ' + chain + ')' : '');
46
- } else {
47
- summaryLine = 'Session data not yet available.';
48
- }
49
-
50
- // Step 5: Post SANCTIX_SESSION_COMPLETED event.
35
+ // Step 4: Post sanctix.session.completed event.
51
36
  const completedAt = new Date().toISOString();
52
37
  const userId = process.env.USER || process.env.USERNAME || 'user';
53
38
  const postRes = await httpRequestJson('POST', auditUrl + '/events', {
@@ -76,23 +61,48 @@ export async function stop(_options = {}) {
76
61
  ));
77
62
  }
78
63
 
64
+ // Step 5: Fetch session summary from audit service.
65
+ const sessionRes = await httpRequestJson('GET', auditUrl + '/session/' + correlationId, {
66
+ apiKey: apiKey || null,
67
+ timeoutMs: 3000,
68
+ });
69
+
79
70
  // Step 6: Remove session env file.
80
71
  await fs.remove(sessionEnvPath);
81
72
 
82
73
  // Step 7: Print summary.
83
74
  const duration = formatDuration(startedAt, completedAt);
84
75
  console.log('');
85
- console.log(chalk.bold('=== Sanctix Session Complete ==='));
86
- console.log('Session: ' + correlationId);
87
- console.log('Task: ' + task);
88
- console.log('Risk: ' + risk);
89
- console.log('Duration: ' + duration);
90
- if (summaryLine) console.log(summaryLine);
91
- console.log('');
92
- console.log('To view this session:');
93
- console.log(' awf audit show --correlation-id ' + correlationId);
94
- console.log('');
95
- console.log(chalk.bold('================================'));
76
+ console.log(chalk.bold('=== Sanctix Session Summary ==='));
77
+ if (sessionRes.status === 200 && sessionRes.body && typeof sessionRes.body === 'object') {
78
+ const s = sessionRes.body;
79
+ const toolBreakdown = s.tool_breakdown || {};
80
+ const toolCalls = Object.values(toolBreakdown).reduce((a, b) => a + (Number(b) || 0), 0);
81
+ const filesChanged = Array.isArray(s.files_changed) ? s.files_changed : [];
82
+
83
+ console.log('Task: ' + task);
84
+ console.log('Risk: ' + risk);
85
+ console.log('Duration: ' + duration);
86
+ console.log('');
87
+ console.log('What happened:');
88
+ console.log(' Tool calls: ' + toolCalls);
89
+ console.log(' Files changed: ' + filesChanged.length);
90
+ console.log(' Commands run: ' + (s.commands_run || 0));
91
+ console.log(' Agent spawns: ' + (s.agent_spawns || 0));
92
+ if (filesChanged.length > 0) {
93
+ console.log('');
94
+ console.log('Files touched:');
95
+ for (const f of filesChanged) console.log(' ' + f);
96
+ }
97
+ console.log('');
98
+ console.log('Audit:');
99
+ console.log(' Events: ' + (s.event_count != null ? s.event_count : 'n/a'));
100
+ console.log(' Chain: ' + (s.chain_status || 'unknown'));
101
+ console.log(' Session: ' + correlationId);
102
+ } else {
103
+ console.log('Session: ' + correlationId);
104
+ }
105
+ console.log('================================');
96
106
  }
97
107
 
98
108
  function parseEnvFile(text) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sanctix/client",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "Sanctix governed edge client. Installs governance hooks for Claude Code, Codex and Cursor. Connects to the Sanctix control plane.",
5
5
  "type": "module",
6
6
  "bin": {