@oxygen-agent/cli 1.936.1 → 1.948.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 (33) hide show
  1. package/README.md +1 -1
  2. package/dist/command-manifest.js +24 -2
  3. package/dist/help.js +1 -0
  4. package/dist/index.js +342 -54
  5. package/dist/ugc-commands.js +353 -12
  6. package/node_modules/@oxygen/shared/dist/byok-connect.d.ts +11 -6
  7. package/node_modules/@oxygen/shared/dist/byok-connect.js +14 -6
  8. package/node_modules/@oxygen/shared/dist/capability-discovery.js +53 -5
  9. package/node_modules/@oxygen/shared/dist/email-dsn.d.ts +60 -0
  10. package/node_modules/@oxygen/shared/dist/email-dsn.js +120 -0
  11. package/node_modules/@oxygen/shared/dist/email-warmup-readiness.d.ts +64 -0
  12. package/node_modules/@oxygen/shared/dist/email-warmup-readiness.js +90 -0
  13. package/node_modules/@oxygen/shared/dist/index.d.ts +6 -0
  14. package/node_modules/@oxygen/shared/dist/index.js +6 -0
  15. package/node_modules/@oxygen/shared/dist/knowledge-bootstrap.d.ts +50 -21
  16. package/node_modules/@oxygen/shared/dist/knowledge-bootstrap.js +47 -21
  17. package/node_modules/@oxygen/shared/dist/langfuse.d.ts +8 -3
  18. package/node_modules/@oxygen/shared/dist/langfuse.js +177 -130
  19. package/node_modules/@oxygen/shared/dist/llm-payload.d.ts +10 -0
  20. package/node_modules/@oxygen/shared/dist/llm-payload.js +54 -0
  21. package/node_modules/@oxygen/shared/dist/llm-usage.d.ts +11 -0
  22. package/node_modules/@oxygen/shared/dist/llm-usage.js +30 -0
  23. package/node_modules/@oxygen/shared/dist/product-analytics-core.d.ts +98 -0
  24. package/node_modules/@oxygen/shared/dist/product-analytics-core.js +159 -0
  25. package/node_modules/@oxygen/shared/dist/product-analytics-environment.d.ts +18 -0
  26. package/node_modules/@oxygen/shared/dist/product-analytics-environment.js +46 -0
  27. package/node_modules/@oxygen/shared/dist/product-analytics-events.d.ts +92 -0
  28. package/node_modules/@oxygen/shared/dist/product-analytics-events.js +96 -0
  29. package/node_modules/@oxygen/shared/dist/ugc.d.ts +21 -1
  30. package/node_modules/@oxygen/shared/dist/version.d.ts +1 -1
  31. package/node_modules/@oxygen/shared/dist/version.js +1 -1
  32. package/node_modules/@oxygen/workflows/dist/graph/lint.js +22 -0
  33. package/package.json +1 -1
@@ -1,4 +1,4 @@
1
- export const OXYGEN_VERSION = "1.936.1";
1
+ export const OXYGEN_VERSION = "1.948.1";
2
2
  // The GLOBAL CLI compatibility floor: the oldest CLI allowed to call any
3
3
  // operational route. Raising it hard-rejects every older CLI from the entire
4
4
  // product, so it obeys one law, enforced by scripts/ci/cli-min-version-gate.mjs:
@@ -232,6 +232,15 @@ value, add, scope, options) {
232
232
  }
233
233
  return sound;
234
234
  }
235
+ /**
236
+ * The character the graph host puts between a node id and its loop iteration
237
+ * path when it mints a node execution's persisted `step_id`
238
+ * (`${nodeId}#${iterationPath.join(".")}` — apps/worker
239
+ * workflow-graph-processor.ts `stepKey`). Declared here rather than imported so
240
+ * the linter stays a leaf of the worker, and pinned against the real producer
241
+ * by the `invalid_node_id_character` test.
242
+ */
243
+ const ITERATION_STEP_ID_SEPARATOR = "#";
235
244
  function lintNodeIdentity(node, path, seenIds, add) {
236
245
  let sound = true;
237
246
  if (!isNonEmptyString(node.id)) {
@@ -246,6 +255,19 @@ function lintNodeIdentity(node, path, seenIds, add) {
246
255
  add(`${path}.id`, "reserved_node_id", `Node id '${node.id}' is reserved (it collides with a JavaScript object key and would be dropped from node outputs). Choose another id.`);
247
256
  sound = false;
248
257
  }
258
+ else if (node.id.includes(ITERATION_STEP_ID_SEPARATOR)) {
259
+ // `#` is not a style rule — it is the runtime's own separator. A node
260
+ // execution's persisted identity is `<node id>#<iteration path>`
261
+ // (apps/worker workflow-graph-processor.ts `stepKey`, kept byte-identical to
262
+ // tenant-db's `step_id` convention), so a node literally named `a#1` shares a
263
+ // step_id with the second iteration of a loop body named `a`. The collision
264
+ // is silent and destructive: whichever row exists first is replayed as the
265
+ // other's completed output, so one of the two never runs and the run still
266
+ // reports success. Rejecting the character at authoring time is the only
267
+ // place this can be caught cheaply.
268
+ add(`${path}.id`, "invalid_node_id_character", `Node id '${node.id}' must not contain '${ITERATION_STEP_ID_SEPARATOR}' (it is reserved for loop iteration step ids, so '${node.id}' would collide with an iteration of another node). Choose another id.`);
269
+ sound = false;
270
+ }
249
271
  else if (seenIds.has(node.id)) {
250
272
  add(`${path}.id`, "duplicate_node_id", `Node id '${node.id}' is duplicated.`);
251
273
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oxygen-agent/cli",
3
- "version": "1.936.1",
3
+ "version": "1.948.1",
4
4
  "private": false,
5
5
  "license": "UNLICENSED",
6
6
  "type": "module",