@outputai/cli 0.9.2-next.15e6ac1.0 → 0.9.2-next.9d7a870.0

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.
@@ -80,7 +80,7 @@ services:
80
80
  condition: service_healthy
81
81
  worker:
82
82
  condition: service_healthy
83
- image: outputai/api:${OUTPUT_API_VERSION:-0.9.2-next.15e6ac1.0}
83
+ image: outputai/api:${OUTPUT_API_VERSION:-0.9.2-next.9d7a870.0}
84
84
  init: true
85
85
  networks:
86
86
  - main
@@ -1,3 +1,3 @@
1
1
  {
2
- "framework": "0.9.2-next.15e6ac1.0"
2
+ "framework": "0.9.2-next.9d7a870.0"
3
3
  }
@@ -11,17 +11,10 @@
11
11
  * START_CHILD_WORKFLOW_EXECUTION_INITIATED opens the span, then
12
12
  * CHILD_WORKFLOW_EXECUTION_STARTED / _COMPLETED / _FAILED / _TIMED_OUT /
13
13
  * _CANCELED / _TERMINATED reference it via `initiatedEventId`.
14
- *
15
- * Pure function — no I/O. A TypeScript port of Atlas's
16
- * `OutputWorkflows::WorkflowHistory::Correlator` (Ruby). Kept structurally
17
- * faithful so the two stay easy to diff. The CLI has no step catalog, so a
18
- * span's display name is the humanized step name rather than a catalog label.
19
14
  */
20
15
  import { capitalCase } from 'change-case';
21
- // Framework-level activities the user doesn't care about — Output's own trace
22
- // destination resolution and the lifecycle webhook back to Atlas.
23
- const NOISE_STEP_PREFIXES = ['__internal#'];
24
- const NOISE_STEP_EXACT = ['$shared#callWebhook'];
16
+ // These are internal activities of the framework
17
+ const INTERNAL_ACTIVITIES_PREFIX = ['__internal#'];
25
18
  const ACTIVITY_TERMINAL_TYPES = [
26
19
  'ACTIVITY_TASK_COMPLETED', 'ACTIVITY_TASK_FAILED',
27
20
  'ACTIVITY_TASK_TIMED_OUT', 'ACTIVITY_TASK_CANCELED'
@@ -86,8 +79,7 @@ function cleanStepName(scheduled) {
86
79
  return 'unknown';
87
80
  }
88
81
  function isNoise(stepName) {
89
- return NOISE_STEP_EXACT.includes(stepName) ||
90
- NOISE_STEP_PREFIXES.some(prefix => stepName.startsWith(prefix));
82
+ return INTERNAL_ACTIVITIES_PREFIX.some(prefix => stepName.startsWith(prefix));
91
83
  }
92
84
  function failureMessageOf(attrs) {
93
85
  const failure = attrs.failure;
@@ -115,8 +107,7 @@ function toMs(iso) {
115
107
  const ms = Date.parse(iso);
116
108
  return Number.isNaN(ms) ? null : ms;
117
109
  }
118
- // Offset math relative to the workflow start (timeline origin). Mirrors
119
- // Atlas's Span#start_offset_ms / #end_offset_ms / #duration_ms.
110
+ // Offset math relative to the workflow start (timeline origin).
120
111
  function withOffsets(span, startMs) {
121
112
  const startAnchor = toMs(span.startedAt) ?? toMs(span.scheduledAt);
122
113
  const startOffsetMs = startMs !== null && startAnchor !== null ? Math.round(startAnchor - startMs) : 0;
@@ -42,8 +42,6 @@ function buildEvents() {
42
42
  completed('9', '5', 31),
43
43
  failed('10', '6', 38, 'boom'),
44
44
  // Noise steps — must be filtered out
45
- scheduled('11', '$shared#callWebhook', 35),
46
- started('11s', '11', 35),
47
45
  scheduled('12', '__internal#resolveTrace', 35),
48
46
  // Pending activity (scheduled, never started)
49
47
  scheduled('13', 'contentBrief#generateBrief', 40),
@@ -67,7 +65,6 @@ describe('correlate', () => {
67
65
  const byId = (id) => spans.find(s => s.id === id);
68
66
  it('filters framework noise steps', () => {
69
67
  expect(spans.every(s => !s.technicalName.startsWith('__internal#'))).toBe(true);
70
- expect(spans.some(s => s.technicalName === '$shared#callWebhook')).toBe(false);
71
68
  });
72
69
  it('produces one span per real activity plus the child workflow', () => {
73
70
  expect(spans).toHaveLength(5);
@@ -156,106 +156,6 @@
156
156
  "update.js"
157
157
  ]
158
158
  },
159
- "dev:eject": {
160
- "aliases": [],
161
- "args": {},
162
- "description": "Eject the Docker Compose configuration to your project root for customization",
163
- "examples": [
164
- "<%= config.bin %> <%= command.id %>",
165
- "<%= config.bin %> <%= command.id %> --output ./custom-compose.yml"
166
- ],
167
- "flags": {
168
- "output": {
169
- "char": "o",
170
- "description": "Output path for the docker-compose file",
171
- "name": "output",
172
- "required": false,
173
- "default": "docker-compose.yml",
174
- "hasDynamicHelp": false,
175
- "multiple": false,
176
- "type": "option"
177
- },
178
- "force": {
179
- "char": "f",
180
- "description": "Overwrite existing file without prompting",
181
- "name": "force",
182
- "required": false,
183
- "allowNo": false,
184
- "type": "boolean"
185
- }
186
- },
187
- "hasDynamicHelp": false,
188
- "hiddenAliases": [],
189
- "id": "dev:eject",
190
- "pluginAlias": "@outputai/cli",
191
- "pluginName": "@outputai/cli",
192
- "pluginType": "core",
193
- "strict": true,
194
- "enableJsonFlag": false,
195
- "isESM": true,
196
- "relativePath": [
197
- "dist",
198
- "commands",
199
- "dev",
200
- "eject.js"
201
- ]
202
- },
203
- "dev": {
204
- "aliases": [],
205
- "args": {},
206
- "description": "Start Output development services (auto-restarts worker on file changes)\n\nTo run a second dev stack concurrently, override host ports in .env:\n\n OUTPUT_API_HOST_PORT=3002\n OUTPUT_TEMPORAL_UI_HOST_PORT=8081\n OUTPUT_TEMPORAL_HOST_PORT=7234",
207
- "examples": [
208
- "<%= config.bin %> <%= command.id %>",
209
- "<%= config.bin %> <%= command.id %> --compose-file ./custom-docker-compose.yml",
210
- "<%= config.bin %> <%= command.id %> --image-pull-policy missing"
211
- ],
212
- "flags": {
213
- "compose-file": {
214
- "char": "f",
215
- "description": "Path to a custom docker-compose file",
216
- "name": "compose-file",
217
- "required": false,
218
- "hasDynamicHelp": false,
219
- "multiple": false,
220
- "type": "option"
221
- },
222
- "image-pull-policy": {
223
- "description": "Image pull policy for docker compose (always, missing, never)",
224
- "name": "image-pull-policy",
225
- "default": "always",
226
- "hasDynamicHelp": false,
227
- "multiple": false,
228
- "options": [
229
- "always",
230
- "missing",
231
- "never"
232
- ],
233
- "type": "option"
234
- },
235
- "detached": {
236
- "char": "d",
237
- "description": "Start services in detached (background) mode and exit immediately",
238
- "name": "detached",
239
- "allowNo": false,
240
- "type": "boolean"
241
- }
242
- },
243
- "hasDynamicHelp": false,
244
- "hiddenAliases": [],
245
- "id": "dev",
246
- "pluginAlias": "@outputai/cli",
247
- "pluginName": "@outputai/cli",
248
- "pluginType": "core",
249
- "strict": true,
250
- "enableJsonFlag": false,
251
- "isESM": true,
252
- "relativePath": [
253
- "dist",
254
- "commands",
255
- "dev",
256
- "index.js"
257
- ]
258
- },
259
159
  "credentials:edit": {
260
160
  "aliases": [],
261
161
  "args": {},
@@ -516,6 +416,106 @@
516
416
  "show.js"
517
417
  ]
518
418
  },
419
+ "dev:eject": {
420
+ "aliases": [],
421
+ "args": {},
422
+ "description": "Eject the Docker Compose configuration to your project root for customization",
423
+ "examples": [
424
+ "<%= config.bin %> <%= command.id %>",
425
+ "<%= config.bin %> <%= command.id %> --output ./custom-compose.yml"
426
+ ],
427
+ "flags": {
428
+ "output": {
429
+ "char": "o",
430
+ "description": "Output path for the docker-compose file",
431
+ "name": "output",
432
+ "required": false,
433
+ "default": "docker-compose.yml",
434
+ "hasDynamicHelp": false,
435
+ "multiple": false,
436
+ "type": "option"
437
+ },
438
+ "force": {
439
+ "char": "f",
440
+ "description": "Overwrite existing file without prompting",
441
+ "name": "force",
442
+ "required": false,
443
+ "allowNo": false,
444
+ "type": "boolean"
445
+ }
446
+ },
447
+ "hasDynamicHelp": false,
448
+ "hiddenAliases": [],
449
+ "id": "dev:eject",
450
+ "pluginAlias": "@outputai/cli",
451
+ "pluginName": "@outputai/cli",
452
+ "pluginType": "core",
453
+ "strict": true,
454
+ "enableJsonFlag": false,
455
+ "isESM": true,
456
+ "relativePath": [
457
+ "dist",
458
+ "commands",
459
+ "dev",
460
+ "eject.js"
461
+ ]
462
+ },
463
+ "dev": {
464
+ "aliases": [],
465
+ "args": {},
466
+ "description": "Start Output development services (auto-restarts worker on file changes)\n\nTo run a second dev stack concurrently, override host ports in .env:\n\n OUTPUT_API_HOST_PORT=3002\n OUTPUT_TEMPORAL_UI_HOST_PORT=8081\n OUTPUT_TEMPORAL_HOST_PORT=7234",
467
+ "examples": [
468
+ "<%= config.bin %> <%= command.id %>",
469
+ "<%= config.bin %> <%= command.id %> --compose-file ./custom-docker-compose.yml",
470
+ "<%= config.bin %> <%= command.id %> --image-pull-policy missing"
471
+ ],
472
+ "flags": {
473
+ "compose-file": {
474
+ "char": "f",
475
+ "description": "Path to a custom docker-compose file",
476
+ "name": "compose-file",
477
+ "required": false,
478
+ "hasDynamicHelp": false,
479
+ "multiple": false,
480
+ "type": "option"
481
+ },
482
+ "image-pull-policy": {
483
+ "description": "Image pull policy for docker compose (always, missing, never)",
484
+ "name": "image-pull-policy",
485
+ "default": "always",
486
+ "hasDynamicHelp": false,
487
+ "multiple": false,
488
+ "options": [
489
+ "always",
490
+ "missing",
491
+ "never"
492
+ ],
493
+ "type": "option"
494
+ },
495
+ "detached": {
496
+ "char": "d",
497
+ "description": "Start services in detached (background) mode and exit immediately",
498
+ "name": "detached",
499
+ "allowNo": false,
500
+ "type": "boolean"
501
+ }
502
+ },
503
+ "hasDynamicHelp": false,
504
+ "hiddenAliases": [],
505
+ "id": "dev",
506
+ "pluginAlias": "@outputai/cli",
507
+ "pluginName": "@outputai/cli",
508
+ "pluginType": "core",
509
+ "strict": true,
510
+ "enableJsonFlag": false,
511
+ "isESM": true,
512
+ "relativePath": [
513
+ "dist",
514
+ "commands",
515
+ "dev",
516
+ "index.js"
517
+ ]
518
+ },
519
519
  "workflow:cost": {
520
520
  "aliases": [],
521
521
  "args": {
@@ -1534,5 +1534,5 @@
1534
1534
  ]
1535
1535
  }
1536
1536
  },
1537
- "version": "0.9.2-next.15e6ac1.0"
1537
+ "version": "0.9.2-next.9d7a870.0"
1538
1538
  }
package/package.json CHANGED
@@ -1,10 +1,13 @@
1
1
  {
2
2
  "name": "@outputai/cli",
3
- "version": "0.9.2-next.15e6ac1.0",
3
+ "version": "0.9.2-next.9d7a870.0",
4
4
  "description": "CLI for Output.ai workflow generation",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
7
7
  "types": "dist/index.d.ts",
8
+ "engines": {
9
+ "node": ">=24.15.0"
10
+ },
8
11
  "files": [
9
12
  "./bin",
10
13
  "./dist",
@@ -36,9 +39,9 @@
36
39
  "semver": "7.7.4",
37
40
  "undici": "8.5.0",
38
41
  "yaml": "^2.8.3",
39
- "@outputai/credentials": "0.9.2-next.15e6ac1.0",
40
- "@outputai/evals": "0.9.2-next.15e6ac1.0",
41
- "@outputai/llm": "0.9.2-next.15e6ac1.0"
42
+ "@outputai/credentials": "0.9.2-next.9d7a870.0",
43
+ "@outputai/evals": "0.9.2-next.9d7a870.0",
44
+ "@outputai/llm": "0.9.2-next.9d7a870.0"
42
45
  },
43
46
  "devDependencies": {
44
47
  "@types/cli-progress": "3.11.6",