@oxygen-agent/cli 1.1003.12 → 1.1010.644
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 +1 -1
- package/dist/column-decision-options.d.ts +20 -0
- package/dist/column-decision-options.js +54 -0
- package/dist/command-manifest.js +15 -2
- package/dist/functions-commands.js +11 -11
- package/dist/index.js +1222 -159
- package/dist/search-ai-filter-notice.d.ts +17 -0
- package/dist/search-ai-filter-notice.js +38 -0
- package/dist/skills.js +34 -10
- package/dist/util.d.ts +9 -0
- package/dist/util.js +14 -0
- package/node_modules/@oxygen/cli-ugc/dist/commands.js +296 -140
- package/node_modules/@oxygen/cli-ugc/dist/field-parser.d.ts +9 -0
- package/node_modules/@oxygen/cli-ugc/dist/field-parser.js +34 -0
- package/node_modules/@oxygen/recipe-sdk/dist/index.d.ts +13 -0
- package/node_modules/@oxygen/shared/dist/billing.d.ts +21 -0
- package/node_modules/@oxygen/shared/dist/billing.js +45 -0
- package/node_modules/@oxygen/shared/dist/byok-connect.js +5 -0
- package/node_modules/@oxygen/shared/dist/capability-discovery.d.ts +10 -0
- package/node_modules/@oxygen/shared/dist/capability-discovery.js +223 -13
- package/node_modules/@oxygen/shared/dist/cli-http-error.d.ts +8 -0
- package/node_modules/@oxygen/shared/dist/cli-http-error.js +8 -0
- package/node_modules/@oxygen/shared/dist/cli-result.js +1 -0
- package/node_modules/@oxygen/shared/dist/column-autofill.js +5 -23
- package/node_modules/@oxygen/shared/dist/column-decision.d.ts +50 -0
- package/node_modules/@oxygen/shared/dist/column-decision.js +228 -0
- package/node_modules/@oxygen/shared/dist/company-enrichment-fields.d.ts +9 -4
- package/node_modules/@oxygen/shared/dist/company-enrichment-fields.js +11 -8
- package/node_modules/@oxygen/shared/dist/copilot-skills.generated.d.ts +4 -4
- package/node_modules/@oxygen/shared/dist/copilot-skills.generated.js +4 -4
- package/node_modules/@oxygen/shared/dist/cutover-freeze.d.ts +26 -0
- package/node_modules/@oxygen/shared/dist/cutover-freeze.js +52 -0
- package/node_modules/@oxygen/shared/dist/data-suppliers.d.ts +57 -0
- package/node_modules/@oxygen/shared/dist/data-suppliers.js +59 -0
- package/node_modules/@oxygen/shared/dist/enrichment-intents.d.ts +6 -2
- package/node_modules/@oxygen/shared/dist/enrichment-intents.js +13 -23
- package/node_modules/@oxygen/shared/dist/hosted-ai.d.ts +60 -4
- package/node_modules/@oxygen/shared/dist/hosted-ai.js +125 -10
- package/node_modules/@oxygen/shared/dist/index.d.ts +2 -0
- package/node_modules/@oxygen/shared/dist/index.js +2 -0
- package/node_modules/@oxygen/shared/dist/langfuse.d.ts +44 -1
- package/node_modules/@oxygen/shared/dist/langfuse.js +407 -14
- package/node_modules/@oxygen/shared/dist/linkedin-countries.d.ts +1 -0
- package/node_modules/@oxygen/shared/dist/linkedin-countries.js +2 -0
- package/node_modules/@oxygen/shared/dist/linkedin-country-timezones.d.ts +24 -0
- package/node_modules/@oxygen/shared/dist/linkedin-country-timezones.js +276 -0
- package/node_modules/@oxygen/shared/dist/linkedin-message-deletion.d.ts +2 -0
- package/node_modules/@oxygen/shared/dist/linkedin-message-deletion.js +5 -0
- package/node_modules/@oxygen/shared/dist/linkedin-post-keywords.d.ts +44 -0
- package/node_modules/@oxygen/shared/dist/linkedin-post-keywords.js +116 -0
- package/node_modules/@oxygen/shared/dist/linkedin-sequences.d.ts +96 -0
- package/node_modules/@oxygen/shared/dist/linkedin-sequences.js +123 -0
- package/node_modules/@oxygen/shared/dist/llm-durable-capture.d.ts +24 -0
- package/node_modules/@oxygen/shared/dist/llm-durable-capture.js +89 -0
- package/node_modules/@oxygen/shared/dist/llm-prompts.d.ts +75 -0
- package/node_modules/@oxygen/shared/dist/llm-prompts.js +161 -0
- package/node_modules/@oxygen/shared/dist/mailbox-egress-ownership.d.ts +90 -0
- package/node_modules/@oxygen/shared/dist/mailbox-egress-ownership.js +130 -0
- package/node_modules/@oxygen/shared/dist/operational-telemetry.d.ts +24 -0
- package/node_modules/@oxygen/shared/dist/operational-telemetry.js +73 -0
- package/node_modules/@oxygen/shared/dist/otlp-log-sink.d.ts +29 -4
- package/node_modules/@oxygen/shared/dist/otlp-log-sink.js +189 -36
- package/node_modules/@oxygen/shared/dist/product-analytics-events.d.ts +21 -2
- package/node_modules/@oxygen/shared/dist/product-analytics-events.js +21 -1
- package/node_modules/@oxygen/shared/dist/redaction.js +4 -1
- package/node_modules/@oxygen/shared/dist/scraper-lane-credential.d.ts +18 -0
- package/node_modules/@oxygen/shared/dist/scraper-lane-credential.js +23 -0
- package/node_modules/@oxygen/shared/dist/sequences.js +5 -1
- package/node_modules/@oxygen/shared/dist/signup-lead-payload.d.ts +80 -0
- package/node_modules/@oxygen/shared/dist/signup-lead-payload.js +198 -0
- package/node_modules/@oxygen/shared/dist/social-capabilities.d.ts +6 -0
- package/node_modules/@oxygen/shared/dist/social-capabilities.js +25 -16
- package/node_modules/@oxygen/shared/dist/social-post-metrics-core.d.ts +32 -0
- package/node_modules/@oxygen/shared/dist/social-post-metrics-core.js +32 -0
- package/node_modules/@oxygen/shared/dist/social-post-metrics-linkedin.d.ts +31 -0
- package/node_modules/@oxygen/shared/dist/social-post-metrics-linkedin.js +103 -0
- package/node_modules/@oxygen/shared/dist/social-post-metrics-series.d.ts +96 -0
- package/node_modules/@oxygen/shared/dist/social-post-metrics-series.js +213 -0
- package/node_modules/@oxygen/shared/dist/social-post-metrics-x.d.ts +13 -0
- package/node_modules/@oxygen/shared/dist/social-post-metrics-x.js +78 -0
- package/node_modules/@oxygen/shared/dist/social-post-metrics.d.ts +36 -0
- package/node_modules/@oxygen/shared/dist/social-post-metrics.js +51 -0
- package/node_modules/@oxygen/shared/dist/stripe-price-catalog.d.ts +36 -0
- package/node_modules/@oxygen/shared/dist/stripe-price-catalog.js +184 -0
- package/node_modules/@oxygen/shared/dist/stripe-subscription-kind.d.ts +41 -0
- package/node_modules/@oxygen/shared/dist/stripe-subscription-kind.js +44 -0
- package/node_modules/@oxygen/shared/dist/table-limits.d.ts +3 -0
- package/node_modules/@oxygen/shared/dist/table-limits.js +3 -0
- package/node_modules/@oxygen/shared/dist/telemetry-export-observer.d.ts +94 -0
- package/node_modules/@oxygen/shared/dist/telemetry-export-observer.js +298 -0
- package/node_modules/@oxygen/shared/dist/telemetry.d.ts +11 -0
- package/node_modules/@oxygen/shared/dist/telemetry.js +19 -1
- package/node_modules/@oxygen/shared/dist/ugc.d.ts +22 -11
- package/node_modules/@oxygen/shared/dist/ugc.js +10 -0
- package/node_modules/@oxygen/shared/dist/version.generated.d.ts +1 -0
- package/node_modules/@oxygen/shared/dist/version.generated.js +2 -0
- package/node_modules/@oxygen/shared/dist/version.js +8 -1
- package/node_modules/@oxygen/shared/dist/workspace-event-catalog.js +0 -23
- package/node_modules/@oxygen/shared/dist/workspace-file-storage.d.ts +29 -0
- package/node_modules/@oxygen/shared/dist/workspace-file-storage.js +31 -0
- package/node_modules/@oxygen/shared/package.json +9 -0
- package/package.json +2 -1
|
@@ -32,6 +32,35 @@ export declare function readWorkspaceFileObject(input: {
|
|
|
32
32
|
mimeType: WorkspaceStoredFileMimeType;
|
|
33
33
|
signal?: AbortSignal;
|
|
34
34
|
}): Promise<Uint8Array>;
|
|
35
|
+
/** How long a presigned workspace-file upload stays valid. Long enough for 100 MiB on a slow link. */
|
|
36
|
+
export declare const WORKSPACE_FILE_UPLOAD_PRESIGN_SECONDS = 900;
|
|
37
|
+
/**
|
|
38
|
+
* A presigned PUT for an opaque workspace file whose bytes never pass through
|
|
39
|
+
* the API.
|
|
40
|
+
*
|
|
41
|
+
* The base64-in-JSON path is bounded by the JSON body ceiling (2,000,000
|
|
42
|
+
* bytes, so ~1.5 MB of file) and, on managed production, by the platform's
|
|
43
|
+
* request-body limit — while the store itself allows 100 MiB. The browser and
|
|
44
|
+
* the CLI PUT the bytes straight to object storage instead; the caller declares
|
|
45
|
+
* the size and digest up front (the reservation needs both), and completion
|
|
46
|
+
* runs readWorkspaceFileObject, the same verified readback every stored file
|
|
47
|
+
* gets, so an upload that does not match what was declared is never finalized.
|
|
48
|
+
*
|
|
49
|
+
* `content-type` is signed (the SDK's default is to leave it unsigned) so the
|
|
50
|
+
* stored object's type is the opaque one this store expects; `content-length`
|
|
51
|
+
* is signed by the presigner from ContentLength.
|
|
52
|
+
*/
|
|
53
|
+
export declare function presignWorkspaceFileUpload(input: {
|
|
54
|
+
organizationId: string;
|
|
55
|
+
fileId: string;
|
|
56
|
+
fileName: string;
|
|
57
|
+
sizeBytes: number;
|
|
58
|
+
}): Promise<{
|
|
59
|
+
uploadUrl: string;
|
|
60
|
+
storageKey: string;
|
|
61
|
+
expiresInSeconds: number;
|
|
62
|
+
contentType: WorkspaceStoredFileMimeType;
|
|
63
|
+
}>;
|
|
35
64
|
/** Immutable PUT followed by bounded readback. A matching existing object is a safe retry. */
|
|
36
65
|
export declare function putWorkspaceFileObject(input: {
|
|
37
66
|
organizationId: string;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Buffer } from "node:buffer";
|
|
2
2
|
import { createHash } from "node:crypto";
|
|
3
3
|
import { GetObjectCommand, PutObjectCommand } from "@aws-sdk/client-s3";
|
|
4
|
+
import { getSignedUrl } from "@aws-sdk/s3-request-presigner";
|
|
4
5
|
import { OxygenError } from "./cli-result.js";
|
|
5
6
|
import { resolveObjectStorageClient } from "./object-storage.js";
|
|
6
7
|
export const WORKSPACE_VISUAL_SOURCE_MAX_BYTES = 1_500_000;
|
|
@@ -112,6 +113,36 @@ export async function readWorkspaceFileObject(input) {
|
|
|
112
113
|
stream.destroy?.();
|
|
113
114
|
}
|
|
114
115
|
}
|
|
116
|
+
/** How long a presigned workspace-file upload stays valid. Long enough for 100 MiB on a slow link. */
|
|
117
|
+
export const WORKSPACE_FILE_UPLOAD_PRESIGN_SECONDS = 900;
|
|
118
|
+
/**
|
|
119
|
+
* A presigned PUT for an opaque workspace file whose bytes never pass through
|
|
120
|
+
* the API.
|
|
121
|
+
*
|
|
122
|
+
* The base64-in-JSON path is bounded by the JSON body ceiling (2,000,000
|
|
123
|
+
* bytes, so ~1.5 MB of file) and, on managed production, by the platform's
|
|
124
|
+
* request-body limit — while the store itself allows 100 MiB. The browser and
|
|
125
|
+
* the CLI PUT the bytes straight to object storage instead; the caller declares
|
|
126
|
+
* the size and digest up front (the reservation needs both), and completion
|
|
127
|
+
* runs readWorkspaceFileObject, the same verified readback every stored file
|
|
128
|
+
* gets, so an upload that does not match what was declared is never finalized.
|
|
129
|
+
*
|
|
130
|
+
* `content-type` is signed (the SDK's default is to leave it unsigned) so the
|
|
131
|
+
* stored object's type is the opaque one this store expects; `content-length`
|
|
132
|
+
* is signed by the presigner from ContentLength.
|
|
133
|
+
*/
|
|
134
|
+
export async function presignWorkspaceFileUpload(input) {
|
|
135
|
+
if (!Number.isSafeInteger(input.sizeBytes) || input.sizeBytes < 0 || input.sizeBytes > WORKSPACE_OPAQUE_FILE_MAX_BYTES) {
|
|
136
|
+
throw new OxygenError("workspace_file_too_large", "File exceeds 100 MiB.");
|
|
137
|
+
}
|
|
138
|
+
const storageKey = buildWorkspaceFileObjectKey(input);
|
|
139
|
+
const { client, bucket } = resolveObjectStorageClient();
|
|
140
|
+
const contentType = "application/octet-stream";
|
|
141
|
+
const uploadUrl = await getSignedUrl(client, new PutObjectCommand({
|
|
142
|
+
Bucket: bucket, Key: storageKey, ContentLength: input.sizeBytes, ContentType: contentType,
|
|
143
|
+
}), { expiresIn: WORKSPACE_FILE_UPLOAD_PRESIGN_SECONDS, signableHeaders: new Set(["content-type"]) });
|
|
144
|
+
return { uploadUrl, storageKey, expiresInSeconds: WORKSPACE_FILE_UPLOAD_PRESIGN_SECONDS, contentType };
|
|
145
|
+
}
|
|
115
146
|
/** Immutable PUT followed by bounded readback. A matching existing object is a safe retry. */
|
|
116
147
|
export async function putWorkspaceFileObject(input) {
|
|
117
148
|
input.signal?.throwIfAborted();
|
|
@@ -166,6 +166,11 @@
|
|
|
166
166
|
"import": "./dist/signup-lead-webhook.js",
|
|
167
167
|
"default": "./dist/signup-lead-webhook.js"
|
|
168
168
|
},
|
|
169
|
+
"./signup-lead-payload": {
|
|
170
|
+
"types": "./dist/signup-lead-payload.d.ts",
|
|
171
|
+
"import": "./dist/signup-lead-payload.js",
|
|
172
|
+
"default": "./dist/signup-lead-payload.js"
|
|
173
|
+
},
|
|
169
174
|
"./knowledge-constants": {
|
|
170
175
|
"types": "./dist/knowledge-constants.d.ts",
|
|
171
176
|
"import": "./dist/knowledge-constants.js",
|
|
@@ -275,6 +280,10 @@
|
|
|
275
280
|
"types": "./dist/linkedin-sequences.d.ts",
|
|
276
281
|
"import": "./dist/linkedin-sequences.js",
|
|
277
282
|
"default": "./dist/linkedin-sequences.js"
|
|
283
|
+
},
|
|
284
|
+
"./provider-balance-signal": {
|
|
285
|
+
"types": "./dist/provider-balance-signal.d.ts",
|
|
286
|
+
"import": "./dist/provider-balance-signal.js"
|
|
278
287
|
}
|
|
279
288
|
},
|
|
280
289
|
"dependencies": {}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@oxygen-agent/cli",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.1010.644",
|
|
4
4
|
"private": false,
|
|
5
5
|
"license": "UNLICENSED",
|
|
6
6
|
"type": "module",
|
|
@@ -38,6 +38,7 @@
|
|
|
38
38
|
"@langfuse/otel": "^5.11.0",
|
|
39
39
|
"@langfuse/tracing": "^5.11.0",
|
|
40
40
|
"@opentelemetry/api": "1.9.1",
|
|
41
|
+
"@opentelemetry/otlp-transformer": "0.221.0",
|
|
41
42
|
"@opentelemetry/resources": "2.10.0",
|
|
42
43
|
"@opentelemetry/sdk-trace-base": "2.10.0",
|
|
43
44
|
"commander": "14.0.3",
|