deepline 0.3.125 → 0.3.127
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/dist/bundling-sources/sdk/src/release.ts +1 -1
- package/dist/bundling-sources/shared_libs/security/secret-redaction.ts +56 -1
- package/dist/cli/index.js +1 -1
- package/dist/cli/index.mjs +1 -1
- package/dist/index.js +1 -1
- package/dist/index.mjs +1 -1
- package/dist/release.d.mts +1 -1
- package/dist/release.d.ts +1 -1
- package/dist/release.js +1 -1
- package/dist/release.mjs +1 -1
- package/dist/viewer/viewer.js +28 -25
- package/package.json +1 -1
|
@@ -200,7 +200,7 @@ export const SDK_RELEASE = {
|
|
|
200
200
|
// getters keep their established compatibility behavior.
|
|
201
201
|
// 0.3.1 deprecated the legacy `deepline enrich` command in favor of Plays.
|
|
202
202
|
// 0.3.90 is the first deliberately versioned SDK release for API v3.
|
|
203
|
-
version: '0.3.
|
|
203
|
+
version: '0.3.127',
|
|
204
204
|
updateSummary:
|
|
205
205
|
'Play grep now returns concise results with the matched fields and terms. Automatic CLI updates are enabled by default; use `deepline settings autoupdate off` to opt out, `deepline settings autoupdate on` to re-enable updates, or `deepline settings autoupdate pin <version>` to hold an exact release.',
|
|
206
206
|
packageCapabilities: {
|
|
@@ -2,7 +2,7 @@ const REDACTED_VALUE = '[REDACTED]';
|
|
|
2
2
|
|
|
3
3
|
type SecretRedactionOptions = {
|
|
4
4
|
redactHighEntropy?: boolean;
|
|
5
|
-
/** Preserve
|
|
5
|
+
/** Preserve pagination cursors and signed transfer URLs in authenticated results. */
|
|
6
6
|
keyPolicy?: 'strict' | 'public-result';
|
|
7
7
|
/** Replace sample cursor values with a non-capability-bearing placeholder. */
|
|
8
8
|
placeholderContinuationValues?: boolean;
|
|
@@ -121,6 +121,59 @@ const SAFE_IDENTIFIER_KEYS = new Set([
|
|
|
121
121
|
'snowflake_query_ids',
|
|
122
122
|
]);
|
|
123
123
|
|
|
124
|
+
// Transfer URLs are bearer capabilities. Only return them in authenticated
|
|
125
|
+
// results; keep logs, errors, and generated samples redacted.
|
|
126
|
+
const PUBLIC_RESULT_TRANSFER_URL_KEYS = new Set([
|
|
127
|
+
'uploadUrl',
|
|
128
|
+
'upload_url',
|
|
129
|
+
'downloadUrl',
|
|
130
|
+
'download_url',
|
|
131
|
+
]);
|
|
132
|
+
const TRANSFER_SIGNING_PARAM =
|
|
133
|
+
/^(?:sig|signature|x-amz-(?:algorithm|credential|date|expires|signedheaders|signature|security-token)|x-goog-(?:algorithm|credential|date|expires|signedheaders|signature))$/i;
|
|
134
|
+
|
|
135
|
+
function isPublicResultTransferUrl(
|
|
136
|
+
value: string,
|
|
137
|
+
key: string | undefined,
|
|
138
|
+
options: SecretRedactionOptions,
|
|
139
|
+
): boolean {
|
|
140
|
+
if (
|
|
141
|
+
!key ||
|
|
142
|
+
!PUBLIC_RESULT_TRANSFER_URL_KEYS.has(key) ||
|
|
143
|
+
options.keyPolicy !== 'public-result' ||
|
|
144
|
+
options.placeholderContinuationValues
|
|
145
|
+
)
|
|
146
|
+
return false;
|
|
147
|
+
let url: URL;
|
|
148
|
+
try {
|
|
149
|
+
url = new URL(value);
|
|
150
|
+
} catch {
|
|
151
|
+
return false;
|
|
152
|
+
}
|
|
153
|
+
if (
|
|
154
|
+
url.protocol !== 'https:' ||
|
|
155
|
+
url.username ||
|
|
156
|
+
url.password ||
|
|
157
|
+
url.hash ||
|
|
158
|
+
/\s/.test(value)
|
|
159
|
+
)
|
|
160
|
+
return false;
|
|
161
|
+
let signed = false;
|
|
162
|
+
for (const [name, paramValue] of url.searchParams) {
|
|
163
|
+
if (
|
|
164
|
+
SENSITIVE_URL_PARAM_KEY_PATTERN.test(name) &&
|
|
165
|
+
!TRANSFER_SIGNING_PARAM.test(name)
|
|
166
|
+
)
|
|
167
|
+
return false;
|
|
168
|
+
if (
|
|
169
|
+
/^(?:sig|signature|x-amz-signature|x-goog-signature)$/i.test(name) &&
|
|
170
|
+
paramValue
|
|
171
|
+
)
|
|
172
|
+
signed = true;
|
|
173
|
+
}
|
|
174
|
+
return signed;
|
|
175
|
+
}
|
|
176
|
+
|
|
124
177
|
const EXPLICIT_SECRET_VALUE_PATTERNS = [
|
|
125
178
|
/\bnapi_[a-z0-9]{20,}\b/i,
|
|
126
179
|
/\bgh[opsu]_[A-Za-z0-9_]{20,}\b/,
|
|
@@ -254,6 +307,7 @@ export function redactSecretsInValue<T>(
|
|
|
254
307
|
if (EXPLICIT_SECRET_VALUE_PATTERNS.some((pattern) => pattern.test(value))) {
|
|
255
308
|
return REDACTED_VALUE as T;
|
|
256
309
|
}
|
|
310
|
+
if (isPublicResultTransferUrl(value, parentKey, options)) return value as T;
|
|
257
311
|
if (parentKey && SAFE_IDENTIFIER_KEYS.has(parentKey)) {
|
|
258
312
|
return value as T;
|
|
259
313
|
}
|
|
@@ -297,6 +351,7 @@ export function redactSecretsInValue<T>(
|
|
|
297
351
|
if (EXPLICIT_SECRET_VALUE_PATTERNS.some((pattern) => pattern.test(item))) {
|
|
298
352
|
return REDACTED_VALUE;
|
|
299
353
|
}
|
|
354
|
+
if (isPublicResultTransferUrl(item, itemParentKey, options)) return item;
|
|
300
355
|
if (itemParentKey && SAFE_IDENTIFIER_KEYS.has(itemParentKey)) return item;
|
|
301
356
|
if (itemParentKey && shouldRedactKey(itemParentKey)) {
|
|
302
357
|
return REDACTED_VALUE;
|
package/dist/cli/index.js
CHANGED
|
@@ -3068,7 +3068,7 @@ var SDK_RELEASE = {
|
|
|
3068
3068
|
// getters keep their established compatibility behavior.
|
|
3069
3069
|
// 0.3.1 deprecated the legacy `deepline enrich` command in favor of Plays.
|
|
3070
3070
|
// 0.3.90 is the first deliberately versioned SDK release for API v3.
|
|
3071
|
-
version: "0.3.
|
|
3071
|
+
version: "0.3.127",
|
|
3072
3072
|
updateSummary: "Play grep now returns concise results with the matched fields and terms. Automatic CLI updates are enabled by default; use `deepline settings autoupdate off` to opt out, `deepline settings autoupdate on` to re-enable updates, or `deepline settings autoupdate pin <version>` to hold an exact release.",
|
|
3073
3073
|
packageCapabilities: {
|
|
3074
3074
|
updatePreferences: 1
|
package/dist/cli/index.mjs
CHANGED
|
@@ -3063,7 +3063,7 @@ var SDK_RELEASE = {
|
|
|
3063
3063
|
// getters keep their established compatibility behavior.
|
|
3064
3064
|
// 0.3.1 deprecated the legacy `deepline enrich` command in favor of Plays.
|
|
3065
3065
|
// 0.3.90 is the first deliberately versioned SDK release for API v3.
|
|
3066
|
-
version: "0.3.
|
|
3066
|
+
version: "0.3.127",
|
|
3067
3067
|
updateSummary: "Play grep now returns concise results with the matched fields and terms. Automatic CLI updates are enabled by default; use `deepline settings autoupdate off` to opt out, `deepline settings autoupdate on` to re-enable updates, or `deepline settings autoupdate pin <version>` to hold an exact release.",
|
|
3068
3068
|
packageCapabilities: {
|
|
3069
3069
|
updatePreferences: 1
|
package/dist/index.js
CHANGED
|
@@ -864,7 +864,7 @@ var SDK_RELEASE = {
|
|
|
864
864
|
// getters keep their established compatibility behavior.
|
|
865
865
|
// 0.3.1 deprecated the legacy `deepline enrich` command in favor of Plays.
|
|
866
866
|
// 0.3.90 is the first deliberately versioned SDK release for API v3.
|
|
867
|
-
version: "0.3.
|
|
867
|
+
version: "0.3.127",
|
|
868
868
|
updateSummary: "Play grep now returns concise results with the matched fields and terms. Automatic CLI updates are enabled by default; use `deepline settings autoupdate off` to opt out, `deepline settings autoupdate on` to re-enable updates, or `deepline settings autoupdate pin <version>` to hold an exact release.",
|
|
869
869
|
packageCapabilities: {
|
|
870
870
|
updatePreferences: 1
|
package/dist/index.mjs
CHANGED
|
@@ -768,7 +768,7 @@ var SDK_RELEASE = {
|
|
|
768
768
|
// getters keep their established compatibility behavior.
|
|
769
769
|
// 0.3.1 deprecated the legacy `deepline enrich` command in favor of Plays.
|
|
770
770
|
// 0.3.90 is the first deliberately versioned SDK release for API v3.
|
|
771
|
-
version: "0.3.
|
|
771
|
+
version: "0.3.127",
|
|
772
772
|
updateSummary: "Play grep now returns concise results with the matched fields and terms. Automatic CLI updates are enabled by default; use `deepline settings autoupdate off` to opt out, `deepline settings autoupdate on` to re-enable updates, or `deepline settings autoupdate pin <version>` to hold an exact release.",
|
|
773
773
|
packageCapabilities: {
|
|
774
774
|
updatePreferences: 1
|
package/dist/release.d.mts
CHANGED
|
@@ -149,7 +149,7 @@ type SdkRelease = {
|
|
|
149
149
|
supportPolicy: SdkSupportPolicy;
|
|
150
150
|
};
|
|
151
151
|
declare const SDK_RELEASE: {
|
|
152
|
-
readonly version: "0.3.
|
|
152
|
+
readonly version: "0.3.127";
|
|
153
153
|
readonly updateSummary: "Play grep now returns concise results with the matched fields and terms. Automatic CLI updates are enabled by default; use `deepline settings autoupdate off` to opt out, `deepline settings autoupdate on` to re-enable updates, or `deepline settings autoupdate pin <version>` to hold an exact release.";
|
|
154
154
|
readonly packageCapabilities: {
|
|
155
155
|
readonly updatePreferences: 1;
|
package/dist/release.d.ts
CHANGED
|
@@ -149,7 +149,7 @@ type SdkRelease = {
|
|
|
149
149
|
supportPolicy: SdkSupportPolicy;
|
|
150
150
|
};
|
|
151
151
|
declare const SDK_RELEASE: {
|
|
152
|
-
readonly version: "0.3.
|
|
152
|
+
readonly version: "0.3.127";
|
|
153
153
|
readonly updateSummary: "Play grep now returns concise results with the matched fields and terms. Automatic CLI updates are enabled by default; use `deepline settings autoupdate off` to opt out, `deepline settings autoupdate on` to re-enable updates, or `deepline settings autoupdate pin <version>` to hold an exact release.";
|
|
154
154
|
readonly packageCapabilities: {
|
|
155
155
|
readonly updatePreferences: 1;
|
package/dist/release.js
CHANGED
|
@@ -74,7 +74,7 @@ var SDK_RELEASE = {
|
|
|
74
74
|
// getters keep their established compatibility behavior.
|
|
75
75
|
// 0.3.1 deprecated the legacy `deepline enrich` command in favor of Plays.
|
|
76
76
|
// 0.3.90 is the first deliberately versioned SDK release for API v3.
|
|
77
|
-
version: "0.3.
|
|
77
|
+
version: "0.3.127",
|
|
78
78
|
updateSummary: "Play grep now returns concise results with the matched fields and terms. Automatic CLI updates are enabled by default; use `deepline settings autoupdate off` to opt out, `deepline settings autoupdate on` to re-enable updates, or `deepline settings autoupdate pin <version>` to hold an exact release.",
|
|
79
79
|
packageCapabilities: {
|
|
80
80
|
updatePreferences: 1
|
package/dist/release.mjs
CHANGED
|
@@ -48,7 +48,7 @@ var SDK_RELEASE = {
|
|
|
48
48
|
// getters keep their established compatibility behavior.
|
|
49
49
|
// 0.3.1 deprecated the legacy `deepline enrich` command in favor of Plays.
|
|
50
50
|
// 0.3.90 is the first deliberately versioned SDK release for API v3.
|
|
51
|
-
version: "0.3.
|
|
51
|
+
version: "0.3.127",
|
|
52
52
|
updateSummary: "Play grep now returns concise results with the matched fields and terms. Automatic CLI updates are enabled by default; use `deepline settings autoupdate off` to opt out, `deepline settings autoupdate on` to re-enable updates, or `deepline settings autoupdate pin <version>` to hold an exact release.",
|
|
53
53
|
packageCapabilities: {
|
|
54
54
|
updatePreferences: 1
|
package/dist/viewer/viewer.js
CHANGED
|
@@ -227,7 +227,8 @@ function codexContentText(content) {
|
|
|
227
227
|
|
|
228
228
|
// Codex injects several synthetic "user" turns before the real prompt (plugin
|
|
229
229
|
// catalog, AGENTS.md, environment context). They are transport, not intent —
|
|
230
|
-
//
|
|
230
|
+
// Claude skill injections are likewise not prompts, but are retained as
|
|
231
|
+
// labeled skill-load entries in the timeline.
|
|
231
232
|
const CODEX_SYNTHETIC_PREFIXES = [
|
|
232
233
|
'<recommended_plugins>',
|
|
233
234
|
'<environment_context>',
|
|
@@ -1080,29 +1081,28 @@ function buildTimeline(events, firstTs) {
|
|
|
1080
1081
|
eventIndex++;
|
|
1081
1082
|
if (d.type === 'user') {
|
|
1082
1083
|
const isExternal = d.userType === 'external' || (!d.isSynthetic && !asArray((d.message || {}).content).some(b => b && typeof b === 'object' && b.type === 'tool_result'));
|
|
1083
|
-
|
|
1084
|
-
|
|
1085
|
-
|
|
1086
|
-
|
|
1087
|
-
|
|
1088
|
-
|
|
1089
|
-
|
|
1090
|
-
|
|
1091
|
-
|
|
1092
|
-
|
|
1093
|
-
|
|
1094
|
-
|
|
1095
|
-
|
|
1096
|
-
|
|
1097
|
-
}
|
|
1098
|
-
timeline.push({
|
|
1099
|
-
kind: 'user_message',
|
|
1100
|
-
text: text,
|
|
1101
|
-
event_index: eventIndex,
|
|
1102
|
-
elapsed: realElapsed,
|
|
1103
|
-
repeat_count: d._repeat_count || null,
|
|
1104
|
-
});
|
|
1084
|
+
const rawContent = (d.message || {}).content;
|
|
1085
|
+
let text = '';
|
|
1086
|
+
if (typeof rawContent === 'string') text = rawContent;
|
|
1087
|
+
else {
|
|
1088
|
+
const blocks = asArray(rawContent);
|
|
1089
|
+
text = blocks.filter(b => typeof b === 'string' || (b && b.type === 'text')).map(b => typeof b === 'string' ? b : b.text).join('\n');
|
|
1090
|
+
}
|
|
1091
|
+
text = text.trim();
|
|
1092
|
+
const isSkillLoad = text.startsWith('Base directory for this skill:');
|
|
1093
|
+
if (text && (isExternal || isSkillLoad)) {
|
|
1094
|
+
let realElapsed = null;
|
|
1095
|
+
if (firstTs && d.timestamp) {
|
|
1096
|
+
const ts = parseIsoTs(d.timestamp);
|
|
1097
|
+
if (ts) realElapsed = Math.round(((ts - firstTs) / 1000) * 10) / 10;
|
|
1105
1098
|
}
|
|
1099
|
+
timeline.push({
|
|
1100
|
+
kind: isSkillLoad ? 'skill_load' : 'user_message',
|
|
1101
|
+
text: text,
|
|
1102
|
+
event_index: eventIndex,
|
|
1103
|
+
elapsed: realElapsed,
|
|
1104
|
+
repeat_count: d._repeat_count || null,
|
|
1105
|
+
});
|
|
1106
1106
|
}
|
|
1107
1107
|
continue;
|
|
1108
1108
|
}
|
|
@@ -2183,11 +2183,14 @@ function renderTimeline(timeline, idPrefix) {
|
|
|
2183
2183
|
const id = prefix + 'entry-' + i;
|
|
2184
2184
|
const detailId = prefix + 'detail-' + i;
|
|
2185
2185
|
|
|
2186
|
-
if (e.kind === 'user_message') {
|
|
2186
|
+
if (e.kind === 'user_message' || e.kind === 'skill_load') {
|
|
2187
2187
|
const long = e.text.length > 300;
|
|
2188
|
+
const label = e.kind === 'skill_load'
|
|
2189
|
+
? 'SKILL LOADED · ' + esc(e.text.split('\n')[0].trim().replace(/\/$/, '').split('/').pop())
|
|
2190
|
+
: 'USER';
|
|
2188
2191
|
const repeatBadge = e.repeat_count ? `<span class="repeat-badge" title="This message repeated ${e.repeat_count} times and was collapsed">⟳ repeated ×${e.repeat_count}</span>` : '';
|
|
2189
2192
|
html += `<div class="tl-entry tl-user" data-searchtext="${esc(e.text.toLowerCase())}">
|
|
2190
|
-
<div class="user-label"
|
|
2193
|
+
<div class="user-label">${label}${repeatBadge}</div>
|
|
2191
2194
|
<div class="user-message md-rendered ${long ? 'collapsed' : ''}" id="${id}">${renderMarkdown(e.text)}</div>
|
|
2192
2195
|
${long ? `<span class="reasoning-toggle" onclick="toggleReasoning('${id}', this)">Show more</span>` : ''}
|
|
2193
2196
|
</div>`;
|