@tyvm/knowhow 0.0.88 → 0.0.90
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/CONFIG.md +52 -0
- package/README.md +344 -29
- package/WORKER.md +169 -334
- package/autodoc/chat-guide.md +540 -0
- package/autodoc/cli-reference.md +765 -0
- package/autodoc/config-reference.md +541 -0
- package/autodoc/embeddings-guide.md +566 -0
- package/autodoc/generate-guide.md +477 -0
- package/autodoc/language-plugin-guide.md +443 -0
- package/autodoc/modules-guide.md +352 -0
- package/autodoc/plugins-guide.md +720 -0
- package/autodoc/quickstart-guide.md +129 -0
- package/autodoc/skills-guide.md +468 -0
- package/autodoc/worker-guide.md +526 -0
- package/package.json +2 -2
- package/src/ai.ts +33 -2
- package/src/config.ts +28 -4
- package/src/index.ts +22 -2
- package/src/processors/TokenCompressor.ts +2 -2
- package/src/processors/ToolResponseCache.ts +3 -3
- package/src/processors/tools/grepToolResponse.ts +9 -4
- package/src/processors/tools/jqToolResponse.ts +11 -6
- package/src/processors/tools/listStoredToolResponses.ts +1 -1
- package/src/processors/tools/tailToolResponse.ts +9 -4
- package/src/worker.ts +9 -7
- package/ts_build/package.json +2 -2
- package/ts_build/src/ai.js +18 -1
- package/ts_build/src/ai.js.map +1 -1
- package/ts_build/src/config.js +17 -2
- package/ts_build/src/config.js.map +1 -1
- package/ts_build/src/index.js +12 -2
- package/ts_build/src/index.js.map +1 -1
- package/ts_build/src/processors/TokenCompressor.js +2 -2
- package/ts_build/src/processors/TokenCompressor.js.map +1 -1
- package/ts_build/src/processors/ToolResponseCache.js +3 -3
- package/ts_build/src/processors/ToolResponseCache.js.map +1 -1
- package/ts_build/src/processors/tools/grepToolResponse.d.ts +3 -1
- package/ts_build/src/processors/tools/grepToolResponse.js +8 -2
- package/ts_build/src/processors/tools/grepToolResponse.js.map +1 -1
- package/ts_build/src/processors/tools/jqToolResponse.d.ts +3 -1
- package/ts_build/src/processors/tools/jqToolResponse.js +10 -4
- package/ts_build/src/processors/tools/jqToolResponse.js.map +1 -1
- package/ts_build/src/processors/tools/listStoredToolResponses.js +1 -1
- package/ts_build/src/processors/tools/listStoredToolResponses.js.map +1 -1
- package/ts_build/src/processors/tools/tailToolResponse.d.ts +3 -1
- package/ts_build/src/processors/tools/tailToolResponse.js +8 -2
- package/ts_build/src/processors/tools/tailToolResponse.js.map +1 -1
- package/ts_build/src/worker.js +5 -3
- package/ts_build/src/worker.js.map +1 -1
- package/autodoc/chat.mdx +0 -20
- package/autodoc/cli.mdx +0 -11
- package/autodoc/plugins/asana.mdx +0 -47
- package/autodoc/plugins/downloader/downloader.mdx +0 -38
- package/autodoc/plugins/downloader/plugin.mdx +0 -37
- package/autodoc/plugins/downloader/types.mdx +0 -42
- package/autodoc/plugins/embedding.mdx +0 -41
- package/autodoc/plugins/figma.mdx +0 -45
- package/autodoc/plugins/github.mdx +0 -40
- package/autodoc/plugins/jira.mdx +0 -46
- package/autodoc/plugins/language.mdx +0 -37
- package/autodoc/plugins/linear.mdx +0 -35
- package/autodoc/plugins/notion.mdx +0 -38
- package/autodoc/plugins/plugins.mdx +0 -59
- package/autodoc/plugins/types.mdx +0 -51
- package/autodoc/plugins/vim.mdx +0 -39
- package/autodoc/tools/addInternalTools.mdx +0 -1
- package/autodoc/tools/agentCall.mdx +0 -1
- package/autodoc/tools/asana/definitions.mdx +0 -10
- package/autodoc/tools/asana/index.mdx +0 -12
- package/autodoc/tools/askHuman.mdx +0 -1
- package/autodoc/tools/callPlugin.mdx +0 -1
- package/autodoc/tools/embeddingSearch.mdx +0 -1
- package/autodoc/tools/execCommand.mdx +0 -1
- package/autodoc/tools/fileSearch.mdx +0 -1
- package/autodoc/tools/finalAnswer.mdx +0 -1
- package/autodoc/tools/github/definitions.mdx +0 -6
- package/autodoc/tools/github/index.mdx +0 -8
- package/autodoc/tools/index.mdx +0 -14
- package/autodoc/tools/lintFile.mdx +0 -7
- package/autodoc/tools/list.mdx +0 -16
- package/autodoc/tools/modifyFile.mdx +0 -7
- package/autodoc/tools/patch.mdx +0 -9
- package/autodoc/tools/readBlocks.mdx +0 -1
- package/autodoc/tools/readFile.mdx +0 -1
- package/autodoc/tools/scanFile.mdx +0 -1
- package/autodoc/tools/textSearch.mdx +0 -6
- package/autodoc/tools/types/fileblock.mdx +0 -1
- package/autodoc/tools/visionTool.mdx +0 -1
- package/autodoc/tools/writeFile.mdx +0 -1
- package/test-comprehensive.ts +0 -31
|
@@ -0,0 +1,541 @@
|
|
|
1
|
+
# `knowhow.json` Configuration Reference
|
|
2
|
+
|
|
3
|
+
This document describes how to configure Knowhow CLI using a `knowhow.json` file (local or global).
|
|
4
|
+
|
|
5
|
+
- **Local path:** `.knowhow/knowhow.json`
|
|
6
|
+
- **Global path:** `~/.knowhow/knowhow.json`
|
|
7
|
+
|
|
8
|
+
> **Format:** JSON object
|
|
9
|
+
> **Purpose:** Configure prompts, generation pipelines, embedding pipelines, plugins/modules, custom agents, MCP servers, model providers, chat UI, the worker sandbox, and language tooling (ycmd).
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Top-level keys
|
|
14
|
+
|
|
15
|
+
| Key | Type | Description | Example |
|
|
16
|
+
|---|---|---|---|
|
|
17
|
+
| `promptsDir` | `string` | Directory that contains prompt templates (`{promptName}.mdx`). | `.knowhow/prompts` |
|
|
18
|
+
| `sources` | `SourceConfig[]` | Generation pipeline(s) that turn inputs into generated outputs. | see “sources” section |
|
|
19
|
+
| `embedSources` | `EmbedSourceConfig[]` | Embedding pipeline(s) that turn inputs into embedding artifacts (often JSON). | see “embedSources” section |
|
|
20
|
+
| `embeddingModel` | `string` | Embedding model identifier used by the embedding pipeline. | `openai:EmbeddingAda2` *(value format depends on your setup)* |
|
|
21
|
+
| `plugins` | `PluginsConfig` | Enable/disable built-in plugins. | `{ "enabled": ["embeddings"], "disabled": [] }` |
|
|
22
|
+
| `pluginPackages` | `string[]` | Extra/custom plugin npm packages to load. | `["@myorg/knowhow-plugin-acme"]` |
|
|
23
|
+
| `modules` | `ModuleConfig[]` | Load custom npm modules that can add tools/agents/plugins/clients. | `[{"package":"@myorg/knowhow-module-x"}]` |
|
|
24
|
+
| `agents` | `AgentConfig[]` | Custom agent definitions (for generation/chat). | see “agents/assistants” section |
|
|
25
|
+
| `assistants` | `AgentConfig[]` | Additional/custom agent definitions (same shape as `agents`). | see “agents/assistants” section |
|
|
26
|
+
| `mcps` | `McpServerConfig[]` | MCP server configurations Knowhow can connect to. | see “mcps” section |
|
|
27
|
+
| `modelProviders` | `ModelProviderConfig[]` | Custom model provider endpoints. | see “modelProviders” section |
|
|
28
|
+
| `lintCommands` | `Record<string,string>` | Lint command per file extension. | `{ "ts": "eslint $1" }` |
|
|
29
|
+
| `chat` | `ChatConfig` | Chat runtime configuration (renderer + module wiring). | see “chat” section |
|
|
30
|
+
| `worker` | `WorkerConfig` | Worker execution and networking configuration. | see “worker” section |
|
|
31
|
+
| `skills` | `string[]` | Directories containing “skills” (domain/tool logic). | `[".knowhow/skills"]` |
|
|
32
|
+
| `files` | `FileSyncConfig` | File sync configuration (tooling-specific; schema varies by build). | see “files” section |
|
|
33
|
+
| `ycmd` | `YcmdConfig` | ycmd language-server configuration. | see “ycmd” section |
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## `promptsDir`
|
|
38
|
+
|
|
39
|
+
- **Type:** `string`
|
|
40
|
+
- **Description:** Directory containing prompt templates as `{promptName}.mdx`.
|
|
41
|
+
- **How it’s used:** When a prompt name is referenced (e.g., `sources[].prompt`), Knowhow loads:
|
|
42
|
+
- `path.join(promptsDir, `${promptName}.mdx`)`
|
|
43
|
+
- **Example:**
|
|
44
|
+
```json
|
|
45
|
+
{
|
|
46
|
+
"promptsDir": ".knowhow/prompts"
|
|
47
|
+
}
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
## `sources` (generation pipeline)
|
|
53
|
+
|
|
54
|
+
- **Type:** `SourceConfig[]`
|
|
55
|
+
- **Description:** Defines how Knowhow generates outputs from inputs by selecting a prompt and (optionally) an agent and model.
|
|
56
|
+
|
|
57
|
+
### `SourceConfig`
|
|
58
|
+
|
|
59
|
+
| Key | Type | Required | Description | Example |
|
|
60
|
+
|---|---|---:|---|---|
|
|
61
|
+
| `input` | `string` | ✅ | Input path/glob/identifier for this stage. | `src/**/*.mdx` |
|
|
62
|
+
| `output` | `string` | ✅ | Output path (file or directory target). | `.knowhow/docs/` |
|
|
63
|
+
| `prompt` | `string` | ✅ | Prompt name (from `promptsDir`) or a prompt reference. | `BasicCodeDocumenter` |
|
|
64
|
+
| `kind` | `string` | ❌ | Generation “kind” (mode/behavior); often tied to plugins. | `summarization` |
|
|
65
|
+
| `agent` | `string` | ❌ | Name of a custom agent used for this source. | `Example agent` |
|
|
66
|
+
| `model` | `string` | ❌ | Model override for this source. | `gpt-4o-2024-08-06` |
|
|
67
|
+
| `outputExt` | `string` | ❌ | Output file extension override. | `.mdx` |
|
|
68
|
+
| `outputName` | `string` | ❌ | Output file/base name override. | `README.mdx` |
|
|
69
|
+
|
|
70
|
+
### Example
|
|
71
|
+
```json
|
|
72
|
+
{
|
|
73
|
+
"sources": [
|
|
74
|
+
{
|
|
75
|
+
"input": "src/**/*.mdx",
|
|
76
|
+
"output": ".knowhow/docs/",
|
|
77
|
+
"prompt": "BasicCodeDocumenter"
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
"input": ".knowhow/docs/**/*.mdx",
|
|
81
|
+
"output": ".knowhow/docs/README.mdx",
|
|
82
|
+
"prompt": "BasicProjectDocumenter",
|
|
83
|
+
"kind": "project"
|
|
84
|
+
}
|
|
85
|
+
]
|
|
86
|
+
}
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
---
|
|
90
|
+
|
|
91
|
+
## `embedSources` (embedding pipeline)
|
|
92
|
+
|
|
93
|
+
- **Type:** `EmbedSourceConfig[]`
|
|
94
|
+
- **Description:** Defines how Knowhow creates embeddings from inputs, with optional chunking and optional remote/upload settings.
|
|
95
|
+
|
|
96
|
+
### `EmbedSourceConfig`
|
|
97
|
+
|
|
98
|
+
| Key | Type | Required | Description | Example |
|
|
99
|
+
|---|---|---:|---|---|
|
|
100
|
+
| `input` | `string` | ✅ | Input path/glob/URL to embed. | `.knowhow/docs/**/*.mdx` |
|
|
101
|
+
| `output` | `string` | ✅ | Embedding artifact location (often JSON file). | `.knowhow/embeddings/docs.json` |
|
|
102
|
+
| `prompt` | `string` | ❌ | Optional preprocessing prompt name. | `BasicEmbeddingExplainer` |
|
|
103
|
+
| `kind` | `string` | ❌ | Embedding strategy/type (often plugin-driven). | `download` |
|
|
104
|
+
| `chunkSize` | `number` | ❌ | Chunk size for splitting content before embedding. | `2000` |
|
|
105
|
+
| `minLength` | `number` | ❌ | Minimum chunk length threshold. | `200` |
|
|
106
|
+
| `remote` | `string` | ❌ | Remote destination name/id (backend-specific). | `micahriggan/knowhow` |
|
|
107
|
+
| `remoteType` | `string` | ❌ | Remote backend type (e.g., `s3`, `github`). | `github` |
|
|
108
|
+
| `remoteId` | `string` | ❌ | Remote identity/index/collection id (backend-specific). | `docs-index-1` |
|
|
109
|
+
| `uploadMode` | `string` | ❌ | Upload/write mode (implementation-specific). | `overwrite` |
|
|
110
|
+
|
|
111
|
+
### Example
|
|
112
|
+
```json
|
|
113
|
+
{
|
|
114
|
+
"embedSources": [
|
|
115
|
+
{
|
|
116
|
+
"input": ".knowhow/docs/**/*.mdx",
|
|
117
|
+
"output": ".knowhow/embeddings/docs.json",
|
|
118
|
+
"prompt": "BasicEmbeddingExplainer",
|
|
119
|
+
"chunkSize": 2000
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
"input": "src/**/*.ts",
|
|
123
|
+
"output": ".knowhow/embeddings/code.json",
|
|
124
|
+
"chunkSize": 2000
|
|
125
|
+
}
|
|
126
|
+
]
|
|
127
|
+
}
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
### Example: embedding with `download` kind (URL input)
|
|
131
|
+
```json
|
|
132
|
+
{
|
|
133
|
+
"embedSources": [
|
|
134
|
+
{
|
|
135
|
+
"input": "https://www.youtube.com/shorts/BYuMBK5Ll-s",
|
|
136
|
+
"output": ".knowhow/embeddings/video.json",
|
|
137
|
+
"chunkSize": 2000,
|
|
138
|
+
"kind": "download"
|
|
139
|
+
}
|
|
140
|
+
]
|
|
141
|
+
}
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
---
|
|
145
|
+
|
|
146
|
+
## `embeddingModel`
|
|
147
|
+
|
|
148
|
+
- **Type:** `string`
|
|
149
|
+
- **Description:** Embedding model identifier used by embedding tasks.
|
|
150
|
+
- **Example:**
|
|
151
|
+
```json
|
|
152
|
+
{
|
|
153
|
+
"embeddingModel": "openai:EmbeddingAda2"
|
|
154
|
+
}
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
> Use the exact identifier format your Knowhow build expects (commonly defined by an `EmbeddingModels` enum/constant).
|
|
158
|
+
|
|
159
|
+
---
|
|
160
|
+
|
|
161
|
+
## `plugins`
|
|
162
|
+
|
|
163
|
+
- **Type:**
|
|
164
|
+
```ts
|
|
165
|
+
{
|
|
166
|
+
enabled: string[];
|
|
167
|
+
disabled: string[];
|
|
168
|
+
}
|
|
169
|
+
```
|
|
170
|
+
- **Description:** Enables/disables built-in plugins by name.
|
|
171
|
+
|
|
172
|
+
| Key | Type | Description | Example |
|
|
173
|
+
|---|---|---|---|
|
|
174
|
+
| `enabled` | `string[]` | List of enabled plugin identifiers. | `["embeddings","git"]` |
|
|
175
|
+
| `disabled` | `string[]` | List of disabled plugin identifiers. | `["github"]` |
|
|
176
|
+
|
|
177
|
+
### Example
|
|
178
|
+
```json
|
|
179
|
+
{
|
|
180
|
+
"plugins": {
|
|
181
|
+
"enabled": ["embeddings", "language", "git", "exec"],
|
|
182
|
+
"disabled": []
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
---
|
|
188
|
+
|
|
189
|
+
## `pluginPackages`
|
|
190
|
+
|
|
191
|
+
- **Type:** `string[]`
|
|
192
|
+
- **Description:** NPM package names to load additional/custom plugins from.
|
|
193
|
+
|
|
194
|
+
### Example
|
|
195
|
+
```json
|
|
196
|
+
{
|
|
197
|
+
"pluginPackages": ["@myorg/knowhow-plugin-acme"]
|
|
198
|
+
}
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
---
|
|
202
|
+
|
|
203
|
+
## `modules`
|
|
204
|
+
|
|
205
|
+
- **Type:** `ModuleConfig[]` *(commonly represented as `{ package: string }` objects)*
|
|
206
|
+
- **Description:** Load custom npm modules that can provide tools/agents/plugins/clients.
|
|
207
|
+
|
|
208
|
+
### `ModuleConfig` (representative)
|
|
209
|
+
| Key | Type | Required | Description | Example |
|
|
210
|
+
|---|---|---:|---|---|
|
|
211
|
+
| `package` | `string` | ✅ | NPM package name (or module identifier) to load. | `@myorg/knowhow-module-mycopilot` |
|
|
212
|
+
|
|
213
|
+
### Example
|
|
214
|
+
```json
|
|
215
|
+
{
|
|
216
|
+
"modules": [
|
|
217
|
+
{ "package": "@myorg/knowhow-module-custom-tools" },
|
|
218
|
+
{ "package": "@myorg/knowhow-module-chat-ui" }
|
|
219
|
+
]
|
|
220
|
+
}
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
---
|
|
224
|
+
|
|
225
|
+
## `agents` / `assistants`
|
|
226
|
+
|
|
227
|
+
- **Type:** `AgentConfig[]`
|
|
228
|
+
- **Description:** Custom agent definitions usable by generation/chat.
|
|
229
|
+
- **Note:** Both keys typically share the same schema; `assistants` may be treated as an alias/parallel list.
|
|
230
|
+
|
|
231
|
+
### `AgentConfig`
|
|
232
|
+
|
|
233
|
+
| Key | Type | Required | Description | Example |
|
|
234
|
+
|---|---|---:|---|---|
|
|
235
|
+
| `name` | `string` | ✅ | Agent identifier referenced by `sources[].agent`. | `Example agent` |
|
|
236
|
+
| `description` | `string` | ❌ | Short human-readable description. | `Docs writer` |
|
|
237
|
+
| `instructions` | `string` | ✅ | Agent system/developer instructions. | `Reply with ...` |
|
|
238
|
+
| `model` | `string` | ❌ | Model override used by this agent. | `gpt-4o-2024-08-06` |
|
|
239
|
+
| `provider` | `string` | ❌/✅ | Model provider key used by this agent. | `openai` |
|
|
240
|
+
| `tools` | `string[]` | ❌ | Tool names the agent is allowed to use. | `["git","exec"]` |
|
|
241
|
+
| `files` | `string[]` | ❌ | Files/dirs/globs provided as context for this agent. | `[".knowhow/docs/"]` |
|
|
242
|
+
|
|
243
|
+
### Example
|
|
244
|
+
```json
|
|
245
|
+
{
|
|
246
|
+
"agents": [
|
|
247
|
+
{
|
|
248
|
+
"name": "Example agent",
|
|
249
|
+
"description": "You can define agents in the config. They will have access to all tools.",
|
|
250
|
+
"instructions": "Reply to the user saying 'Hello, world!'",
|
|
251
|
+
"model": "gpt-4o-2024-08-06",
|
|
252
|
+
"provider": "openai"
|
|
253
|
+
}
|
|
254
|
+
]
|
|
255
|
+
}
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
### Example: agent with `tools` and `files`
|
|
259
|
+
```json
|
|
260
|
+
{
|
|
261
|
+
"agents": [
|
|
262
|
+
{
|
|
263
|
+
"name": "Docs agent",
|
|
264
|
+
"description": "Writes and updates project documentation.",
|
|
265
|
+
"instructions": "Summarize changes and update docs with a clear changelog.",
|
|
266
|
+
"model": "gpt-4o-2024-08-06",
|
|
267
|
+
"provider": "openai",
|
|
268
|
+
"tools": ["git", "exec"],
|
|
269
|
+
"files": [".knowhow/docs/"]
|
|
270
|
+
}
|
|
271
|
+
]
|
|
272
|
+
}
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
---
|
|
276
|
+
|
|
277
|
+
## `mcps` (MCP servers)
|
|
278
|
+
|
|
279
|
+
- **Type:** `McpServerConfig[]`
|
|
280
|
+
- **Description:** Configure MCP servers Knowhow can spawn or connect to.
|
|
281
|
+
|
|
282
|
+
### `McpServerConfig`
|
|
283
|
+
|
|
284
|
+
| Key | Type | Required | Description | Example |
|
|
285
|
+
|---|---|---:|---|---|
|
|
286
|
+
| `name` | `string` | ✅ | MCP server name. | `browser` |
|
|
287
|
+
| `command` | `string` | ❌ | Command used to start the MCP server. | `npx` |
|
|
288
|
+
| `args` | `string[]` | ❌ | Arguments for `command`. | `["-y","@playwright/mcp@latest", "..."]` |
|
|
289
|
+
| `url` | `string` | ❌ | Remote MCP URL (if applicable). | `http://localhost:3000` |
|
|
290
|
+
| `autoConnect` | `boolean` | ❌ | Whether Knowhow connects automatically. | `true` |
|
|
291
|
+
|
|
292
|
+
### Example
|
|
293
|
+
```json
|
|
294
|
+
{
|
|
295
|
+
"mcps": [
|
|
296
|
+
{
|
|
297
|
+
"name": "browser",
|
|
298
|
+
"command": "npx",
|
|
299
|
+
"args": ["-y", "@playwright/mcp@latest", "--browser", "chrome"],
|
|
300
|
+
"autoConnect": true
|
|
301
|
+
}
|
|
302
|
+
]
|
|
303
|
+
}
|
|
304
|
+
```
|
|
305
|
+
|
|
306
|
+
---
|
|
307
|
+
|
|
308
|
+
## `modelProviders`
|
|
309
|
+
|
|
310
|
+
- **Type:** `ModelProviderConfig[]`
|
|
311
|
+
- **Description:** Register custom model providers/endpoints.
|
|
312
|
+
|
|
313
|
+
### `ModelProviderConfig`
|
|
314
|
+
|
|
315
|
+
| Key | Type | Required | Description | Example |
|
|
316
|
+
|---|---|---:|---|---|
|
|
317
|
+
| `url` | `string` | ✅ | Base URL of the provider endpoint. | `http://localhost:1234` |
|
|
318
|
+
| `provider` | `string` | ✅ | Provider key/name used by `agents.provider`. | `lms` |
|
|
319
|
+
| `jwtFile` | `string` | ❌ | Path to a JWT file for auth. | `~/.knowhow/.jwt/myprovider.jwt` |
|
|
320
|
+
|
|
321
|
+
### Example
|
|
322
|
+
```json
|
|
323
|
+
{
|
|
324
|
+
"modelProviders": [
|
|
325
|
+
{ "url": "http://localhost:1234", "provider": "lms" }
|
|
326
|
+
]
|
|
327
|
+
}
|
|
328
|
+
```
|
|
329
|
+
|
|
330
|
+
---
|
|
331
|
+
|
|
332
|
+
## `lintCommands`
|
|
333
|
+
|
|
334
|
+
- **Type:** `Record<string,string>`
|
|
335
|
+
- **Description:** Map file extensions to lint commands.
|
|
336
|
+
- Common behavior: keys are extensions like `"ts"`, and the command is run with `$1` replaced by the patched file path.
|
|
337
|
+
|
|
338
|
+
### Example
|
|
339
|
+
```json
|
|
340
|
+
{
|
|
341
|
+
"lintCommands": {
|
|
342
|
+
"js": "eslint $1",
|
|
343
|
+
"ts": "eslint $1"
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
```
|
|
347
|
+
|
|
348
|
+
---
|
|
349
|
+
|
|
350
|
+
## `chat`
|
|
351
|
+
|
|
352
|
+
- **Type:** `ChatConfig`
|
|
353
|
+
- **Description:** Configure chat renderer and module wiring.
|
|
354
|
+
|
|
355
|
+
### `ChatConfig`
|
|
356
|
+
|
|
357
|
+
| Key | Type | Required | Description | Example |
|
|
358
|
+
|---|---|---:|---|---|
|
|
359
|
+
| `renderer` | `string` | ❌ | Renderer module name/path. | `default` |
|
|
360
|
+
| `modules` | `string[]` | ❌ | Chat modules to load. | `["@myorg/knowhow-chat-ui"]` |
|
|
361
|
+
| `rootModule` | `string` | ❌ | Root module entry. | `knowhow-chat` |
|
|
362
|
+
|
|
363
|
+
### Example
|
|
364
|
+
```json
|
|
365
|
+
{
|
|
366
|
+
"chat": {
|
|
367
|
+
"renderer": "default",
|
|
368
|
+
"modules": ["@myorg/knowhow-chat-ui"],
|
|
369
|
+
"rootModule": "knowhow-chat"
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
```
|
|
373
|
+
|
|
374
|
+
---
|
|
375
|
+
|
|
376
|
+
## `worker`
|
|
377
|
+
|
|
378
|
+
- **Type:** `WorkerConfig`
|
|
379
|
+
- **Description:** Worker execution/sandbox/tunnel configuration for tools.
|
|
380
|
+
|
|
381
|
+
### `worker` keys
|
|
382
|
+
|
|
383
|
+
| Key | Type | Required | Description | Example |
|
|
384
|
+
|---|---|---:|---|---|
|
|
385
|
+
| `allowedTools` | `string[]` | ❌ | Tool names permitted to run in the worker. | `["exec","download"]` |
|
|
386
|
+
| `sandbox` | `boolean` | ❌ | Enable/disable sandboxing for tool execution. | `true` |
|
|
387
|
+
| `volumes` | `string[]` | ❌ | Volume mounts (implementation-dependent). | `[".:/workspace"]` |
|
|
388
|
+
| `envFile` | `string` | ❌ | Path to an env file loaded by the worker. | `.env.worker` |
|
|
389
|
+
| `tunnel` | `WorkerTunnelConfig` | ❌ | Network tunnel configuration. | see below |
|
|
390
|
+
|
|
391
|
+
### `worker.tunnel`
|
|
392
|
+
|
|
393
|
+
- **Type:**
|
|
394
|
+
```ts
|
|
395
|
+
{
|
|
396
|
+
enabled: boolean;
|
|
397
|
+
allowedPorts: number[];
|
|
398
|
+
}
|
|
399
|
+
```
|
|
400
|
+
|
|
401
|
+
### Example
|
|
402
|
+
```json
|
|
403
|
+
{
|
|
404
|
+
"worker": {
|
|
405
|
+
"allowedTools": ["exec", "download"],
|
|
406
|
+
"sandbox": true,
|
|
407
|
+
"volumes": [".:/workspace"],
|
|
408
|
+
"envFile": ".env.worker",
|
|
409
|
+
"tunnel": {
|
|
410
|
+
"enabled": true,
|
|
411
|
+
"allowedPorts": [3000, 8080]
|
|
412
|
+
}
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
```
|
|
416
|
+
|
|
417
|
+
---
|
|
418
|
+
|
|
419
|
+
## `skills`
|
|
420
|
+
|
|
421
|
+
- **Type:** `string[]`
|
|
422
|
+
- **Description:** Directories to scan for “skills” definitions.
|
|
423
|
+
|
|
424
|
+
### Example
|
|
425
|
+
```json
|
|
426
|
+
{
|
|
427
|
+
"skills": [".knowhow/skills", "skills"]
|
|
428
|
+
}
|
|
429
|
+
```
|
|
430
|
+
|
|
431
|
+
---
|
|
432
|
+
|
|
433
|
+
## `files` (file sync config)
|
|
434
|
+
|
|
435
|
+
- **Type:** `FileSyncConfig` *(schema varies by Knowhow build/version)*
|
|
436
|
+
- **Description:** Configure how files are synced between local filesystem and Knowhow’s filesystem/runtime.
|
|
437
|
+
|
|
438
|
+
### Example (illustrative shape)
|
|
439
|
+
```json
|
|
440
|
+
{
|
|
441
|
+
"files": {
|
|
442
|
+
"syncDir": ".knowhow/sync",
|
|
443
|
+
"include": ["src/**/*", ".knowhow/docs/**/*"],
|
|
444
|
+
"exclude": ["**/node_modules/**", "**/.git/**"]
|
|
445
|
+
}
|
|
446
|
+
}
|
|
447
|
+
```
|
|
448
|
+
|
|
449
|
+
> If you paste your `Config`/`FileSyncConfig` type from `src/types.ts`, I can replace this “illustrative shape” with the exact keys/types.
|
|
450
|
+
|
|
451
|
+
---
|
|
452
|
+
|
|
453
|
+
## `ycmd` (language server)
|
|
454
|
+
|
|
455
|
+
- **Type:** `YcmdConfig`
|
|
456
|
+
- **Description:** Configure the ycmd language server.
|
|
457
|
+
|
|
458
|
+
### `YcmdConfig`
|
|
459
|
+
|
|
460
|
+
| Key | Type | Required | Description | Example |
|
|
461
|
+
|---|---|---:|---|---|
|
|
462
|
+
| `enabled` | `boolean` | ❌ | Whether ycmd is enabled. | `true` |
|
|
463
|
+
| `installPath` | `string` | ❌ | ycmd install path. | `~/.knowhow/ycmd` |
|
|
464
|
+
| `port` | `number` | ❌ | Listening port (`0` may mean “auto”). | `0` |
|
|
465
|
+
| `logLevel` | `string` | ❌ | Logging verbosity. | `info` |
|
|
466
|
+
| `completionTimeout` | `number` | ❌ | Completion request timeout (ms). | `5000` |
|
|
467
|
+
|
|
468
|
+
### Example
|
|
469
|
+
```json
|
|
470
|
+
{
|
|
471
|
+
"ycmd": {
|
|
472
|
+
"enabled": true,
|
|
473
|
+
"installPath": "~/.knowhow/ycmd",
|
|
474
|
+
"port": 0,
|
|
475
|
+
"logLevel": "debug",
|
|
476
|
+
"completionTimeout": 10000
|
|
477
|
+
}
|
|
478
|
+
}
|
|
479
|
+
```
|
|
480
|
+
|
|
481
|
+
---
|
|
482
|
+
|
|
483
|
+
## Minimal `knowhow.json` example
|
|
484
|
+
|
|
485
|
+
```json
|
|
486
|
+
{
|
|
487
|
+
"promptsDir": ".knowhow/prompts",
|
|
488
|
+
"plugins": {
|
|
489
|
+
"enabled": ["embeddings", "language", "git", "exec"],
|
|
490
|
+
"disabled": []
|
|
491
|
+
},
|
|
492
|
+
"lintCommands": {
|
|
493
|
+
"ts": "eslint $1",
|
|
494
|
+
"js": "eslint $1"
|
|
495
|
+
},
|
|
496
|
+
"sources": [
|
|
497
|
+
{
|
|
498
|
+
"input": "src/**/*.mdx",
|
|
499
|
+
"output": ".knowhow/docs/",
|
|
500
|
+
"prompt": "BasicCodeDocumenter"
|
|
501
|
+
}
|
|
502
|
+
],
|
|
503
|
+
"embedSources": [
|
|
504
|
+
{
|
|
505
|
+
"input": ".knowhow/docs/**/*.mdx",
|
|
506
|
+
"output": ".knowhow/embeddings/docs.json",
|
|
507
|
+
"prompt": "BasicEmbeddingExplainer",
|
|
508
|
+
"chunkSize": 2000
|
|
509
|
+
}
|
|
510
|
+
],
|
|
511
|
+
"embeddingModel": "openai:EmbeddingAda2",
|
|
512
|
+
"agents": [
|
|
513
|
+
{
|
|
514
|
+
"name": "Example agent",
|
|
515
|
+
"instructions": "Reply to the user saying 'Hello, world!'",
|
|
516
|
+
"model": "gpt-4o-2024-08-06",
|
|
517
|
+
"provider": "openai"
|
|
518
|
+
}
|
|
519
|
+
],
|
|
520
|
+
"mcps": [
|
|
521
|
+
{
|
|
522
|
+
"name": "browser",
|
|
523
|
+
"command": "npx",
|
|
524
|
+
"args": ["-y", "@playwright/mcp@latest", "--browser", "chrome"]
|
|
525
|
+
}
|
|
526
|
+
],
|
|
527
|
+
"modelProviders": [{ "url": "http://localhost:1234", "provider": "lms" }],
|
|
528
|
+
"worker": {
|
|
529
|
+
"tunnel": { "enabled": false, "allowedPorts": [] }
|
|
530
|
+
}
|
|
531
|
+
}
|
|
532
|
+
```
|
|
533
|
+
|
|
534
|
+
---
|
|
535
|
+
|
|
536
|
+
### Want this to be 100% exact to your codebase?
|
|
537
|
+
If you paste `src/config.ts` and `src/types.ts` (the actual `Config`, `SourceConfig`, `EmbedSourceConfig`, `WorkerConfig`, `FileSyncConfig`, and `YcmdConfig` type definitions), I can regenerate this reference with:
|
|
538
|
+
- exact field names (no illustrative placeholders),
|
|
539
|
+
- exact optional/required fields,
|
|
540
|
+
- exact union literal types (e.g., allowed `uploadMode` values, `logLevel` enum values),
|
|
541
|
+
- and the real list of built-in plugin names + what each one does.
|