@autonsh/cli 0.18.0 → 0.19.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 (121) hide show
  1. package/dist/chat.d.ts +1 -1
  2. package/dist/chat.js +177 -119
  3. package/dist/chat.js.map +1 -1
  4. package/dist/completion.d.ts +2 -0
  5. package/dist/completion.js +379 -0
  6. package/dist/completion.js.map +1 -0
  7. package/dist/config-validation.d.ts +10 -0
  8. package/dist/config-validation.js +101 -0
  9. package/dist/config-validation.js.map +1 -0
  10. package/dist/config.d.ts +9 -3
  11. package/dist/config.js +23 -11
  12. package/dist/config.js.map +1 -1
  13. package/dist/doctor.d.ts +18 -0
  14. package/dist/doctor.js +409 -0
  15. package/dist/doctor.js.map +1 -0
  16. package/dist/errors.d.ts +22 -0
  17. package/dist/errors.js +60 -0
  18. package/dist/errors.js.map +1 -0
  19. package/dist/index.js +62 -64
  20. package/dist/index.js.map +1 -1
  21. package/dist/input.d.ts +43 -0
  22. package/dist/input.js +288 -0
  23. package/dist/input.js.map +1 -0
  24. package/dist/llm/factory.d.ts +5 -0
  25. package/dist/llm/factory.js +54 -0
  26. package/dist/llm/factory.js.map +1 -0
  27. package/dist/llm/index.d.ts +9 -0
  28. package/dist/llm/index.js +11 -0
  29. package/dist/llm/index.js.map +1 -0
  30. package/dist/llm/provider.d.ts +27 -0
  31. package/dist/llm/provider.js +98 -0
  32. package/dist/llm/provider.js.map +1 -0
  33. package/dist/llm/providers/anthropic.d.ts +23 -0
  34. package/dist/llm/providers/anthropic.js +198 -0
  35. package/dist/llm/providers/anthropic.js.map +1 -0
  36. package/dist/llm/providers/google.d.ts +31 -0
  37. package/dist/llm/providers/google.js +190 -0
  38. package/dist/llm/providers/google.js.map +1 -0
  39. package/dist/llm/providers/ollama.d.ts +21 -0
  40. package/dist/llm/providers/ollama.js +157 -0
  41. package/dist/llm/providers/ollama.js.map +1 -0
  42. package/dist/llm/providers/openai-compatible.d.ts +22 -0
  43. package/dist/llm/providers/openai-compatible.js +175 -0
  44. package/dist/llm/providers/openai-compatible.js.map +1 -0
  45. package/dist/llm/providers/openai.d.ts +20 -0
  46. package/dist/llm/providers/openai.js +167 -0
  47. package/dist/llm/providers/openai.js.map +1 -0
  48. package/dist/llm/registry.d.ts +19 -0
  49. package/dist/llm/registry.js +421 -0
  50. package/dist/llm/registry.js.map +1 -0
  51. package/dist/llm/types.d.ts +174 -0
  52. package/dist/llm/types.js +3 -0
  53. package/dist/llm/types.js.map +1 -0
  54. package/dist/login.d.ts +1 -1
  55. package/dist/login.js +14 -14
  56. package/dist/login.js.map +1 -1
  57. package/dist/mcp/client.d.ts +36 -0
  58. package/dist/mcp/client.js +199 -0
  59. package/dist/mcp/client.js.map +1 -0
  60. package/dist/mcp/config.d.ts +10 -0
  61. package/dist/mcp/config.js +43 -0
  62. package/dist/mcp/config.js.map +1 -0
  63. package/dist/mcp/index.d.ts +4 -0
  64. package/dist/mcp/index.js +6 -0
  65. package/dist/mcp/index.js.map +1 -0
  66. package/dist/mcp/types.d.ts +104 -0
  67. package/dist/mcp/types.js +3 -0
  68. package/dist/mcp/types.js.map +1 -0
  69. package/dist/model.d.ts +3 -14
  70. package/dist/model.js +131 -91
  71. package/dist/model.js.map +1 -1
  72. package/dist/ollama.d.ts +10 -0
  73. package/dist/ollama.js +11 -0
  74. package/dist/ollama.js.map +1 -0
  75. package/dist/repomap.d.ts +37 -0
  76. package/dist/repomap.js +431 -0
  77. package/dist/repomap.js.map +1 -0
  78. package/dist/skills/index.d.ts +3 -0
  79. package/dist/skills/index.js +5 -0
  80. package/dist/skills/index.js.map +1 -0
  81. package/dist/skills/registry.d.ts +16 -0
  82. package/dist/skills/registry.js +128 -0
  83. package/dist/skills/registry.js.map +1 -0
  84. package/dist/skills/types.d.ts +48 -0
  85. package/dist/skills/types.js +3 -0
  86. package/dist/skills/types.js.map +1 -0
  87. package/dist/statusline.d.ts +21 -0
  88. package/dist/statusline.js +69 -0
  89. package/dist/statusline.js.map +1 -0
  90. package/dist/streaming.d.ts +25 -0
  91. package/dist/streaming.js +94 -0
  92. package/dist/streaming.js.map +1 -0
  93. package/dist/theme.d.ts +54 -0
  94. package/dist/theme.js +115 -0
  95. package/dist/theme.js.map +1 -0
  96. package/dist/tools/builtin.d.ts +11 -0
  97. package/dist/tools/builtin.js +491 -0
  98. package/dist/tools/builtin.js.map +1 -0
  99. package/dist/tools/index.d.ts +3 -0
  100. package/dist/tools/index.js +5 -0
  101. package/dist/tools/index.js.map +1 -0
  102. package/dist/tools/types.d.ts +186 -0
  103. package/dist/tools/types.js +29 -0
  104. package/dist/tools/types.js.map +1 -0
  105. package/dist/ui.d.ts +5 -0
  106. package/dist/ui.js +50 -83
  107. package/dist/ui.js.map +1 -1
  108. package/dist/verbose.d.ts +20 -0
  109. package/dist/verbose.js +75 -0
  110. package/dist/verbose.js.map +1 -0
  111. package/package.json +13 -2
  112. package/templates/api-json/task.yaml +0 -2
  113. package/templates/coding/task.yaml +1 -1
  114. package/templates/cron-digester/task.yaml +0 -2
  115. package/templates/harness/task.yaml +0 -11
  116. package/templates/multi-agent/agent.ts +7 -8
  117. package/templates/multi-agent/task.yaml +1 -3
  118. package/templates/research/task.yaml +0 -28
  119. package/templates/support/task.yaml +0 -2
  120. package/templates/webhook-echo/task.yaml +0 -2
  121. package/templates/with-approval/task.yaml +0 -2
@@ -0,0 +1,186 @@
1
+ export interface ToolSchema<T> {
2
+ parse(input: unknown): T | undefined;
3
+ serialize(output: T): unknown;
4
+ }
5
+ export interface ToolExecuteContext {
6
+ id: string;
7
+ name: string;
8
+ }
9
+ export type ToolExecute<Params, Output> = (params: Params, context?: ToolExecuteContext) => Promise<ToolResult<Output>>;
10
+ export interface ToolResult<Output> {
11
+ data: Output;
12
+ newMessages?: unknown[];
13
+ contextModifier?: (context: ToolUseContext) => ToolUseContext;
14
+ mcpMeta?: {
15
+ _meta?: Record<string, unknown>;
16
+ structuredContent?: Record<string, unknown>;
17
+ };
18
+ }
19
+ export interface ToolUseContext {
20
+ abortController: AbortController;
21
+ getAppState(): unknown;
22
+ setAppState(f: (prev: unknown) => unknown): void;
23
+ options: {
24
+ commands: unknown[];
25
+ debug: boolean;
26
+ mainLoopModel: string;
27
+ tools: Tool[];
28
+ verbose: boolean;
29
+ mcpClients: unknown[];
30
+ isNonInteractiveSession: boolean;
31
+ maxBudgetUsd?: number;
32
+ customSystemPrompt?: string;
33
+ appendSystemPrompt?: string;
34
+ };
35
+ }
36
+ export interface Tool<Params = unknown, Output = unknown, ProgressData = unknown> {
37
+ name: string;
38
+ aliases?: string[];
39
+ searchHint?: string;
40
+ description: string;
41
+ inputSchema: ToolSchema<Params>;
42
+ outputSchema?: ToolSchema<Output>;
43
+ execute?: ToolExecute<Params, Output>;
44
+ isEnabled(): boolean;
45
+ isConcurrencySafe(params: Params): boolean;
46
+ isReadOnly(params: Params): boolean;
47
+ isDestructive?(params: Params): boolean;
48
+ interruptBehavior?(): "cancel" | "block";
49
+ isSearchOrReadCommand?(params: Params): {
50
+ isSearch: boolean;
51
+ isRead: boolean;
52
+ isList?: boolean;
53
+ };
54
+ isOpenWorld?(params: Params): boolean;
55
+ requiresUserInteraction?(): boolean;
56
+ shouldDefer?: boolean;
57
+ alwaysLoad?: boolean;
58
+ maxResultSizeChars: number;
59
+ strict?: boolean;
60
+ renderToolUseMessage(input: Partial<Params>, options: {
61
+ theme: string;
62
+ verbose: boolean;
63
+ commands?: unknown[];
64
+ }): string;
65
+ renderToolResultMessage(content: Output, progressMessages: ProgressMessage<ProgressData>[], options: {
66
+ style?: "condensed";
67
+ theme: string;
68
+ tools: Tool[];
69
+ verbose: boolean;
70
+ isTranscriptMode?: boolean;
71
+ isBriefOnly?: boolean;
72
+ input?: unknown;
73
+ }): string;
74
+ extractSearchText?(output: Output): string;
75
+ isResultTruncated?(output: Output): boolean;
76
+ getToolUseSummary?(input: Partial<Params>): string | null;
77
+ getActivityDescription?(input: Partial<Params>): string | null;
78
+ toAutoClassifierInput(params: Params): unknown;
79
+ userFacingName(input: Partial<Params>): string;
80
+ userFacingNameBackgroundColor?(input: Partial<Params>): string | undefined;
81
+ validateInput?(params: Params, context: ToolUseContext): Promise<ValidationResult>;
82
+ checkPermissions(params: Params, context: ToolUseContext): Promise<PermissionResult>;
83
+ getPath?(params: Params): string;
84
+ preparePermissionMatcher?(params: Params): Promise<(pattern: string) => boolean>;
85
+ prompt(options: {
86
+ getToolPermissionContext: () => Promise<ToolPermissionContext>;
87
+ tools: Tool[];
88
+ }): Promise<string>;
89
+ renderToolUseProgressMessage?(progressMessages: ProgressMessage<ProgressData>[], options: {
90
+ tools: Tool[];
91
+ verbose: boolean;
92
+ terminalSize?: {
93
+ columns: number;
94
+ rows: number;
95
+ };
96
+ inProgressToolCallCount?: number;
97
+ isTranscriptMode?: boolean;
98
+ }): string;
99
+ renderToolUseQueuedMessage?(): string;
100
+ renderToolUseRejectedMessage?(input: Params, options: {
101
+ columns: number;
102
+ messages: unknown[];
103
+ style?: "condensed";
104
+ theme: string;
105
+ tools: Tool[];
106
+ verbose: boolean;
107
+ progressMessages: ProgressMessage<ProgressData>[];
108
+ isTranscriptMode?: boolean;
109
+ }): string;
110
+ renderToolUseErrorMessage?(result: unknown, options: {
111
+ progressMessages: ProgressMessage<ProgressData>[];
112
+ tools: Tool[];
113
+ verbose: boolean;
114
+ isTranscriptMode?: boolean;
115
+ }): string;
116
+ renderGroupedToolUse?(toolUses: Array<{
117
+ param: unknown;
118
+ isResolved: boolean;
119
+ isError: boolean;
120
+ isInProgress: boolean;
121
+ progressMessages: ProgressMessage<ProgressData>[];
122
+ result?: {
123
+ param: unknown;
124
+ output: unknown;
125
+ };
126
+ }>, options: {
127
+ shouldAnimate: boolean;
128
+ tools: Tool[];
129
+ }): string | null;
130
+ }
131
+ export interface ToolDef<Params = unknown, Output = unknown, ProgressData = unknown> extends Omit<Tool<Params, Output, ProgressData>, "isEnabled" | "isConcurrencySafe" | "isReadOnly" | "isDestructive" | "checkPermissions" | "toAutoClassifierInput" | "userFacingName"> {
132
+ isEnabled?: () => boolean;
133
+ isConcurrencySafe?: (params: Params) => boolean;
134
+ isReadOnly?: (params: Params) => boolean;
135
+ isDestructive?: (params: Params) => boolean;
136
+ checkPermissions?: (params: Params, context: ToolUseContext) => Promise<PermissionResult>;
137
+ toAutoClassifierInput?: (params: Params) => unknown;
138
+ userFacingName?: (input: Partial<Params>) => string;
139
+ }
140
+ export interface ValidationResult {
141
+ result: boolean;
142
+ message?: string;
143
+ errorCode?: number;
144
+ }
145
+ export interface PermissionResult {
146
+ behavior: "allow" | "deny" | "ask";
147
+ updatedInput?: unknown;
148
+ message?: string;
149
+ }
150
+ export interface ToolPermissionContext {
151
+ mode: "default" | "bypass" | "ask";
152
+ additionalWorkingDirectories: Map<string, unknown>;
153
+ alwaysAllowRules: Record<string, unknown>;
154
+ alwaysDenyRules: Record<string, unknown>;
155
+ alwaysAskRules: Record<string, unknown>;
156
+ isBypassPermissionsModeAvailable: boolean;
157
+ shouldAvoidPermissionPrompts?: boolean;
158
+ awaitAutomatedChecksBeforeDialog?: boolean;
159
+ }
160
+ export interface ProgressMessage<ProgressData = unknown> {
161
+ id: string;
162
+ toolUseId: string;
163
+ data: ProgressData;
164
+ timestamp: number;
165
+ }
166
+ export interface ToolProgress<ProgressData = unknown> {
167
+ toolUseId: string;
168
+ data: ProgressData;
169
+ }
170
+ export type Tools = readonly Tool[];
171
+ export declare const TOOL_DEFAULTS: {
172
+ isEnabled: () => boolean;
173
+ isConcurrencySafe: () => boolean;
174
+ isReadOnly: () => boolean;
175
+ isDestructive: () => boolean;
176
+ checkPermissions: (_params: unknown, _ctx: ToolUseContext) => Promise<PermissionResult>;
177
+ toAutoClassifierInput: () => string;
178
+ userFacingName: (input: Partial<unknown>) => any;
179
+ prompt: () => Promise<string>;
180
+ };
181
+ export declare function buildTool<Params, Output, ProgressData>(def: ToolDef<Params, Output, ProgressData>): Tool<Params, Output, ProgressData>;
182
+ export declare function toDefinitions(tools: Tools): Array<{
183
+ name: string;
184
+ description: string;
185
+ parameters: object;
186
+ }>;
@@ -0,0 +1,29 @@
1
+ // types.ts — Tool types. Based on opencode/packages/llm/src/tool.ts + openclaude/src/Tool.ts
2
+ export const TOOL_DEFAULTS = {
3
+ isEnabled: () => true,
4
+ isConcurrencySafe: () => false,
5
+ isReadOnly: () => false,
6
+ isDestructive: () => false,
7
+ checkPermissions: async (_params, _ctx) => ({
8
+ behavior: "allow",
9
+ updatedInput: _params,
10
+ }),
11
+ toAutoClassifierInput: () => "",
12
+ userFacingName: (input) => input?.name ?? "tool",
13
+ prompt: async () => "Confirm?",
14
+ };
15
+ export function buildTool(def) {
16
+ return {
17
+ ...TOOL_DEFAULTS,
18
+ userFacingName: () => def.name,
19
+ ...def,
20
+ };
21
+ }
22
+ export function toDefinitions(tools) {
23
+ return tools.map((t) => ({
24
+ name: t.name,
25
+ description: t.description,
26
+ parameters: t.inputSchema,
27
+ }));
28
+ }
29
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/tools/types.ts"],"names":[],"mappings":"AAAA,6FAA6F;AAsK7F,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI;IACrB,iBAAiB,EAAE,GAAG,EAAE,CAAC,KAAK;IAC9B,UAAU,EAAE,GAAG,EAAE,CAAC,KAAK;IACvB,aAAa,EAAE,GAAG,EAAE,CAAC,KAAK;IAC1B,gBAAgB,EAAE,KAAK,EAAE,OAAgB,EAAE,IAAoB,EAA6B,EAAE,CAAC,CAAC;QAC9F,QAAQ,EAAE,OAAO;QACjB,YAAY,EAAE,OAAO;KACtB,CAAC;IACF,qBAAqB,EAAE,GAAG,EAAE,CAAC,EAAE;IAC/B,cAAc,EAAE,CAAC,KAAuB,EAAE,EAAE,CAAE,KAAa,EAAE,IAAI,IAAI,MAAM;IAC3E,MAAM,EAAE,KAAK,IAAI,EAAE,CAAC,UAAU;CAC/B,CAAC;AAEF,MAAM,UAAU,SAAS,CACvB,GAA0C;IAE1C,OAAO;QACL,GAAG,aAAa;QAChB,cAAc,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI;QAC9B,GAAG,GAAG;KAC+B,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAY;IACxC,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACvB,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,WAAW,EAAE,CAAC,CAAC,WAAW;QAC1B,UAAU,EAAE,CAAC,CAAC,WAAgC;KAC/C,CAAC,CAAC,CAAC;AACN,CAAC"}
package/dist/ui.d.ts CHANGED
@@ -11,6 +11,11 @@ export interface Spinner {
11
11
  }
12
12
  export declare function spinner(text: string): Spinner;
13
13
  export declare function logo(): string;
14
+ export declare function headerBox(info: {
15
+ name: string;
16
+ model?: string;
17
+ branch?: string;
18
+ }): string;
14
19
  export declare function tagLine(line: string): string;
15
20
  export declare function statusColor(s: string): string;
16
21
  export declare function table(headers: string[], rows: string[][]): string;
package/dist/ui.js CHANGED
@@ -1,21 +1,19 @@
1
- // ui.ts — camada de apresentação do CLI auton.
2
- // Cores/badges/spinner/tabela/logo/boxes. Tudo respeita NO_COLOR e pipe (isTTY).
3
- // Conteúdo do agente (payload de logs) nunca é colorido — só tags.
4
- import pc from "picocolors";
1
+ // ui.ts — Presentation layer: gradient logo, boxes, badges, spinner.
5
2
  import createSpinner from "ora";
6
- import logSymbols from "log-symbols";
7
- import stringWidth from "string-width";
8
3
  import boxen from "boxen";
4
+ import stringWidth from "string-width";
5
+ import chalk from "chalk";
6
+ import { C, SYM, BOX, bloodGradient } from "./theme.js";
9
7
  export const isTTY = process.stdout.isTTY === true;
10
- // --- badges (log-symbols: glyphs exatos, fallback Windows) ---
11
- export const ok = (msg) => pc.green(`${logSymbols.success} ${msg}`);
12
- export const fail = (msg) => pc.red(`${logSymbols.error} ${msg}`);
13
- export const info = (msg) => pc.cyan(`${logSymbols.info} ${msg}`);
14
- export const dim = (msg) => pc.dim(msg);
15
- export const bold = (msg) => pc.bold(msg);
16
- export const url = (msg) => pc.cyan(msg);
8
+ // --- Badges ---
9
+ export const ok = (msg) => C.green(`${SYM.ok} ${msg}`);
10
+ export const fail = (msg) => C.red(`${SYM.fail} ${msg}`);
11
+ export const info = (msg) => C.gray(`${SYM.info} ${msg}`);
12
+ export const dim = (msg) => C.dim(msg);
13
+ export const bold = (msg) => C.bold(msg);
14
+ export const url = (msg) => C.cyan(msg);
17
15
  export function spinner(text) {
18
- const s = createSpinner({ text, color: "cyan" });
16
+ const s = createSpinner({ text, color: "red" });
19
17
  if (isTTY)
20
18
  s.start();
21
19
  return {
@@ -29,104 +27,73 @@ export function spinner(text) {
29
27
  },
30
28
  };
31
29
  }
32
- // --- logo pixel art "AUTON" (fonte ANSI Shadow, TTY) ---
33
- const FONT = {
34
- A: [
35
- " █████╗ ",
36
- "██╔══██╗",
37
- "███████║",
38
- "██╔══██║",
39
- "██║ ██║",
40
- "╚═╝ ╚═╝",
41
- ],
42
- U: [
43
- "██╗ ██╗",
44
- "██║ ██║",
45
- "██║ ██║",
46
- "██║ ██║",
47
- "╚██████╔╝",
48
- " ╚═════╝ ",
49
- ],
50
- T: [
51
- "████████╗",
52
- "╚══██╔══╝",
53
- " ██║ ",
54
- " ██║ ",
55
- " ██║ ",
56
- " ╚═╝ ",
57
- ],
58
- O: [
59
- " ██████╗ ",
60
- "██╔═══██╗",
61
- "██║ ██║",
62
- "██║ ██║",
63
- "╚██████╔╝",
64
- " ╚═════╝ ",
65
- ],
66
- N: [
67
- "███╗ ██╗",
68
- "████╗ ██║",
69
- "██╔██╗ ██║",
70
- "██║╚██╗██║",
71
- "██║ ╚████║",
72
- "╚═╝ ╚═══╝",
73
- ],
74
- };
30
+ // --- Logo: "AUTON" with blood gradient (compact, not pixel art) ---
75
31
  export function logo() {
76
- const chars = "AUTON".split("").map((c) => FONT[c]);
77
- const lines = Array.from({ length: 6 }, (_, row) => chars
78
- .map((ch) => {
79
- const width = Math.max(...ch.map((l) => l.length));
80
- return ch[row].padEnd(width);
81
- })
82
- .join(" ")
83
- .trimEnd());
84
- return pc.cyan(lines.join("\n"));
32
+ const text = "AUTON";
33
+ return bloodGradient(text);
85
34
  }
86
- // --- linha de log do agente: tag colorida, payload cru ---
35
+ // --- Boxed header: gradient logo + info inside a red-bordered box ---
36
+ export function headerBox(info) {
37
+ const title = logo();
38
+ const lines = [];
39
+ lines.push(`${C.bold(info.name)}`);
40
+ if (info.model)
41
+ lines.push(`${C.dim("model ")}${chalk.white(info.model)}`);
42
+ if (info.branch)
43
+ lines.push(`${C.dim("branch ")}${chalk.white(info.branch)}`);
44
+ return boxen(lines.join("\n"), {
45
+ title,
46
+ titleAlignment: "left",
47
+ padding: { left: 1, right: 1, top: 0, bottom: 0 },
48
+ margin: { top: 0, bottom: 0 },
49
+ borderStyle: "round",
50
+ borderColor: "red",
51
+ });
52
+ }
53
+ // --- Tag line: colored tag + raw payload ---
87
54
  export function tagLine(line) {
88
55
  const m = line.match(/^(\[[^\]]+\])\s*(.*)$/s);
89
56
  if (!m)
90
57
  return line;
91
58
  const [tag, rest] = [m[1], m[2]];
92
59
  const tagColor = tag.includes("error")
93
- ? pc.red
60
+ ? C.red
94
61
  : tag.includes("info")
95
- ? pc.cyan
62
+ ? C.gray
96
63
  : tag.includes("runtime")
97
- ? pc.yellow
98
- : pc.dim;
64
+ ? C.yellow
65
+ : C.dim;
99
66
  return `${tagColor(tag)} ${rest}`;
100
67
  }
101
- // --- status badge colorido ---
68
+ // --- Status badge ---
102
69
  export function statusColor(s) {
103
70
  if (s === "running")
104
- return pc.green(s);
71
+ return C.green(s);
105
72
  if (s === "scheduled")
106
- return pc.cyan(s);
73
+ return C.gray(s);
107
74
  if (s === "exited")
108
- return pc.red(s);
109
- return pc.yellow(s);
75
+ return C.red(s);
76
+ return C.yellow(s);
110
77
  }
111
- // --- tabela alinhada com header bold (string-width: cores não desalinham) ---
78
+ // --- Table with bold header ---
112
79
  export function table(headers, rows) {
113
80
  const widths = headers.map((h, i) => Math.max(stringWidth(h), ...rows.map((r) => stringWidth(r[i] ?? ""))));
114
81
  const fmt = (cells) => cells
115
82
  .map((c, i) => c + " ".repeat(Math.max(0, widths[i] - stringWidth(c))))
116
83
  .join(" ")
117
84
  .trimEnd();
118
- const head = fmt(headers.map((h, i) => pc.bold(h.padEnd(widths[i]))));
85
+ const head = fmt(headers.map((h, i) => chalk.bold(h.padEnd(widths[i]))));
119
86
  return [head, ...rows.map(fmt)].join("\n");
120
87
  }
121
- // --- caixa emoldurada (boxen) ---
88
+ // --- Box (red border) ---
122
89
  export function box(title, lines) {
123
90
  return boxen(lines.join("\n"), {
124
91
  title,
125
92
  titleAlignment: "left",
126
- padding: 1,
127
- margin: { top: 1, bottom: 1 },
128
- borderStyle: "round",
129
- borderColor: "cyan",
93
+ padding: BOX.padding,
94
+ margin: BOX.margin,
95
+ borderStyle: BOX.borderStyle,
96
+ borderColor: BOX.borderColor,
130
97
  });
131
98
  }
132
99
  //# sourceMappingURL=ui.js.map
package/dist/ui.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"ui.js","sourceRoot":"","sources":["../src/ui.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ui.js","sourceRoot":"","sources":["../src/ui.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,OAAO,aAAa,MAAM,KAAK,CAAC;AAChC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,WAAW,MAAM,cAAc,CAAC;AACvC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,aAAa,EAAqB,MAAM,YAAY,CAAC;AAE3E,MAAM,CAAC,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,KAAK,IAAI,CAAC;AAEnD,iBAAiB;AACjB,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAW,EAAU,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;AACvE,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,GAAW,EAAU,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,IAAI,GAAG,EAAE,CAAC,CAAC;AACzE,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,GAAW,EAAU,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,IAAI,GAAG,EAAE,CAAC,CAAC;AAC1E,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,GAAW,EAAU,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACvD,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,GAAW,EAAU,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzD,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,GAAW,EAAU,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAQxD,MAAM,UAAU,OAAO,CAAC,IAAY;IAClC,MAAM,CAAC,GAAG,aAAa,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IAChD,IAAI,KAAK;QAAE,CAAC,CAAC,KAAK,EAAE,CAAC;IACrB,OAAO;QACL,IAAI;YACF,IAAI,KAAK;gBAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACtB,CAAC;QACD,OAAO,CAAC,CAAS;YACf,IAAI,KAAK;gBAAE,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;QACxB,CAAC;KACF,CAAC;AACJ,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,IAAI;IAClB,MAAM,IAAI,GAAG,OAAO,CAAC;IACrB,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,SAAS,CAAC,IAAuD;IAC/E,MAAM,KAAK,GAAG,IAAI,EAAE,CAAC;IACrB,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACnC,IAAI,IAAI,CAAC,KAAK;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC3E,IAAI,IAAI,CAAC,MAAM;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAE9E,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QAC7B,KAAK;QACL,cAAc,EAAE,MAAM;QACtB,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;QACjD,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;QAC7B,WAAW,EAAE,OAAO;QACpB,WAAW,EAAE,KAAK;KACnB,CAAC,CAAC;AACL,CAAC;AAED,8CAA8C;AAC9C,MAAM,UAAU,OAAO,CAAC,IAAY;IAClC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC/C,IAAI,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACpB,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAW,EAAE,CAAC,CAAC,CAAC,CAAW,CAAC,CAAC;IACrD,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC;QACpC,CAAC,CAAC,CAAC,CAAC,GAAG;QACP,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC;YACpB,CAAC,CAAC,CAAC,CAAC,IAAI;YACR,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC;gBACvB,CAAC,CAAC,CAAC,CAAC,MAAM;gBACV,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IACd,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;AACpC,CAAC;AAED,uBAAuB;AACvB,MAAM,UAAU,WAAW,CAAC,CAAS;IACnC,IAAI,CAAC,KAAK,SAAS;QAAE,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACvC,IAAI,CAAC,KAAK,WAAW;QAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACxC,IAAI,CAAC,KAAK,QAAQ;QAAE,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACpC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACrB,CAAC;AAED,iCAAiC;AACjC,MAAM,UAAU,KAAK,CAAC,OAAiB,EAAE,IAAgB;IACvD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAClC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CACtE,CAAC;IACF,MAAM,GAAG,GAAG,CAAC,KAAe,EAAU,EAAE,CACtC,KAAK;SACF,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAG,MAAM,CAAC,CAAC,CAAY,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SAClF,IAAI,CAAC,IAAI,CAAC;SACV,OAAO,EAAE,CAAC;IACf,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IACnF,OAAO,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7C,CAAC;AAED,2BAA2B;AAC3B,MAAM,UAAU,GAAG,CAAC,KAAa,EAAE,KAAe;IAChD,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QAC7B,KAAK;QACL,cAAc,EAAE,MAAM;QACtB,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,WAAW,EAAE,GAAG,CAAC,WAAW;QAC5B,WAAW,EAAE,GAAG,CAAC,WAAW;KAC7B,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,20 @@
1
+ export type LogLevel = "trace" | "debug" | "info" | "warn" | "error";
2
+ export interface LogEntry {
3
+ timestamp: string;
4
+ level: LogLevel;
5
+ message: string;
6
+ context?: Record<string, unknown>;
7
+ }
8
+ export interface Logger {
9
+ trace: (message: string, context?: Record<string, unknown>) => void;
10
+ debug: (message: string, context?: Record<string, unknown>) => void;
11
+ info: (message: string, context?: Record<string, unknown>) => void;
12
+ warn: (message: string, context?: Record<string, unknown>) => void;
13
+ error: (message: string, context?: Record<string, unknown>) => void;
14
+ }
15
+ export declare function createLogger(verbose: boolean): Logger;
16
+ export declare function createUiLogger(verbose: boolean): Logger;
17
+ export declare function parseVerboseFlag(args: string[]): {
18
+ verbose: boolean;
19
+ remainingArgs: string[];
20
+ };
@@ -0,0 +1,75 @@
1
+ // verbose.ts — logger JSON lines com timestamp, level, message, context.
2
+ import { info, dim, fail } from "./ui.js";
3
+ const LEVEL_ORDER = ["trace", "debug", "info", "warn", "error"];
4
+ const MIN_LEVEL_INDEX = process.env.AUTON_VERBOSE === "1" ? 0 : 2; // trace/debug/info vs info/warn/error
5
+ function shouldLog(level) {
6
+ return LEVEL_ORDER.indexOf(level) >= MIN_LEVEL_INDEX;
7
+ }
8
+ function formatJson(entry) {
9
+ return JSON.stringify(entry);
10
+ }
11
+ function writeLine(line) {
12
+ console.error(line);
13
+ }
14
+ export function createLogger(verbose) {
15
+ const minIndex = verbose ? 0 : 2;
16
+ function log(level, message, context) {
17
+ if (LEVEL_ORDER.indexOf(level) < minIndex)
18
+ return;
19
+ const entry = {
20
+ timestamp: new Date().toISOString(),
21
+ level,
22
+ message,
23
+ context,
24
+ };
25
+ writeLine(formatJson(entry));
26
+ }
27
+ return {
28
+ trace: (msg, ctx) => log("trace", msg, ctx),
29
+ debug: (msg, ctx) => log("debug", msg, ctx),
30
+ info: (msg, ctx) => log("info", msg, ctx),
31
+ warn: (msg, ctx) => log("warn", msg, ctx),
32
+ error: (msg, ctx) => log("error", msg, ctx),
33
+ };
34
+ }
35
+ export function createUiLogger(verbose) {
36
+ const base = createLogger(verbose);
37
+ return {
38
+ trace: (msg, ctx) => {
39
+ base.trace(msg, ctx);
40
+ if (verbose)
41
+ console.error(dim(`[trace] ${msg}`), ctx ? dim(JSON.stringify(ctx)) : "");
42
+ },
43
+ debug: (msg, ctx) => {
44
+ base.debug(msg, ctx);
45
+ if (verbose)
46
+ console.error(dim(`[debug] ${msg}`), ctx ? dim(JSON.stringify(ctx)) : "");
47
+ },
48
+ info: (msg, ctx) => {
49
+ base.info(msg, ctx);
50
+ console.error(info(msg), ctx ? dim(JSON.stringify(ctx)) : "");
51
+ },
52
+ warn: (msg, ctx) => {
53
+ base.warn(msg, ctx);
54
+ console.error(dim(`⚠ ${msg}`), ctx ? dim(JSON.stringify(ctx)) : "");
55
+ },
56
+ error: (msg, ctx) => {
57
+ base.error(msg, ctx);
58
+ console.error(fail(msg), ctx ? dim(JSON.stringify(ctx)) : "");
59
+ },
60
+ };
61
+ }
62
+ export function parseVerboseFlag(args) {
63
+ const remainingArgs = [];
64
+ let verbose = process.env.AUTON_VERBOSE === "1";
65
+ for (const arg of args) {
66
+ if (arg === "--verbose" || arg === "-v") {
67
+ verbose = true;
68
+ }
69
+ else {
70
+ remainingArgs.push(arg);
71
+ }
72
+ }
73
+ return { verbose, remainingArgs };
74
+ }
75
+ //# sourceMappingURL=verbose.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verbose.js","sourceRoot":"","sources":["../src/verbose.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@autonsh/cli",
3
- "version": "0.18.0",
3
+ "version": "0.19.1",
4
4
  "description": "auton CLI. Run autonomous tasks in one command.",
5
5
  "type": "module",
6
6
  "files": [
@@ -13,6 +13,13 @@
13
13
  "dev": "tsx src/index.ts",
14
14
  "typecheck": "tsc --noEmit"
15
15
  },
16
+ "exports": {
17
+ ".": "./dist/index.js",
18
+ "./tools": "./dist/tools/index.js",
19
+ "./mcp": "./dist/mcp/index.js",
20
+ "./skills": "./dist/skills/index.js",
21
+ "./llm": "./dist/llm/index.js"
22
+ },
16
23
  "devDependencies": {
17
24
  "@types/node": "^20.10.0",
18
25
  "tsx": "^4.7.0",
@@ -21,11 +28,15 @@
21
28
  "dependencies": {
22
29
  "@clack/prompts": "^1.7.0",
23
30
  "boxen": "^8.0.1",
31
+ "chalk": "^5.6.2",
24
32
  "cli-progress": "^3.12.0",
33
+ "gradient-string": "^2.0.2",
25
34
  "handlebars": "^4.7.8",
26
35
  "log-symbols": "^7.0.1",
36
+ "minimatch": "^10.2.6",
27
37
  "ora": "^9.4.1",
28
38
  "picocolors": "^1.1.1",
29
- "string-width": "^8.2.2"
39
+ "string-width": "^8.2.2",
40
+ "zod": "^3.25.76"
30
41
  }
31
42
  }
@@ -2,8 +2,6 @@ name: api-json
2
2
  description: Endpoint HTTP customizado — retorna JSON/status/headers via task.done
3
3
  goal: "retorna JSON customizado"
4
4
  entry: agent.ts
5
- models:
6
- default: mock:local
7
5
  env:
8
6
  - OPENAI_API_KEY
9
7
  http: true
@@ -33,4 +33,4 @@ genesis: |
33
33
  - VERIFY: tsc --noEmit → vitest run → eslint
34
34
  - CHECKPOINT: salve evidência (diff, testes, coverage)
35
35
 
36
- Responda em PT-BR. Seja conciso.
36
+ Responda em PT-BR. Seja conciso.
@@ -2,6 +2,4 @@ name: cron-digester
2
2
  description: Resumo periódico (cron)
3
3
  goal: "resume os eventos do período"
4
4
  entry: agent.ts
5
- models:
6
- default: mock:local
7
5
  cron: "*/3 * * * * *"
@@ -2,14 +2,3 @@ name: harness
2
2
  description: Modo harness — loop agêntico local (sem CP), checkpoints persistentes
3
3
  goal: ""
4
4
  entry: harness.ts
5
- models:
6
- default: ollama:qwen2.5-coder:14b-instruct-q4_K_M
7
- env: []
8
- mode: harness
9
- harness:
10
- loop: true
11
- maxTurns: 10
12
- checkpointDir: ".auton/checkpoints"
13
- verify:
14
- typecheck: "tsc --noEmit"
15
- test: "vitest run"
@@ -1,7 +1,7 @@
1
1
  import { agent, TASK_DONE_EVENT } from "@autonsh/runtime";
2
2
 
3
- // Template multi-agent — delega via HTTP nativo ao CP (sem spawn CLI)
4
- // Modo: build/deploy — usa fetch nativo (policy fetch: true)
3
+ // Template multi-agent — delega via ctx.tools.fetch ao CP (respeita policy)
4
+ // Modo: build/deploy — fetch permitido em ambos (policy fetch: true)
5
5
  export default agent(async (ctx) => {
6
6
  const goal = ((ctx.input as { prompt?: string } | undefined)?.prompt ?? "").trim()
7
7
  || "orquestra agentes";
@@ -11,20 +11,19 @@ export default agent(async (ctx) => {
11
11
  if (!api) throw new Error("AUTON_API não definido — delegação requer CP");
12
12
  await ctx.logger.info("multi-agent iniciado", { goal, mode });
13
13
 
14
- // Delega via HTTP nativo ao CP: POST /v1/agents/{name}/invoke
14
+ // Delega via ctx.tools.fetch ao CP: POST /v1/agents/{name}/invoke
15
15
  // Retorna {result, turn, lines} — result é o TASK:DONE estruturado
16
16
  async function delegate(toAgent: string, prompt: string): Promise<any> {
17
17
  try {
18
- const res = await fetch(`${api}/v1/agents/${toAgent}/invoke`, {
18
+ const res = await ctx.tools.fetch(`${api}/v1/agents/${toAgent}/invoke`, {
19
19
  method: "POST",
20
20
  headers: { "Content-Type": "application/json" },
21
21
  body: JSON.stringify({ prompt }),
22
22
  });
23
- if (!res.ok) {
24
- const text = await res.text();
25
- return { erro: `HTTP ${res.status}: ${text}` };
23
+ if (res.status >= 400) {
24
+ return { erro: `HTTP ${res.status}: ${res.text}` };
26
25
  }
27
- const data = await res.json();
26
+ const data = JSON.parse(res.text);
28
27
  return data.result ?? { turn: data.turn, lines: data.lines };
29
28
  } catch (err) {
30
29
  return { erro: (err as Error).message };