@t4h.framework/cli 0.0.0-experimental-20261006121555 → 0.0.0-experimental-20261006133319

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/CHANGELOG.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @t4h.framework/cli
2
2
 
3
- ## 0.0.0-experimental-20261006121555
3
+ ## 0.0.0-experimental-20261006133319
4
4
 
5
5
  ### Minor Changes
6
6
 
@@ -15,10 +15,25 @@
15
15
  `@t4h.framework/dev` exports `HeadlessApp`, the API behind it, and the app
16
16
  process resolves its bundle root from `file:` URLs.
17
17
 
18
+ - [#210](https://github.com/tech4humans-brasil/framework/pull/210) [`990c074`](https://github.com/tech4humans-brasil/framework/commit/990c074af498cb7610d310e295ad613dce7a9b52) Thanks [@tony-tsx](https://github.com/tony-tsx)! - The dev runtime publishes what it runs: jobs queued, started and finished
19
+ (with the queue counts), runs created and settled, activities started, waiting
20
+ and settled (with the error of a rejected one), timeouts and lost workers.
21
+ - `--debug` on `framework dev` and `framework workflows <workflow> run` prints
22
+ those events on stderr; `--debug-log <file>` appends them to a file as NDJSON.
23
+ - Every app process registers itself and listens on a local socket (named pipe
24
+ on Windows). `framework runtime ls` lists them, `framework runtime status`
25
+ prints the queue, the jobs running and waiting and the runs in progress, and
26
+ `framework runtime watch` follows the events live (`--json` for NDJSON),
27
+ reconnecting across `dev` rebuilds.
28
+
29
+ `@t4h.framework/dev` exports `listRuntimes`, `requestRuntimeStatus`,
30
+ `watchRuntime` and `formatRuntimeEvent`, and takes `debugLog` on `Server` and
31
+ `HeadlessApp.up`.
32
+
18
33
  ### Patch Changes
19
34
 
20
- - Updated dependencies [[`c312bfb`](https://github.com/tech4humans-brasil/framework/commit/c312bfb0f1b1ddbc40d8ac0ede113c5614aa9df8), [`92db468`](https://github.com/tech4humans-brasil/framework/commit/92db468f819d3c7d01884526598acd5fbef9b4ef)]:
21
- - @t4h.framework/dev@0.0.0-experimental-20261006121555
35
+ - Updated dependencies [[`c312bfb`](https://github.com/tech4humans-brasil/framework/commit/c312bfb0f1b1ddbc40d8ac0ede113c5614aa9df8), [`92db468`](https://github.com/tech4humans-brasil/framework/commit/92db468f819d3c7d01884526598acd5fbef9b4ef), [`990c074`](https://github.com/tech4humans-brasil/framework/commit/990c074af498cb7610d310e295ad613dce7a9b52)]:
36
+ - @t4h.framework/dev@0.0.0-experimental-20261006133319
22
37
 
23
38
  ## 0.16.15
24
39
 
package/dist/bin/bin.js CHANGED
@@ -5,6 +5,7 @@ import { buildCommand } from '../commands/build/build.js';
5
5
  import { devCommand } from '../commands/dev/dev.js';
6
6
  import { harnessCommand } from '../commands/harness/harness.js';
7
7
  import { publishCommand } from '../commands/publish/publish.js';
8
+ import { runtimeCommand } from '../commands/runtime/runtime.js';
8
9
  import { workflowsCommand } from '../commands/workflows/workflows.js';
9
10
  program.addCommand(devCommand);
10
11
  program.addCommand(publishCommand);
@@ -12,6 +13,7 @@ program.addCommand(buildCommand);
12
13
  program.addCommand(AIBootstrapCommand);
13
14
  program.addCommand(harnessCommand);
14
15
  program.addCommand(workflowsCommand);
16
+ program.addCommand(runtimeCommand);
15
17
  await program.parseAsync(process.argv);
16
18
  process.on('uncaughtException', error => {
17
19
  const isExitPromptError = error instanceof Error && error.name === 'ExitPromptError';
@@ -1 +1 @@
1
- {"version":3,"file":"bin.js","sourceRoot":"","sources":["../../src/bin/bin.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAA;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAA;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAA;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAA;AAErE,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAA;AAC9B,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAA;AAClC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAA;AAChC,OAAO,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAA;AACtC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAA;AAClC,OAAO,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAA;AAEpC,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;AAEtC,OAAO,CAAC,EAAE,CAAC,mBAAmB,EAAE,KAAK,CAAC,EAAE;IACtC,MAAM,iBAAiB,GACrB,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,iBAAiB,CAAA;IAE5D,IAAI,iBAAiB;QAAE,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAE7C,MAAM,KAAK,CAAA;AACb,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"bin.js","sourceRoot":"","sources":["../../src/bin/bin.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAA;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAA;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAA;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAA;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAA;AAErE,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAA;AAC9B,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAA;AAClC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAA;AAChC,OAAO,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAA;AACtC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAA;AAClC,OAAO,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAA;AACpC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAA;AAElC,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;AAEtC,OAAO,CAAC,EAAE,CAAC,mBAAmB,EAAE,KAAK,CAAC,EAAE;IACtC,MAAM,iBAAiB,GACrB,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,iBAAiB,CAAA;IAE5D,IAAI,iBAAiB;QAAE,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAE7C,MAAM,KAAK,CAAA;AACb,CAAC,CAAC,CAAA"}
@@ -3,6 +3,7 @@ import path from 'node:path';
3
3
  import { parseEnv } from 'node:util';
4
4
  import { Server } from '@t4h.framework/dev';
5
5
  import { Command, Option } from 'commander';
6
+ import { debugLogOption, debugOption, toDebugLog, } from '../../tools/debug-log-option.js';
6
7
  export const devCommand = new Command('dev')
7
8
  .description('Start the development server')
8
9
  .option('--entrypoint <entrypoint path>', 'The entrypoint package json path', './package.json')
@@ -25,6 +26,8 @@ export const devCommand = new Command('dev')
25
26
  .default(3000)
26
27
  .argParser(value => Number.parseInt(value, 10)))
27
28
  .addOption(new Option('--host <host>', 'The HTTP host').default('localhost'))
29
+ .addOption(debugOption())
30
+ .addOption(debugLogOption())
28
31
  .action(async (options) => {
29
32
  if (options.envFileIfExists && fs.existsSync(options.envFileIfExists))
30
33
  Object.assign(options.env, parseEnv(fs.readFileSync(options.envFileIfExists, 'utf8')));
@@ -33,6 +36,7 @@ export const devCommand = new Command('dev')
33
36
  env: options.env,
34
37
  port: options.port,
35
38
  host: options.host,
39
+ debugLog: toDebugLog(options),
36
40
  });
37
41
  const shutdown = (code) => {
38
42
  server.down().finally(() => process.exit(code));
@@ -1 +1 @@
1
- {"version":3,"file":"dev.js","sourceRoot":"","sources":["../../../src/commands/dev/dev.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAEpC,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAU3C,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC;KACzC,WAAW,CAAC,8BAA8B,CAAC;KAC3C,MAAM,CACL,gCAAgC,EAChC,kCAAkC,EAClC,gBAAgB,CACjB;KACA,SAAS,CACR,IAAI,MAAM,CAAC,oBAAoB,EAAE,iBAAiB,CAAC;KAChD,SAAS,CAAyB,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE;IACrD,MAAM,CAAC,uBAAuB,EAAE,wBAAwB,CAAC,GACvD,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAElB,IAAI,CAAC,uBAAuB;QAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAA;IAEtE,IAAI,CAAC,wBAAwB;QAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAA;IAEvE,OAAO;QACL,GAAG,QAAQ;QACX,CAAC,uBAAuB,CAAC,EAAE,wBAAwB;KACpD,CAAA;AACH,CAAC,CAAC;KACD,OAAO,CAAC,EAAE,CAAC,CACf;KACA,SAAS,CACR,IAAI,MAAM,CACR,kCAAkC,EAClC,8CAA8C,CAC/C,CAAC,SAAS,CAAS,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC,CACjE;KACA,SAAS,CACR,IAAI,MAAM,CAAC,mBAAmB,EAAE,eAAe,CAAC;KAC7C,GAAG,CAAC,MAAM,CAAC;KACX,OAAO,CAAC,IAAI,CAAC;KACb,SAAS,CAAS,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAC1D;KACA,SAAS,CAAC,IAAI,MAAM,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;KAC5E,MAAM,CAAC,KAAK,EAAE,OAA0B,EAAE,EAAE;IAC3C,IAAI,OAAO,CAAC,eAAe,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,eAAe,CAAC;QACnE,MAAM,CAAC,MAAM,CACX,OAAO,CAAC,GAAG,EACX,QAAQ,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC,CAC3D,CAAA;IAEH,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC;QACxB,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,IAAI,EAAE,OAAO,CAAC,IAAI;KACnB,CAAC,CAAA;IAEF,MAAM,QAAQ,GAAG,CAAC,IAAY,EAAE,EAAE;QAChC,MAAM,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;IACjD,CAAC,CAAA;IAED,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;IAErC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;IACzC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;IAE1C,MAAM,MAAM,CAAC,EAAE,EAAE,CAAA;AACnB,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"dev.js","sourceRoot":"","sources":["../../../src/commands/dev/dev.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAEpC,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAE3C,OAAO,EACL,cAAc,EACd,WAAW,EACX,UAAU,GAEX,MAAM,iCAAiC,CAAA;AAUxC,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC;KACzC,WAAW,CAAC,8BAA8B,CAAC;KAC3C,MAAM,CACL,gCAAgC,EAChC,kCAAkC,EAClC,gBAAgB,CACjB;KACA,SAAS,CACR,IAAI,MAAM,CAAC,oBAAoB,EAAE,iBAAiB,CAAC;KAChD,SAAS,CAAyB,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE;IACrD,MAAM,CAAC,uBAAuB,EAAE,wBAAwB,CAAC,GACvD,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAElB,IAAI,CAAC,uBAAuB;QAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAA;IAEtE,IAAI,CAAC,wBAAwB;QAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAA;IAEvE,OAAO;QACL,GAAG,QAAQ;QACX,CAAC,uBAAuB,CAAC,EAAE,wBAAwB;KACpD,CAAA;AACH,CAAC,CAAC;KACD,OAAO,CAAC,EAAE,CAAC,CACf;KACA,SAAS,CACR,IAAI,MAAM,CACR,kCAAkC,EAClC,8CAA8C,CAC/C,CAAC,SAAS,CAAS,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC,CACjE;KACA,SAAS,CACR,IAAI,MAAM,CAAC,mBAAmB,EAAE,eAAe,CAAC;KAC7C,GAAG,CAAC,MAAM,CAAC;KACX,OAAO,CAAC,IAAI,CAAC;KACb,SAAS,CAAS,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAC1D;KACA,SAAS,CAAC,IAAI,MAAM,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;KAC5E,SAAS,CAAC,WAAW,EAAE,CAAC;KACxB,SAAS,CAAC,cAAc,EAAE,CAAC;KAC3B,MAAM,CAAC,KAAK,EAAE,OAA0B,EAAE,EAAE;IAC3C,IAAI,OAAO,CAAC,eAAe,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,eAAe,CAAC;QACnE,MAAM,CAAC,MAAM,CACX,OAAO,CAAC,GAAG,EACX,QAAQ,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC,CAC3D,CAAA;IAEH,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC;QACxB,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,QAAQ,EAAE,UAAU,CAAC,OAAO,CAAC;KAC9B,CAAC,CAAA;IAEF,MAAM,QAAQ,GAAG,CAAC,IAAY,EAAE,EAAE;QAChC,MAAM,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;IACjD,CAAC,CAAA;IAED,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;IAErC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;IACzC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;IAE1C,MAAM,MAAM,CAAC,EAAE,EAAE,CAAA;AACnB,CAAC,CAAC,CAAA"}
@@ -0,0 +1,131 @@
1
+ import path from 'node:path';
2
+ import { setTimeout as sleep } from 'node:timers/promises';
3
+ import { formatRuntimeEvent, listRuntimes, requestRuntimeStatus, watchRuntime, } from '@t4h.framework/dev';
4
+ import { Argument, Command, Option } from 'commander';
5
+ const NEXT_RUNTIME_POLL_IN_MS = 500;
6
+ /** Prints the message of an expected failure instead of a stack trace. */
7
+ const failing = (action) => async (...args) => {
8
+ exitWhenStdoutCloses();
9
+ try {
10
+ await action(...args);
11
+ }
12
+ catch (error) {
13
+ process.stderr.write(`${error instanceof Error ? error.message : String(error)}\n`);
14
+ process.exit(1);
15
+ }
16
+ };
17
+ const print = (value) => process.stdout.write(`${JSON.stringify(value, null, 2)}\n`);
18
+ const line = (value) => process.stdout.write(`${value}\n`);
19
+ /** `framework runtime watch | head` closes stdout: stop quietly. */
20
+ function exitWhenStdoutCloses() {
21
+ process.stdout.on('error', error => {
22
+ if (error.code === 'EPIPE')
23
+ process.exit(0);
24
+ throw error;
25
+ });
26
+ }
27
+ /**
28
+ * Picks the runtime of `pid`, else the one serving `projectDir`, else the only
29
+ * one running. Throws with the candidates when that is ambiguous.
30
+ */
31
+ export function selectRuntime(runtimes, { pid, projectDir }) {
32
+ if (pid !== undefined) {
33
+ const runtime = runtimes.find(candidate => candidate.pid === pid);
34
+ if (!runtime)
35
+ throw new Error(`No runtime is running with pid ${pid}`);
36
+ return runtime;
37
+ }
38
+ const ofProject = runtimes.filter(candidate => candidate.projectDir === projectDir);
39
+ const candidates = ofProject.length ? ofProject : runtimes;
40
+ if (candidates.length === 0)
41
+ throw new Error('No runtime is running; start one with `framework dev` or `framework workflows <workflow> run`');
42
+ if (candidates.length > 1)
43
+ throw new Error(`${candidates.length} runtimes are running; pass a pid: ${candidates
44
+ .map(({ pid, kind, projectDir }) => `${pid} (${kind}, ${projectDir})`)
45
+ .join(', ')}`);
46
+ return candidates[0];
47
+ }
48
+ export function formatRuntimeStatus({ runtime, queue, runs, }) {
49
+ return [
50
+ `runtime ${runtime.pid} (${runtime.kind}) ${runtime.projectDir ?? runtime.entrypoint}`,
51
+ `workers=${queue.workers} concurrency=${queue.concurrency}`,
52
+ `queue=${queue.queued} (urgent ${queue.urgent})`,
53
+ `running=${queue.inFlight}/${queue.capacity}`,
54
+ `runs running=${runs.running}`,
55
+ ].join(' | ');
56
+ }
57
+ const pidArgument = () => new Argument('[pid]', 'Runtime pid (see `framework runtime ls`)').argParser(value => {
58
+ const pid = Number.parseInt(value, 10);
59
+ if (!Number.isInteger(pid))
60
+ throw new Error('Invalid pid');
61
+ return pid;
62
+ });
63
+ const projectOption = () => new Option('--project <dir>', 'Pick the runtime of this project when no pid is given')
64
+ .default(process.cwd(), 'the current directory')
65
+ .argParser(value => path.resolve(process.cwd(), value));
66
+ async function waitForNextRuntime(previous) {
67
+ while (true) {
68
+ const next = (await listRuntimes()).find(runtime => runtime.pid !== previous.pid &&
69
+ runtime.projectDir === previous.projectDir &&
70
+ runtime.parentPid === previous.parentPid);
71
+ if (next)
72
+ return next;
73
+ await sleep(NEXT_RUNTIME_POLL_IN_MS);
74
+ }
75
+ }
76
+ const lsCommand = new Command('ls')
77
+ .description('List the runtimes running on this machine (JSON)')
78
+ .action(async () => {
79
+ print({ runtimes: await listRuntimes() });
80
+ });
81
+ const statusCommand = new Command('status')
82
+ .description('Print the queue, the jobs running and the runs of a runtime (JSON)')
83
+ .addArgument(pidArgument())
84
+ .addOption(projectOption())
85
+ .action(failing(async (pid, options) => {
86
+ const runtime = selectRuntime(await listRuntimes(), {
87
+ pid,
88
+ projectDir: options.project,
89
+ });
90
+ print(await requestRuntimeStatus(runtime));
91
+ }));
92
+ const watchCommand = new Command('watch')
93
+ .description('Follow what a runtime runs: jobs, queue size, runs, activities, timeouts')
94
+ .addArgument(pidArgument())
95
+ .addOption(projectOption())
96
+ .option('--json', 'Print NDJSON instead of readable lines', false)
97
+ .option('--no-follow', 'Stop when the runtime exits instead of waiting for the next one (dev rebuilds)')
98
+ .action(failing(async (pid, options) => {
99
+ let runtime = selectRuntime(await listRuntimes(), {
100
+ pid,
101
+ projectDir: options.project,
102
+ });
103
+ const onStatus = (status) => options.json
104
+ ? line(JSON.stringify({ type: 'status', ...status }))
105
+ : line(formatRuntimeStatus(status));
106
+ let watcher = null;
107
+ process.once('SIGINT', () => {
108
+ watcher?.close();
109
+ process.exit(0);
110
+ });
111
+ while (true) {
112
+ watcher = watchRuntime(runtime, {
113
+ onStatus,
114
+ onEvent: event => line(options.json
115
+ ? JSON.stringify({ type: 'event', event })
116
+ : formatRuntimeEvent(event)),
117
+ });
118
+ await watcher.closed.catch(() => { });
119
+ if (!options.follow)
120
+ return;
121
+ if (!options.json)
122
+ line(`runtime ${runtime.pid} exited; waiting for the next one…`);
123
+ runtime = await waitForNextRuntime(runtime);
124
+ }
125
+ }));
126
+ export const runtimeCommand = new Command('runtime')
127
+ .description('Inspect the runtimes started by `framework dev` and `framework workflows`')
128
+ .addCommand(lsCommand)
129
+ .addCommand(statusCommand)
130
+ .addCommand(watchCommand);
131
+ //# sourceMappingURL=runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../../src/commands/runtime/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,UAAU,IAAI,KAAK,EAAE,MAAM,sBAAsB,CAAA;AAE1D,OAAO,EACL,kBAAkB,EAClB,YAAY,EACZ,oBAAoB,EACpB,YAAY,GAIb,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAErD,MAAM,uBAAuB,GAAG,GAAG,CAAA;AAEnC,0EAA0E;AAC1E,MAAM,OAAO,GACX,CAA0B,MAAyC,EAAE,EAAE,CACvE,KAAK,EAAE,GAAG,IAAW,EAAE,EAAE;IACvB,oBAAoB,EAAE,CAAA;IAEtB,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,GAAG,IAAI,CAAC,CAAA;IACvB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAC9D,CAAA;QAED,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;AACH,CAAC,CAAA;AAWH,MAAM,KAAK,GAAG,CAAC,KAAc,EAAE,EAAE,CAC/B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAA;AAE7D,MAAM,IAAI,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,IAAI,CAAC,CAAA;AAElE,oEAAoE;AACpE,SAAS,oBAAoB;IAC3B,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE;QACjC,IAAK,KAA+B,CAAC,IAAI,KAAK,OAAO;YAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAEtE,MAAM,KAAK,CAAA;IACb,CAAC,CAAC,CAAA;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAC3B,QAAgC,EAChC,EAAE,GAAG,EAAE,UAAU,EAAwC;IAEzD,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACtB,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,KAAK,GAAG,CAAC,CAAA;QAEjE,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,GAAG,EAAE,CAAC,CAAA;QAEtE,OAAO,OAAO,CAAA;IAChB,CAAC;IAED,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAC/B,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,UAAU,KAAK,UAAU,CACjD,CAAA;IAED,MAAM,UAAU,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAA;IAE1D,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QACzB,MAAM,IAAI,KAAK,CACb,+FAA+F,CAChG,CAAA;IAEH,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC;QACvB,MAAM,IAAI,KAAK,CACb,GAAG,UAAU,CAAC,MAAM,sCAAsC,UAAU;aACjE,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,GAAG,GAAG,KAAK,IAAI,KAAK,UAAU,GAAG,CAAC;aACrE,IAAI,CAAC,IAAI,CAAC,EAAE,CAChB,CAAA;IAEH,OAAO,UAAU,CAAC,CAAC,CAAE,CAAA;AACvB,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,EAClC,OAAO,EACP,KAAK,EACL,IAAI,GACU;IACd,OAAO;QACL,WAAW,OAAO,CAAC,GAAG,KAAK,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,UAAU,EAAE;QACtF,WAAW,KAAK,CAAC,OAAO,gBAAgB,KAAK,CAAC,WAAW,EAAE;QAC3D,SAAS,KAAK,CAAC,MAAM,YAAY,KAAK,CAAC,MAAM,GAAG;QAChD,WAAW,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,EAAE;QAC7C,gBAAgB,IAAI,CAAC,OAAO,EAAE;KAC/B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AACf,CAAC;AAED,MAAM,WAAW,GAAG,GAAG,EAAE,CACvB,IAAI,QAAQ,CAAC,OAAO,EAAE,0CAA0C,CAAC,CAAC,SAAS,CACzE,KAAK,CAAC,EAAE;IACN,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;IAEtC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,CAAA;IAE1D,OAAO,GAAG,CAAA;AACZ,CAAC,CACF,CAAA;AAEH,MAAM,aAAa,GAAG,GAAG,EAAE,CACzB,IAAI,MAAM,CACR,iBAAiB,EACjB,uDAAuD,CACxD;KACE,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,uBAAuB,CAAC;KAC/C,SAAS,CAAS,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC,CAAA;AAEnE,KAAK,UAAU,kBAAkB,CAAC,QAAqB;IACrD,OAAO,IAAI,EAAE,CAAC;QACZ,MAAM,IAAI,GAAG,CAAC,MAAM,YAAY,EAAE,CAAC,CAAC,IAAI,CACtC,OAAO,CAAC,EAAE,CACR,OAAO,CAAC,GAAG,KAAK,QAAQ,CAAC,GAAG;YAC5B,OAAO,CAAC,UAAU,KAAK,QAAQ,CAAC,UAAU;YAC1C,OAAO,CAAC,SAAS,KAAK,QAAQ,CAAC,SAAS,CAC3C,CAAA;QAED,IAAI,IAAI;YAAE,OAAO,IAAI,CAAA;QAErB,MAAM,KAAK,CAAC,uBAAuB,CAAC,CAAA;IACtC,CAAC;AACH,CAAC;AAED,MAAM,SAAS,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;KAChC,WAAW,CAAC,kDAAkD,CAAC;KAC/D,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,KAAK,CAAC,EAAE,QAAQ,EAAE,MAAM,YAAY,EAAE,EAAE,CAAC,CAAA;AAC3C,CAAC,CAAC,CAAA;AAEJ,MAAM,aAAa,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC;KACxC,WAAW,CACV,oEAAoE,CACrE;KACA,WAAW,CAAC,WAAW,EAAE,CAAC;KAC1B,SAAS,CAAC,aAAa,EAAE,CAAC;KAC1B,MAAM,CACL,OAAO,CAAC,KAAK,EAAE,GAAuB,EAAE,OAA6B,EAAE,EAAE;IACvE,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,YAAY,EAAE,EAAE;QAClD,GAAG;QACH,UAAU,EAAE,OAAO,CAAC,OAAO;KAC5B,CAAC,CAAA;IAEF,KAAK,CAAC,MAAM,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAA;AAC5C,CAAC,CAAC,CACH,CAAA;AAEH,MAAM,YAAY,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC;KACtC,WAAW,CACV,0EAA0E,CAC3E;KACA,WAAW,CAAC,WAAW,EAAE,CAAC;KAC1B,SAAS,CAAC,aAAa,EAAE,CAAC;KAC1B,MAAM,CAAC,QAAQ,EAAE,wCAAwC,EAAE,KAAK,CAAC;KACjE,MAAM,CACL,aAAa,EACb,gFAAgF,CACjF;KACA,MAAM,CACL,OAAO,CAAC,KAAK,EAAE,GAAuB,EAAE,OAA4B,EAAE,EAAE;IACtE,IAAI,OAAO,GAAG,aAAa,CAAC,MAAM,YAAY,EAAE,EAAE;QAChD,GAAG;QACH,UAAU,EAAE,OAAO,CAAC,OAAO;KAC5B,CAAC,CAAA;IAEF,MAAM,QAAQ,GAAG,CAAC,MAAqB,EAAE,EAAE,CACzC,OAAO,CAAC,IAAI;QACV,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;QACrD,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAA;IAEvC,IAAI,OAAO,GAA0B,IAAI,CAAA;IAEzC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE;QAC1B,OAAO,EAAE,KAAK,EAAE,CAAA;QAEhB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC,CAAC,CAAA;IAEF,OAAO,IAAI,EAAE,CAAC;QACZ,OAAO,GAAG,YAAY,CAAC,OAAO,EAAE;YAC9B,QAAQ;YACR,OAAO,EAAE,KAAK,CAAC,EAAE,CACf,IAAI,CACF,OAAO,CAAC,IAAI;gBACV,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;gBAC1C,CAAC,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAC9B;SACJ,CAAC,CAAA;QAEF,MAAM,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;QAEpC,IAAI,CAAC,OAAO,CAAC,MAAM;YAAE,OAAM;QAE3B,IAAI,CAAC,OAAO,CAAC,IAAI;YACf,IAAI,CAAC,WAAW,OAAO,CAAC,GAAG,oCAAoC,CAAC,CAAA;QAElE,OAAO,GAAG,MAAM,kBAAkB,CAAC,OAAO,CAAC,CAAA;IAC7C,CAAC;AACH,CAAC,CAAC,CACH,CAAA;AAEH,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,OAAO,CAAC,SAAS,CAAC;KACjD,WAAW,CACV,2EAA2E,CAC5E;KACA,UAAU,CAAC,SAAS,CAAC;KACrB,UAAU,CAAC,aAAa,CAAC;KACzB,UAAU,CAAC,YAAY,CAAC,CAAA"}
@@ -3,6 +3,7 @@ import path from 'node:path';
3
3
  import { parseEnv } from 'node:util';
4
4
  import { DEFAULT_HEADLESS_RUN_TIMEOUT_IN_MS, HeadlessApp, HeadlessAppError, } from '@t4h.framework/dev';
5
5
  import { Argument, Command, Option } from 'commander';
6
+ import { debugLogOption, debugOption, toDebugLog, } from '../../tools/debug-log-option.js';
6
7
  /** Exit codes of `framework workflows`, for scripts and agents. */
7
8
  export const WORKFLOWS_EXIT_CODE = {
8
9
  ok: 0,
@@ -91,6 +92,8 @@ export const workflowsCommand = new Command('workflows')
91
92
  throw new Error('Invalid timeout');
92
93
  return timeout;
93
94
  }))
95
+ .addOption(debugOption())
96
+ .addOption(debugLogOption())
94
97
  .option('--trace', 'Include the activities, logs and child runs in the output (run)', false)
95
98
  .action(async (workflowId, action, options) => {
96
99
  if (options.envFileIfExists && fs.existsSync(options.envFileIfExists))
@@ -109,6 +112,7 @@ export const workflowsCommand = new Command('workflows')
109
112
  app = await HeadlessApp.up({
110
113
  entrypoint: options.entrypoint,
111
114
  env: options.env,
115
+ debugLog: toDebugLog(options),
112
116
  });
113
117
  exitCode = await execute(app, workflowId, action, options);
114
118
  }
@@ -1 +1 @@
1
- {"version":3,"file":"workflows.js","sourceRoot":"","sources":["../../../src/commands/workflows/workflows.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAEpC,OAAO,EACL,kCAAkC,EAClC,WAAW,EACX,gBAAgB,GAEjB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAcrD,mEAAmE;AACnE,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,EAAE,EAAE,CAAC;IACL,QAAQ,EAAE,CAAC;IACX,KAAK,EAAE,CAAC;IACR,QAAQ,EAAE,CAAC;CACH,CAAA;AAEV,MAAM,UAAU,qBAAqB,CAAC,MAAyB;IAC7D,IAAI,MAAM,CAAC,QAAQ;QAAE,OAAO,mBAAmB,CAAC,QAAQ,CAAA;IAExD,OAAO,MAAM,CAAC,GAAG,CAAC,MAAM,KAAK,WAAW;QACtC,CAAC,CAAC,mBAAmB,CAAC,EAAE;QACxB,CAAC,CAAC,mBAAmB,CAAC,QAAQ,CAAA;AAClC,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,EAChC,KAAK,EACL,SAAS,GAC4C;IACrD,IAAI,KAAK,KAAK,SAAS,IAAI,SAAS,KAAK,SAAS;QAChD,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAA;IAElE,MAAM,IAAI,GACR,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;IAEtE,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,SAAS,CAAA;IAExC,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IACzB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,yCAA0C,KAAe,CAAC,OAAO,EAAE,EACnE,EAAE,KAAK,EAAE,KAAK,EAAE,CACjB,CAAA;IACH,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,KAAc;IACnC,IAAI,KAAK,YAAY,gBAAgB;QACnC,OAAO;YACL,KAAK,EAAE;gBACL,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,IAAI;gBAC5B,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,IAAI;aAC/B;SACF,CAAA;IAEH,OAAO;QACL,KAAK,EAAE,EAAE,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;KAC3E,CAAA;AACH,CAAC;AAED,MAAM,KAAK,GAAG,CAAC,KAAc,EAAE,EAAE,CAC/B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAA;AAE7D,KAAK,UAAU,OAAO,CACpB,GAAgB,EAChB,UAA8B,EAC9B,MAAmC,EACnC,OAAgC;IAEhC,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,KAAK,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,CAAC,CAAA;QAEnC,OAAO,mBAAmB,CAAC,EAAE,CAAA;IAC/B,CAAC;IAED,MAAM,QAAQ,GAAG,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,UAAU,CAAC,CAAA;IAElE,IAAI,CAAC,QAAQ;QACX,MAAM,IAAI,gBAAgB,CAAC,uBAAuB,UAAU,EAAE,EAAE,GAAG,EAAE;YACnE,SAAS,EAAE,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;SAC7C,CAAC,CAAA;IAEJ,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;QACrB,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAA;QAEnB,OAAO,mBAAmB,CAAC,EAAE,CAAA;IAC/B,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE,iBAAiB,CAAC,OAAO,CAAC,EAAE;QACnE,WAAW,EAAE,OAAO,CAAC,OAAO;QAC5B,KAAK,EAAE,OAAO,CAAC,KAAK;KACrB,CAAC,CAAA;IAEF,KAAK,CAAC,MAAM,CAAC,CAAA;IAEb,OAAO,qBAAqB,CAAC,MAAM,CAAC,CAAA;AACtC,CAAC;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,OAAO,CAAC,WAAW,CAAC;KACrD,WAAW,CACV,oFAAoF,CACrF;KACA,WAAW,CACV,IAAI,QAAQ,CAAC,YAAY,EAAE,4CAA4C,CAAC,CACzE;KACA,WAAW,CACV,IAAI,QAAQ,CAAC,UAAU,EAAE,8BAA8B,CAAC;KACrD,OAAO,CAAC,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;KAC5B,OAAO,CAAC,UAAU,CAAC,CACvB;KACA,MAAM,CACL,gCAAgC,EAChC,kCAAkC,EAClC,gBAAgB,CACjB;KACA,SAAS,CACR,IAAI,MAAM,CAAC,oBAAoB,EAAE,8BAA8B,CAAC;KAC7D,SAAS,CAAyB,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE;IACrD,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;IAEhC,IAAI,KAAK,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAA;IAEvD,OAAO,EAAE,GAAG,QAAQ,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,CAAA;AACzE,CAAC,CAAC;KACD,OAAO,CAAC,EAAE,CAAC,CACf;KACA,SAAS,CACR,IAAI,MAAM,CACR,kCAAkC,EAClC,8CAA8C,CAC/C,CAAC,SAAS,CAAS,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC,CACjE;KACA,MAAM,CAAC,oBAAoB,EAAE,8BAA8B,CAAC;KAC5D,SAAS,CACR,IAAI,MAAM,CACR,0BAA0B,EAC1B,gDAAgD,CACjD,CAAC,SAAS,CAAS,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC,CACjE;KACA,SAAS,CACR,IAAI,MAAM,CACR,oBAAoB,EACpB,6DAA6D,CAC9D;KACE,OAAO,CAAC,kCAAkC,CAAC;KAC3C,SAAS,CAAS,KAAK,CAAC,EAAE;IACzB,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;IAE1C,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,OAAO,GAAG,CAAC;QAC3C,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAA;IAEpC,OAAO,OAAO,CAAA;AAChB,CAAC,CAAC,CACL;KACA,MAAM,CACL,SAAS,EACT,iEAAiE,EACjE,KAAK,CACN;KACA,MAAM,CACL,KAAK,EACH,UAA8B,EAC9B,MAAmC,EACnC,OAAgC,EAChC,EAAE;IACF,IAAI,OAAO,CAAC,eAAe,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,eAAe,CAAC;QACnE,MAAM,CAAC,MAAM,CACX,OAAO,CAAC,GAAG,EACX,QAAQ,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC,CAC3D,CAAA;IAEH,IAAI,GAAG,GAAuB,IAAI,CAAA;IAClC,IAAI,QAAQ,GAAW,mBAAmB,CAAC,KAAK,CAAA;IAEhD,MAAM,QAAQ,GAAG,KAAK,EAAE,IAAY,EAAE,EAAE;QACtC,MAAM,GAAG,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;QAEjC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACpB,CAAC,CAAA;IAED,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,KAAK,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAA;IAChD,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,KAAK,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAA;IAEjD,IAAI,CAAC;QACH,IAAI,MAAM,KAAK,KAAK;YAAE,iBAAiB,CAAC,OAAO,CAAC,CAAA;QAEhD,GAAG,GAAG,MAAM,WAAW,CAAC,EAAE,CAAC;YACzB,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,GAAG,EAAE,OAAO,CAAC,GAAG;SACjB,CAAC,CAAA;QAEF,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;IAC5D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAA;IAC7B,CAAC;IAED,MAAM,QAAQ,CAAC,QAAQ,CAAC,CAAA;AAC1B,CAAC,CACF,CAAA"}
1
+ {"version":3,"file":"workflows.js","sourceRoot":"","sources":["../../../src/commands/workflows/workflows.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import path from 'node:path';
2
+ import { DEBUG_LOG_STDERR } from '@t4h.framework/dev';
3
+ import { Option } from 'commander';
4
+ export const debugOption = () => new Option('--debug', 'Log what the runtime runs (jobs, runs, activities, queue) to stderr');
5
+ export const debugLogOption = () => new Option('--debug-log <file-path>', 'Append the runtime events to this file as NDJSON instead of stderr').argParser(value => path.resolve(process.cwd(), value));
6
+ /** The `debugLog` the dev package takes, or undefined when debugging is off. */
7
+ export function toDebugLog({ debug, debugLog, }) {
8
+ if (debugLog)
9
+ return debugLog;
10
+ return debug ? DEBUG_LOG_STDERR : undefined;
11
+ }
12
+ //# sourceMappingURL=debug-log-option.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debug-log-option.js","sourceRoot":"","sources":["../../src/tools/debug-log-option.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAA;AAE5B,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAOlC,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,EAAE,CAC9B,IAAI,MAAM,CACR,SAAS,EACT,qEAAqE,CACtE,CAAA;AAEH,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,EAAE,CACjC,IAAI,MAAM,CACR,yBAAyB,EACzB,oEAAoE,CACrE,CAAC,SAAS,CAAS,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC,CAAA;AAElE,gFAAgF;AAChF,MAAM,UAAU,UAAU,CAAC,EACzB,KAAK,EACL,QAAQ,GACQ;IAChB,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAA;IAE7B,OAAO,KAAK,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAA;AAC7C,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@t4h.framework/cli",
3
- "version": "0.0.0-experimental-20261006121555",
3
+ "version": "0.0.0-experimental-20261006133319",
4
4
  "description": "CLI tools for the T4H Framework",
5
5
  "homepage": "https://github.com/tech4humans-brasil/framework/tree/main/packages/cli",
6
6
  "bugs": "https://github.com/tech4humans-brasil/framework/issues",
@@ -29,7 +29,7 @@
29
29
  },
30
30
  "dependencies": {
31
31
  "@inquirer/prompts": "^8.3.0",
32
- "@t4h.framework/dev": "^0.0.0-experimental-20261006121555",
32
+ "@t4h.framework/dev": "^0.0.0-experimental-20261006133319",
33
33
  "@t4h.framework/harness": "^0.3.2",
34
34
  "commander": "^14.0.3",
35
35
  "form-data": "^4.0.5",