@markusylisiurunen/tau 0.1.10 → 0.1.12

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 (63) hide show
  1. package/README.md +44 -21
  2. package/dist/app.js +135 -31
  3. package/dist/app.js.map +1 -1
  4. package/dist/bash_commands.js +37 -16
  5. package/dist/bash_commands.js.map +1 -1
  6. package/dist/cli.js +23 -7
  7. package/dist/cli.js.map +1 -1
  8. package/dist/commands.js +86 -13
  9. package/dist/commands.js.map +1 -1
  10. package/dist/config.js +27 -15
  11. package/dist/config.js.map +1 -1
  12. package/dist/content_loader.js +225 -97
  13. package/dist/content_loader.js.map +1 -1
  14. package/dist/debug.js +149 -0
  15. package/dist/debug.js.map +1 -0
  16. package/dist/main.js +35 -0
  17. package/dist/main.js.map +1 -1
  18. package/dist/personas.js +29 -8
  19. package/dist/personas.js.map +1 -1
  20. package/dist/session/session_engine.js +3 -10
  21. package/dist/session/session_engine.js.map +1 -1
  22. package/dist/subagents/registry.js +4 -1
  23. package/dist/subagents/registry.js.map +1 -1
  24. package/dist/subagents/subagent_engine.js +22 -7
  25. package/dist/subagents/subagent_engine.js.map +1 -1
  26. package/dist/subagents/web.js +58 -0
  27. package/dist/subagents/web.js.map +1 -0
  28. package/dist/tools/bash.js +9 -4
  29. package/dist/tools/bash.js.map +1 -1
  30. package/dist/tools/edit.js +8 -5
  31. package/dist/tools/edit.js.map +1 -1
  32. package/dist/tools/parallel_api.js +30 -0
  33. package/dist/tools/parallel_api.js.map +1 -0
  34. package/dist/tools/registry.js.map +1 -1
  35. package/dist/tools/task.js +8 -5
  36. package/dist/tools/task.js.map +1 -1
  37. package/dist/tools/web_fetch.js +241 -0
  38. package/dist/tools/web_fetch.js.map +1 -0
  39. package/dist/tools/web_search.js +229 -0
  40. package/dist/tools/web_search.js.map +1 -0
  41. package/dist/tools/write.js +7 -4
  42. package/dist/tools/write.js.map +1 -1
  43. package/dist/types.js +5 -1
  44. package/dist/types.js.map +1 -1
  45. package/dist/ui/bash_execution.js +26 -0
  46. package/dist/ui/bash_execution.js.map +1 -1
  47. package/dist/ui/custom_editor.js +13 -0
  48. package/dist/ui/custom_editor.js.map +1 -1
  49. package/dist/ui/session_summary.js +1 -10
  50. package/dist/ui/session_summary.js.map +1 -1
  51. package/dist/ui/slash_autocomplete.js +6 -3
  52. package/dist/ui/slash_autocomplete.js.map +1 -1
  53. package/dist/ui/task_execution.js +15 -0
  54. package/dist/ui/task_execution.js.map +1 -1
  55. package/dist/utils/context.js +31 -0
  56. package/dist/utils/context.js.map +1 -1
  57. package/dist/utils/project_files.js +144 -3
  58. package/dist/utils/project_files.js.map +1 -1
  59. package/dist/utils/streaming_settings.js +15 -0
  60. package/dist/utils/streaming_settings.js.map +1 -0
  61. package/dist/utils/zod.js +9 -0
  62. package/dist/utils/zod.js.map +1 -0
  63. package/package.json +6 -4
package/dist/config.js CHANGED
@@ -1,6 +1,26 @@
1
1
  import { existsSync, readFileSync } from "node:fs";
2
2
  import { homedir } from "node:os";
3
3
  import { join } from "node:path";
4
+ import { z } from "zod";
5
+ import { RiskLevelSchema } from "./types.js";
6
+ const configSchema = z
7
+ .object({
8
+ apiKeys: z
9
+ .object({
10
+ anthropic: z.string().optional().catch(undefined),
11
+ google: z.string().optional().catch(undefined),
12
+ openai: z.string().optional().catch(undefined),
13
+ parallel: z.string().optional().catch(undefined),
14
+ })
15
+ .passthrough()
16
+ .optional()
17
+ .catch(undefined),
18
+ userPreferences: z.string().optional().catch(undefined),
19
+ toolDisplayMode: z.enum(["compact", "full"]).optional().catch(undefined),
20
+ defaultPersona: z.string().optional().catch(undefined),
21
+ defaultRisk: RiskLevelSchema.optional().catch(undefined),
22
+ })
23
+ .passthrough();
4
24
  export function loadConfig() {
5
25
  const configDir = process.env.XDG_CONFIG_HOME || join(homedir(), ".config");
6
26
  const configPath = join(configDir, "tau", "config.json");
@@ -9,22 +29,11 @@ export function loadConfig() {
9
29
  return {};
10
30
  }
11
31
  const content = readFileSync(configPath, "utf-8");
12
- const config = JSON.parse(content);
13
- if (typeof config !== "object" || config === null)
32
+ const json = JSON.parse(content);
33
+ if (typeof json !== "object" || json === null)
14
34
  return {};
15
- const mode = config.toolDisplayMode;
16
- if (mode !== undefined && mode !== "compact" && mode !== "full") {
17
- delete config.toolDisplayMode;
18
- }
19
- const defaultPersona = config.defaultPersona;
20
- if (defaultPersona !== undefined && typeof defaultPersona !== "string") {
21
- delete config.defaultPersona;
22
- }
23
- const defaultRisk = config.defaultRisk;
24
- if (defaultRisk !== undefined && !["none", "read-only", "read-write"].includes(defaultRisk)) {
25
- delete config.defaultRisk;
26
- }
27
- return config;
35
+ const parsed = configSchema.safeParse(json);
36
+ return parsed.success ? parsed.data : {};
28
37
  }
29
38
  catch (err) {
30
39
  // If there's an error reading or parsing, silently return empty config
@@ -44,4 +53,7 @@ export function getApiKeyForProvider(config, provider) {
44
53
  return undefined;
45
54
  }
46
55
  }
56
+ export function getParallelApiKey(config) {
57
+ return config.apiKeys?.parallel;
58
+ }
47
59
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAkBjC,MAAM,UAAU,UAAU;IACxB,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;IAC5E,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC;IAEzD,IAAI,CAAC;QACH,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC5B,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,OAAO,GAAG,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAClD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAW,CAAC;QAC7C,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI;YAAE,OAAO,EAAE,CAAC;QAE7D,MAAM,IAAI,GAAG,MAAM,CAAC,eAAe,CAAC;QACpC,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;YAChE,OAAO,MAAM,CAAC,eAAe,CAAC;QAChC,CAAC;QAED,MAAM,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;QAC7C,IAAI,cAAc,KAAK,SAAS,IAAI,OAAO,cAAc,KAAK,QAAQ,EAAE,CAAC;YACvE,OAAO,MAAM,CAAC,cAAc,CAAC;QAC/B,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;QACvC,IAAI,WAAW,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;YAC5F,OAAO,MAAM,CAAC,WAAW,CAAC;QAC5B,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,uEAAuE;QACvE,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,MAAc,EAAE,QAAuB;IAC1E,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;IACrC,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,WAAW;YACd,OAAO,OAAO,CAAC,SAAS,CAAC;QAC3B,KAAK,QAAQ;YACX,OAAO,OAAO,CAAC,MAAM,CAAC;QACxB,KAAK,QAAQ;YACX,OAAO,OAAO,CAAC,MAAM,CAAC;QACxB;YACE,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAkB,eAAe,EAAE,MAAM,YAAY,CAAC;AAiB7D,MAAM,YAAY,GAAG,CAAC;KACnB,MAAM,CAAC;IACN,OAAO,EAAE,CAAC;SACP,MAAM,CAAC;QACN,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC;QACjD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC;QAC9C,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC;QAC9C,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC;KACjD,CAAC;SACD,WAAW,EAAE;SACb,QAAQ,EAAE;SACV,KAAK,CAAC,SAAS,CAAC;IACnB,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC;IACvD,eAAe,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC;IACxE,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC;IACtD,WAAW,EAAE,eAAe,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC;CACzD,CAAC;KACD,WAAW,EAAE,CAAC;AAEjB,MAAM,UAAU,UAAU;IACxB,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;IAC5E,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC;IAEzD,IAAI,CAAC;QACH,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC5B,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,OAAO,GAAG,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAClD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAY,CAAC;QAC5C,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI;YAAE,OAAO,EAAE,CAAC;QAEzD,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC5C,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,CAAE,MAAM,CAAC,IAAe,CAAC,CAAC,CAAC,EAAE,CAAC;IACvD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,uEAAuE;QACvE,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,MAAc,EAAE,QAAuB;IAC1E,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;IACrC,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,WAAW;YACd,OAAO,OAAO,CAAC,SAAS,CAAC;QAC3B,KAAK,QAAQ;YACX,OAAO,OAAO,CAAC,MAAM,CAAC;QACxB,KAAK,QAAQ;YACX,OAAO,OAAO,CAAC,MAAM,CAAC;QACxB;YACE,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,MAAc;IAC9C,OAAO,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC;AAClC,CAAC"}
@@ -1,13 +1,17 @@
1
1
  import { existsSync, readdirSync, readFileSync } from "node:fs";
2
2
  import { homedir } from "node:os";
3
- import { join } from "node:path";
3
+ import { join, resolve } from "node:path";
4
4
  import { getModels, getProviders } from "@mariozechner/pi-ai";
5
+ import { parse as parseYaml } from "yaml";
6
+ import { z } from "zod";
5
7
  import { personas as builtinPersonas } from "./personas.js";
6
8
  import { prompts as builtinPrompts } from "./prompts.js";
7
9
  import { BASH_TOOL } from "./tools/bash.js";
8
10
  import { EDIT_TOOL } from "./tools/edit.js";
11
+ import { TASK_TOOL } from "./tools/task.js";
9
12
  import { WRITE_TOOL } from "./tools/write.js";
10
- import { REASONING_LEVELS } from "./types.js";
13
+ import { ReasoningEffortSchema } from "./types.js";
14
+ import { formatZodError } from "./utils/zod.js";
11
15
  function parseMarkdownWithFrontMatter(content) {
12
16
  const lines = content.split("\n");
13
17
  if (lines[0]?.trim() !== "---") {
@@ -25,62 +29,51 @@ function parseMarkdownWithFrontMatter(content) {
25
29
  }
26
30
  const frontMatterLines = lines.slice(1, endIndex);
27
31
  const bodyLines = lines.slice(endIndex + 1);
28
- const frontMatter = parseSimpleYaml(frontMatterLines.join("\n"));
32
+ const frontMatter = parseYamlFrontMatter(frontMatterLines.join("\n"));
29
33
  const body = bodyLines.join("\n").trim();
30
34
  return { frontMatter, body };
31
35
  }
32
- function parseSimpleYaml(yamlText) {
33
- const result = {};
34
- const lines = yamlText.split("\n");
35
- let currentKey;
36
- let currentList = [];
37
- for (const line of lines) {
38
- const trimmed = line.trim();
39
- if (!trimmed)
40
- continue;
41
- if (trimmed.startsWith("- ")) {
42
- const item = trimmed.slice(2).trim();
43
- currentList.push(item);
44
- continue;
45
- }
46
- if (currentKey && currentList.length > 0) {
47
- result[currentKey] = currentList;
48
- currentList = [];
49
- }
50
- const colonIndex = line.indexOf(":");
51
- if (colonIndex > 0) {
52
- currentKey = line.substring(0, colonIndex).trim();
53
- const valueStr = line.substring(colonIndex + 1).trim();
54
- if (valueStr) {
55
- if (valueStr.toLowerCase() === "true") {
56
- result[currentKey] = true;
57
- }
58
- else if (valueStr.toLowerCase() === "false") {
59
- result[currentKey] = false;
60
- }
61
- else if (!Number.isNaN(Number(valueStr))) {
62
- result[currentKey] = Number(valueStr);
63
- }
64
- else {
65
- result[currentKey] = valueStr;
66
- }
67
- }
36
+ function parseYamlFrontMatter(yamlText) {
37
+ try {
38
+ const parsed = parseYaml(yamlText);
39
+ if (!parsed || typeof parsed !== "object") {
40
+ return {};
68
41
  }
42
+ return parsed;
69
43
  }
70
- if (currentKey && currentList.length > 0) {
71
- result[currentKey] = currentList;
44
+ catch {
45
+ return {};
72
46
  }
73
- return result;
74
47
  }
75
48
  function isKnownProvider(value) {
76
49
  return getProviders().includes(value);
77
50
  }
78
- function isReasoningEffort(value) {
79
- return typeof value === "string" && REASONING_LEVELS.includes(value);
80
- }
81
51
  function isSubagentName(value) {
82
- return value === "explore";
52
+ return value === "explore" || value === "web";
83
53
  }
54
+ const SubagentNameSchema = z.enum(["explore", "web"]);
55
+ const SubagentSpecSchema = z
56
+ .object({
57
+ provider: z.string().trim().min(1).optional(),
58
+ model: z.string().trim().min(1).optional(),
59
+ reasoning: ReasoningEffortSchema.optional(),
60
+ })
61
+ .passthrough()
62
+ .superRefine((spec, ctx) => {
63
+ const hasProvider = spec.provider !== undefined;
64
+ const hasModel = spec.model !== undefined;
65
+ if (hasProvider !== hasModel) {
66
+ ctx.addIssue({
67
+ code: z.ZodIssueCode.custom,
68
+ message: "both provider and model are required if specified",
69
+ });
70
+ }
71
+ });
72
+ // Union schema: either a list of subagent names or an object mapping names to specs
73
+ const SubagentConfigRawSchema = z.union([
74
+ z.array(z.string()),
75
+ z.record(SubagentNameSchema, z.union([z.undefined(), z.object({}).passthrough()])),
76
+ ]);
84
77
  function parseSubagentConfig(subagentsRaw) {
85
78
  if (!subagentsRaw) {
86
79
  return {};
@@ -88,54 +81,59 @@ function parseSubagentConfig(subagentsRaw) {
88
81
  const config = {};
89
82
  // Handle list of subagent names
90
83
  if (Array.isArray(subagentsRaw)) {
91
- for (const name of subagentsRaw) {
92
- if (typeof name !== "string") {
93
- return { error: "subagents list must contain only strings" };
94
- }
95
- if (!isSubagentName(name)) {
96
- return { error: `unknown subagent: ${name}` };
84
+ for (const nameRaw of subagentsRaw) {
85
+ const nameParsed = SubagentNameSchema.safeParse(nameRaw);
86
+ if (!nameParsed.success) {
87
+ return { error: `invalid subagent: ${formatZodError(nameParsed.error)}` };
97
88
  }
89
+ const name = nameParsed.data;
98
90
  // Enable with default settings (use main persona's model)
99
91
  config[name] = {};
100
92
  }
101
93
  return { config };
102
94
  }
103
95
  // Handle object with per-subagent config
104
- if (typeof subagentsRaw === "object" && subagentsRaw !== null) {
105
- for (const [name, spec] of Object.entries(subagentsRaw)) {
106
- if (!isSubagentName(name)) {
107
- return { error: `unknown subagent: ${name}` };
96
+ const configParsed = z.record(z.string(), z.unknown()).safeParse(subagentsRaw);
97
+ if (configParsed.success) {
98
+ for (const [name, specRaw] of Object.entries(configParsed.data)) {
99
+ const nameParsed = SubagentNameSchema.safeParse(name);
100
+ if (!nameParsed.success) {
101
+ return { error: `invalid subagent: ${formatZodError(nameParsed.error)}` };
108
102
  }
109
- if (!spec || typeof spec !== "object") {
103
+ const validatedName = nameParsed.data;
104
+ if (!specRaw || typeof specRaw !== "object") {
110
105
  // Empty config, will use defaults
111
- config[name] = {};
106
+ config[validatedName] = {};
112
107
  continue;
113
108
  }
114
- const specObj = spec;
115
- const provider = specObj.provider;
116
- const model = specObj.model;
117
- const reasoning = specObj.reasoning;
109
+ const spec = SubagentSpecSchema.safeParse(specRaw);
110
+ if (!spec.success) {
111
+ return { error: `subagent ${validatedName}: ${formatZodError(spec.error)}` };
112
+ }
113
+ const provider = spec.data.provider;
114
+ const model = spec.data.model;
118
115
  // Resolve model if provided
119
- if (provider || model) {
120
- if (!provider || !model) {
121
- return {
122
- error: `subagent ${name}: both provider and model are required if specified`,
123
- };
124
- }
116
+ if (provider && model) {
125
117
  const modelObj = resolveModel(provider, model);
126
118
  if (!modelObj) {
127
119
  return {
128
- error: `subagent ${name}: failed to resolve model "${provider}:${model}"`,
120
+ error: `subagent ${validatedName}: failed to resolve model "${provider}:${model}"`,
129
121
  };
130
122
  }
131
- config[name] = {
123
+ config[validatedName] = {
132
124
  model: modelObj,
133
- ...(isReasoningEffort(reasoning) && reasoning !== "none" && { reasoning }),
125
+ ...(spec.data.reasoning !== undefined && spec.data.reasoning !== "none"
126
+ ? { reasoning: spec.data.reasoning }
127
+ : {}),
134
128
  };
135
129
  }
136
130
  else {
137
131
  // No model specified, will use main persona's model
138
- config[name] = {};
132
+ config[validatedName] = {
133
+ ...(spec.data.reasoning !== undefined && spec.data.reasoning !== "none"
134
+ ? { reasoning: spec.data.reasoning }
135
+ : {}),
136
+ };
139
137
  }
140
138
  }
141
139
  return { config };
@@ -179,15 +177,44 @@ function loadMarkdownFiles(dir) {
179
177
  return { files: [], error: `failed to read directory: ${dir}` };
180
178
  }
181
179
  }
180
+ const personaFrontMatterSchema = z
181
+ .object({
182
+ id: z.string().trim().min(1),
183
+ label: z.string().trim().optional(),
184
+ provider: z.string().trim().min(1),
185
+ model: z.string().trim().min(1),
186
+ description: z.string().trim().optional(),
187
+ reasoning: ReasoningEffortSchema.optional(),
188
+ allowedReasoningLevels: z.array(ReasoningEffortSchema).optional(),
189
+ skills: z.unknown().optional(),
190
+ subagents: z.unknown().optional(),
191
+ })
192
+ .passthrough();
193
+ const skillsSchema = z.union([z.literal("*"), z.string(), z.array(z.string())]).optional();
194
+ const promptFrontMatterSchema = z
195
+ .object({
196
+ id: z.string().trim().min(1),
197
+ label: z.string().trim().optional(),
198
+ description: z.string().trim().optional(),
199
+ })
200
+ .passthrough();
201
+ const skillFrontMatterSchema = z
202
+ .object({
203
+ name: z.string().trim().min(1),
204
+ description: z.string().trim().min(1),
205
+ })
206
+ .passthrough();
182
207
  function parsePersona(file, content, forbiddenIds) {
183
208
  const { frontMatter, body } = parseMarkdownWithFrontMatter(content);
184
- const id = frontMatter.id;
185
- const label = frontMatter.label;
186
- const provider = frontMatter.provider;
187
- const model = frontMatter.model;
188
- if (!id || !provider || !model) {
209
+ const parsedFrontMatter = personaFrontMatterSchema.safeParse(frontMatter);
210
+ if (!parsedFrontMatter.success) {
189
211
  return { error: `${file}: missing required fields (id, provider, model). skipped.` };
190
212
  }
213
+ const { id, label, provider, model, description } = parsedFrontMatter.data;
214
+ const reasoning = parsedFrontMatter.data.reasoning;
215
+ const allowedReasoningLevels = parsedFrontMatter.data.allowedReasoningLevels;
216
+ const skillsRaw = parsedFrontMatter.data.skills;
217
+ const subagentsRaw = parsedFrontMatter.data.subagents;
191
218
  if (forbiddenIds?.has(id.toLowerCase())) {
192
219
  return { error: `${file}: persona id "${id}" conflicts with built-in. skipped.` };
193
220
  }
@@ -195,18 +222,34 @@ function parsePersona(file, content, forbiddenIds) {
195
222
  if (!modelObj) {
196
223
  return { error: `${file}: failed to load model "${provider}:${model}". skipped.` };
197
224
  }
198
- const description = frontMatter.description;
199
- const reasoningRaw = frontMatter.reasoning;
200
- const allowedReasoningLevelsRaw = frontMatter.allowedReasoningLevels;
201
225
  const settings = {};
202
- if (isReasoningEffort(reasoningRaw)) {
203
- settings.reasoning = reasoningRaw;
226
+ if (reasoning) {
227
+ settings.reasoning = reasoning;
228
+ }
229
+ const skillsParsed = skillsSchema.safeParse(skillsRaw);
230
+ let skills;
231
+ if (skillsParsed.success) {
232
+ const val = skillsParsed.data;
233
+ if (val === "*") {
234
+ skills = "*";
235
+ }
236
+ else if (typeof val === "string") {
237
+ const trimmed = val.trim();
238
+ skills = trimmed ? [trimmed] : undefined;
239
+ }
240
+ else if (Array.isArray(val)) {
241
+ const trimmed = val.map((s) => s.trim()).filter(Boolean);
242
+ skills = trimmed.length > 0 ? trimmed : undefined;
243
+ }
244
+ }
245
+ else if (skillsRaw !== undefined) {
246
+ if (Array.isArray(skillsRaw)) {
247
+ return { error: `${file}: skills must contain only strings. skipped.` };
248
+ }
249
+ return { error: `${file}: skills must be a string, "*", or list of strings. skipped.` };
204
250
  }
205
- const filteredReasoningLevels = Array.isArray(allowedReasoningLevelsRaw)
206
- ? allowedReasoningLevelsRaw.filter(isReasoningEffort)
207
- : undefined;
208
251
  // Parse subagents
209
- const subagentsResult = parseSubagentConfig(frontMatter.subagents);
252
+ const subagentsResult = parseSubagentConfig(subagentsRaw);
210
253
  if (subagentsResult.error) {
211
254
  return { error: `${file}: ${subagentsResult.error}. skipped.` };
212
255
  }
@@ -218,42 +261,55 @@ function parsePersona(file, content, forbiddenIds) {
218
261
  if (!isSubagentName(name))
219
262
  continue; // Validate name is a known subagent
220
263
  const subagentModel = cfg.model ?? modelObj;
221
- const settings = {};
222
- if (cfg.reasoning !== undefined && cfg.reasoning !== "none") {
223
- settings.reasoning = cfg.reasoning;
264
+ let subagentSettings;
265
+ if (cfg.reasoning !== undefined) {
266
+ subagentSettings = cfg.reasoning === "none" ? {} : { reasoning: cfg.reasoning };
267
+ }
268
+ else if (Object.keys(settings).length > 0) {
269
+ const { reasoning, ...rest } = settings;
270
+ subagentSettings = {
271
+ ...rest,
272
+ ...(reasoning && reasoning !== "none" ? { reasoning } : {}),
273
+ };
224
274
  }
225
275
  finalSubagents[name] = {
226
276
  model: subagentModel,
227
- ...(Object.keys(settings).length > 0 && { settings }),
277
+ ...(subagentSettings && { settings: subagentSettings }),
228
278
  };
229
279
  }
280
+ if (Object.keys(finalSubagents).length === 0) {
281
+ finalSubagents = undefined;
282
+ }
230
283
  }
284
+ const tools = finalSubagents
285
+ ? [BASH_TOOL, WRITE_TOOL, EDIT_TOOL, TASK_TOOL]
286
+ : [BASH_TOOL, WRITE_TOOL, EDIT_TOOL];
231
287
  const persona = {
232
288
  id,
233
289
  label: label || "custom",
234
290
  model: modelObj,
235
291
  systemPrompt: body,
236
292
  settings,
237
- tools: [BASH_TOOL, WRITE_TOOL, EDIT_TOOL],
293
+ tools,
238
294
  ...(description && { description }),
239
- ...(filteredReasoningLevels && filteredReasoningLevels.length > 0
240
- ? { allowedReasoningLevels: filteredReasoningLevels }
295
+ ...(allowedReasoningLevels && allowedReasoningLevels.length > 0
296
+ ? { allowedReasoningLevels: allowedReasoningLevels }
241
297
  : {}),
242
298
  ...(finalSubagents && { subagents: finalSubagents }),
299
+ ...(skills && { skills }),
243
300
  };
244
301
  return { persona };
245
302
  }
246
303
  function parsePrompt(file, content, forbiddenIds) {
247
304
  const { frontMatter, body } = parseMarkdownWithFrontMatter(content);
248
- const id = frontMatter.id;
249
- if (!id) {
305
+ const parsedFrontMatter = promptFrontMatterSchema.safeParse(frontMatter);
306
+ if (!parsedFrontMatter.success) {
250
307
  return { error: `${file}: missing required field 'id'. skipped.` };
251
308
  }
309
+ const { id, label, description } = parsedFrontMatter.data;
252
310
  if (forbiddenIds?.has(id.toLowerCase())) {
253
311
  return { error: `${file}: prompt id "${id}" conflicts with built-in. skipped.` };
254
312
  }
255
- const label = frontMatter.label;
256
- const description = frontMatter.description;
257
313
  const prompt = {
258
314
  id,
259
315
  template: body,
@@ -342,21 +398,92 @@ export async function loadProjectPrompts() {
342
398
  }
343
399
  return { prompts, errors };
344
400
  }
401
+ function parseSkill(filePath, content) {
402
+ const { frontMatter } = parseMarkdownWithFrontMatter(content);
403
+ const parsedFrontMatter = skillFrontMatterSchema.safeParse(frontMatter);
404
+ if (!parsedFrontMatter.success) {
405
+ return { error: `${filePath}: missing required fields (name, description). skipped.` };
406
+ }
407
+ return {
408
+ skill: {
409
+ name: parsedFrontMatter.data.name,
410
+ description: parsedFrontMatter.data.description,
411
+ path: resolve(filePath),
412
+ },
413
+ };
414
+ }
415
+ function loadSkillsFromDir(skillsDir) {
416
+ if (!existsSync(skillsDir)) {
417
+ return { skills: [], errors: [] };
418
+ }
419
+ let entries;
420
+ try {
421
+ entries = readdirSync(skillsDir);
422
+ }
423
+ catch {
424
+ return { skills: [], errors: [`failed to read directory: ${skillsDir}`] };
425
+ }
426
+ const skills = [];
427
+ const errors = [];
428
+ for (const entry of entries) {
429
+ const filePath = join(skillsDir, entry, "SKILL.md");
430
+ if (!existsSync(filePath))
431
+ continue;
432
+ let content = "";
433
+ try {
434
+ content = readFileSync(filePath, "utf-8");
435
+ }
436
+ catch {
437
+ errors.push(`failed to read file: ${filePath}`);
438
+ continue;
439
+ }
440
+ const result = parseSkill(filePath, content);
441
+ if (result.skill) {
442
+ skills.push(result.skill);
443
+ }
444
+ else if (result.error) {
445
+ errors.push(result.error);
446
+ }
447
+ }
448
+ return { skills, errors };
449
+ }
450
+ export async function loadUserSkills() {
451
+ const configDir = process.env.XDG_CONFIG_HOME || join(homedir(), ".config");
452
+ const skillsDir = join(configDir, "tau", "skills");
453
+ return loadSkillsFromDir(skillsDir);
454
+ }
455
+ export async function loadProjectSkills() {
456
+ const skillsDir = join(process.cwd(), ".tau", "skills");
457
+ return loadSkillsFromDir(skillsDir);
458
+ }
345
459
  export async function loadAllContent() {
346
460
  try {
347
461
  const userPersonasResult = await loadUserPersonas();
348
462
  const projectPersonasResult = await loadProjectPersonas();
349
463
  const userPromptsResult = await loadUserPrompts();
350
464
  const projectPromptsResult = await loadProjectPrompts();
465
+ const userSkillsResult = await loadUserSkills();
466
+ const projectSkillsResult = await loadProjectSkills();
351
467
  const allErrors = [
352
468
  ...userPersonasResult.errors,
353
469
  ...projectPersonasResult.errors,
354
470
  ...userPromptsResult.errors,
355
471
  ...projectPromptsResult.errors,
472
+ ...userSkillsResult.errors,
473
+ ...projectSkillsResult.errors,
356
474
  ];
475
+ const skillsByName = new Map();
476
+ for (const skill of userSkillsResult.skills) {
477
+ skillsByName.set(skill.name.toLowerCase(), skill);
478
+ }
479
+ for (const skill of projectSkillsResult.skills) {
480
+ skillsByName.set(skill.name.toLowerCase(), skill);
481
+ }
482
+ const skills = Array.from(skillsByName.values()).sort((a, b) => a.name.localeCompare(b.name, undefined, { sensitivity: "base" }));
357
483
  return {
358
484
  personas: mergeById(builtinPersonas, userPersonasResult.personas, projectPersonasResult.personas),
359
485
  prompts: mergeById(builtinPrompts, userPromptsResult.prompts, projectPromptsResult.prompts),
486
+ skills,
360
487
  errors: allErrors,
361
488
  };
362
489
  }
@@ -364,6 +491,7 @@ export async function loadAllContent() {
364
491
  return {
365
492
  personas: builtinPersonas,
366
493
  prompts: builtinPrompts,
494
+ skills: [],
367
495
  errors: [`unexpected error loading user content: ${err.message}`],
368
496
  };
369
497
  }
@@ -1 +1 @@
1
- {"version":3,"file":"content_loader.js","sourceRoot":"","sources":["../src/content_loader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"content_loader.js","sourceRoot":"","sources":["../src/content_loader.ts"],"names":[],"mappings":"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"}