@neocode-ai/web 1.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +54 -0
- package/astro.config.mjs +145 -0
- package/config.mjs +14 -0
- package/package.json +41 -0
- package/public/robots.txt +6 -0
- package/public/theme.json +183 -0
- package/src/assets/lander/check.svg +2 -0
- package/src/assets/lander/copy.svg +2 -0
- package/src/assets/lander/screenshot-github.png +0 -0
- package/src/assets/lander/screenshot-splash.png +0 -0
- package/src/assets/lander/screenshot-vscode.png +0 -0
- package/src/assets/lander/screenshot.png +0 -0
- package/src/assets/logo-dark.svg +20 -0
- package/src/assets/logo-light.svg +20 -0
- package/src/assets/logo-ornate-dark.svg +18 -0
- package/src/assets/logo-ornate-light.svg +18 -0
- package/src/assets/web/web-homepage-active-session.png +0 -0
- package/src/assets/web/web-homepage-new-session.png +0 -0
- package/src/assets/web/web-homepage-see-servers.png +0 -0
- package/src/components/Head.astro +50 -0
- package/src/components/Header.astro +128 -0
- package/src/components/Hero.astro +11 -0
- package/src/components/Lander.astro +713 -0
- package/src/components/Share.tsx +634 -0
- package/src/components/SiteTitle.astro +59 -0
- package/src/components/icons/custom.tsx +87 -0
- package/src/components/icons/index.tsx +4454 -0
- package/src/components/share/common.tsx +77 -0
- package/src/components/share/content-bash.module.css +85 -0
- package/src/components/share/content-bash.tsx +67 -0
- package/src/components/share/content-code.module.css +26 -0
- package/src/components/share/content-code.tsx +32 -0
- package/src/components/share/content-diff.module.css +153 -0
- package/src/components/share/content-diff.tsx +231 -0
- package/src/components/share/content-error.module.css +64 -0
- package/src/components/share/content-error.tsx +24 -0
- package/src/components/share/content-markdown.module.css +154 -0
- package/src/components/share/content-markdown.tsx +75 -0
- package/src/components/share/content-text.module.css +63 -0
- package/src/components/share/content-text.tsx +37 -0
- package/src/components/share/copy-button.module.css +30 -0
- package/src/components/share/copy-button.tsx +28 -0
- package/src/components/share/part.module.css +428 -0
- package/src/components/share/part.tsx +780 -0
- package/src/components/share.module.css +832 -0
- package/src/content/docs/1-0.mdx +67 -0
- package/src/content/docs/acp.mdx +156 -0
- package/src/content/docs/agents.mdx +720 -0
- package/src/content/docs/cli.mdx +597 -0
- package/src/content/docs/commands.mdx +323 -0
- package/src/content/docs/config.mdx +683 -0
- package/src/content/docs/custom-tools.mdx +170 -0
- package/src/content/docs/ecosystem.mdx +76 -0
- package/src/content/docs/enterprise.mdx +170 -0
- package/src/content/docs/formatters.mdx +130 -0
- package/src/content/docs/github.mdx +321 -0
- package/src/content/docs/gitlab.mdx +195 -0
- package/src/content/docs/ide.mdx +48 -0
- package/src/content/docs/index.mdx +359 -0
- package/src/content/docs/keybinds.mdx +191 -0
- package/src/content/docs/lsp.mdx +188 -0
- package/src/content/docs/mcp-servers.mdx +511 -0
- package/src/content/docs/models.mdx +223 -0
- package/src/content/docs/modes.mdx +331 -0
- package/src/content/docs/network.mdx +57 -0
- package/src/content/docs/permissions.mdx +237 -0
- package/src/content/docs/plugins.mdx +362 -0
- package/src/content/docs/providers.mdx +1889 -0
- package/src/content/docs/rules.mdx +180 -0
- package/src/content/docs/sdk.mdx +391 -0
- package/src/content/docs/server.mdx +286 -0
- package/src/content/docs/share.mdx +128 -0
- package/src/content/docs/skills.mdx +220 -0
- package/src/content/docs/themes.mdx +369 -0
- package/src/content/docs/tools.mdx +345 -0
- package/src/content/docs/troubleshooting.mdx +300 -0
- package/src/content/docs/tui.mdx +390 -0
- package/src/content/docs/web.mdx +136 -0
- package/src/content/docs/windows-wsl.mdx +113 -0
- package/src/content/docs/zen.mdx +251 -0
- package/src/content.config.ts +7 -0
- package/src/pages/[...slug].md.ts +18 -0
- package/src/pages/s/[id].astro +113 -0
- package/src/styles/custom.css +405 -0
- package/src/types/lang-map.d.ts +27 -0
- package/tsconfig.json +9 -0
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Custom Tools
|
|
3
|
+
description: Create tools the LLM can call in neocode.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Custom tools are functions you create that the LLM can call during conversations. They work alongside neocode's [built-in tools](/docs/tools) like `read`, `write`, and `bash`.
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## Creating a tool
|
|
11
|
+
|
|
12
|
+
Tools are defined as **TypeScript** or **JavaScript** files. However, the tool definition can invoke scripts written in **any language** — TypeScript or JavaScript is only used for the tool definition itself.
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
### Location
|
|
17
|
+
|
|
18
|
+
They can be defined:
|
|
19
|
+
|
|
20
|
+
- Locally by placing them in the `.neocode/tools/` directory of your project.
|
|
21
|
+
- Or globally, by placing them in `~/.config/neocode/tools/`.
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
### Structure
|
|
26
|
+
|
|
27
|
+
The easiest way to create tools is using the `tool()` helper which provides type-safety and validation.
|
|
28
|
+
|
|
29
|
+
```ts title=".neocode/tools/database.ts" {1}
|
|
30
|
+
import { tool } from "@neocode-ai/plugin"
|
|
31
|
+
|
|
32
|
+
export default tool({
|
|
33
|
+
description: "Query the project database",
|
|
34
|
+
args: {
|
|
35
|
+
query: tool.schema.string().describe("SQL query to execute"),
|
|
36
|
+
},
|
|
37
|
+
async execute(args) {
|
|
38
|
+
// Your database logic here
|
|
39
|
+
return `Executed query: ${args.query}`
|
|
40
|
+
},
|
|
41
|
+
})
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
The **filename** becomes the **tool name**. The above creates a `database` tool.
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
#### Multiple tools per file
|
|
49
|
+
|
|
50
|
+
You can also export multiple tools from a single file. Each export becomes **a separate tool** with the name **`<filename>_<exportname>`**:
|
|
51
|
+
|
|
52
|
+
```ts title=".neocode/tools/math.ts"
|
|
53
|
+
import { tool } from "@neocode-ai/plugin"
|
|
54
|
+
|
|
55
|
+
export const add = tool({
|
|
56
|
+
description: "Add two numbers",
|
|
57
|
+
args: {
|
|
58
|
+
a: tool.schema.number().describe("First number"),
|
|
59
|
+
b: tool.schema.number().describe("Second number"),
|
|
60
|
+
},
|
|
61
|
+
async execute(args) {
|
|
62
|
+
return args.a + args.b
|
|
63
|
+
},
|
|
64
|
+
})
|
|
65
|
+
|
|
66
|
+
export const multiply = tool({
|
|
67
|
+
description: "Multiply two numbers",
|
|
68
|
+
args: {
|
|
69
|
+
a: tool.schema.number().describe("First number"),
|
|
70
|
+
b: tool.schema.number().describe("Second number"),
|
|
71
|
+
},
|
|
72
|
+
async execute(args) {
|
|
73
|
+
return args.a * args.b
|
|
74
|
+
},
|
|
75
|
+
})
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
This creates two tools: `math_add` and `math_multiply`.
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
### Arguments
|
|
83
|
+
|
|
84
|
+
You can use `tool.schema`, which is just [Zod](https://zod.dev), to define argument types.
|
|
85
|
+
|
|
86
|
+
```ts "tool.schema"
|
|
87
|
+
args: {
|
|
88
|
+
query: tool.schema.string().describe("SQL query to execute")
|
|
89
|
+
}
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
You can also import [Zod](https://zod.dev) directly and return a plain object:
|
|
93
|
+
|
|
94
|
+
```ts {6}
|
|
95
|
+
import { z } from "zod"
|
|
96
|
+
|
|
97
|
+
export default {
|
|
98
|
+
description: "Tool description",
|
|
99
|
+
args: {
|
|
100
|
+
param: z.string().describe("Parameter description"),
|
|
101
|
+
},
|
|
102
|
+
async execute(args, context) {
|
|
103
|
+
// Tool implementation
|
|
104
|
+
return "result"
|
|
105
|
+
},
|
|
106
|
+
}
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
---
|
|
110
|
+
|
|
111
|
+
### Context
|
|
112
|
+
|
|
113
|
+
Tools receive context about the current session:
|
|
114
|
+
|
|
115
|
+
```ts title=".neocode/tools/project.ts" {8}
|
|
116
|
+
import { tool } from "@neocode-ai/plugin"
|
|
117
|
+
|
|
118
|
+
export default tool({
|
|
119
|
+
description: "Get project information",
|
|
120
|
+
args: {},
|
|
121
|
+
async execute(args, context) {
|
|
122
|
+
// Access context information
|
|
123
|
+
const { agent, sessionID, messageID, directory, worktree } = context
|
|
124
|
+
return `Agent: ${agent}, Session: ${sessionID}, Message: ${messageID}, Directory: ${directory}, Worktree: ${worktree}`
|
|
125
|
+
},
|
|
126
|
+
})
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
Use `context.directory` for the session working directory.
|
|
130
|
+
Use `context.worktree` for the git worktree root.
|
|
131
|
+
|
|
132
|
+
---
|
|
133
|
+
|
|
134
|
+
## Examples
|
|
135
|
+
|
|
136
|
+
### Write a tool in Python
|
|
137
|
+
|
|
138
|
+
You can write your tools in any language you want. Here's an example that adds two numbers using Python.
|
|
139
|
+
|
|
140
|
+
First, create the tool as a Python script:
|
|
141
|
+
|
|
142
|
+
```python title=".neocode/tools/add.py"
|
|
143
|
+
import sys
|
|
144
|
+
|
|
145
|
+
a = int(sys.argv[1])
|
|
146
|
+
b = int(sys.argv[2])
|
|
147
|
+
print(a + b)
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
Then create the tool definition that invokes it:
|
|
151
|
+
|
|
152
|
+
```ts title=".neocode/tools/python-add.ts" {10}
|
|
153
|
+
import { tool } from "@neocode-ai/plugin"
|
|
154
|
+
import path from "path"
|
|
155
|
+
|
|
156
|
+
export default tool({
|
|
157
|
+
description: "Add two numbers using Python",
|
|
158
|
+
args: {
|
|
159
|
+
a: tool.schema.number().describe("First number"),
|
|
160
|
+
b: tool.schema.number().describe("Second number"),
|
|
161
|
+
},
|
|
162
|
+
async execute(args, context) {
|
|
163
|
+
const script = path.join(context.worktree, ".neocode/tools/add.py")
|
|
164
|
+
const result = await Bun.$`python3 ${script} ${args.a} ${args.b}`.text()
|
|
165
|
+
return result.trim()
|
|
166
|
+
},
|
|
167
|
+
})
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
Here we are using the [`Bun.$`](https://bun.com/docs/runtime/shell) utility to run the Python script.
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Ecosystem
|
|
3
|
+
description: Projects and integrations built with NeoCode.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
A collection of community projects built on NeoCode.
|
|
7
|
+
|
|
8
|
+
:::note
|
|
9
|
+
Want to add your NeoCode related project to this list? Submit a PR.
|
|
10
|
+
:::
|
|
11
|
+
|
|
12
|
+
You can also check out [awesome-neocode](https://github.com/awesome-neocode/awesome-neocode) and [neocode.cafe](https://neocode.cafe), a community that aggregates the ecosystem and community.
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## Plugins
|
|
17
|
+
|
|
18
|
+
| Name | Description |
|
|
19
|
+
| ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------ |
|
|
20
|
+
| [neocode-daytona](https://github.com/jamesmurdza/daytona/blob/main/guides/typescript/neocode/README.md) | Automatically run NeoCode sessions in isolated Daytona sandboxes with git sync and live previews |
|
|
21
|
+
| [neocode-helicone-session](https://github.com/H2Shami/neocode-helicone-session) | Automatically inject Helicone session headers for request grouping |
|
|
22
|
+
| [neocode-type-inject](https://github.com/nick-vi/neocode-type-inject) | Auto-inject TypeScript/Svelte types into file reads with lookup tools |
|
|
23
|
+
| [neocode-openai-codex-auth](https://github.com/numman-ali/neocode-openai-codex-auth) | Use your ChatGPT Plus/Pro subscription instead of API credits |
|
|
24
|
+
| [neocode-gemini-auth](https://github.com/jenslys/neocode-gemini-auth) | Use your existing Gemini plan instead of API billing |
|
|
25
|
+
| [neocode-antigravity-auth](https://github.com/NoeFabris/neocode-antigravity-auth) | Use Antigravity's free models instead of API billing |
|
|
26
|
+
| [neocode-devcontainers](https://github.com/athal7/neocode-devcontainers) | Multi-branch devcontainer isolation with shallow clones and auto-assigned ports |
|
|
27
|
+
| [neocode-google-antigravity-auth](https://github.com/shekohex/neocode-google-antigravity-auth) | Google Antigravity OAuth Plugin, with support for Google Search, and more robust API handling |
|
|
28
|
+
| [neocode-dynamic-context-pruning](https://github.com/Tarquinen/neocode-dynamic-context-pruning) | Optimize token usage by pruning obsolete tool outputs |
|
|
29
|
+
| [neocode-websearch-cited](https://github.com/ghoulr/neocode-websearch-cited.git) | Add native websearch support for supported providers with Google grounded style |
|
|
30
|
+
| [neocode-pty](https://github.com/shekohex/neocode-pty.git) | Enables AI agents to run background processes in a PTY, send interactive input to them. |
|
|
31
|
+
| [neocode-shell-strategy](https://github.com/JRedeker/neocode-shell-strategy) | Instructions for non-interactive shell commands - prevents hangs from TTY-dependent operations |
|
|
32
|
+
| [neocode-wakatime](https://github.com/angristan/neocode-wakatime) | Track NeoCode usage with Wakatime |
|
|
33
|
+
| [neocode-md-table-formatter](https://github.com/franlol/neocode-md-table-formatter/tree/main) | Clean up markdown tables produced by LLMs |
|
|
34
|
+
| [neocode-morph-fast-apply](https://github.com/JRedeker/neocode-morph-fast-apply) | 10x faster code editing with Morph Fast Apply API and lazy edit markers |
|
|
35
|
+
| [oh-my-neocode](https://github.com/code-yeongyu/oh-my-neocode) | Background agents, pre-built LSP/AST/MCP tools, curated agents, Claude Code compatible |
|
|
36
|
+
| [neocode-notificator](https://github.com/panta82/neocode-notificator) | Desktop notifications and sound alerts for NeoCode sessions |
|
|
37
|
+
| [neocode-notifier](https://github.com/mohak34/neocode-notifier) | Desktop notifications and sound alerts for permission, completion, and error events |
|
|
38
|
+
| [neocode-zellij-namer](https://github.com/24601/neocode-zellij-namer) | AI-powered automatic Zellij session naming based on NeoCode context |
|
|
39
|
+
| [neocode-skillful](https://github.com/zenobi-us/neocode-skillful) | Allow NeoCode agents to lazy load prompts on demand with skill discovery and injection |
|
|
40
|
+
| [neocode-supermemory](https://github.com/supermemoryai/neocode-supermemory) | Persistent memory across sessions using Supermemory |
|
|
41
|
+
| [@plannotator/neocode](https://github.com/backnotprop/plannotator/tree/main/apps/neocode-plugin) | Interactive plan review with visual annotation and private/offline sharing |
|
|
42
|
+
| [@openspoon/subtask2](https://github.com/spoons-and-mirrors/subtask2) | Extend neocode /commands into a powerful orchestration system with granular flow control |
|
|
43
|
+
| [neocode-scheduler](https://github.com/different-ai/neocode-scheduler) | Schedule recurring jobs using launchd (Mac) or systemd (Linux) with cron syntax |
|
|
44
|
+
| [micode](https://github.com/vtemian/micode) | Structured Brainstorm → Plan → Implement workflow with session continuity |
|
|
45
|
+
| [octto](https://github.com/vtemian/octto) | Interactive browser UI for AI brainstorming with multi-question forms |
|
|
46
|
+
| [neocode-background-agents](https://github.com/kdcokenny/neocode-background-agents) | Claude Code-style background agents with async delegation and context persistence |
|
|
47
|
+
| [neocode-notify](https://github.com/kdcokenny/neocode-notify) | Native OS notifications for NeoCode – know when tasks complete |
|
|
48
|
+
| [neocode-workspace](https://github.com/kdcokenny/neocode-workspace) | Bundled multi-agent orchestration harness – 16 components, one install |
|
|
49
|
+
| [neocode-worktree](https://github.com/kdcokenny/neocode-worktree) | Zero-friction git worktrees for NeoCode |
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## Projects
|
|
54
|
+
|
|
55
|
+
| Name | Description |
|
|
56
|
+
| ---------------------------------------------------------------------------------------- | --------------------------------------------------------------- |
|
|
57
|
+
| [kimaki](https://github.com/remorses/kimaki) | Discord bot to control NeoCode sessions, built on the SDK |
|
|
58
|
+
| [neocode.nvim](https://github.com/NickvanDyke/neocode.nvim) | Neovim plugin for editor-aware prompts, built on the API |
|
|
59
|
+
| [portal](https://github.com/hosenur/portal) | Mobile-first web UI for NeoCode over Tailscale/VPN |
|
|
60
|
+
| [neocode plugin template](https://github.com/zenobi-us/neocode-plugin-template/) | Template for building NeoCode plugins |
|
|
61
|
+
| [neocode.nvim](https://github.com/sudo-tee/neocode.nvim) | Neovim frontend for neocode - a terminal-based AI coding agent |
|
|
62
|
+
| [ai-sdk-provider-neocode-sdk](https://github.com/ben-vargas/ai-sdk-provider-neocode-sdk) | Vercel AI SDK provider for using NeoCode via @neocode-ai/sdk |
|
|
63
|
+
| [OpenChamber](https://github.com/btriapitsyn/openchamber) | Web / Desktop App and VS Code Extension for NeoCode |
|
|
64
|
+
| [NeoCode-Obsidian](https://github.com/mtymek/neocode-obsidian) | Obsidian plugin that embedds NeoCode in Obsidian's UI |
|
|
65
|
+
| [OpenWork](https://github.com/different-ai/openwork) | An open-source alternative to Claude Cowork, powered by NeoCode |
|
|
66
|
+
| [ocx](https://github.com/kdcokenny/ocx) | NeoCode extension manager with portable, isolated profiles. |
|
|
67
|
+
| [CodeNomad](https://github.com/NeuralNomadsAI/CodeNomad) | Desktop, Web, Mobile and Remote Client App for NeoCode |
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
## Agents
|
|
72
|
+
|
|
73
|
+
| Name | Description |
|
|
74
|
+
| --------------------------------------------------------------- | ------------------------------------------------------------ |
|
|
75
|
+
| [Agentic](https://github.com/Cluster444/agentic) | Modular AI agents and commands for structured development |
|
|
76
|
+
| [neocode-agents](https://github.com/darrenhinde/neocode-agents) | Configs, prompts, agents, and plugins for enhanced workflows |
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Enterprise
|
|
3
|
+
description: Using NeoCode securely in your organization.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
import config from "../../../config.mjs"
|
|
7
|
+
export const email = `mailto:${config.email}`
|
|
8
|
+
|
|
9
|
+
NeoCode Enterprise is for organizations that want to ensure that their code and data never leaves their infrastructure. It can do this by using a centralized config that integrates with your SSO and internal AI gateway.
|
|
10
|
+
|
|
11
|
+
:::note
|
|
12
|
+
NeoCode does not store any of your code or context data.
|
|
13
|
+
:::
|
|
14
|
+
|
|
15
|
+
To get started with NeoCode Enterprise:
|
|
16
|
+
|
|
17
|
+
1. Do a trial internally with your team.
|
|
18
|
+
2. **<a href={email}>Contact us</a>** to discuss pricing and implementation options.
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## Trial
|
|
23
|
+
|
|
24
|
+
NeoCode is open source and does not store any of your code or context data, so your developers can simply [get started](/docs/) and carry out a trial.
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
### Data handling
|
|
29
|
+
|
|
30
|
+
**NeoCode does not store your code or context data.** All processing happens locally or through direct API calls to your AI provider.
|
|
31
|
+
|
|
32
|
+
This means that as long as you are using a provider you trust, or an internal
|
|
33
|
+
AI gateway, you can use NeoCode securely.
|
|
34
|
+
|
|
35
|
+
The only caveat here is the optional `/share` feature.
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
#### Sharing conversations
|
|
40
|
+
|
|
41
|
+
If a user enables the `/share` feature, the conversation and the data associated with it are sent to the service we use to host these share pages at neo.khulnasoft.com.
|
|
42
|
+
|
|
43
|
+
The data is currently served through our CDN's edge network, and is cached on the edge near your users.
|
|
44
|
+
|
|
45
|
+
We recommend you disable this for your trial.
|
|
46
|
+
|
|
47
|
+
```json title="neocode.json"
|
|
48
|
+
{
|
|
49
|
+
"$schema": "https://neo.khulnasoft.com/config.json",
|
|
50
|
+
"share": "disabled"
|
|
51
|
+
}
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
[Learn more about sharing](/docs/share).
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
### Code ownership
|
|
59
|
+
|
|
60
|
+
**You own all code produced by NeoCode.** There are no licensing restrictions or ownership claims.
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
## Pricing
|
|
65
|
+
|
|
66
|
+
We use a per-seat model for NeoCode Enterprise. If you have your own LLM gateway, we do not charge for tokens used. For further details about pricing and implementation options, **<a href={email}>contact us</a>**.
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
## Deployment
|
|
71
|
+
|
|
72
|
+
Once you have completed your trial and you are ready to use NeoCode at
|
|
73
|
+
your organization, you can **<a href={email}>contact us</a>** to discuss
|
|
74
|
+
pricing and implementation options.
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
### Central Config
|
|
79
|
+
|
|
80
|
+
We can set up NeoCode to use a single central config for your entire organization.
|
|
81
|
+
|
|
82
|
+
This centralized config can integrate with your SSO provider and ensures all users access only your internal AI gateway.
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
### SSO integration
|
|
87
|
+
|
|
88
|
+
Through the central config, NeoCode can integrate with your organization's SSO provider for authentication.
|
|
89
|
+
|
|
90
|
+
This allows NeoCode to obtain credentials for your internal AI gateway through your existing identity management system.
|
|
91
|
+
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
### Internal AI gateway
|
|
95
|
+
|
|
96
|
+
With the central config, NeoCode can also be configured to use only your internal AI gateway.
|
|
97
|
+
|
|
98
|
+
You can also disable all other AI providers, ensuring all requests go through your organization's approved infrastructure.
|
|
99
|
+
|
|
100
|
+
---
|
|
101
|
+
|
|
102
|
+
### Self-hosting
|
|
103
|
+
|
|
104
|
+
While we recommend disabling the share pages to ensure your data never leaves
|
|
105
|
+
your organization, we can also help you self-host them on your infrastructure.
|
|
106
|
+
|
|
107
|
+
This is currently on our roadmap. If you're interested, **<a href={email}>let us know</a>**.
|
|
108
|
+
|
|
109
|
+
---
|
|
110
|
+
|
|
111
|
+
## FAQ
|
|
112
|
+
|
|
113
|
+
<details>
|
|
114
|
+
<summary>What is NeoCode Enterprise?</summary>
|
|
115
|
+
|
|
116
|
+
NeoCode Enterprise is for organizations that want to ensure that their code and data never leaves their infrastructure. It can do this by using a centralized config that integrates with your SSO and internal AI gateway.
|
|
117
|
+
|
|
118
|
+
</details>
|
|
119
|
+
|
|
120
|
+
<details>
|
|
121
|
+
<summary>How do I get started with NeoCode Enterprise?</summary>
|
|
122
|
+
|
|
123
|
+
Simply start with an internal trial with your team. NeoCode by default does not store your code or context data, making it easy to get started.
|
|
124
|
+
|
|
125
|
+
Then **<a href={email}>contact us</a>** to discuss pricing and implementation options.
|
|
126
|
+
|
|
127
|
+
</details>
|
|
128
|
+
|
|
129
|
+
<details>
|
|
130
|
+
<summary>How does enterprise pricing work?</summary>
|
|
131
|
+
|
|
132
|
+
We offer per-seat enterprise pricing. If you have your own LLM gateway, we do not charge for tokens used. For further details, **<a href={email}>contact us</a>** for a custom quote based on your organization's needs.
|
|
133
|
+
|
|
134
|
+
</details>
|
|
135
|
+
|
|
136
|
+
<details>
|
|
137
|
+
<summary>Is my data secure with NeoCode Enterprise?</summary>
|
|
138
|
+
|
|
139
|
+
Yes. NeoCode does not store your code or context data. All processing happens locally or through direct API calls to your AI provider. With central config and SSO integration, your data remains secure within your organization's infrastructure.
|
|
140
|
+
|
|
141
|
+
</details>
|
|
142
|
+
|
|
143
|
+
<details>
|
|
144
|
+
<summary>Can we use our own private NPM registry?</summary>
|
|
145
|
+
|
|
146
|
+
NeoCode supports private npm registries through Bun's native `.npmrc` file support. If your organization uses a private registry, such as JFrog Artifactory, Nexus, or similar, ensure developers are authenticated before running NeoCode.
|
|
147
|
+
|
|
148
|
+
To set up authentication with your private registry:
|
|
149
|
+
|
|
150
|
+
```bash
|
|
151
|
+
npm login --registry=https://your-company.jfrog.io/api/npm/npm-virtual/
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
This creates `~/.npmrc` with authentication details. NeoCode will automatically
|
|
155
|
+
pick this up.
|
|
156
|
+
|
|
157
|
+
:::caution
|
|
158
|
+
You must be logged into the private registry before running NeoCode.
|
|
159
|
+
:::
|
|
160
|
+
|
|
161
|
+
Alternatively, you can manually configure a `.npmrc` file:
|
|
162
|
+
|
|
163
|
+
```bash title="~/.npmrc"
|
|
164
|
+
registry=https://your-company.jfrog.io/api/npm/npm-virtual/
|
|
165
|
+
//your-company.jfrog.io/api/npm/npm-virtual/:_authToken=${NPM_AUTH_TOKEN}
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
Developers must be logged into the private registry before running NeoCode to ensure packages can be installed from your enterprise registry.
|
|
169
|
+
|
|
170
|
+
</details>
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Formatters
|
|
3
|
+
description: NeoCode uses language specific formatters.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
NeoCode automatically formats files after they are written or edited using language-specific formatters. This ensures that the code that is generated follows the code styles of your project.
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## Built-in
|
|
11
|
+
|
|
12
|
+
NeoCode comes with several built-in formatters for popular languages and frameworks. Below is a list of the formatters, supported file extensions, and commands or config options it needs.
|
|
13
|
+
|
|
14
|
+
| Formatter | Extensions | Requirements |
|
|
15
|
+
| -------------------- | -------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- |
|
|
16
|
+
| gofmt | .go | `gofmt` command available |
|
|
17
|
+
| mix | .ex, .exs, .eex, .heex, .leex, .neex, .sface | `mix` command available |
|
|
18
|
+
| prettier | .js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml, and [more](https://prettier.io/docs/en/index.html) | `prettier` dependency in `package.json` |
|
|
19
|
+
| biome | .js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml, and [more](https://biomejs.dev/) | `biome.json(c)` config file |
|
|
20
|
+
| zig | .zig, .zon | `zig` command available |
|
|
21
|
+
| clang-format | .c, .cpp, .h, .hpp, .ino, and [more](https://clang.llvm.org/docs/ClangFormat.html) | `.clang-format` config file |
|
|
22
|
+
| ktlint | .kt, .kts | `ktlint` command available |
|
|
23
|
+
| ruff | .py, .pyi | `ruff` command available with config |
|
|
24
|
+
| rustfmt | .rs | `rustfmt` command available |
|
|
25
|
+
| cargofmt | .rs | `cargo fmt` command available |
|
|
26
|
+
| uv | .py, .pyi | `uv` command available |
|
|
27
|
+
| rubocop | .rb, .rake, .gemspec, .ru | `rubocop` command available |
|
|
28
|
+
| standardrb | .rb, .rake, .gemspec, .ru | `standardrb` command available |
|
|
29
|
+
| htmlbeautifier | .erb, .html.erb | `htmlbeautifier` command available |
|
|
30
|
+
| air | .R | `air` command available |
|
|
31
|
+
| dart | .dart | `dart` command available |
|
|
32
|
+
| ocamlformat | .ml, .mli | `ocamlformat` command available and `.ocamlformat` config file |
|
|
33
|
+
| terraform | .tf, .tfvars | `terraform` command available |
|
|
34
|
+
| gleam | .gleam | `gleam` command available |
|
|
35
|
+
| nixfmt | .nix | `nixfmt` command available |
|
|
36
|
+
| shfmt | .sh, .bash | `shfmt` command available |
|
|
37
|
+
| pint | .php | `laravel/pint` dependency in `composer.json` |
|
|
38
|
+
| oxfmt (Experimental) | .js, .jsx, .ts, .tsx | `oxfmt` dependency in `package.json` and an [experimental env variable flag](/docs/cli/#experimental) |
|
|
39
|
+
| ormolu | .hs | `ormolu` command available |
|
|
40
|
+
|
|
41
|
+
So if your project has `prettier` in your `package.json`, NeoCode will automatically use it.
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## How it works
|
|
46
|
+
|
|
47
|
+
When NeoCode writes or edits a file, it:
|
|
48
|
+
|
|
49
|
+
1. Checks the file extension against all enabled formatters.
|
|
50
|
+
2. Runs the appropriate formatter command on the file.
|
|
51
|
+
3. Applies the formatting changes automatically.
|
|
52
|
+
|
|
53
|
+
This process happens in the background, ensuring your code styles are maintained without any manual steps.
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## Configure
|
|
58
|
+
|
|
59
|
+
You can customize formatters through the `formatter` section in your NeoCode config.
|
|
60
|
+
|
|
61
|
+
```json title="neocode.json"
|
|
62
|
+
{
|
|
63
|
+
"$schema": "https://neo.khulnasoft.com/config.json",
|
|
64
|
+
"formatter": {}
|
|
65
|
+
}
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
Each formatter configuration supports the following:
|
|
69
|
+
|
|
70
|
+
| Property | Type | Description |
|
|
71
|
+
| ------------- | -------- | ------------------------------------------------------- |
|
|
72
|
+
| `disabled` | boolean | Set this to `true` to disable the formatter |
|
|
73
|
+
| `command` | string[] | The command to run for formatting |
|
|
74
|
+
| `environment` | object | Environment variables to set when running the formatter |
|
|
75
|
+
| `extensions` | string[] | File extensions this formatter should handle |
|
|
76
|
+
|
|
77
|
+
Let's look at some examples.
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
### Disabling formatters
|
|
82
|
+
|
|
83
|
+
To disable **all** formatters globally, set `formatter` to `false`:
|
|
84
|
+
|
|
85
|
+
```json title="neocode.json" {3}
|
|
86
|
+
{
|
|
87
|
+
"$schema": "https://neo.khulnasoft.com/config.json",
|
|
88
|
+
"formatter": false
|
|
89
|
+
}
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
To disable a **specific** formatter, set `disabled` to `true`:
|
|
93
|
+
|
|
94
|
+
```json title="neocode.json" {5}
|
|
95
|
+
{
|
|
96
|
+
"$schema": "https://neo.khulnasoft.com/config.json",
|
|
97
|
+
"formatter": {
|
|
98
|
+
"prettier": {
|
|
99
|
+
"disabled": true
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
---
|
|
106
|
+
|
|
107
|
+
### Custom formatters
|
|
108
|
+
|
|
109
|
+
You can override the built-in formatters or add new ones by specifying the command, environment variables, and file extensions:
|
|
110
|
+
|
|
111
|
+
```json title="neocode.json" {4-14}
|
|
112
|
+
{
|
|
113
|
+
"$schema": "https://neo.khulnasoft.com/config.json",
|
|
114
|
+
"formatter": {
|
|
115
|
+
"prettier": {
|
|
116
|
+
"command": ["npx", "prettier", "--write", "$FILE"],
|
|
117
|
+
"environment": {
|
|
118
|
+
"NODE_ENV": "development"
|
|
119
|
+
},
|
|
120
|
+
"extensions": [".js", ".ts", ".jsx", ".tsx"]
|
|
121
|
+
},
|
|
122
|
+
"custom-markdown-formatter": {
|
|
123
|
+
"command": ["deno", "fmt", "$FILE"],
|
|
124
|
+
"extensions": [".md"]
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
The **`$FILE` placeholder** in the command will be replaced with the path to the file being formatted.
|