@thirdfy/agent-cli 0.1.5 → 0.1.7

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thirdfy/agent-cli",
3
- "version": "0.1.5",
3
+ "version": "0.1.7",
4
4
  "description": "Thirdfy Agent CLI for onboarding, governance preflight, execute-intent, and status polling.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -18,6 +18,15 @@
18
18
  "test": "node --test \"test/**/*.test.cjs\"",
19
19
  "lint": "node --check ./bin/thirdfy-agent.mjs",
20
20
  "validate:cli-contract-schemas": "node ./scripts/validate-cli-contract-schemas.mjs",
21
+ "validate:actions": "node ./scripts/e2e/validate-actions.mjs",
22
+ "e2e:base:simulate": "node ./scripts/e2e/base-simulate.mjs",
23
+ "e2e:base:real": "node ./scripts/e2e/base-realtx.mjs",
24
+ "e2e:delegation:discovery": "node ./scripts/e2e/delegation-discovery.mjs",
25
+ "e2e:delegation:lifecycle": "node ./scripts/e2e/delegation-lifecycle.mjs",
26
+ "e2e:delegation:commands": "node ./scripts/e2e/delegation-command-parity.mjs",
27
+ "e2e:self:delegation:parity": "node ./scripts/e2e/self-delegation-parity.mjs",
28
+ "e2e:delegation:prod:certify": "node ./scripts/e2e/prod-delegation-certify.mjs",
29
+ "e2e:report:last": "node ./scripts/e2e/report-last.mjs",
21
30
  "smoke:cli": "node ./bin/thirdfy-agent.mjs --help && node ./bin/thirdfy-agent.mjs --version --json",
22
31
  "prepublishOnly": "npm run validate:cli-contract-schemas && npm run test && npm run smoke:cli"
23
32
  },
@@ -19,6 +19,20 @@ function normalizeIntentResponse(response) {
19
19
  const executed = Number(response?.executed || 0);
20
20
  const total = Number(response?.total || results.length || 0);
21
21
  const success = Boolean(response?.success);
22
+ const topLevelBlockedReason = String(response?.blockedReason || '').trim() || null;
23
+ const topLevelBlockedStage = String(response?.blockedStage || '').trim() || null;
24
+ const blockedByReasonFromResponse =
25
+ response?.blockedByReason && typeof response.blockedByReason === 'object' ? response.blockedByReason : null;
26
+ const groupedBlocked = summarizeBlockedReasons(results);
27
+ if (topLevelBlockedReason && !groupedBlocked[topLevelBlockedReason]) {
28
+ groupedBlocked[topLevelBlockedReason] = 1;
29
+ }
30
+ const mergedBlockedByReason = blockedByReasonFromResponse
31
+ ? { ...groupedBlocked, ...blockedByReasonFromResponse }
32
+ : groupedBlocked;
33
+ const topLevelGovernanceSignal = String(response?.governanceSignal || '').trim() || null;
34
+ const topLevelDelegationSignal = String(response?.delegationSignal || '').trim() || null;
35
+ const policyEvaluated = response?.policyEvaluated === true;
22
36
  return {
23
37
  success,
24
38
  status: response?.status || (success ? 'queued' : 'failed'),
@@ -28,7 +42,12 @@ function normalizeIntentResponse(response) {
28
42
  blocked,
29
43
  failed,
30
44
  results,
31
- blockedByReason: summarizeBlockedReasons(results),
45
+ blockedByReason: mergedBlockedByReason,
46
+ blockedReason: topLevelBlockedReason,
47
+ blockedStage: topLevelBlockedStage,
48
+ governanceSignal: topLevelGovernanceSignal,
49
+ delegationSignal: topLevelDelegationSignal,
50
+ policyEvaluated,
32
51
  error: response?.error || null,
33
52
  mode: response?.mode || null,
34
53
  unsignedTx: response?.unsignedTx || null,