@radkode/neo 1.1.2 → 1.2.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.
Files changed (83) hide show
  1. package/dist/cli.d.ts.map +1 -1
  2. package/dist/cli.js +46 -8
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/agent/context/index.d.ts.map +1 -1
  5. package/dist/commands/agent/context/index.js +72 -21
  6. package/dist/commands/agent/context/index.js.map +1 -1
  7. package/dist/commands/agent/index.d.ts.map +1 -1
  8. package/dist/commands/agent/index.js +7 -1
  9. package/dist/commands/agent/index.js.map +1 -1
  10. package/dist/commands/alias/setup/index.d.ts.map +1 -1
  11. package/dist/commands/alias/setup/index.js +55 -41
  12. package/dist/commands/alias/setup/index.js.map +1 -1
  13. package/dist/commands/gh/pr/create/index.d.ts.map +1 -1
  14. package/dist/commands/gh/pr/create/index.js +84 -44
  15. package/dist/commands/gh/pr/create/index.js.map +1 -1
  16. package/dist/commands/git/branch/index.d.ts.map +1 -1
  17. package/dist/commands/git/branch/index.js +55 -31
  18. package/dist/commands/git/branch/index.js.map +1 -1
  19. package/dist/commands/git/commit/index.d.ts.map +1 -1
  20. package/dist/commands/git/commit/index.js +65 -33
  21. package/dist/commands/git/commit/index.js.map +1 -1
  22. package/dist/commands/git/pull/index.d.ts +7 -1
  23. package/dist/commands/git/pull/index.d.ts.map +1 -1
  24. package/dist/commands/git/pull/index.js +60 -58
  25. package/dist/commands/git/pull/index.js.map +1 -1
  26. package/dist/commands/git/push/index.d.ts +2 -0
  27. package/dist/commands/git/push/index.d.ts.map +1 -1
  28. package/dist/commands/git/push/index.js +61 -38
  29. package/dist/commands/git/push/index.js.map +1 -1
  30. package/dist/commands/git/stash/index.d.ts.map +1 -1
  31. package/dist/commands/git/stash/index.js +42 -10
  32. package/dist/commands/git/stash/index.js.map +1 -1
  33. package/dist/commands/git/worktree/add.d.ts.map +1 -1
  34. package/dist/commands/git/worktree/add.js +4 -3
  35. package/dist/commands/git/worktree/add.js.map +1 -1
  36. package/dist/commands/git/worktree/remove.d.ts.map +1 -1
  37. package/dist/commands/git/worktree/remove.js +17 -7
  38. package/dist/commands/git/worktree/remove.js.map +1 -1
  39. package/dist/commands/git/worktree/switch.d.ts.map +1 -1
  40. package/dist/commands/git/worktree/switch.js +23 -8
  41. package/dist/commands/git/worktree/switch.js.map +1 -1
  42. package/dist/commands/index.d.ts +1 -0
  43. package/dist/commands/index.d.ts.map +1 -1
  44. package/dist/commands/index.js +3 -0
  45. package/dist/commands/index.js.map +1 -1
  46. package/dist/commands/init/index.d.ts.map +1 -1
  47. package/dist/commands/init/index.js +50 -16
  48. package/dist/commands/init/index.js.map +1 -1
  49. package/dist/commands/schema/index.d.ts +44 -0
  50. package/dist/commands/schema/index.d.ts.map +1 -0
  51. package/dist/commands/schema/index.js +120 -0
  52. package/dist/commands/schema/index.js.map +1 -0
  53. package/dist/commands/update/index.d.ts.map +1 -1
  54. package/dist/commands/update/index.js +107 -81
  55. package/dist/commands/update/index.js.map +1 -1
  56. package/dist/types/schemas.d.ts +2 -2
  57. package/dist/utils/logger.d.ts +1 -0
  58. package/dist/utils/logger.d.ts.map +1 -1
  59. package/dist/utils/logger.js +52 -11
  60. package/dist/utils/logger.js.map +1 -1
  61. package/dist/utils/output.d.ts +15 -0
  62. package/dist/utils/output.d.ts.map +1 -0
  63. package/dist/utils/output.js +50 -0
  64. package/dist/utils/output.js.map +1 -0
  65. package/dist/utils/prompt.d.ts +17 -2
  66. package/dist/utils/prompt.d.ts.map +1 -1
  67. package/dist/utils/prompt.js +66 -11
  68. package/dist/utils/prompt.js.map +1 -1
  69. package/dist/utils/run-action.d.ts +3 -0
  70. package/dist/utils/run-action.d.ts.map +1 -0
  71. package/dist/utils/run-action.js +19 -0
  72. package/dist/utils/run-action.js.map +1 -0
  73. package/dist/utils/runtime-context.d.ts +27 -0
  74. package/dist/utils/runtime-context.d.ts.map +1 -0
  75. package/dist/utils/runtime-context.js +74 -0
  76. package/dist/utils/runtime-context.js.map +1 -0
  77. package/dist/utils/ui-types.d.ts +2 -0
  78. package/dist/utils/ui-types.d.ts.map +1 -1
  79. package/dist/utils/ui.d.ts +2 -0
  80. package/dist/utils/ui.d.ts.map +1 -1
  81. package/dist/utils/ui.js +96 -22
  82. package/dist/utils/ui.js.map +1 -1
  83. package/package.json +1 -1
@@ -40,12 +40,12 @@ export declare const gitBranchOptionsSchema: z.ZodObject<{
40
40
  force: z.ZodOptional<z.ZodBoolean>;
41
41
  }, z.core.$strip>;
42
42
  export declare const commitTypeSchema: z.ZodEnum<{
43
+ test: "test";
43
44
  feat: "feat";
44
45
  fix: "fix";
45
46
  docs: "docs";
46
47
  style: "style";
47
48
  refactor: "refactor";
48
- test: "test";
49
49
  chore: "chore";
50
50
  }>;
51
51
  export declare const commitScopeSchema: z.ZodOptional<z.ZodString>;
@@ -56,12 +56,12 @@ export declare const gitCommitOptionsSchema: z.ZodObject<{
56
56
  color: z.ZodOptional<z.ZodBoolean>;
57
57
  banner: z.ZodOptional<z.ZodBoolean>;
58
58
  type: z.ZodOptional<z.ZodEnum<{
59
+ test: "test";
59
60
  feat: "feat";
60
61
  fix: "fix";
61
62
  docs: "docs";
62
63
  style: "style";
63
64
  refactor: "refactor";
64
- test: "test";
65
65
  chore: "chore";
66
66
  }>>;
67
67
  scope: z.ZodOptional<z.ZodString>;
@@ -10,6 +10,7 @@ declare class Logger implements ILogger {
10
10
  error(message: string, context?: Record<string, unknown>): void;
11
11
  debug(message: string, context?: Record<string, unknown>): void;
12
12
  log(message: string): void;
13
+ private emitJsonLog;
13
14
  private formatMessage;
14
15
  }
15
16
  export declare const logger: Logger;
@@ -1 +1 @@
1
- {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAEpE,cAAM,MAAO,YAAW,OAAO;IAC7B,OAAO,CAAC,KAAK,CAA2B;IAExC,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IAI/B,QAAQ,IAAI,QAAQ;IAOpB,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAIlC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAM9D,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAMjE,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAM9D,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAM/D,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAM/D,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI1B,OAAO,CAAC,aAAa;CAMtB;AAED,eAAO,MAAM,MAAM,QAAe,CAAC"}
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAGpE,cAAM,MAAO,YAAW,OAAO;IAC7B,OAAO,CAAC,KAAK,CAA2B;IAExC,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IAI/B,QAAQ,IAAI,QAAQ;IAIpB,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAIlC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAc9D,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAajE,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAY9D,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAY/D,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAY/D,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAK1B,OAAO,CAAC,WAAW;IAiBnB,OAAO,CAAC,aAAa;CAMtB;AAED,eAAO,MAAM,MAAM,QAAe,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import chalk from 'chalk';
2
2
  import { Colors } from './ui-types.js';
3
3
  import { LogLevel } from '../core/interfaces/index.js';
4
+ import { getRuntimeContext } from './runtime-context.js';
4
5
  class Logger {
5
6
  level = LogLevel.INFO;
6
7
  setLevel(level) {
@@ -13,32 +14,72 @@ class Logger {
13
14
  this.level = verbose ? LogLevel.DEBUG : LogLevel.INFO;
14
15
  }
15
16
  info(message, context) {
16
- if (this.level <= LogLevel.INFO) {
17
- console.log(chalk.hex(Colors.muted)('ℹ'), this.formatMessage(message, context));
17
+ if (this.level > LogLevel.INFO)
18
+ return;
19
+ const ctx = getRuntimeContext();
20
+ if (ctx.quiet)
21
+ return;
22
+ if (ctx.format === 'json') {
23
+ this.emitJsonLog('info', message, context);
24
+ return;
18
25
  }
26
+ process.stderr.write(`${chalk.hex(Colors.muted)('ℹ')} ${this.formatMessage(message, context)}\n`);
19
27
  }
20
28
  success(message, context) {
21
- if (this.level <= LogLevel.INFO) {
22
- console.log(chalk.hex(Colors.success)('✓'), this.formatMessage(message, context));
29
+ if (this.level > LogLevel.INFO)
30
+ return;
31
+ const ctx = getRuntimeContext();
32
+ if (ctx.quiet)
33
+ return;
34
+ if (ctx.format === 'json') {
35
+ this.emitJsonLog('success', message, context);
36
+ return;
23
37
  }
38
+ process.stderr.write(`${chalk.hex(Colors.success)('✓')} ${this.formatMessage(message, context)}\n`);
24
39
  }
25
40
  warn(message, context) {
26
- if (this.level <= LogLevel.WARN) {
27
- console.log(chalk.hex(Colors.error)('⚠'), this.formatMessage(message, context));
41
+ if (this.level > LogLevel.WARN)
42
+ return;
43
+ const ctx = getRuntimeContext();
44
+ if (ctx.format === 'json') {
45
+ this.emitJsonLog('warn', message, context);
46
+ return;
28
47
  }
48
+ process.stderr.write(`${chalk.hex(Colors.error)('⚠')} ${this.formatMessage(message, context)}\n`);
29
49
  }
30
50
  error(message, context) {
31
- if (this.level <= LogLevel.ERROR) {
32
- console.error(chalk.hex(Colors.error)('✖'), this.formatMessage(message, context));
51
+ if (this.level > LogLevel.ERROR)
52
+ return;
53
+ const ctx = getRuntimeContext();
54
+ if (ctx.format === 'json') {
55
+ this.emitJsonLog('error', message, context);
56
+ return;
33
57
  }
58
+ process.stderr.write(`${chalk.hex(Colors.error)('✖')} ${this.formatMessage(message, context)}\n`);
34
59
  }
35
60
  debug(message, context) {
36
- if (this.level <= LogLevel.DEBUG) {
37
- console.log(chalk.hex(Colors.muted)('[DEBUG]'), this.formatMessage(message, context));
61
+ if (this.level > LogLevel.DEBUG)
62
+ return;
63
+ const ctx = getRuntimeContext();
64
+ if (ctx.format === 'json') {
65
+ this.emitJsonLog('debug', message, context);
66
+ return;
38
67
  }
68
+ process.stderr.write(`${chalk.hex(Colors.muted)('[DEBUG]')} ${this.formatMessage(message, context)}\n`);
39
69
  }
40
70
  log(message) {
41
- console.log(message);
71
+ process.stdout.write(`${message}\n`);
72
+ }
73
+ emitJsonLog(level, message, context) {
74
+ const payload = {
75
+ level,
76
+ message,
77
+ ts: new Date().toISOString(),
78
+ };
79
+ if (context && Object.keys(context).length > 0) {
80
+ payload['context'] = context;
81
+ }
82
+ process.stderr.write(`${JSON.stringify(payload)}\n`);
42
83
  }
43
84
  formatMessage(message, context) {
44
85
  if (!context || Object.keys(context).length === 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { AppError } from '../core/errors/index.js';
2
+ export interface EmitOptions {
3
+ text?: () => void;
4
+ }
5
+ export declare function emitJson<T extends Record<string, unknown> | unknown[]>(data: T, options?: EmitOptions): void;
6
+ export interface SerializedError {
7
+ code: string;
8
+ message: string;
9
+ category?: string;
10
+ severity?: string;
11
+ suggestions?: string[];
12
+ context?: Record<string, unknown>;
13
+ }
14
+ export declare function emitError(error: AppError | Error, options?: EmitOptions): void;
15
+ //# sourceMappingURL=output.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../src/utils/output.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAEvD,MAAM,WAAW,WAAW;IAE1B,IAAI,CAAC,EAAE,MAAM,IAAI,CAAC;CACnB;AAOD,wBAAgB,QAAQ,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,EAAE,EACpE,IAAI,EAAE,CAAC,EACP,OAAO,GAAE,WAAgB,GACxB,IAAI,CASN;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAOD,wBAAgB,SAAS,CAAC,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,OAAO,GAAE,WAAgB,GAAG,IAAI,CAmBlF"}
@@ -0,0 +1,50 @@
1
+ import { getRuntimeContext } from './runtime-context.js';
2
+ import { ui } from './ui.js';
3
+ export function emitJson(data, options = {}) {
4
+ const ctx = getRuntimeContext();
5
+ if (ctx.format === 'json') {
6
+ process.stdout.write(`${JSON.stringify(data)}\n`);
7
+ return;
8
+ }
9
+ if (options.text) {
10
+ options.text();
11
+ }
12
+ }
13
+ export function emitError(error, options = {}) {
14
+ const ctx = getRuntimeContext();
15
+ if (ctx.format === 'json') {
16
+ const payload = {
17
+ error: serializeError(error),
18
+ };
19
+ process.stdout.write(`${JSON.stringify(payload)}\n`);
20
+ return;
21
+ }
22
+ if (options.text) {
23
+ options.text();
24
+ return;
25
+ }
26
+ ui.error(error.message);
27
+ const suggestions = error.suggestions;
28
+ if (suggestions && suggestions.length > 0) {
29
+ ui.warn('Suggestions:');
30
+ ui.list(suggestions);
31
+ }
32
+ }
33
+ function serializeError(error) {
34
+ const appError = error;
35
+ const serialized = {
36
+ code: appError.code ?? 'UNKNOWN',
37
+ message: error.message,
38
+ };
39
+ if (appError.category)
40
+ serialized.category = String(appError.category);
41
+ if (appError.severity)
42
+ serialized.severity = String(appError.severity);
43
+ if (appError.suggestions && appError.suggestions.length > 0) {
44
+ serialized.suggestions = appError.suggestions;
45
+ }
46
+ if (appError.context)
47
+ serialized.context = appError.context;
48
+ return serialized;
49
+ }
50
+ //# sourceMappingURL=output.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/utils/output.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAa7B,MAAM,UAAU,QAAQ,CACtB,IAAO,EACP,UAAuB,EAAE;IAEzB,MAAM,GAAG,GAAG,iBAAiB,EAAE,CAAC;IAChC,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;QAC1B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClD,OAAO;IACT,CAAC;IACD,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,OAAO,CAAC,IAAI,EAAE,CAAC;IACjB,CAAC;AACH,CAAC;AAgBD,MAAM,UAAU,SAAS,CAAC,KAAuB,EAAE,UAAuB,EAAE;IAC1E,MAAM,GAAG,GAAG,iBAAiB,EAAE,CAAC;IAChC,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;QAC1B,MAAM,OAAO,GAA+B;YAC1C,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC;SAC7B,CAAC;QACF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACrD,OAAO;IACT,CAAC;IACD,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,OAAO,CAAC,IAAI,EAAE,CAAC;QACf,OAAO;IACT,CAAC;IACD,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACxB,MAAM,WAAW,GAAI,KAAkB,CAAC,WAAW,CAAC;IACpD,IAAI,WAAW,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1C,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACxB,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACvB,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,KAAuB;IAC7C,MAAM,QAAQ,GAAG,KAAiB,CAAC;IACnC,MAAM,UAAU,GAAoB;QAClC,IAAI,EAAE,QAAQ,CAAC,IAAI,IAAI,SAAS;QAChC,OAAO,EAAE,KAAK,CAAC,OAAO;KACvB,CAAC;IACF,IAAI,QAAQ,CAAC,QAAQ;QAAE,UAAU,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACvE,IAAI,QAAQ,CAAC,QAAQ;QAAE,UAAU,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACvE,IAAI,QAAQ,CAAC,WAAW,IAAI,QAAQ,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5D,UAAU,CAAC,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC;IAChD,CAAC;IACD,IAAI,QAAQ,CAAC,OAAO;QAAE,UAAU,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;IAC5D,OAAO,UAAU,CAAC;AACpB,CAAC"}
@@ -6,10 +6,25 @@ export interface SelectPromptOptions<T extends string> {
6
6
  choices: SelectChoice<T>[];
7
7
  defaultValue?: T;
8
8
  message: string;
9
+ flag?: string;
10
+ safeDefaultForNonInteractive?: boolean;
9
11
  }
10
- export declare function promptSelect<T extends string>({ choices, defaultValue, message, }: SelectPromptOptions<T>): Promise<T>;
12
+ export declare class NonInteractiveError extends Error {
13
+ readonly code = "NEO_NON_INTERACTIVE";
14
+ readonly flag?: string;
15
+ readonly prompt: string;
16
+ constructor(prompt: string, flag?: string);
17
+ }
18
+ export declare function promptSelect<T extends string>({ choices, defaultValue, message, flag, safeDefaultForNonInteractive, }: SelectPromptOptions<T>): Promise<T>;
11
19
  export interface PasswordPromptOptions {
12
20
  message: string;
21
+ envVar?: string;
22
+ }
23
+ export declare function promptPassword({ message, envVar, }: PasswordPromptOptions): Promise<string>;
24
+ export declare function mayPrompt(promptDescription: string, flag?: string): boolean;
25
+ export interface PromptGate {
26
+ shouldPrompt: boolean;
27
+ acceptDefault: boolean;
13
28
  }
14
- export declare function promptPassword({ message }: PasswordPromptOptions): Promise<string>;
29
+ export declare function promptGate(): PromptGate;
15
30
  //# sourceMappingURL=prompt.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../../src/utils/prompt.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,YAAY,CAAC,CAAC,SAAS,MAAM;IAC5C,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,CAAC,CAAC;CACV;AAED,MAAM,WAAW,mBAAmB,CAAC,CAAC,SAAS,MAAM;IACnD,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3B,YAAY,CAAC,EAAE,CAAC,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAMD,wBAAsB,YAAY,CAAC,CAAC,SAAS,MAAM,EAAE,EACnD,OAAO,EACP,YAAY,EACZ,OAAO,GACR,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CA0DrC;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,CAAC;CACjB;AAMD,wBAAsB,cAAc,CAAC,EAAE,OAAO,EAAE,EAAE,qBAAqB,GAAG,OAAO,CAAC,MAAM,CAAC,CAsDxF"}
1
+ {"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../../src/utils/prompt.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,YAAY,CAAC,CAAC,SAAS,MAAM;IAC5C,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,CAAC,CAAC;CACV;AAED,MAAM,WAAW,mBAAmB,CAAC,CAAC,SAAS,MAAM;IACnD,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3B,YAAY,CAAC,EAAE,CAAC,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAKhB,IAAI,CAAC,EAAE,MAAM,CAAC;IAKd,4BAA4B,CAAC,EAAE,OAAO,CAAC;CACxC;AAMD,qBAAa,mBAAoB,SAAQ,KAAK;IAC5C,QAAQ,CAAC,IAAI,yBAAyB;IACtC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;gBAEZ,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM;CAS1C;AAOD,wBAAsB,YAAY,CAAC,CAAC,SAAS,MAAM,EAAE,EACnD,OAAO,EACP,YAAY,EACZ,OAAO,EACP,IAAI,EACJ,4BAA4B,GAC7B,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CA8ErC;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,CAAC;IAEhB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAMD,wBAAsB,cAAc,CAAC,EACnC,OAAO,EACP,MAAM,GACP,EAAE,qBAAqB,GAAG,OAAO,CAAC,MAAM,CAAC,CAqEzC;AAYD,wBAAgB,SAAS,CAAC,iBAAiB,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAO3E;AAMD,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,OAAO,CAAC;IACtB,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,wBAAgB,UAAU,IAAI,UAAU,CAKvC"}
@@ -1,13 +1,38 @@
1
1
  import select from '@inquirer/select';
2
2
  import readline from 'node:readline/promises';
3
3
  import { stdin as input, stdout as output } from 'node:process';
4
- export async function promptSelect({ choices, defaultValue, message, }) {
4
+ import { getRuntimeContext } from './runtime-context.js';
5
+ export class NonInteractiveError extends Error {
6
+ code = 'NEO_NON_INTERACTIVE';
7
+ flag;
8
+ prompt;
9
+ constructor(prompt, flag) {
10
+ const suffix = flag ? ` Pass ${flag} to bypass.` : '';
11
+ super(`Interactive prompt required in non-interactive mode: "${prompt}".${suffix}`);
12
+ this.name = 'NonInteractiveError';
13
+ this.prompt = prompt;
14
+ if (flag !== undefined) {
15
+ this.flag = flag;
16
+ }
17
+ }
18
+ }
19
+ export async function promptSelect({ choices, defaultValue, message, flag, safeDefaultForNonInteractive, }) {
5
20
  const defaultIndex = defaultValue !== undefined ? choices.findIndex(({ value }) => value === defaultValue) : 0;
6
21
  const safeDefaultIndex = defaultIndex >= 0 ? defaultIndex : 0;
7
22
  const fallbackValue = choices[safeDefaultIndex]?.value;
8
23
  if (!fallbackValue) {
9
24
  throw new Error('No choices provided to promptSelect');
10
25
  }
26
+ const ctx = getRuntimeContext();
27
+ if (ctx.yes && defaultValue !== undefined) {
28
+ return fallbackValue;
29
+ }
30
+ if (ctx.nonInteractive) {
31
+ if (safeDefaultForNonInteractive && defaultValue !== undefined) {
32
+ return fallbackValue;
33
+ }
34
+ throw new NonInteractiveError(message, flag);
35
+ }
11
36
  if (input.isTTY && output.isTTY) {
12
37
  const interactiveResult = await select({
13
38
  choices: choices.map(({ label, value }) => ({
@@ -23,12 +48,15 @@ export async function promptSelect({ choices, defaultValue, message, }) {
23
48
  return interactiveResult;
24
49
  }
25
50
  }
26
- const rl = readline.createInterface({ input, output });
51
+ const rl = readline.createInterface({ input, output: process.stderr });
52
+ const writeLine = (line) => {
53
+ process.stderr.write(`${line}\n`);
54
+ };
27
55
  try {
28
- console.log(message);
56
+ writeLine(message);
29
57
  choices.forEach(({ label }, index) => {
30
58
  const marker = index === safeDefaultIndex ? ' (default)' : '';
31
- console.log(` ${index + 1}. ${label}${marker}`);
59
+ writeLine(` ${index + 1}. ${label}${marker}`);
32
60
  });
33
61
  let selected = null;
34
62
  while (selected === null) {
@@ -41,7 +69,7 @@ export async function promptSelect({ choices, defaultValue, message, }) {
41
69
  selected = choices[parsedIndex]?.value ?? fallbackValue;
42
70
  break;
43
71
  }
44
- console.log('Please enter a valid number from the list.');
72
+ writeLine('Please enter a valid number from the list.');
45
73
  }
46
74
  return selected ?? fallbackValue;
47
75
  }
@@ -49,10 +77,20 @@ export async function promptSelect({ choices, defaultValue, message, }) {
49
77
  rl.close();
50
78
  }
51
79
  }
52
- export async function promptPassword({ message }) {
80
+ export async function promptPassword({ message, envVar, }) {
81
+ const ctx = getRuntimeContext();
82
+ if (envVar && process.env[envVar]) {
83
+ return process.env[envVar];
84
+ }
85
+ if (ctx.nonInteractive) {
86
+ throw new NonInteractiveError(message, envVar ? `$${envVar} env var` : undefined);
87
+ }
53
88
  return new Promise((resolve) => {
54
89
  let password = '';
55
- output.write(`${message}: `);
90
+ const write = (s) => {
91
+ process.stderr.write(s);
92
+ };
93
+ write(`${message}: `);
56
94
  if (input.isTTY) {
57
95
  input.setRawMode(true);
58
96
  }
@@ -66,7 +104,7 @@ export async function promptPassword({ message }) {
66
104
  }
67
105
  input.pause();
68
106
  input.removeListener('data', onData);
69
- output.write('\n');
107
+ write('\n');
70
108
  resolve(password);
71
109
  return;
72
110
  }
@@ -76,20 +114,37 @@ export async function promptPassword({ message }) {
76
114
  }
77
115
  input.pause();
78
116
  input.removeListener('data', onData);
79
- output.write('\n');
117
+ write('\n');
80
118
  process.exit(1);
81
119
  }
82
120
  if (charCode === 127 || charCode === 8) {
83
121
  if (password.length > 0) {
84
122
  password = password.slice(0, -1);
85
- output.write('\b \b');
123
+ write('\b \b');
86
124
  }
87
125
  return;
88
126
  }
89
127
  password += char;
90
- output.write('*');
128
+ write('*');
91
129
  };
92
130
  input.on('data', onData);
93
131
  });
94
132
  }
133
+ export function mayPrompt(promptDescription, flag) {
134
+ const ctx = getRuntimeContext();
135
+ if (ctx.yes)
136
+ return false;
137
+ if (ctx.nonInteractive) {
138
+ throw new NonInteractiveError(promptDescription, flag);
139
+ }
140
+ return true;
141
+ }
142
+ export function promptGate() {
143
+ const ctx = getRuntimeContext();
144
+ if (ctx.yes)
145
+ return { shouldPrompt: false, acceptDefault: true };
146
+ if (ctx.nonInteractive)
147
+ return { shouldPrompt: false, acceptDefault: true };
148
+ return { shouldPrompt: true, acceptDefault: false };
149
+ }
95
150
  //# sourceMappingURL=prompt.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../src/utils/prompt.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../src/utils/prompt.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export type CommandActionFn<Args extends unknown[]> = (...args: Args) => Promise<void> | void;
2
+ export declare function runAction<Args extends unknown[]>(fn: CommandActionFn<Args>): (...args: Args) => Promise<void>;
3
+ //# sourceMappingURL=run-action.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-action.d.ts","sourceRoot":"","sources":["../../src/utils/run-action.ts"],"names":[],"mappings":"AAsBA,MAAM,MAAM,eAAe,CAAC,IAAI,SAAS,OAAO,EAAE,IAAI,CAAC,GAAG,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAE9F,wBAAgB,SAAS,CAAC,IAAI,SAAS,OAAO,EAAE,EAC9C,EAAE,EAAE,eAAe,CAAC,IAAI,CAAC,GACxB,CAAC,GAAG,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAclC"}
@@ -0,0 +1,19 @@
1
+ import { NonInteractiveError } from './prompt.js';
2
+ import { emitError } from './output.js';
3
+ export function runAction(fn) {
4
+ return async (...args) => {
5
+ try {
6
+ await fn(...args);
7
+ }
8
+ catch (error) {
9
+ if (error instanceof NonInteractiveError) {
10
+ emitError(error);
11
+ process.exit(2);
12
+ }
13
+ const err = error instanceof Error ? error : new Error(String(error));
14
+ emitError(err);
15
+ process.exit(1);
16
+ }
17
+ };
18
+ }
19
+ //# sourceMappingURL=run-action.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-action.js","sourceRoot":"","sources":["../../src/utils/run-action.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAIxC,MAAM,UAAU,SAAS,CACvB,EAAyB;IAEzB,OAAO,KAAK,EAAE,GAAG,IAAU,EAAiB,EAAE;QAC5C,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;QACpB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,mBAAmB,EAAE,CAAC;gBACzC,SAAS,CAAC,KAAK,CAAC,CAAC;gBACjB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,MAAM,GAAG,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YACtE,SAAS,CAAC,GAAG,CAAC,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,27 @@
1
+ export type OutputFormat = 'text' | 'json';
2
+ export interface RuntimeContext {
3
+ format: OutputFormat;
4
+ yes: boolean;
5
+ nonInteractive: boolean;
6
+ quiet: boolean;
7
+ verbose: boolean;
8
+ color: boolean;
9
+ stdoutIsTTY: boolean;
10
+ stdinIsTTY: boolean;
11
+ isCI: boolean;
12
+ isAgent: boolean;
13
+ }
14
+ export interface RuntimeContextOverrides {
15
+ json?: boolean;
16
+ format?: OutputFormat;
17
+ yes?: boolean;
18
+ nonInteractive?: boolean;
19
+ quiet?: boolean;
20
+ verbose?: boolean;
21
+ color?: boolean;
22
+ }
23
+ export declare function buildRuntimeContext(overrides?: RuntimeContextOverrides): RuntimeContext;
24
+ export declare function setRuntimeContext(ctx: RuntimeContext): void;
25
+ export declare function getRuntimeContext(): RuntimeContext;
26
+ export declare function isJsonMode(): boolean;
27
+ //# sourceMappingURL=runtime-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-context.d.ts","sourceRoot":"","sources":["../../src/utils/runtime-context.ts"],"names":[],"mappings":"AASA,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,CAAC;AAE3C,MAAM,WAAW,cAAc;IAE7B,MAAM,EAAE,YAAY,CAAC;IAErB,GAAG,EAAE,OAAO,CAAC;IAEb,cAAc,EAAE,OAAO,CAAC;IAExB,KAAK,EAAE,OAAO,CAAC;IAEf,OAAO,EAAE,OAAO,CAAC;IAEjB,KAAK,EAAE,OAAO,CAAC;IAEf,WAAW,EAAE,OAAO,CAAC;IAErB,UAAU,EAAE,OAAO,CAAC;IAEpB,IAAI,EAAE,OAAO,CAAC;IAEd,OAAO,EAAE,OAAO,CAAC;CAClB;AAgDD,MAAM,WAAW,uBAAuB;IACtC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAMD,wBAAgB,mBAAmB,CAAC,SAAS,GAAE,uBAA4B,GAAG,cAAc,CA0C3F;AAKD,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,cAAc,GAAG,IAAI,CAE3D;AAGD,wBAAgB,iBAAiB,IAAI,cAAc,CAElD;AAGD,wBAAgB,UAAU,IAAI,OAAO,CAEpC"}
@@ -0,0 +1,74 @@
1
+ function detectCI() {
2
+ const env = process.env;
3
+ return Boolean(env['CI'] ||
4
+ env['CONTINUOUS_INTEGRATION'] ||
5
+ env['GITHUB_ACTIONS'] ||
6
+ env['GITLAB_CI'] ||
7
+ env['CIRCLECI'] ||
8
+ env['BUILDKITE'] ||
9
+ env['JENKINS_URL'] ||
10
+ env['TEAMCITY_VERSION']);
11
+ }
12
+ function detectAgent() {
13
+ const env = process.env;
14
+ return Boolean(env['CLAUDECODE'] ||
15
+ env['CLAUDE_CODE'] ||
16
+ env['CURSOR_AGENT'] ||
17
+ env['AIDER'] ||
18
+ env['CODEX_CLI'] ||
19
+ env['NEO_AGENT'] ||
20
+ env['AI_AGENT']);
21
+ }
22
+ function isTestEnvironment() {
23
+ const env = process.env;
24
+ return Boolean(env['VITEST'] || env['JEST_WORKER_ID'] || env['NODE_ENV'] === 'test');
25
+ }
26
+ function envBool(name) {
27
+ const v = process.env[name];
28
+ if (!v)
29
+ return false;
30
+ const lower = v.toLowerCase();
31
+ return lower === '1' || lower === 'true' || lower === 'yes';
32
+ }
33
+ export function buildRuntimeContext(overrides = {}) {
34
+ const stdoutIsTTY = Boolean(process.stdout.isTTY);
35
+ const stdinIsTTY = Boolean(process.stdin.isTTY);
36
+ const inTest = isTestEnvironment();
37
+ const isCI = inTest ? false : detectCI();
38
+ const isAgent = inTest ? false : detectAgent();
39
+ const jsonFromEnv = envBool('NEO_JSON');
40
+ const format = overrides.format ?? (overrides.json || jsonFromEnv ? 'json' : 'text');
41
+ const yes = overrides.yes ?? envBool('NEO_YES');
42
+ const nonInteractive = overrides.nonInteractive ??
43
+ (envBool('NEO_NON_INTERACTIVE') ||
44
+ isCI ||
45
+ isAgent ||
46
+ format === 'json' ||
47
+ (!stdinIsTTY && !inTest));
48
+ const quiet = overrides.quiet ?? (envBool('NEO_QUIET') || format === 'json');
49
+ const noColorEnv = Boolean(process.env['NO_COLOR']);
50
+ const color = overrides.color ?? !(noColorEnv || !stdoutIsTTY || format === 'json');
51
+ return {
52
+ format,
53
+ yes,
54
+ nonInteractive,
55
+ quiet,
56
+ verbose: overrides.verbose ?? false,
57
+ color,
58
+ stdoutIsTTY,
59
+ stdinIsTTY,
60
+ isCI,
61
+ isAgent,
62
+ };
63
+ }
64
+ let current = buildRuntimeContext();
65
+ export function setRuntimeContext(ctx) {
66
+ current = ctx;
67
+ }
68
+ export function getRuntimeContext() {
69
+ return current;
70
+ }
71
+ export function isJsonMode() {
72
+ return current.format === 'json';
73
+ }
74
+ //# sourceMappingURL=runtime-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-context.js","sourceRoot":"","sources":["../../src/utils/runtime-context.ts"],"names":[],"mappings":"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"}
@@ -50,6 +50,8 @@ export interface UIOutput {
50
50
  highlight(message: string): void;
51
51
  link(text: string, url?: string): void;
52
52
  log(message: string): void;
53
+ newline(): void;
54
+ plain(message: string): void;
53
55
  }
54
56
  export interface UIStructured {
55
57
  section(title: string): void;
@@ -1 +1 @@
1
- {"version":3,"file":"ui-types.d.ts","sourceRoot":"","sources":["../../src/utils/ui-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAQ/B,eAAO,MAAM,MAAM;;;;;CAST,CAAC;AAKX,MAAM,MAAM,QAAQ,GAAG,MAAM,OAAO,MAAM,CAAC;AAO3C,eAAO,MAAM,KAAK;;;;;;;;;;CAmBR,CAAC;AAKX,MAAM,MAAM,OAAO,GAAG,MAAM,OAAO,KAAK,CAAC;AAKzC,MAAM,WAAW,YAAY;IAE3B,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IAEnB,KAAK,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC,CAAC;IAE3C,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAKD,MAAM,WAAW,SAAS;IAExB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IAEnB,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC;IAEjB,OAAO,CAAC,EAAE,YAAY,CAAC;CACxB;AAKD,MAAM,MAAM,YAAY,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AAKxD,MAAM,WAAW,WAAW;IAE1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAKD,MAAM,WAAW,aAAc,SAAQ,GAAG;IAExC,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAE7B,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAE1B,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAE1B,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAKD,MAAM,WAAW,QAAQ;IAYvB,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAa/B,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAa7B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAa5B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAa5B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAa5B,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAa7B,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAcjC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAavC,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAKD,MAAM,WAAW,YAAY;IAc3B,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAgB7B,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAkB5B,QAAQ,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC;IAetC,KAAK,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI,CAAC;IAa7B,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IAWhD,OAAO,IAAI,IAAI,CAAC;CACjB;AAKD,MAAM,WAAW,SAAS;IAexB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,CAAC;CACtC;AAKD,MAAM,WAAW,EAAG,SAAQ,QAAQ,EAAE,YAAY,EAAE,SAAS;IAE3D,QAAQ,CAAC,MAAM,EAAE,OAAO,MAAM,CAAC;IAE/B,QAAQ,CAAC,KAAK,EAAE,OAAO,KAAK,CAAC;CAC9B"}
1
+ {"version":3,"file":"ui-types.d.ts","sourceRoot":"","sources":["../../src/utils/ui-types.ts"],"names":[],"mappings":"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"}
@@ -26,6 +26,8 @@ declare class UISystem implements UI {
26
26
  highlight(message: string): void;
27
27
  link(text: string, url?: string): void;
28
28
  log(message: string): void;
29
+ newline(): void;
30
+ plain(message: string): void;
29
31
  section(title: string): void;
30
32
  list(items: string[]): void;
31
33
  keyValue(pairs: KeyValuePair[]): void;
@@ -1 +1 @@
1
- {"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../src/utils/ui.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,KAAK,EAAE,EACP,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,WAAW,EAChB,KAAK,aAAa,EACnB,MAAM,eAAe,CAAC;AAiBvB,cAAM,QAAS,YAAW,EAAE;IAE1B,SAAgB,MAAM;;;;;MAAU;IAGhC,SAAgB,KAAK;;;;;;;;;;MAAS;IASvB,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAO9B,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAO5B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAO3B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAO3B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAO3B,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAO5B,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAOhC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI;IAWtC,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAW1B,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAQ5B,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI;IAS3B,QAAQ,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,IAAI;IAmBrC,KAAK,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI;IAyD5B,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,IAAI;IAiB/C,OAAO,IAAI,IAAI;IAYf,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa;CAqD5C;AAcD,eAAO,MAAM,EAAE,UAAiB,CAAC;AAKjC,YAAY,EAAE,EAAE,EAAE,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC7F,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../src/utils/ui.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,KAAK,EAAE,EACP,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,WAAW,EAChB,KAAK,aAAa,EACnB,MAAM,eAAe,CAAC;AA2DvB,cAAM,QAAS,YAAW,EAAE;IAE1B,SAAgB,MAAM;;;;;MAAU;IAGhC,SAAgB,KAAK;;;;;;;;;;MAAS;IAMvB,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAK9B,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAM5B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAK3B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAK3B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAK3B,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAK5B,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAKhC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI;IAStC,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAM1B,OAAO,IAAI,IAAI;IAKf,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAS5B,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAM5B,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI;IAO3B,QAAQ,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,IAAI;IAmBrC,KAAK,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI;IAoD5B,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,IAAI;IAe/C,OAAO,IAAI,IAAI;IAaf,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa;CAyD5C;AAcD,eAAO,MAAM,EAAE,UAAiB,CAAC;AAKjC,YAAY,EAAE,EAAE,EAAE,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC7F,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC"}