@autonsh/cli 0.17.2 → 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.
Files changed (136) hide show
  1. package/dist/chat.d.ts +1 -1
  2. package/dist/chat.js +166 -120
  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 +304 -119
  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/prompts.d.ts +34 -8
  76. package/dist/prompts.js +186 -8
  77. package/dist/prompts.js.map +1 -1
  78. package/dist/repomap.d.ts +37 -0
  79. package/dist/repomap.js +431 -0
  80. package/dist/repomap.js.map +1 -0
  81. package/dist/skills/index.d.ts +3 -0
  82. package/dist/skills/index.js +5 -0
  83. package/dist/skills/index.js.map +1 -0
  84. package/dist/skills/registry.d.ts +16 -0
  85. package/dist/skills/registry.js +128 -0
  86. package/dist/skills/registry.js.map +1 -0
  87. package/dist/skills/types.d.ts +48 -0
  88. package/dist/skills/types.js +3 -0
  89. package/dist/skills/types.js.map +1 -0
  90. package/dist/statusline.d.ts +21 -0
  91. package/dist/statusline.js +68 -0
  92. package/dist/statusline.js.map +1 -0
  93. package/dist/streaming.d.ts +25 -0
  94. package/dist/streaming.js +91 -0
  95. package/dist/streaming.js.map +1 -0
  96. package/dist/task.d.ts +9 -1
  97. package/dist/task.js +21 -0
  98. package/dist/task.js.map +1 -1
  99. package/dist/template-engine.d.ts +19 -0
  100. package/dist/template-engine.js +187 -0
  101. package/dist/template-engine.js.map +1 -0
  102. package/dist/template-registry.d.ts +36 -0
  103. package/dist/template-registry.js +294 -0
  104. package/dist/template-registry.js.map +1 -0
  105. package/dist/theme.d.ts +52 -0
  106. package/dist/theme.js +92 -0
  107. package/dist/theme.js.map +1 -0
  108. package/dist/tools/builtin.d.ts +11 -0
  109. package/dist/tools/builtin.js +491 -0
  110. package/dist/tools/builtin.js.map +1 -0
  111. package/dist/tools/index.d.ts +3 -0
  112. package/dist/tools/index.js +5 -0
  113. package/dist/tools/index.js.map +1 -0
  114. package/dist/tools/types.d.ts +186 -0
  115. package/dist/tools/types.js +29 -0
  116. package/dist/tools/types.js.map +1 -0
  117. package/dist/ui.js +34 -30
  118. package/dist/ui.js.map +1 -1
  119. package/dist/verbose.d.ts +20 -0
  120. package/dist/verbose.js +75 -0
  121. package/dist/verbose.js.map +1 -0
  122. package/package.json +12 -2
  123. package/templates/api-json/task.yaml +0 -2
  124. package/templates/coding/agent.md +39 -0
  125. package/templates/coding/agent.ts +83 -0
  126. package/templates/coding/task.yaml +36 -0
  127. package/templates/cron-digester/task.yaml +0 -2
  128. package/templates/harness/agent.md +43 -0
  129. package/templates/harness/harness.ts +145 -0
  130. package/templates/harness/task.yaml +4 -0
  131. package/templates/multi-agent/agent.ts +7 -8
  132. package/templates/multi-agent/task.yaml +1 -3
  133. package/templates/research/task.yaml +4 -0
  134. package/templates/support/task.yaml +0 -2
  135. package/templates/webhook-echo/task.yaml +0 -2
  136. package/templates/with-approval/task.yaml +0 -2
@@ -0,0 +1,379 @@
1
+ // completion.ts — `auton completion <bash|zsh|fish>`: gera script de completion.
2
+ // Inclui: subcomandos, model specs, provider ids, task names, file paths.
3
+ const SUBCOMMANDS = [
4
+ "model",
5
+ "model ls",
6
+ "model set",
7
+ "model test",
8
+ "login",
9
+ "logout",
10
+ "chat",
11
+ "agent",
12
+ "ps",
13
+ "logs",
14
+ "status",
15
+ "restart",
16
+ "invoke",
17
+ "approve",
18
+ "reject",
19
+ "answer",
20
+ "context",
21
+ "undeploy",
22
+ "run",
23
+ "wait",
24
+ "result",
25
+ "verify",
26
+ "inspect",
27
+ "continue",
28
+ "init",
29
+ "template list",
30
+ "template create",
31
+ "kv get",
32
+ "kv set",
33
+ "kv ls",
34
+ "env set",
35
+ "env get",
36
+ "env ls",
37
+ "doctor",
38
+ "completion",
39
+ "help",
40
+ "version",
41
+ ];
42
+ const GLOBAL_OPTS = ["--help", "-h", "--version", "-v", "--no-auto-cp", "--json"];
43
+ const MODEL_SPECS = [
44
+ "ollama:",
45
+ "openai:",
46
+ "anthropic:",
47
+ "google:",
48
+ "gemini:",
49
+ "groq:",
50
+ "openai-compatible:",
51
+ ];
52
+ const PROVIDER_KINDS = ["openai", "anthropic", "google", "openai-compatible", "ollama"];
53
+ function escapeShell(arg) {
54
+ return arg.replace(/([$`"\\])/g, "\\$1");
55
+ }
56
+ function generateBash() {
57
+ return `#!/usr/bin/env bash
58
+ # auton bash completion
59
+ # Source this file: source <(auton completion bash)
60
+ # Or add to ~/.bashrc: eval "$(auton completion bash)"
61
+
62
+ _auton_completions() {
63
+ local cur prev words cword
64
+ _init_completion || return
65
+
66
+ local subcommands=(${SUBCOMMANDS.map((s) => `"${s}"`).join(" ")})
67
+ local global_opts=(${GLOBAL_OPTS.map((s) => `"${s}"`).join(" ")})
68
+
69
+ if [[ \${cword} -eq 1 ]]; then
70
+ COMPREPLY=(\$(compgen -W "\${subcommands[*]} \${global_opts[*]}" -- "\${cur}"))
71
+ return
72
+ fi
73
+
74
+ local cmd="\${words[1]}"
75
+ case "\${cmd}" in
76
+ model)
77
+ if [[ \${cword} -eq 2 ]]; then
78
+ COMPREPLY=(\$(compgen -W "ls set test" -- "\${cur}"))
79
+ elif [[ \${words[2]} == "set" && \${cword} -eq 3 ]]; then
80
+ local specs=($(_auton_model_specs))
81
+ COMPREPLY=(\$(compgen -W "\${specs[*]}" -- "\${cur}"))
82
+ fi
83
+ ;;
84
+ login)
85
+ if [[ \${cword} -eq 2 ]]; then
86
+ COMPREPLY=(\$(compgen -W "${PROVIDER_KINDS.join(" ")}" -- "\${cur}"))
87
+ fi
88
+ ;;
89
+ logout)
90
+ if [[ \${cword} -eq 2 ]]; then
91
+ local ids=($(_auton_provider_ids))
92
+ COMPREPLY=(\$(compgen -W "\${ids[*]}" -- "\${cur}"))
93
+ fi
94
+ ;;
95
+ chat|agent|logs|status|restart|invoke|approve|reject|answer|context|undeploy)
96
+ if [[ \${cword} -eq 2 ]]; then
97
+ local names=($(_auton_agent_names))
98
+ COMPREPLY=(\$(compgen -W "\${names[*]}" -- "\${cur}"))
99
+ fi
100
+ ;;
101
+ run|verify|inspect|continue|init)
102
+ if [[ \${cword} -eq 2 ]]; then
103
+ COMPREPLY=(\$(compgen -f -- "\${cur}"))
104
+ fi
105
+ ;;
106
+ template)
107
+ if [[ \${cword} -eq 2 ]]; then
108
+ COMPREPLY=(\$(compgen -W "list create" -- "\${cur}"))
109
+ elif [[ \${words[2]} == "create" && \${cword} -eq 3 ]]; then
110
+ COMPREPLY=(\$(compgen -f -- "\${cur}"))
111
+ fi
112
+ ;;
113
+ kv)
114
+ if [[ \${cword} -eq 2 ]]; then
115
+ COMPREPLY=(\$(compgen -W "get set ls" -- "\${cur}"))
116
+ elif [[ \${words[2]} == "get" || \${words[2]} == "set" ]] && [[ \${cword} -eq 3 ]]; then
117
+ local names=($(_auton_agent_names))
118
+ COMPREPLY=(\$(compgen -W "\${names[*]}" -- "\${cur}"))
119
+ fi
120
+ ;;
121
+ env)
122
+ if [[ \${cword} -eq 2 ]]; then
123
+ COMPREPLY=(\$(compgen -W "set get ls" -- "\${cur}"))
124
+ elif [[ \${words[2]} == "set" || \${words[2]} == "get" ]] && [[ \${cword} -eq 3 ]]; then
125
+ local names=($(_auton_agent_names))
126
+ COMPREPLY=(\$(compgen -W "\${names[*]}" -- "\${cur}"))
127
+ fi
128
+ ;;
129
+ completion)
130
+ if [[ \${cword} -eq 2 ]]; then
131
+ COMPREPLY=(\$(compgen -W "bash zsh fish" -- "\${cur}"))
132
+ fi
133
+ ;;
134
+ *)
135
+ COMPREPLY=(\$(compgen -W "\${global_opts[*]}" -- "\${cur}"))
136
+ ;;
137
+ esac
138
+ }
139
+
140
+ _auton_model_specs() {
141
+ local cfg_file="\${HOME}/.local/share/auton/config.json"
142
+ local specs=()
143
+
144
+ # Ollama local models
145
+ if command -v ollama >/dev/null 2>&1; then
146
+ local tags=\$(ollama list --format "{{.Name}}" 2>/dev/null || true)
147
+ for t in \${tags}; do
148
+ specs+=("ollama:\${t}")
149
+ done
150
+ fi
151
+
152
+ # Configured providers
153
+ if [[ -f \${cfg_file} ]]; then
154
+ local models=\$(jq -r '.providers[]?.model // empty' \${cfg_file} 2>/dev/null || true)
155
+ for m in \${models}; do
156
+ specs+=("\${m}")
157
+ done
158
+ fi
159
+
160
+ # Common prefixes
161
+ specs+=(${MODEL_SPECS.map((s) => `"${s}"`).join(" ")})
162
+ echo "\${specs[@]}"
163
+ }
164
+
165
+ _auton_provider_ids() {
166
+ local cfg_file="\${HOME}/.local/share/auton/config.json"
167
+ if [[ -f \${cfg_file} ]]; then
168
+ jq -r '.providers[]?.id // empty' \${cfg_file} 2>/dev/null || true
169
+ fi
170
+ }
171
+
172
+ _auton_agent_names() {
173
+ local api="\${AUTON_API:-http://localhost:8080}"
174
+ local token="\${AUTON_TOKEN:-}"
175
+ local auth=()
176
+ [[ -n \${token} ]] && auth=(-H "Authorization: Bearer \${token}")
177
+ curl -s \${auth[@]} "\${api}/v1/agents" 2>/dev/null | jq -r '.[].name // empty' 2>/dev/null || true
178
+ }
179
+
180
+ complete -F _auton_completions auton
181
+ `;
182
+ }
183
+ function generateZsh() {
184
+ const subcommands = SUBCOMMANDS.map((s) => `("${s}")`).join(" ");
185
+ const globalOpts = GLOBAL_OPTS.map((s) => `("${s}")`).join(" ");
186
+ const providerKinds = PROVIDER_KINDS.map((s) => `("${s}")`).join(" ");
187
+ const modelSpecs = MODEL_SPECS.map((s) => `("${s}")`).join(" ");
188
+ let out = "";
189
+ out += "#auton zsh completion\n";
190
+ out += "# Source this file: source <(auton completion zsh)\n";
191
+ out += "# Or add to ~/.zshrc: eval \"$(auton completion zsh)\"\n\n";
192
+ out += "# Load completion system\n";
193
+ out += "autoload -Uz compinit && compinit\n\n";
194
+ out += "_auton() {\n";
195
+ out += " local -a subcommands=(" + subcommands + ")\n";
196
+ out += " local -a global_opts=(" + globalOpts + ")\n\n";
197
+ out += " _arguments -C \\\n";
198
+ out += ' "1: :(${subcommands[*]} ${global_opts[*]})" \\\n';
199
+ out += ' "*::arg:->args" && return 0\n\n';
200
+ out += ' case "$words[2]" in\n';
201
+ out += " model)\n";
202
+ out += " _arguments \\\n";
203
+ out += ' "2:subcommand:(ls set test search info pull rm)" \\\n';
204
+ out += ' "3:model spec:($( _auton_model_specs_zsh ))" && return 0\n';
205
+ out += " ;;\n";
206
+ out += " login)\n";
207
+ out += " _arguments \"2:provider:(" + providerKinds + ")\" && return 0\n";
208
+ out += " ;;\n";
209
+ out += " logout)\n";
210
+ out += ' _arguments "2:provider id:($( _auton_provider_ids_zsh ))" && return 0\n';
211
+ out += " ;;\n";
212
+ out += " chat|agent|logs|status|restart|invoke|approve|reject|answer|context|undeploy)\n";
213
+ out += ' _arguments "2:agent name:($( _auton_agent_names_zsh ))" && return 0\n';
214
+ out += " ;;\n";
215
+ out += " run|verify|inspect|continue|init)\n";
216
+ out += ' _arguments "2:directory:_files" && return 0\n';
217
+ out += " ;;\n";
218
+ out += " template)\n";
219
+ out += " _arguments \\\n";
220
+ out += ' "2:subcommand:(list create)" \\\n';
221
+ out += ' "3:template id:_files" && return 0\n';
222
+ out += " ;;\n";
223
+ out += " kv)\n";
224
+ out += " _arguments \\\n";
225
+ out += ' "2:subcommand:(get set ls)" \\\n';
226
+ out += ' "3:agent name:($( _auton_agent_names_zsh ))" && return 0\n';
227
+ out += " ;;\n";
228
+ out += " env)\n";
229
+ out += " _arguments \\\n";
230
+ out += ' "2:subcommand:(set get ls)" \\\n';
231
+ out += ' "3:agent name:($( _auton_agent_names_zsh ))" && return 0\n';
232
+ out += " ;;\n";
233
+ out += " completion)\n";
234
+ out += ' _arguments "2:shell:(bash zsh fish)" && return 0\n';
235
+ out += " ;;\n";
236
+ out += " esac\n";
237
+ out += "}\n\n";
238
+ out += "_auton_model_specs_zsh() {\n";
239
+ out += ' local cfg_file="$HOME/.local/share/auton/config.json"\n';
240
+ out += " local -a specs=()\n\n";
241
+ out += " if (( $+commands[ollama] )); then\n";
242
+ out += ' local tags=(${(f)"$(ollama list --format "{{.Name}}" 2>/dev/null)"})\n';
243
+ out += ' for t in $tags; do specs+=("ollama:$t"); done\n';
244
+ out += " fi\n\n";
245
+ out += " if [[ -f $cfg_file ]]; then\n";
246
+ out += ' local models=(${(f)"$(jq -r \'.providers[]?.model // empty\' $cfg_file 2>/dev/null)"})\n';
247
+ out += ' for m in $models; do specs+=("$m"); done\n';
248
+ out += " fi\n\n";
249
+ out += " specs+=(" + modelSpecs + ")\n";
250
+ out += " echo $specs[@]\n";
251
+ out += "}\n\n";
252
+ out += "_auton_provider_ids_zsh() {\n";
253
+ out += ' local cfg_file="$HOME/.local/share/auton/config.json"\n';
254
+ out += " if [[ -f $cfg_file ]]; then\n";
255
+ out += " jq -r '.providers[]?.id // empty' $cfg_file 2>/dev/null\n";
256
+ out += " fi\n";
257
+ out += "}\n\n";
258
+ out += "_auton_agent_names_zsh() {\n";
259
+ out += ' local api="${AUTON_API:-http://localhost:8080}"\n';
260
+ out += ' local token="${AUTON_TOKEN:-}"\n';
261
+ out += " local auth=()\n";
262
+ out += ' [[ -n $token ]] && auth=(-H "Authorization: Bearer $token")\n';
263
+ out += ' curl -s $auth[@] "$api/v1/agents" 2>/dev/null | jq -r \'.[].name // empty\' 2>/dev/null\n';
264
+ out += "}\n\n";
265
+ out += "compdef _auton auton\n";
266
+ return out;
267
+ }
268
+ function generateFish() {
269
+ const modelSpecs = MODEL_SPECS.map((s) => `"${s}"`).join(" ");
270
+ return `# auton fish completion
271
+ # Source this file: source (auton completion fish | psub)
272
+ # Or add to ~/.config/fish/config.fish: auton completion fish | source
273
+
274
+ function __auton_model_specs
275
+ set -l cfg_file \$HOME/.local/share/auton/config.json
276
+ set -l specs
277
+
278
+ if type -q ollama
279
+ for t in (ollama list --format "{{.Name}}" 2>/dev/null)
280
+ set specs \$specs "ollama:\$t"
281
+ end
282
+ end
283
+
284
+ if test -f \$cfg_file
285
+ for m in (jq -r '.providers[]?.model // empty' \$cfg_file 2>/dev/null)
286
+ set specs \$specs \$m
287
+ end
288
+ end
289
+
290
+ set specs \$specs ${modelSpecs}
291
+ printf '%s\\n' \$specs
292
+ end
293
+
294
+ function __auton_provider_ids
295
+ set -l cfg_file \$HOME/.local/share/auton/config.json
296
+ if test -f \$cfg_file
297
+ jq -r '.providers[]?.id // empty' \$cfg_file 2>/dev/null
298
+ end
299
+ end
300
+
301
+ function __auton_agent_names
302
+ set -l api \$AUTON_API
303
+ set -l token \$AUTON_TOKEN
304
+ if test -z \$api
305
+ set api http://localhost:8080
306
+ end
307
+ set -l auth
308
+ if test -n \$token
309
+ set auth -H "Authorization: Bearer \$token"
310
+ end
311
+ curl -s \$auth \$api/v1/agents 2>/dev/null | jq -r '.[].name // empty' 2>/dev/null
312
+ end
313
+
314
+ complete -c auton -n "__fish_use_subcommand" \\
315
+ -f -a "${SUBCOMMANDS.map((s) => `"${s}"`).join(" ")}" \\
316
+ -a "${GLOBAL_OPTS.map((s) => `"${s}"`).join(" ")}"
317
+
318
+ complete -c auton -n "__fish_seen_subcommand_from model" \\
319
+ -f -a "ls set test"
320
+
321
+ complete -c auton -n "__fish_seen_subcommand_from model; __fish_seen_subcommand_from set" \\
322
+ -f -a "(__auton_model_specs)"
323
+
324
+ complete -c auton -n "__fish_seen_subcommand_from login" \\
325
+ -f -a "${PROVIDER_KINDS.map((s) => `"${s}"`).join(" ")}"
326
+
327
+ complete -c auton -n "__fish_seen_subcommand_from logout" \\
328
+ -f -a "(__auton_provider_ids)"
329
+
330
+ complete -c auton -n "__fish_seen_subcommand_from chat; __fish_seen_subcommand_from agent; __fish_seen_subcommand_from logs; __fish_seen_subcommand_from status; __fish_seen_subcommand_from restart; __fish_seen_subcommand_from invoke; __fish_seen_subcommand_from approve; __fish_seen_subcommand_from reject; __fish_seen_subcommand_from answer; __fish_seen_subcommand_from context; __fish_seen_subcommand_from undeploy" \\
331
+ -f -a "(__auton_agent_names)"
332
+
333
+ complete -c auton -n "__fish_seen_subcommand_from run; __fish_seen_subcommand_from verify; __fish_seen_subcommand_from inspect; __fish_seen_subcommand_from continue; __fish_seen_subcommand_from init" \\
334
+ -f -a "(__auton_complete_paths)"
335
+
336
+ complete -c auton -n "__fish_seen_subcommand_from template" \\
337
+ -f -a "list create"
338
+
339
+ complete -c auton -n "__fish_seen_subcommand_from template; __fish_seen_subcommand_from create" \\
340
+ -f -a "(__auton_complete_paths)"
341
+
342
+ complete -c auton -n "__fish_seen_subcommand_from kv" \\
343
+ -f -a "get set ls"
344
+
345
+ complete -c auton -n "__fish_seen_subcommand_from kv; __fish_seen_subcommand_from get; __fish_seen_subcommand_from kv; __fish_seen_subcommand_from set" \\
346
+ -f -a "(__auton_agent_names)"
347
+
348
+ complete -c auton -n "__fish_seen_subcommand_from env" \\
349
+ -f -a "set get ls"
350
+
351
+ complete -c auton -n "__fish_seen_subcommand_from env; __fish_seen_subcommand_from set; __fish_seen_subcommand_from env; __fish_seen_subcommand_from get" \\
352
+ -f -a "(__auton_agent_names)"
353
+
354
+ complete -c auton -n "__fish_seen_subcommand_from completion" \\
355
+ -f -a "bash zsh fish"
356
+
357
+ function __auton_complete_paths
358
+ # Complete files and directories
359
+ complete -C'commandline -cp' -f
360
+ end
361
+ `;
362
+ }
363
+ export async function generateCompletion(shell) {
364
+ switch (shell) {
365
+ case "bash":
366
+ return generateBash();
367
+ case "zsh":
368
+ return generateZsh();
369
+ case "fish":
370
+ return generateFish();
371
+ default:
372
+ throw new Error(`Shell não suportado: ${shell}. Use: bash, zsh, fish`);
373
+ }
374
+ }
375
+ export async function cmdCompletion(shell) {
376
+ const script = await generateCompletion(shell);
377
+ console.log(script);
378
+ }
379
+ //# sourceMappingURL=completion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"completion.js","sourceRoot":"","sources":["../src/completion.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,0EAA0E;AAW1E,MAAM,WAAW,GAAG;IAClB,OAAO;IACP,UAAU;IACV,WAAW;IACX,YAAY;IACZ,OAAO;IACP,QAAQ;IACR,MAAM;IACN,OAAO;IACP,IAAI;IACJ,MAAM;IACN,QAAQ;IACR,SAAS;IACT,QAAQ;IACR,SAAS;IACT,QAAQ;IACR,QAAQ;IACR,SAAS;IACT,UAAU;IACV,KAAK;IACL,MAAM;IACN,QAAQ;IACR,QAAQ;IACR,SAAS;IACT,UAAU;IACV,MAAM;IACN,eAAe;IACf,iBAAiB;IACjB,QAAQ;IACR,QAAQ;IACR,OAAO;IACP,SAAS;IACT,SAAS;IACT,QAAQ;IACR,QAAQ;IACR,YAAY;IACZ,MAAM;IACN,SAAS;CACD,CAAC;AAEX,MAAM,WAAW,GAAG,CAAC,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,cAAc,EAAE,QAAQ,CAAU,CAAC;AAE3F,MAAM,WAAW,GAAG;IAClB,SAAS;IACT,SAAS;IACT,YAAY;IACZ,SAAS;IACT,SAAS;IACT,OAAO;IACP,oBAAoB;CACZ,CAAC;AAEX,MAAM,cAAc,GAAG,CAAC,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,mBAAmB,EAAE,QAAQ,CAAU,CAAC;AAEjG,SAAS,WAAW,CAAC,GAAW;IAC9B,OAAO,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;AAC3C,CAAC;AAED,SAAS,YAAY;IACnB,OAAO;;;;;;;;;uBASc,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;uBAC1C,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;oCAmB7B,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YA2EhD,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;CAoBrD,CAAC;AACF,CAAC;AAED,SAAS,WAAW;IAClB,MAAM,WAAW,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACjE,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChE,MAAM,aAAa,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACtE,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEhE,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,GAAG,IAAI,yBAAyB,CAAC;IACjC,GAAG,IAAI,sDAAsD,CAAC;IAC9D,GAAG,IAAI,4DAA4D,CAAC;IACpE,GAAG,IAAI,4BAA4B,CAAC;IACpC,GAAG,IAAI,uCAAuC,CAAC;IAC/C,GAAG,IAAI,cAAc,CAAC;IACtB,GAAG,IAAI,0BAA0B,GAAG,WAAW,GAAG,KAAK,CAAC;IACxD,GAAG,IAAI,0BAA0B,GAAG,UAAU,GAAG,OAAO,CAAC;IACzD,GAAG,IAAI,sBAAsB,CAAC;IAC9B,GAAG,IAAI,sDAAsD,CAAC;IAC9D,GAAG,IAAI,qCAAqC,CAAC;IAC7C,GAAG,IAAI,yBAAyB,CAAC;IACjC,GAAG,IAAI,cAAc,CAAC;IACtB,GAAG,IAAI,uBAAuB,CAAC;IAC/B,GAAG,IAAI,+DAA+D,CAAC;IACvE,GAAG,IAAI,oEAAoE,CAAC;IAC5E,GAAG,IAAI,YAAY,CAAC;IACpB,GAAG,IAAI,cAAc,CAAC;IACtB,GAAG,IAAI,iCAAiC,GAAG,aAAa,GAAG,mBAAmB,CAAC;IAC/E,GAAG,IAAI,YAAY,CAAC;IACpB,GAAG,IAAI,eAAe,CAAC;IACvB,GAAG,IAAI,+EAA+E,CAAC;IACvF,GAAG,IAAI,YAAY,CAAC;IACpB,GAAG,IAAI,qFAAqF,CAAC;IAC7F,GAAG,IAAI,6EAA6E,CAAC;IACrF,GAAG,IAAI,YAAY,CAAC;IACpB,GAAG,IAAI,yCAAyC,CAAC;IACjD,GAAG,IAAI,qDAAqD,CAAC;IAC7D,GAAG,IAAI,YAAY,CAAC;IACpB,GAAG,IAAI,iBAAiB,CAAC;IACzB,GAAG,IAAI,uBAAuB,CAAC;IAC/B,GAAG,IAAI,2CAA2C,CAAC;IACnD,GAAG,IAAI,8CAA8C,CAAC;IACtD,GAAG,IAAI,YAAY,CAAC;IACpB,GAAG,IAAI,WAAW,CAAC;IACnB,GAAG,IAAI,uBAAuB,CAAC;IAC/B,GAAG,IAAI,0CAA0C,CAAC;IAClD,GAAG,IAAI,oEAAoE,CAAC;IAC5E,GAAG,IAAI,YAAY,CAAC;IACpB,GAAG,IAAI,YAAY,CAAC;IACpB,GAAG,IAAI,uBAAuB,CAAC;IAC/B,GAAG,IAAI,0CAA0C,CAAC;IAClD,GAAG,IAAI,oEAAoE,CAAC;IAC5E,GAAG,IAAI,YAAY,CAAC;IACpB,GAAG,IAAI,mBAAmB,CAAC;IAC3B,GAAG,IAAI,0DAA0D,CAAC;IAClE,GAAG,IAAI,YAAY,CAAC;IACpB,GAAG,IAAI,UAAU,CAAC;IAClB,GAAG,IAAI,OAAO,CAAC;IACf,GAAG,IAAI,8BAA8B,CAAC;IACtC,GAAG,IAAI,2DAA2D,CAAC;IACnE,GAAG,IAAI,yBAAyB,CAAC;IACjC,GAAG,IAAI,uCAAuC,CAAC;IAC/C,GAAG,IAAI,4EAA4E,CAAC;IACpF,GAAG,IAAI,qDAAqD,CAAC;IAC7D,GAAG,IAAI,UAAU,CAAC;IAClB,GAAG,IAAI,iCAAiC,CAAC;IACzC,GAAG,IAAI,8FAA8F,CAAC;IACtG,GAAG,IAAI,gDAAgD,CAAC;IACxD,GAAG,IAAI,UAAU,CAAC;IAClB,GAAG,IAAI,YAAY,GAAG,UAAU,GAAG,KAAK,CAAC;IACzC,GAAG,IAAI,oBAAoB,CAAC;IAC5B,GAAG,IAAI,OAAO,CAAC;IACf,GAAG,IAAI,+BAA+B,CAAC;IACvC,GAAG,IAAI,2DAA2D,CAAC;IACnE,GAAG,IAAI,iCAAiC,CAAC;IACzC,GAAG,IAAI,+DAA+D,CAAC;IACvE,GAAG,IAAI,QAAQ,CAAC;IAChB,GAAG,IAAI,OAAO,CAAC;IACf,GAAG,IAAI,8BAA8B,CAAC;IACtC,GAAG,IAAI,qDAAqD,CAAC;IAC7D,GAAG,IAAI,oCAAoC,CAAC;IAC5C,GAAG,IAAI,mBAAmB,CAAC;IAC3B,GAAG,IAAI,iEAAiE,CAAC;IACzE,GAAG,IAAI,6FAA6F,CAAC;IACrG,GAAG,IAAI,OAAO,CAAC;IACf,GAAG,IAAI,wBAAwB,CAAC;IAChC,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,YAAY;IACnB,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAE9D,OAAO;;;;;;;;;;;;;;;;;;;;sBAoBa,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;WAyBrB,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QAC7C,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;;;;;;;;;WASvC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoCvD,CAAC;AACF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,KAA8B;IACrE,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,MAAM;YACT,OAAO,YAAY,EAAE,CAAC;QACxB,KAAK,KAAK;YACR,OAAO,WAAW,EAAE,CAAC;QACvB,KAAK,MAAM;YACT,OAAO,YAAY,EAAE,CAAC;QACxB;YACE,MAAM,IAAI,KAAK,CAAC,wBAAwB,KAAK,wBAAwB,CAAC,CAAC;IAC3E,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,KAAa;IAC/C,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,KAAgC,CAAC,CAAC;IAC1E,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACtB,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { z } from "zod";
2
+ import type { AutonConfig } from "./config.js";
3
+ export declare const AutonConfigSchema: z.ZodType<AutonConfig>;
4
+ export declare function validateConfig(cfg: unknown): {
5
+ valid: boolean;
6
+ errors: string[];
7
+ };
8
+ export declare function migrateConfig(oldCfg: unknown): AutonConfig;
9
+ export declare function secretScan(cfg: AutonConfig): string[];
10
+ export declare function enforceStrictSecrets(warnings: string[]): void;
@@ -0,0 +1,101 @@
1
+ // config-validation.ts — Zod schema + validação + migração + secret scan.
2
+ import { z } from "zod";
3
+ const ProviderKindSchema = z.enum(["openai", "anthropic", "google", "openai-compatible", "ollama"]);
4
+ const ConfigProviderSchema = z.object({
5
+ id: z.string().min(1),
6
+ label: z.string().min(1),
7
+ kind: ProviderKindSchema,
8
+ model: z.string().min(1),
9
+ apiKey: z.string().optional(),
10
+ baseUrl: z.string().url().optional(),
11
+ customHeaders: z.record(z.string()).optional(),
12
+ oauthLoginKey: z.string().optional(),
13
+ maxTokens: z.number().int().positive().optional(),
14
+ parseThinkTags: z.boolean().optional(),
15
+ keyVar: z.string().optional(),
16
+ baseEnv: z.string().optional(),
17
+ quando: z.string().datetime({ offset: true }),
18
+ });
19
+ export const AutonConfigSchema = z.object({
20
+ defaultModel: z.string(),
21
+ providers: z.array(ConfigProviderSchema),
22
+ });
23
+ export function validateConfig(cfg) {
24
+ const result = AutonConfigSchema.safeParse(cfg);
25
+ if (result.success)
26
+ return { valid: true, errors: [] };
27
+ const errors = result.error.issues.map((i) => `${i.path.join(".")}: ${i.message}`);
28
+ return { valid: false, errors };
29
+ }
30
+ export function migrateConfig(oldCfg) {
31
+ const raw = oldCfg;
32
+ // v0.15: oauth.json shape — handled in config.ts migrateLegacy()
33
+ // v0.17: config.json sem "kind" — assume openai-compatible
34
+ if (Array.isArray(raw.providers)) {
35
+ const providers = raw.providers.map((p) => {
36
+ const provider = p;
37
+ let kind = provider.kind;
38
+ if (!kind && provider.model) {
39
+ const model = String(provider.model);
40
+ if (model.startsWith("ollama:"))
41
+ kind = "ollama";
42
+ else if (model.startsWith("gemini:") || model.startsWith("google:"))
43
+ kind = "google";
44
+ else if (model.startsWith("anthropic:"))
45
+ kind = "anthropic";
46
+ else if (model.startsWith("openai:"))
47
+ kind = "openai";
48
+ else
49
+ kind = "openai-compatible";
50
+ }
51
+ const resolvedKind = (kind ?? "openai-compatible");
52
+ return {
53
+ id: String(provider.id ?? ""),
54
+ label: String(provider.label ?? ""),
55
+ kind: resolvedKind,
56
+ model: String(provider.model ?? ""),
57
+ apiKey: provider.apiKey,
58
+ baseUrl: provider.baseUrl,
59
+ customHeaders: provider.customHeaders,
60
+ oauthLoginKey: provider.oauthLoginKey,
61
+ maxTokens: provider.maxTokens,
62
+ parseThinkTags: provider.parseThinkTags,
63
+ keyVar: provider.keyVar,
64
+ baseEnv: provider.baseEnv,
65
+ quando: String(provider.quando ?? new Date().toISOString()),
66
+ };
67
+ });
68
+ return { defaultModel: String(raw.defaultModel ?? ""), providers };
69
+ }
70
+ return { defaultModel: "", providers: [] };
71
+ }
72
+ const SECRET_PATTERNS = [
73
+ [/sk-[a-zA-Z0-9]{20,}/, "OpenAI API key"],
74
+ [/sk-ant-[a-zA-Z0-9\-_]{20,}/, "Anthropic API key"],
75
+ [/gsk_[a-zA-Z0-9]{20,}/, "Groq API key"],
76
+ [/xai-[a-zA-Z0-9]{20,}/, "xAI API key"],
77
+ [/AIza[a-zA-Z0-9\-_]{20,}/, "Google API key"],
78
+ [/ghp_[a-zA-Z0-9]{20,}/, "GitHub PAT"],
79
+ [/gho_[a-zA-Z0-9]{20,}/, "GitHub OAuth token"],
80
+ [/glpat-[a-zA-Z0-9\-_]{20,}/, "GitLab PAT"],
81
+ ];
82
+ export function secretScan(cfg) {
83
+ const warnings = [];
84
+ for (const p of cfg.providers) {
85
+ if (p.apiKey) {
86
+ for (const [pattern, label] of SECRET_PATTERNS) {
87
+ if (pattern.test(p.apiKey)) {
88
+ warnings.push(`${label} detectado no provider "${p.id}" — evite commitar config.json`);
89
+ break;
90
+ }
91
+ }
92
+ }
93
+ }
94
+ return warnings;
95
+ }
96
+ export function enforceStrictSecrets(warnings) {
97
+ if (process.env.AUTON_STRICT_SECRETS === "1" && warnings.length > 0) {
98
+ throw new Error(`secrets detectados no config (AUTON_STRICT_SECRETS=1):\n${warnings.join("\n")}`);
99
+ }
100
+ }
101
+ //# sourceMappingURL=config-validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-validation.js","sourceRoot":"","sources":["../src/config-validation.ts"],"names":[],"mappings":"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"}
package/dist/config.d.ts CHANGED
@@ -1,10 +1,16 @@
1
+ import type { ProviderKind } from "./llm/types.js";
2
+ export declare const AUTON_DIR: string;
1
3
  export interface ConfigProvider {
2
4
  id: string;
3
5
  label: string;
4
- provider: "gemini" | "openai-compat" | "ollama";
6
+ kind: ProviderKind;
5
7
  model: string;
6
- key?: string;
7
- base?: string;
8
+ apiKey?: string;
9
+ baseUrl?: string;
10
+ customHeaders?: Record<string, string>;
11
+ oauthLoginKey?: string;
12
+ maxTokens?: number;
13
+ parseThinkTags?: boolean;
8
14
  keyVar?: string;
9
15
  baseEnv?: string;
10
16
  quando: string;
package/dist/config.js CHANGED
@@ -1,10 +1,10 @@
1
1
  // config.ts — config global do CLI (estilo ollama: ~/.local/share/auton/).
2
- // 0.17: multi-provider + modelo default persistido. Compat legado: se
3
- // config.json não existe, lê oauth.json antigo (1 provider só).
2
+ // 0.20: provider abstraction + model registry + MCP + skills. Compat legado.
4
3
  import { mkdirSync, readFileSync, writeFileSync } from "node:fs";
5
4
  import { join } from "node:path";
6
5
  import { homedir } from "node:os";
7
- const AUTON_DIR = join(homedir(), ".local", "share", "auton");
6
+ import { validateConfig, migrateConfig, secretScan, enforceStrictSecrets } from "./config-validation.js";
7
+ export const AUTON_DIR = join(homedir(), ".local", "share", "auton");
8
8
  const CONFIG_FILE = join(AUTON_DIR, "config.json");
9
9
  const LEGACY_OAUTH = join(AUTON_DIR, "oauth.json");
10
10
  export function configPath() {
@@ -13,10 +13,16 @@ export function configPath() {
13
13
  export function loadConfig() {
14
14
  try {
15
15
  const raw = JSON.parse(readFileSync(CONFIG_FILE, "utf8"));
16
- return {
17
- defaultModel: raw.defaultModel ?? "",
18
- providers: Array.isArray(raw.providers) ? raw.providers : [],
19
- };
16
+ const migrated = migrateConfig(raw);
17
+ const { valid, errors } = validateConfig(migrated);
18
+ if (!valid) {
19
+ throw new Error(`config inválido: ${errors.join(", ")}`);
20
+ }
21
+ const warnings = secretScan(migrated);
22
+ enforceStrictSecrets(warnings);
23
+ for (const w of warnings)
24
+ console.error(`⚠ ${w}`);
25
+ return migrated;
20
26
  }
21
27
  catch {
22
28
  return migrateLegacy();
@@ -28,13 +34,14 @@ function migrateLegacy() {
28
34
  const legacy = JSON.parse(readFileSync(LEGACY_OAUTH, "utf8"));
29
35
  if (!legacy.model)
30
36
  return { defaultModel: "", providers: [] };
37
+ const kind = legacy.provider === "gemini" ? "google" : legacy.provider === "ollama" ? "ollama" : "openai-compatible";
31
38
  const provider = {
32
39
  id: legacy.provider === "gemini" ? "gemini-free" : legacy.provider === "ollama" ? "ollama-local" : "custom",
33
40
  label: legacy.model,
34
- provider: legacy.provider === "gemini" ? "gemini" : legacy.provider === "ollama" ? "ollama" : "openai-compat",
41
+ kind,
35
42
  model: legacy.model,
36
- key: legacy.key,
37
- base: legacy.base,
43
+ apiKey: legacy.key,
44
+ baseUrl: legacy.base,
38
45
  quando: legacy.quando ?? new Date().toISOString(),
39
46
  };
40
47
  const cfg = { defaultModel: legacy.model, providers: [provider] };
@@ -53,6 +60,11 @@ function migrateLegacy() {
53
60
  }
54
61
  }
55
62
  export function saveConfig(cfg) {
63
+ const { valid, errors } = validateConfig(cfg);
64
+ if (!valid)
65
+ throw new Error(`config inválido: ${errors.join(", ")}`);
66
+ const warnings = secretScan(cfg);
67
+ enforceStrictSecrets(warnings);
56
68
  mkdirSync(AUTON_DIR, { recursive: true });
57
69
  writeFileSync(CONFIG_FILE, JSON.stringify(cfg, null, 2) + "\n");
58
70
  // G7: chmod 600 — credenciais em plaintext — apenas dono pode ler
@@ -64,7 +76,7 @@ export function saveConfig(cfg) {
64
76
  }
65
77
  }
66
78
  export function getDefaultModel() {
67
- return loadConfig().defaultModel;
79
+ return loadConfig().defaultModel || "mock:local";
68
80
  }
69
81
  export function setDefaultModel(spec) {
70
82
  const cfg = loadConfig();
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ export interface DoctorCheck {
2
+ name: string;
3
+ category: "config" | "credentials" | "ollama" | "mcp" | "sandbox" | "disk" | "node" | "go";
4
+ status: "pass" | "warn" | "fail";
5
+ message: string;
6
+ fix?: string;
7
+ }
8
+ export interface DoctorReport {
9
+ checks: DoctorCheck[];
10
+ summary: {
11
+ pass: number;
12
+ warn: number;
13
+ fail: number;
14
+ };
15
+ exitCode: 0 | 1 | 2;
16
+ }
17
+ export declare function runDoctor(json?: boolean): Promise<DoctorReport>;
18
+ export declare function cmdDoctor(json: boolean): Promise<void>;