@autonsh/cli 0.18.0 → 0.19.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.
- package/dist/chat.d.ts +1 -1
- package/dist/chat.js +166 -120
- package/dist/chat.js.map +1 -1
- package/dist/completion.d.ts +2 -0
- package/dist/completion.js +379 -0
- package/dist/completion.js.map +1 -0
- package/dist/config-validation.d.ts +10 -0
- package/dist/config-validation.js +101 -0
- package/dist/config-validation.js.map +1 -0
- package/dist/config.d.ts +9 -3
- package/dist/config.js +23 -11
- package/dist/config.js.map +1 -1
- package/dist/doctor.d.ts +18 -0
- package/dist/doctor.js +409 -0
- package/dist/doctor.js.map +1 -0
- package/dist/errors.d.ts +22 -0
- package/dist/errors.js +60 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.js +62 -64
- package/dist/index.js.map +1 -1
- package/dist/input.d.ts +43 -0
- package/dist/input.js +288 -0
- package/dist/input.js.map +1 -0
- package/dist/llm/factory.d.ts +5 -0
- package/dist/llm/factory.js +54 -0
- package/dist/llm/factory.js.map +1 -0
- package/dist/llm/index.d.ts +9 -0
- package/dist/llm/index.js +11 -0
- package/dist/llm/index.js.map +1 -0
- package/dist/llm/provider.d.ts +27 -0
- package/dist/llm/provider.js +98 -0
- package/dist/llm/provider.js.map +1 -0
- package/dist/llm/providers/anthropic.d.ts +23 -0
- package/dist/llm/providers/anthropic.js +198 -0
- package/dist/llm/providers/anthropic.js.map +1 -0
- package/dist/llm/providers/google.d.ts +31 -0
- package/dist/llm/providers/google.js +190 -0
- package/dist/llm/providers/google.js.map +1 -0
- package/dist/llm/providers/ollama.d.ts +21 -0
- package/dist/llm/providers/ollama.js +157 -0
- package/dist/llm/providers/ollama.js.map +1 -0
- package/dist/llm/providers/openai-compatible.d.ts +22 -0
- package/dist/llm/providers/openai-compatible.js +175 -0
- package/dist/llm/providers/openai-compatible.js.map +1 -0
- package/dist/llm/providers/openai.d.ts +20 -0
- package/dist/llm/providers/openai.js +167 -0
- package/dist/llm/providers/openai.js.map +1 -0
- package/dist/llm/registry.d.ts +19 -0
- package/dist/llm/registry.js +421 -0
- package/dist/llm/registry.js.map +1 -0
- package/dist/llm/types.d.ts +174 -0
- package/dist/llm/types.js +3 -0
- package/dist/llm/types.js.map +1 -0
- package/dist/login.d.ts +1 -1
- package/dist/login.js +14 -14
- package/dist/login.js.map +1 -1
- package/dist/mcp/client.d.ts +36 -0
- package/dist/mcp/client.js +199 -0
- package/dist/mcp/client.js.map +1 -0
- package/dist/mcp/config.d.ts +10 -0
- package/dist/mcp/config.js +43 -0
- package/dist/mcp/config.js.map +1 -0
- package/dist/mcp/index.d.ts +4 -0
- package/dist/mcp/index.js +6 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/types.d.ts +104 -0
- package/dist/mcp/types.js +3 -0
- package/dist/mcp/types.js.map +1 -0
- package/dist/model.d.ts +3 -14
- package/dist/model.js +131 -91
- package/dist/model.js.map +1 -1
- package/dist/ollama.d.ts +10 -0
- package/dist/ollama.js +11 -0
- package/dist/ollama.js.map +1 -0
- package/dist/repomap.d.ts +37 -0
- package/dist/repomap.js +431 -0
- package/dist/repomap.js.map +1 -0
- package/dist/skills/index.d.ts +3 -0
- package/dist/skills/index.js +5 -0
- package/dist/skills/index.js.map +1 -0
- package/dist/skills/registry.d.ts +16 -0
- package/dist/skills/registry.js +128 -0
- package/dist/skills/registry.js.map +1 -0
- package/dist/skills/types.d.ts +48 -0
- package/dist/skills/types.js +3 -0
- package/dist/skills/types.js.map +1 -0
- package/dist/statusline.d.ts +21 -0
- package/dist/statusline.js +68 -0
- package/dist/statusline.js.map +1 -0
- package/dist/streaming.d.ts +25 -0
- package/dist/streaming.js +91 -0
- package/dist/streaming.js.map +1 -0
- package/dist/theme.d.ts +52 -0
- package/dist/theme.js +92 -0
- package/dist/theme.js.map +1 -0
- package/dist/tools/builtin.d.ts +11 -0
- package/dist/tools/builtin.js +491 -0
- package/dist/tools/builtin.js.map +1 -0
- package/dist/tools/index.d.ts +3 -0
- package/dist/tools/index.js +5 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/types.d.ts +186 -0
- package/dist/tools/types.js +29 -0
- package/dist/tools/types.js.map +1 -0
- package/dist/ui.js +34 -30
- package/dist/ui.js.map +1 -1
- package/dist/verbose.d.ts +20 -0
- package/dist/verbose.js +75 -0
- package/dist/verbose.js.map +1 -0
- package/package.json +11 -2
- package/templates/api-json/task.yaml +0 -2
- package/templates/coding/task.yaml +1 -1
- package/templates/cron-digester/task.yaml +0 -2
- package/templates/harness/task.yaml +0 -11
- package/templates/multi-agent/agent.ts +7 -8
- package/templates/multi-agent/task.yaml +1 -3
- package/templates/research/task.yaml +0 -28
- package/templates/support/task.yaml +0 -2
- package/templates/webhook-echo/task.yaml +0 -2
- 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.js
CHANGED
|
@@ -1,21 +1,17 @@
|
|
|
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";
|
|
5
1
|
import createSpinner from "ora";
|
|
6
|
-
import logSymbols from "log-symbols";
|
|
7
2
|
import stringWidth from "string-width";
|
|
8
3
|
import boxen from "boxen";
|
|
4
|
+
import { C, SYM, BOX } from "./theme.js";
|
|
9
5
|
export const isTTY = process.stdout.isTTY === true;
|
|
10
|
-
// --- badges
|
|
11
|
-
export const ok = (msg) =>
|
|
12
|
-
export const fail = (msg) =>
|
|
13
|
-
export const info = (msg) =>
|
|
14
|
-
export const dim = (msg) =>
|
|
15
|
-
export const bold = (msg) =>
|
|
16
|
-
export const url = (msg) =>
|
|
6
|
+
// --- badges ---
|
|
7
|
+
export const ok = (msg) => C.green(`${SYM.ok} ${msg}`);
|
|
8
|
+
export const fail = (msg) => C.blood(`${SYM.fail} ${msg}`);
|
|
9
|
+
export const info = (msg) => C.gray(`${SYM.info} ${msg}`);
|
|
10
|
+
export const dim = (msg) => C.dim(msg);
|
|
11
|
+
export const bold = (msg) => C.bold(msg);
|
|
12
|
+
export const url = (msg) => C.cyan(msg);
|
|
17
13
|
export function spinner(text) {
|
|
18
|
-
const s = createSpinner({ text, color: "
|
|
14
|
+
const s = createSpinner({ text, color: "red" });
|
|
19
15
|
if (isTTY)
|
|
20
16
|
s.start();
|
|
21
17
|
return {
|
|
@@ -29,7 +25,7 @@ export function spinner(text) {
|
|
|
29
25
|
},
|
|
30
26
|
};
|
|
31
27
|
}
|
|
32
|
-
// --- logo pixel art "AUTON"
|
|
28
|
+
// --- logo pixel art "AUTON" com gradiente blood red ---
|
|
33
29
|
const FONT = {
|
|
34
30
|
A: [
|
|
35
31
|
" █████╗ ",
|
|
@@ -81,7 +77,15 @@ export function logo() {
|
|
|
81
77
|
})
|
|
82
78
|
.join(" ")
|
|
83
79
|
.trimEnd());
|
|
84
|
-
|
|
80
|
+
// Blood red gradient: bright → normal → dim
|
|
81
|
+
return [
|
|
82
|
+
C.crimson(lines[0]),
|
|
83
|
+
C.crimson(lines[1]),
|
|
84
|
+
C.blood(lines[2]),
|
|
85
|
+
C.blood(lines[3]),
|
|
86
|
+
C.dark(lines[4]),
|
|
87
|
+
C.dark(lines[5]),
|
|
88
|
+
].join("\n");
|
|
85
89
|
}
|
|
86
90
|
// --- linha de log do agente: tag colorida, payload cru ---
|
|
87
91
|
export function tagLine(line) {
|
|
@@ -90,43 +94,43 @@ export function tagLine(line) {
|
|
|
90
94
|
return line;
|
|
91
95
|
const [tag, rest] = [m[1], m[2]];
|
|
92
96
|
const tagColor = tag.includes("error")
|
|
93
|
-
?
|
|
97
|
+
? C.blood
|
|
94
98
|
: tag.includes("info")
|
|
95
|
-
?
|
|
99
|
+
? C.gray
|
|
96
100
|
: tag.includes("runtime")
|
|
97
|
-
?
|
|
98
|
-
:
|
|
101
|
+
? C.yellow
|
|
102
|
+
: C.dim;
|
|
99
103
|
return `${tagColor(tag)} ${rest}`;
|
|
100
104
|
}
|
|
101
105
|
// --- status badge colorido ---
|
|
102
106
|
export function statusColor(s) {
|
|
103
107
|
if (s === "running")
|
|
104
|
-
return
|
|
108
|
+
return C.green(s);
|
|
105
109
|
if (s === "scheduled")
|
|
106
|
-
return
|
|
110
|
+
return C.gray(s);
|
|
107
111
|
if (s === "exited")
|
|
108
|
-
return
|
|
109
|
-
return
|
|
112
|
+
return C.blood(s);
|
|
113
|
+
return C.yellow(s);
|
|
110
114
|
}
|
|
111
|
-
// --- tabela alinhada com header bold
|
|
115
|
+
// --- tabela alinhada com header bold ---
|
|
112
116
|
export function table(headers, rows) {
|
|
113
117
|
const widths = headers.map((h, i) => Math.max(stringWidth(h), ...rows.map((r) => stringWidth(r[i] ?? ""))));
|
|
114
118
|
const fmt = (cells) => cells
|
|
115
119
|
.map((c, i) => c + " ".repeat(Math.max(0, widths[i] - stringWidth(c))))
|
|
116
120
|
.join(" ")
|
|
117
121
|
.trimEnd();
|
|
118
|
-
const head = fmt(headers.map((h, i) =>
|
|
122
|
+
const head = fmt(headers.map((h, i) => C.bold(h.padEnd(widths[i]))));
|
|
119
123
|
return [head, ...rows.map(fmt)].join("\n");
|
|
120
124
|
}
|
|
121
|
-
// --- caixa emoldurada (
|
|
125
|
+
// --- caixa emoldurada (vermelho) ---
|
|
122
126
|
export function box(title, lines) {
|
|
123
127
|
return boxen(lines.join("\n"), {
|
|
124
128
|
title,
|
|
125
129
|
titleAlignment: "left",
|
|
126
|
-
padding:
|
|
127
|
-
margin:
|
|
128
|
-
borderStyle:
|
|
129
|
-
borderColor:
|
|
130
|
+
padding: BOX.padding,
|
|
131
|
+
margin: BOX.margin,
|
|
132
|
+
borderStyle: BOX.borderStyle,
|
|
133
|
+
borderColor: BOX.borderColor,
|
|
130
134
|
});
|
|
131
135
|
}
|
|
132
136
|
//# 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":"
|
|
1
|
+
{"version":3,"file":"ui.js","sourceRoot":"","sources":["../src/ui.ts"],"names":[],"mappings":"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"}
|
|
@@ -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
|
+
};
|
package/dist/verbose.js
ADDED
|
@@ -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.
|
|
3
|
+
"version": "0.19.0",
|
|
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",
|
|
@@ -24,8 +31,10 @@
|
|
|
24
31
|
"cli-progress": "^3.12.0",
|
|
25
32
|
"handlebars": "^4.7.8",
|
|
26
33
|
"log-symbols": "^7.0.1",
|
|
34
|
+
"minimatch": "^10.2.6",
|
|
27
35
|
"ora": "^9.4.1",
|
|
28
36
|
"picocolors": "^1.1.1",
|
|
29
|
-
"string-width": "^8.2.2"
|
|
37
|
+
"string-width": "^8.2.2",
|
|
38
|
+
"zod": "^3.25.76"
|
|
30
39
|
}
|
|
31
40
|
}
|
|
@@ -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
|
|
4
|
-
// Modo: build/deploy —
|
|
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
|
|
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 (
|
|
24
|
-
|
|
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 =
|
|
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 };
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
name: multi-agent
|
|
2
|
-
description: Orquestração multi-agent — delega para worker via
|
|
2
|
+
description: Orquestração multi-agent — delega para worker via HTTP (ctx.tools.fetch)
|
|
3
3
|
goal: "orquestra agentes"
|
|
4
4
|
entry: agent.ts
|
|
5
|
-
models:
|
|
6
|
-
default: mock:local
|
|
7
5
|
env:
|
|
8
6
|
- OPENAI_API_KEY
|
|
9
7
|
http: true
|
|
@@ -2,31 +2,3 @@ name: research
|
|
|
2
2
|
description: Agente de pesquisa — busca, sumariza, cita fontes, gera relatórios
|
|
3
3
|
goal: ""
|
|
4
4
|
entry: agent.ts
|
|
5
|
-
models:
|
|
6
|
-
default: ollama:qwen2.5-coder:14b-instruct-q4_K_M
|
|
7
|
-
env: []
|
|
8
|
-
mode: research
|
|
9
|
-
skills:
|
|
10
|
-
- api
|
|
11
|
-
- docs
|
|
12
|
-
verify:
|
|
13
|
-
sources: "echo 'verificar citações'"
|
|
14
|
-
genesis: |
|
|
15
|
-
Você é um pesquisador técnico. Sua missão: encontrar, verificar e sintetizar informação.
|
|
16
|
-
|
|
17
|
-
Princípios:
|
|
18
|
-
1. Fontes primárias > secundárias > opinião
|
|
19
|
-
2. Cite SEMPRE: URL, data, autor, trecho relevante
|
|
20
|
-
3. Verifique contradições entre fontes
|
|
21
|
-
4. Distinga fato de especulação
|
|
22
|
-
5. Estruture: Resumo → Evidência → Conclusão → Gaps
|
|
23
|
-
|
|
24
|
-
Ferramentas: ctx.tools.exec (curl, grep, jq), ctx.tools.read/write
|
|
25
|
-
Output: relatório Markdown com seções claras e citações inline [1], [2]...
|
|
26
|
-
|
|
27
|
-
Fluxo:
|
|
28
|
-
- PLAN: defina queries, fontes, critérios de inclusão
|
|
29
|
-
- SEARCH: execute buscas, salve raw results
|
|
30
|
-
- SYNTHESIZE: agrupe por tema, resolva conflitos
|
|
31
|
-
- REPORT: gere Markdown estruturado
|
|
32
|
-
- VERIFY: todas as claims têm citação?
|