agentxchain 2.155.36 → 2.155.37

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": "agentxchain",
3
- "version": "2.155.36",
3
+ "version": "2.155.37",
4
4
  "description": "CLI for AgentXchain — governed multi-agent software delivery",
5
5
  "type": "module",
6
6
  "bin": {
@@ -89,6 +89,7 @@ ALLOWED_RELEASE_PATHS=(
89
89
  "website-v2/docs/getting-started.mdx"
90
90
  "website-v2/docs/quickstart.mdx"
91
91
  "website-v2/docs/five-minute-tutorial.mdx"
92
+ "website-v2/docs/releases/v2-147-0.mdx"
92
93
  "cli/test/hn-launch-surface-content.test.js"
93
94
  "cli/homebrew/agentxchain.rb"
94
95
  "cli/homebrew/README.md"
@@ -98,6 +98,49 @@ function verifyFileEntry(relPath, entry, errors) {
98
98
  addError(errors, path, 'sha256 must be a 64-character lowercase hex digest');
99
99
  }
100
100
 
101
+ if (entry.content_base64 === null) {
102
+ const isTruncated = entry.truncated === true;
103
+ const isSkipped = entry.content_base64_skipped === true;
104
+ if (!isTruncated && !isSkipped) {
105
+ addError(errors, path, 'content_base64 may be null only when truncated or content_base64_skipped is true');
106
+ return;
107
+ }
108
+ if (isTruncated) {
109
+ if (entry.format !== 'jsonl') {
110
+ addError(errors, path, 'truncated file entries must use jsonl format');
111
+ }
112
+ if (!Array.isArray(entry.data)) {
113
+ addError(errors, path, 'truncated JSONL data must be an array');
114
+ }
115
+ if (!Number.isInteger(entry.total_entries) || entry.total_entries < 0) {
116
+ addError(errors, path, 'total_entries must be a non-negative integer when truncated');
117
+ }
118
+ if (!Number.isInteger(entry.retained_entries) || entry.retained_entries < 0) {
119
+ addError(errors, path, 'retained_entries must be a non-negative integer when truncated');
120
+ }
121
+ if (Array.isArray(entry.data) && entry.retained_entries !== entry.data.length) {
122
+ addError(errors, path, 'retained_entries must match truncated data length');
123
+ }
124
+ if (
125
+ Number.isInteger(entry.total_entries)
126
+ && Number.isInteger(entry.retained_entries)
127
+ && entry.retained_entries > entry.total_entries
128
+ ) {
129
+ addError(errors, path, 'retained_entries must not exceed total_entries');
130
+ }
131
+ return;
132
+ }
133
+ if (entry.format === 'jsonl' && !Array.isArray(entry.data)) {
134
+ addError(errors, path, 'skipped JSONL data must be an array');
135
+ return;
136
+ }
137
+ if (entry.format === 'text' && typeof entry.data !== 'string') {
138
+ addError(errors, path, 'skipped text data must be a string');
139
+ return;
140
+ }
141
+ return;
142
+ }
143
+
101
144
  if (typeof entry.content_base64 !== 'string') {
102
145
  addError(errors, path, 'content_base64 must be a string');
103
146
  return;