@soederpop/luca 0.0.2
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/CLAUDE.md +71 -0
- package/README.md +78 -0
- package/bun.lock +2928 -0
- package/bunfig.toml +3 -0
- package/commands/audit-docs.ts +740 -0
- package/commands/build-scaffolds.ts +154 -0
- package/commands/generate-api-docs.ts +114 -0
- package/commands/update-introspection.ts +67 -0
- package/docs/CLI.md +335 -0
- package/docs/README.md +88 -0
- package/docs/TABLE-OF-CONTENTS.md +157 -0
- package/docs/apis/clients/elevenlabs.md +84 -0
- package/docs/apis/clients/graph.md +56 -0
- package/docs/apis/clients/openai.md +69 -0
- package/docs/apis/clients/rest.md +41 -0
- package/docs/apis/clients/websocket.md +107 -0
- package/docs/apis/features/agi/assistant.md +471 -0
- package/docs/apis/features/agi/assistants-manager.md +154 -0
- package/docs/apis/features/agi/claude-code.md +602 -0
- package/docs/apis/features/agi/conversation-history.md +352 -0
- package/docs/apis/features/agi/conversation.md +333 -0
- package/docs/apis/features/agi/docs-reader.md +121 -0
- package/docs/apis/features/agi/openai-codex.md +318 -0
- package/docs/apis/features/agi/openapi.md +138 -0
- package/docs/apis/features/agi/semantic-search.md +387 -0
- package/docs/apis/features/agi/skills-library.md +216 -0
- package/docs/apis/features/node/container-link.md +133 -0
- package/docs/apis/features/node/content-db.md +313 -0
- package/docs/apis/features/node/disk-cache.md +379 -0
- package/docs/apis/features/node/dns.md +651 -0
- package/docs/apis/features/node/docker.md +705 -0
- package/docs/apis/features/node/downloader.md +81 -0
- package/docs/apis/features/node/esbuild.md +59 -0
- package/docs/apis/features/node/file-manager.md +182 -0
- package/docs/apis/features/node/fs.md +581 -0
- package/docs/apis/features/node/git.md +330 -0
- package/docs/apis/features/node/google-auth.md +174 -0
- package/docs/apis/features/node/google-calendar.md +187 -0
- package/docs/apis/features/node/google-docs.md +151 -0
- package/docs/apis/features/node/google-drive.md +225 -0
- package/docs/apis/features/node/google-sheets.md +179 -0
- package/docs/apis/features/node/grep.md +290 -0
- package/docs/apis/features/node/helpers.md +135 -0
- package/docs/apis/features/node/ink.md +334 -0
- package/docs/apis/features/node/ipc-socket.md +260 -0
- package/docs/apis/features/node/json-tree.md +86 -0
- package/docs/apis/features/node/launcher-app-command-listener.md +145 -0
- package/docs/apis/features/node/networking.md +281 -0
- package/docs/apis/features/node/nlp.md +133 -0
- package/docs/apis/features/node/opener.md +97 -0
- package/docs/apis/features/node/os.md +118 -0
- package/docs/apis/features/node/package-finder.md +402 -0
- package/docs/apis/features/node/postgres.md +212 -0
- package/docs/apis/features/node/proc.md +430 -0
- package/docs/apis/features/node/process-manager.md +210 -0
- package/docs/apis/features/node/python.md +278 -0
- package/docs/apis/features/node/repl.md +88 -0
- package/docs/apis/features/node/runpod.md +673 -0
- package/docs/apis/features/node/secure-shell.md +169 -0
- package/docs/apis/features/node/semantic-search.md +401 -0
- package/docs/apis/features/node/sqlite.md +211 -0
- package/docs/apis/features/node/telegram.md +254 -0
- package/docs/apis/features/node/tts.md +118 -0
- package/docs/apis/features/node/ui.md +703 -0
- package/docs/apis/features/node/vault.md +64 -0
- package/docs/apis/features/node/vm.md +84 -0
- package/docs/apis/features/node/window-manager.md +337 -0
- package/docs/apis/features/node/yaml-tree.md +85 -0
- package/docs/apis/features/node/yaml.md +176 -0
- package/docs/apis/features/web/asset-loader.md +47 -0
- package/docs/apis/features/web/container-link.md +133 -0
- package/docs/apis/features/web/esbuild.md +59 -0
- package/docs/apis/features/web/helpers.md +135 -0
- package/docs/apis/features/web/network.md +30 -0
- package/docs/apis/features/web/speech.md +55 -0
- package/docs/apis/features/web/vault.md +64 -0
- package/docs/apis/features/web/vm.md +84 -0
- package/docs/apis/features/web/voice.md +67 -0
- package/docs/apis/servers/express.md +127 -0
- package/docs/apis/servers/mcp.md +213 -0
- package/docs/apis/servers/websocket.md +99 -0
- package/docs/documentation-audit.md +134 -0
- package/docs/examples/content-db.md +77 -0
- package/docs/examples/disk-cache.md +83 -0
- package/docs/examples/docker.md +101 -0
- package/docs/examples/downloader.md +70 -0
- package/docs/examples/esbuild.md +80 -0
- package/docs/examples/file-manager.md +82 -0
- package/docs/examples/fs.md +83 -0
- package/docs/examples/git.md +85 -0
- package/docs/examples/google-auth.md +88 -0
- package/docs/examples/google-calendar.md +94 -0
- package/docs/examples/google-docs.md +82 -0
- package/docs/examples/google-drive.md +96 -0
- package/docs/examples/google-sheets.md +95 -0
- package/docs/examples/grep.md +85 -0
- package/docs/examples/ink-blocks.md +75 -0
- package/docs/examples/ink-renderer.md +41 -0
- package/docs/examples/ink.md +103 -0
- package/docs/examples/ipc-socket.md +103 -0
- package/docs/examples/json-tree.md +91 -0
- package/docs/examples/launcher-app-command-listener.md +120 -0
- package/docs/examples/networking.md +58 -0
- package/docs/examples/nlp.md +91 -0
- package/docs/examples/opener.md +78 -0
- package/docs/examples/os.md +72 -0
- package/docs/examples/package-finder.md +89 -0
- package/docs/examples/port-exposer.md +89 -0
- package/docs/examples/postgres.md +91 -0
- package/docs/examples/proc.md +81 -0
- package/docs/examples/process-manager.md +79 -0
- package/docs/examples/python.md +91 -0
- package/docs/examples/repl.md +93 -0
- package/docs/examples/runpod.md +119 -0
- package/docs/examples/secure-shell.md +92 -0
- package/docs/examples/sqlite.md +86 -0
- package/docs/examples/telegram.md +77 -0
- package/docs/examples/tts.md +86 -0
- package/docs/examples/ui.md +80 -0
- package/docs/examples/vault.md +70 -0
- package/docs/examples/vm.md +86 -0
- package/docs/examples/window-manager.md +125 -0
- package/docs/examples/yaml-tree.md +93 -0
- package/docs/examples/yaml.md +104 -0
- package/docs/ideas/class-registration-refactor-possibilities.md +197 -0
- package/docs/ideas/container-use-api.md +9 -0
- package/docs/ideas/easy-auth-for-express-servers-and-luca-serve.md +0 -0
- package/docs/ideas/feature-stacks.md +22 -0
- package/docs/ideas/luca-cli-self-sufficiency-demo.md +23 -0
- package/docs/ideas/mcp-design.md +9 -0
- package/docs/ideas/web-container-debugging-feature.md +13 -0
- package/docs/introspection-audit.md +49 -0
- package/docs/introspection.md +154 -0
- package/docs/mcp/readme.md +162 -0
- package/docs/models.ts +38 -0
- package/docs/philosophy.md +85 -0
- package/docs/principles.md +7 -0
- package/docs/prompts/audit-codebase-for-failures-to-use-the-container.md +34 -0
- package/docs/prompts/mcp-test-easy-command.md +27 -0
- package/docs/reports/assistant-bugs.md +38 -0
- package/docs/reports/attach-pattern-usage.md +18 -0
- package/docs/reports/code-audit-results.md +391 -0
- package/docs/reports/introspection-audit-tasks.md +378 -0
- package/docs/reports/luca-mcp-improvements.md +128 -0
- package/docs/scaffolds/client.md +140 -0
- package/docs/scaffolds/command.md +106 -0
- package/docs/scaffolds/endpoint.md +176 -0
- package/docs/scaffolds/feature.md +148 -0
- package/docs/scaffolds/server.md +187 -0
- package/docs/tasks/web-container-helper-discovery.md +71 -0
- package/docs/todos.md +1 -0
- package/docs/tutorials/01-getting-started.md +106 -0
- package/docs/tutorials/02-container.md +210 -0
- package/docs/tutorials/03-scripts.md +194 -0
- package/docs/tutorials/04-features-overview.md +196 -0
- package/docs/tutorials/05-state-and-events.md +171 -0
- package/docs/tutorials/06-servers.md +157 -0
- package/docs/tutorials/07-endpoints.md +198 -0
- package/docs/tutorials/08-commands.md +171 -0
- package/docs/tutorials/09-clients.md +162 -0
- package/docs/tutorials/10-creating-features.md +198 -0
- package/docs/tutorials/11-contentbase.md +191 -0
- package/docs/tutorials/12-assistants.md +215 -0
- package/docs/tutorials/13-introspection.md +147 -0
- package/docs/tutorials/14-type-system.md +174 -0
- package/docs/tutorials/15-project-patterns.md +222 -0
- package/docs/tutorials/16-google-features.md +534 -0
- package/docs/tutorials/17-tui-blocks.md +530 -0
- package/docs/tutorials/18-semantic-search.md +334 -0
- package/index.ts +1 -0
- package/luca.console.ts +9 -0
- package/main.py +6 -0
- package/package.json +154 -0
- package/pyproject.toml +7 -0
- package/scripts/animations/chrome-glitch.ts +55 -0
- package/scripts/animations/index.ts +16 -0
- package/scripts/animations/neon-pulse.ts +64 -0
- package/scripts/animations/types.ts +6 -0
- package/scripts/build-web.ts +28 -0
- package/scripts/examples/ask-luca-expert.ts +42 -0
- package/scripts/examples/assistant-questions.ts +12 -0
- package/scripts/examples/excalidraw-expert.ts +75 -0
- package/scripts/examples/expert-chat.ts +0 -0
- package/scripts/examples/file-manager.ts +14 -0
- package/scripts/examples/ideas.ts +12 -0
- package/scripts/examples/interactive-chat.ts +20 -0
- package/scripts/examples/openai-tool-calls.ts +113 -0
- package/scripts/examples/opening-a-web-browser.ts +5 -0
- package/scripts/examples/telegram-bot.ts +79 -0
- package/scripts/examples/telegram-ink-ui.ts +302 -0
- package/scripts/examples/using-assistant-with-mcp.ts +560 -0
- package/scripts/examples/using-claude-code.ts +10 -0
- package/scripts/examples/using-contentdb.ts +35 -0
- package/scripts/examples/using-conversations.ts +35 -0
- package/scripts/examples/using-disk-cache.ts +10 -0
- package/scripts/examples/using-docker-shell.ts +75 -0
- package/scripts/examples/using-elevenlabs.ts +25 -0
- package/scripts/examples/using-google-calendar.ts +57 -0
- package/scripts/examples/using-google-docs.ts +74 -0
- package/scripts/examples/using-google-drive.ts +74 -0
- package/scripts/examples/using-google-sheets.ts +89 -0
- package/scripts/examples/using-nlp.ts +55 -0
- package/scripts/examples/using-ollama.ts +10 -0
- package/scripts/examples/using-openai-codex.ts +23 -0
- package/scripts/examples/using-postgres.ts +55 -0
- package/scripts/examples/using-runpod.ts +32 -0
- package/scripts/examples/using-tts.ts +40 -0
- package/scripts/examples/vm-loading-esm-modules.ts +16 -0
- package/scripts/scaffold.ts +391 -0
- package/scripts/scratch.ts +15 -0
- package/scripts/test-command-listener.ts +123 -0
- package/scripts/test-window-manager-lifecycle.ts +86 -0
- package/scripts/test-window-manager.ts +43 -0
- package/scripts/update-introspection-data.ts +58 -0
- package/src/agi/README.md +14 -0
- package/src/agi/container.server.ts +114 -0
- package/src/agi/endpoints/ask.ts +60 -0
- package/src/agi/endpoints/conversations/[id].ts +45 -0
- package/src/agi/endpoints/conversations.ts +31 -0
- package/src/agi/endpoints/experts.ts +37 -0
- package/src/agi/features/assistant.ts +767 -0
- package/src/agi/features/assistants-manager.ts +260 -0
- package/src/agi/features/claude-code.ts +1111 -0
- package/src/agi/features/conversation-history.ts +497 -0
- package/src/agi/features/conversation.ts +799 -0
- package/src/agi/features/openai-codex.ts +631 -0
- package/src/agi/features/openapi.ts +438 -0
- package/src/agi/features/skills-library.ts +425 -0
- package/src/agi/index.ts +6 -0
- package/src/agi/lib/token-counter.ts +122 -0
- package/src/browser.ts +25 -0
- package/src/bus.ts +100 -0
- package/src/cli/cli.ts +70 -0
- package/src/client.ts +461 -0
- package/src/clients/civitai/index.ts +541 -0
- package/src/clients/client-template.ts +41 -0
- package/src/clients/comfyui/index.ts +597 -0
- package/src/clients/elevenlabs/index.ts +291 -0
- package/src/clients/openai/index.ts +451 -0
- package/src/clients/supabase/index.ts +366 -0
- package/src/command.ts +164 -0
- package/src/commands/chat.ts +182 -0
- package/src/commands/console.ts +192 -0
- package/src/commands/describe.ts +433 -0
- package/src/commands/eval.ts +116 -0
- package/src/commands/help.ts +214 -0
- package/src/commands/index.ts +14 -0
- package/src/commands/mcp.ts +64 -0
- package/src/commands/prompt.ts +807 -0
- package/src/commands/run.ts +257 -0
- package/src/commands/sandbox-mcp.ts +439 -0
- package/src/commands/scaffold.ts +79 -0
- package/src/commands/serve.ts +172 -0
- package/src/container.ts +781 -0
- package/src/endpoint.ts +340 -0
- package/src/feature.ts +75 -0
- package/src/hash-object.ts +97 -0
- package/src/helper.ts +543 -0
- package/src/introspection/generated.agi.ts +23388 -0
- package/src/introspection/generated.node.ts +18899 -0
- package/src/introspection/generated.web.ts +2021 -0
- package/src/introspection/index.ts +256 -0
- package/src/introspection/scan.ts +912 -0
- package/src/node/container.ts +354 -0
- package/src/node/feature.ts +13 -0
- package/src/node/features/container-link.ts +558 -0
- package/src/node/features/content-db.ts +475 -0
- package/src/node/features/disk-cache.ts +382 -0
- package/src/node/features/dns.ts +655 -0
- package/src/node/features/docker.ts +912 -0
- package/src/node/features/downloader.ts +92 -0
- package/src/node/features/esbuild.ts +68 -0
- package/src/node/features/file-manager.ts +357 -0
- package/src/node/features/fs.ts +534 -0
- package/src/node/features/git.ts +492 -0
- package/src/node/features/google-auth.ts +502 -0
- package/src/node/features/google-calendar.ts +300 -0
- package/src/node/features/google-docs.ts +404 -0
- package/src/node/features/google-drive.ts +339 -0
- package/src/node/features/google-sheets.ts +279 -0
- package/src/node/features/grep.ts +406 -0
- package/src/node/features/helpers.ts +374 -0
- package/src/node/features/ink.ts +490 -0
- package/src/node/features/ipc-socket.ts +459 -0
- package/src/node/features/json-tree.ts +188 -0
- package/src/node/features/launcher-app-command-listener.ts +388 -0
- package/src/node/features/networking.ts +925 -0
- package/src/node/features/nlp.ts +211 -0
- package/src/node/features/opener.ts +166 -0
- package/src/node/features/os.ts +157 -0
- package/src/node/features/package-finder.ts +539 -0
- package/src/node/features/port-exposer.ts +342 -0
- package/src/node/features/postgres.ts +273 -0
- package/src/node/features/proc.ts +502 -0
- package/src/node/features/process-manager.ts +542 -0
- package/src/node/features/python.ts +444 -0
- package/src/node/features/repl.ts +194 -0
- package/src/node/features/runpod.ts +802 -0
- package/src/node/features/secure-shell.ts +248 -0
- package/src/node/features/semantic-search.ts +924 -0
- package/src/node/features/sqlite.ts +289 -0
- package/src/node/features/telegram.ts +342 -0
- package/src/node/features/tts.ts +184 -0
- package/src/node/features/ui.ts +857 -0
- package/src/node/features/vault.ts +164 -0
- package/src/node/features/vm.ts +312 -0
- package/src/node/features/window-manager.ts +804 -0
- package/src/node/features/yaml-tree.ts +149 -0
- package/src/node/features/yaml.ts +132 -0
- package/src/node.ts +70 -0
- package/src/react/index.ts +175 -0
- package/src/registry.ts +199 -0
- package/src/scaffolds/generated.ts +1613 -0
- package/src/scaffolds/template.ts +37 -0
- package/src/schemas/base.ts +255 -0
- package/src/server.ts +135 -0
- package/src/servers/express.ts +209 -0
- package/src/servers/mcp.ts +805 -0
- package/src/servers/socket.ts +120 -0
- package/src/state.ts +101 -0
- package/src/web/clients/socket.ts +82 -0
- package/src/web/container.ts +74 -0
- package/src/web/extension.ts +30 -0
- package/src/web/feature.ts +12 -0
- package/src/web/features/asset-loader.ts +64 -0
- package/src/web/features/container-link.ts +385 -0
- package/src/web/features/esbuild.ts +79 -0
- package/src/web/features/helpers.ts +267 -0
- package/src/web/features/network.ts +61 -0
- package/src/web/features/speech.ts +87 -0
- package/src/web/features/vault.ts +189 -0
- package/src/web/features/vm.ts +78 -0
- package/src/web/features/voice-recognition.ts +129 -0
- package/src/web/shims/isomorphic-vm.ts +149 -0
- package/test/bus.test.ts +134 -0
- package/test/clients-servers.test.ts +216 -0
- package/test/container-link.test.ts +274 -0
- package/test/features.test.ts +160 -0
- package/test/integration.test.ts +787 -0
- package/test/node-container.test.ts +121 -0
- package/test/rate-limit.test.ts +272 -0
- package/test/semantic-search.test.ts +550 -0
- package/test/state.test.ts +121 -0
- package/test-integration/assistant.test.ts +138 -0
- package/test-integration/assistants-manager.test.ts +123 -0
- package/test-integration/claude-code.test.ts +98 -0
- package/test-integration/conversation-history.test.ts +205 -0
- package/test-integration/conversation.test.ts +137 -0
- package/test-integration/elevenlabs.test.ts +55 -0
- package/test-integration/google-services.test.ts +80 -0
- package/test-integration/helpers.ts +89 -0
- package/test-integration/openai-codex.test.ts +93 -0
- package/test-integration/runpod.test.ts +58 -0
- package/test-integration/server-endpoints.test.ts +97 -0
- package/test-integration/skills-library.test.ts +157 -0
- package/test-integration/telegram.test.ts +46 -0
- package/tsconfig.json +58 -0
- package/uv.lock +8 -0
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
# DocsReader (features.docsReader)
|
|
2
|
+
|
|
3
|
+
No description provided
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
|
|
7
|
+
```ts
|
|
8
|
+
container.feature('docsReader', {
|
|
9
|
+
// A ContentDb instance to read documents from
|
|
10
|
+
contentDb,
|
|
11
|
+
// Optional system prompt to prepend before the docs listing
|
|
12
|
+
systemPrompt,
|
|
13
|
+
// OpenAI model to use for the conversation
|
|
14
|
+
model,
|
|
15
|
+
})
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Options (Zod v4 schema)
|
|
19
|
+
|
|
20
|
+
| Property | Type | Description |
|
|
21
|
+
|----------|------|-------------|
|
|
22
|
+
| `contentDb` | `any` | A ContentDb instance to read documents from |
|
|
23
|
+
| `systemPrompt` | `string` | Optional system prompt to prepend before the docs listing |
|
|
24
|
+
| `model` | `string` | OpenAI model to use for the conversation |
|
|
25
|
+
|
|
26
|
+
## Methods
|
|
27
|
+
|
|
28
|
+
### buildTools
|
|
29
|
+
|
|
30
|
+
Build the tool definitions (listDocs, readDoc, readDocOutline, readDocs) that the conversation model uses to query the content database.
|
|
31
|
+
|
|
32
|
+
**Returns:** `Record<string, ConversationTool>`
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
### buildSystemPrompt
|
|
37
|
+
|
|
38
|
+
Build the system prompt by combining the optional prefix with a table of contents generated from the content database.
|
|
39
|
+
|
|
40
|
+
**Returns:** `string`
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
### createConversation
|
|
45
|
+
|
|
46
|
+
Create and return a new Conversation feature configured with the docs reader's system prompt and tools.
|
|
47
|
+
|
|
48
|
+
**Returns:** `Conversation`
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
### start
|
|
53
|
+
|
|
54
|
+
Initialize the docs reader by loading the content database, creating the conversation, and emitting the start event.
|
|
55
|
+
|
|
56
|
+
**Returns:** `void`
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
### ask
|
|
61
|
+
|
|
62
|
+
Ask the docs reader a question. It will read relevant documents and return an answer based on their content.
|
|
63
|
+
|
|
64
|
+
**Parameters:**
|
|
65
|
+
|
|
66
|
+
| Name | Type | Required | Description |
|
|
67
|
+
|------|------|----------|-------------|
|
|
68
|
+
| `question` | `string` | ✓ | The question to ask |
|
|
69
|
+
|
|
70
|
+
**Returns:** `void`
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
## Getters
|
|
75
|
+
|
|
76
|
+
| Property | Type | Description |
|
|
77
|
+
|----------|------|-------------|
|
|
78
|
+
| `contentDb` | `ContentDb` | The ContentDb instance this reader draws from. |
|
|
79
|
+
| `isStarted` | `any` | Whether the reader has been started and is ready to answer questions. |
|
|
80
|
+
|
|
81
|
+
## Events (Zod v4 schema)
|
|
82
|
+
|
|
83
|
+
### start
|
|
84
|
+
|
|
85
|
+
Event emitted by DocsReader
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
### preview
|
|
90
|
+
|
|
91
|
+
Event emitted by DocsReader
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
### answered
|
|
96
|
+
|
|
97
|
+
Event emitted by DocsReader
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
## State (Zod v4 schema)
|
|
102
|
+
|
|
103
|
+
| Property | Type | Description |
|
|
104
|
+
|----------|------|-------------|
|
|
105
|
+
| `enabled` | `boolean` | Whether this feature is currently enabled |
|
|
106
|
+
| `started` | `boolean` | Whether the docs reader has been initialized |
|
|
107
|
+
| `docsLoaded` | `boolean` | Whether the content database has been loaded |
|
|
108
|
+
|
|
109
|
+
## Examples
|
|
110
|
+
|
|
111
|
+
**features.docsReader**
|
|
112
|
+
|
|
113
|
+
```ts
|
|
114
|
+
const reader = container.feature('docsReader', {
|
|
115
|
+
contentDb: myContentDb,
|
|
116
|
+
model: 'gpt-4.1'
|
|
117
|
+
})
|
|
118
|
+
await reader.start()
|
|
119
|
+
const answer = await reader.ask('How does authentication work?')
|
|
120
|
+
```
|
|
121
|
+
|
|
@@ -0,0 +1,318 @@
|
|
|
1
|
+
# OpenAICodex (features.openaiCodex)
|
|
2
|
+
|
|
3
|
+
No description provided
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
|
|
7
|
+
```ts
|
|
8
|
+
container.feature('openaiCodex', {
|
|
9
|
+
// Path to the codex CLI binary
|
|
10
|
+
codexPath,
|
|
11
|
+
// Default model to use for sessions
|
|
12
|
+
model,
|
|
13
|
+
// Default working directory for sessions
|
|
14
|
+
cwd,
|
|
15
|
+
// Sandbox policy for shell commands
|
|
16
|
+
sandbox,
|
|
17
|
+
// Approval mode for codex operations
|
|
18
|
+
approvalMode,
|
|
19
|
+
// Path to additional project doc to include
|
|
20
|
+
projectDoc,
|
|
21
|
+
// Disable automatic codex.md inclusion
|
|
22
|
+
noProjectDoc,
|
|
23
|
+
// Do not truncate stdout/stderr from command outputs
|
|
24
|
+
fullStdout,
|
|
25
|
+
})
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Options (Zod v4 schema)
|
|
29
|
+
|
|
30
|
+
| Property | Type | Description |
|
|
31
|
+
|----------|------|-------------|
|
|
32
|
+
| `codexPath` | `string` | Path to the codex CLI binary |
|
|
33
|
+
| `model` | `string` | Default model to use for sessions |
|
|
34
|
+
| `cwd` | `string` | Default working directory for sessions |
|
|
35
|
+
| `sandbox` | `string` | Sandbox policy for shell commands |
|
|
36
|
+
| `approvalMode` | `string` | Approval mode for codex operations |
|
|
37
|
+
| `projectDoc` | `string` | Path to additional project doc to include |
|
|
38
|
+
| `noProjectDoc` | `boolean` | Disable automatic codex.md inclusion |
|
|
39
|
+
| `fullStdout` | `boolean` | Do not truncate stdout/stderr from command outputs |
|
|
40
|
+
|
|
41
|
+
## Methods
|
|
42
|
+
|
|
43
|
+
### checkAvailability
|
|
44
|
+
|
|
45
|
+
Check if the Codex CLI is available and capture its version.
|
|
46
|
+
|
|
47
|
+
**Returns:** `Promise<boolean>`
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
### run
|
|
52
|
+
|
|
53
|
+
Run a prompt in a new Codex session. Spawns a subprocess, streams NDJSON events, and resolves when the session completes.
|
|
54
|
+
|
|
55
|
+
**Parameters:**
|
|
56
|
+
|
|
57
|
+
| Name | Type | Required | Description |
|
|
58
|
+
|------|------|----------|-------------|
|
|
59
|
+
| `prompt` | `string` | ✓ | The natural language instruction for the Codex agent |
|
|
60
|
+
| `options` | `CodexRunOptions` | | Optional overrides for model, cwd, sandbox policy, etc. |
|
|
61
|
+
|
|
62
|
+
`CodexRunOptions` properties:
|
|
63
|
+
|
|
64
|
+
| Property | Type | Description |
|
|
65
|
+
|----------|------|-------------|
|
|
66
|
+
| `model` | `string` | |
|
|
67
|
+
| `cwd` | `string` | |
|
|
68
|
+
| `sandbox` | `'read-only' | 'workspace-write' | 'danger-full-access'` | |
|
|
69
|
+
| `approvalMode` | `'suggest' | 'auto-edit' | 'full-auto'` | |
|
|
70
|
+
| `projectDoc` | `string` | |
|
|
71
|
+
| `noProjectDoc` | `boolean` | |
|
|
72
|
+
| `fullStdout` | `boolean` | |
|
|
73
|
+
| `images` | `string[]` | |
|
|
74
|
+
| `fullAuto` | `boolean` | |
|
|
75
|
+
| `resumeSessionId` | `string` | Resume a previous session by ID. |
|
|
76
|
+
| `resumeLast` | `boolean` | Resume the most recent session. |
|
|
77
|
+
| `dangerouslyAutoApproveEverything` | `boolean` | Skip all approvals and sandboxing. |
|
|
78
|
+
| `extraArgs` | `string[]` | Additional CLI flags. |
|
|
79
|
+
|
|
80
|
+
**Returns:** `Promise<CodexSession>`
|
|
81
|
+
|
|
82
|
+
```ts
|
|
83
|
+
const session = await codex.run('Fix the failing tests')
|
|
84
|
+
console.log(session.result)
|
|
85
|
+
|
|
86
|
+
const session = await codex.run('Refactor the auth module', {
|
|
87
|
+
model: 'o4-mini',
|
|
88
|
+
fullAuto: true,
|
|
89
|
+
cwd: '/path/to/project'
|
|
90
|
+
})
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
### start
|
|
96
|
+
|
|
97
|
+
Run a prompt without waiting for completion. Returns the session ID immediately so you can subscribe to events.
|
|
98
|
+
|
|
99
|
+
**Parameters:**
|
|
100
|
+
|
|
101
|
+
| Name | Type | Required | Description |
|
|
102
|
+
|------|------|----------|-------------|
|
|
103
|
+
| `prompt` | `string` | ✓ | The natural language instruction for the Codex agent |
|
|
104
|
+
| `options` | `CodexRunOptions` | | Optional overrides for model, cwd, sandbox policy, etc. |
|
|
105
|
+
|
|
106
|
+
`CodexRunOptions` properties:
|
|
107
|
+
|
|
108
|
+
| Property | Type | Description |
|
|
109
|
+
|----------|------|-------------|
|
|
110
|
+
| `model` | `string` | |
|
|
111
|
+
| `cwd` | `string` | |
|
|
112
|
+
| `sandbox` | `'read-only' | 'workspace-write' | 'danger-full-access'` | |
|
|
113
|
+
| `approvalMode` | `'suggest' | 'auto-edit' | 'full-auto'` | |
|
|
114
|
+
| `projectDoc` | `string` | |
|
|
115
|
+
| `noProjectDoc` | `boolean` | |
|
|
116
|
+
| `fullStdout` | `boolean` | |
|
|
117
|
+
| `images` | `string[]` | |
|
|
118
|
+
| `fullAuto` | `boolean` | |
|
|
119
|
+
| `resumeSessionId` | `string` | Resume a previous session by ID. |
|
|
120
|
+
| `resumeLast` | `boolean` | Resume the most recent session. |
|
|
121
|
+
| `dangerouslyAutoApproveEverything` | `boolean` | Skip all approvals and sandboxing. |
|
|
122
|
+
| `extraArgs` | `string[]` | Additional CLI flags. |
|
|
123
|
+
|
|
124
|
+
**Returns:** `string`
|
|
125
|
+
|
|
126
|
+
```ts
|
|
127
|
+
const sessionId = codex.start('Build a REST API for users')
|
|
128
|
+
|
|
129
|
+
codex.on('session:delta', ({ sessionId: sid, text }) => {
|
|
130
|
+
if (sid === sessionId) process.stdout.write(text)
|
|
131
|
+
})
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
### abort
|
|
137
|
+
|
|
138
|
+
Kill a running session's subprocess.
|
|
139
|
+
|
|
140
|
+
**Parameters:**
|
|
141
|
+
|
|
142
|
+
| Name | Type | Required | Description |
|
|
143
|
+
|------|------|----------|-------------|
|
|
144
|
+
| `sessionId` | `string` | ✓ | The session ID to abort |
|
|
145
|
+
|
|
146
|
+
**Returns:** `void`
|
|
147
|
+
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
### getSession
|
|
151
|
+
|
|
152
|
+
Retrieve the current state of a session by its ID.
|
|
153
|
+
|
|
154
|
+
**Parameters:**
|
|
155
|
+
|
|
156
|
+
| Name | Type | Required | Description |
|
|
157
|
+
|------|------|----------|-------------|
|
|
158
|
+
| `sessionId` | `string` | ✓ | The session ID to look up |
|
|
159
|
+
|
|
160
|
+
**Returns:** `CodexSession | undefined`
|
|
161
|
+
|
|
162
|
+
|
|
163
|
+
|
|
164
|
+
### waitForSession
|
|
165
|
+
|
|
166
|
+
Wait for a running session to complete or error. Resolves immediately if the session is already in a terminal state.
|
|
167
|
+
|
|
168
|
+
**Parameters:**
|
|
169
|
+
|
|
170
|
+
| Name | Type | Required | Description |
|
|
171
|
+
|------|------|----------|-------------|
|
|
172
|
+
| `sessionId` | `string` | ✓ | The session ID to wait for |
|
|
173
|
+
|
|
174
|
+
**Returns:** `Promise<CodexSession>`
|
|
175
|
+
|
|
176
|
+
|
|
177
|
+
|
|
178
|
+
### enable
|
|
179
|
+
|
|
180
|
+
Enable the feature. Delegates to the base Feature enable() lifecycle.
|
|
181
|
+
|
|
182
|
+
**Parameters:**
|
|
183
|
+
|
|
184
|
+
| Name | Type | Required | Description |
|
|
185
|
+
|------|------|----------|-------------|
|
|
186
|
+
| `options` | `any` | | Options to merge into the feature configuration |
|
|
187
|
+
|
|
188
|
+
**Returns:** `Promise<this>`
|
|
189
|
+
|
|
190
|
+
|
|
191
|
+
|
|
192
|
+
## Getters
|
|
193
|
+
|
|
194
|
+
| Property | Type | Description |
|
|
195
|
+
|----------|------|-------------|
|
|
196
|
+
| `codexPath` | `string` | |
|
|
197
|
+
|
|
198
|
+
## Events (Zod v4 schema)
|
|
199
|
+
|
|
200
|
+
### session:event
|
|
201
|
+
|
|
202
|
+
Event emitted by OpenAICodex
|
|
203
|
+
|
|
204
|
+
|
|
205
|
+
|
|
206
|
+
### session:delta
|
|
207
|
+
|
|
208
|
+
Event emitted by OpenAICodex
|
|
209
|
+
|
|
210
|
+
|
|
211
|
+
|
|
212
|
+
### session:message
|
|
213
|
+
|
|
214
|
+
Event emitted by OpenAICodex
|
|
215
|
+
|
|
216
|
+
|
|
217
|
+
|
|
218
|
+
### session:exec
|
|
219
|
+
|
|
220
|
+
Event emitted by OpenAICodex
|
|
221
|
+
|
|
222
|
+
|
|
223
|
+
|
|
224
|
+
### session:reasoning
|
|
225
|
+
|
|
226
|
+
Event emitted by OpenAICodex
|
|
227
|
+
|
|
228
|
+
|
|
229
|
+
|
|
230
|
+
### session:exec-start
|
|
231
|
+
|
|
232
|
+
Event emitted by OpenAICodex
|
|
233
|
+
|
|
234
|
+
|
|
235
|
+
|
|
236
|
+
### session:start
|
|
237
|
+
|
|
238
|
+
Event emitted by OpenAICodex
|
|
239
|
+
|
|
240
|
+
|
|
241
|
+
|
|
242
|
+
### session:error
|
|
243
|
+
|
|
244
|
+
Event emitted by OpenAICodex
|
|
245
|
+
|
|
246
|
+
|
|
247
|
+
|
|
248
|
+
### session:parse-error
|
|
249
|
+
|
|
250
|
+
Event emitted by OpenAICodex
|
|
251
|
+
|
|
252
|
+
|
|
253
|
+
|
|
254
|
+
### session:result
|
|
255
|
+
|
|
256
|
+
Event emitted by OpenAICodex
|
|
257
|
+
|
|
258
|
+
|
|
259
|
+
|
|
260
|
+
### session:abort
|
|
261
|
+
|
|
262
|
+
Event emitted by OpenAICodex
|
|
263
|
+
|
|
264
|
+
|
|
265
|
+
|
|
266
|
+
## State (Zod v4 schema)
|
|
267
|
+
|
|
268
|
+
| Property | Type | Description |
|
|
269
|
+
|----------|------|-------------|
|
|
270
|
+
| `enabled` | `boolean` | Whether this feature is currently enabled |
|
|
271
|
+
| `sessions` | `object` | Map of session IDs to CodexSession objects |
|
|
272
|
+
| `activeSessions` | `array` | List of currently running session IDs |
|
|
273
|
+
| `codexAvailable` | `boolean` | Whether the codex CLI binary is available |
|
|
274
|
+
| `codexVersion` | `string` | Detected codex CLI version string |
|
|
275
|
+
|
|
276
|
+
## Examples
|
|
277
|
+
|
|
278
|
+
**features.openaiCodex**
|
|
279
|
+
|
|
280
|
+
```ts
|
|
281
|
+
const codex = container.feature('openaiCodex')
|
|
282
|
+
|
|
283
|
+
// Listen for events
|
|
284
|
+
codex.on('session:message', ({ sessionId, message }) => console.log(message))
|
|
285
|
+
codex.on('session:patch', ({ sessionId, patch }) => console.log('File changed:', patch.path))
|
|
286
|
+
|
|
287
|
+
// Run a prompt
|
|
288
|
+
const session = await codex.run('Fix the failing tests in src/')
|
|
289
|
+
console.log(session.result)
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
|
|
293
|
+
|
|
294
|
+
**run**
|
|
295
|
+
|
|
296
|
+
```ts
|
|
297
|
+
const session = await codex.run('Fix the failing tests')
|
|
298
|
+
console.log(session.result)
|
|
299
|
+
|
|
300
|
+
const session = await codex.run('Refactor the auth module', {
|
|
301
|
+
model: 'o4-mini',
|
|
302
|
+
fullAuto: true,
|
|
303
|
+
cwd: '/path/to/project'
|
|
304
|
+
})
|
|
305
|
+
```
|
|
306
|
+
|
|
307
|
+
|
|
308
|
+
|
|
309
|
+
**start**
|
|
310
|
+
|
|
311
|
+
```ts
|
|
312
|
+
const sessionId = codex.start('Build a REST API for users')
|
|
313
|
+
|
|
314
|
+
codex.on('session:delta', ({ sessionId: sid, text }) => {
|
|
315
|
+
if (sid === sessionId) process.stdout.write(text)
|
|
316
|
+
})
|
|
317
|
+
```
|
|
318
|
+
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
# OpenAPI (features.openapi)
|
|
2
|
+
|
|
3
|
+
The OpenAPI feature loads an OpenAPI/Swagger spec from a URL and provides inspection and conversion utilities. Works in both browser and node environments since it uses fetch.
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
|
|
7
|
+
```ts
|
|
8
|
+
container.feature('openapi')
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Methods
|
|
12
|
+
|
|
13
|
+
### load
|
|
14
|
+
|
|
15
|
+
Fetches and parses the OpenAPI spec from the configured URL. Populates `endpoints`, updates state with spec metadata.
|
|
16
|
+
|
|
17
|
+
**Returns:** `Promise<this>`
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
### endpoint
|
|
22
|
+
|
|
23
|
+
Get a single endpoint by its friendly name or operationId.
|
|
24
|
+
|
|
25
|
+
**Parameters:**
|
|
26
|
+
|
|
27
|
+
| Name | Type | Required | Description |
|
|
28
|
+
|------|------|----------|-------------|
|
|
29
|
+
| `name` | `string` | ✓ | The friendly name or operationId to look up |
|
|
30
|
+
|
|
31
|
+
**Returns:** `EndpointInfo | undefined`
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
### toTools
|
|
36
|
+
|
|
37
|
+
Convert all endpoints into OpenAI-compatible tool definitions.
|
|
38
|
+
|
|
39
|
+
**Parameters:**
|
|
40
|
+
|
|
41
|
+
| Name | Type | Required | Description |
|
|
42
|
+
|------|------|----------|-------------|
|
|
43
|
+
| `filter` | `(ep: EndpointInfo) => boolean` | | Optional predicate to select which endpoints to include |
|
|
44
|
+
|
|
45
|
+
**Returns:** `OpenAIToolDef[]`
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
### toTool
|
|
50
|
+
|
|
51
|
+
Convert a single endpoint (by name) to an OpenAI-compatible tool definition.
|
|
52
|
+
|
|
53
|
+
**Parameters:**
|
|
54
|
+
|
|
55
|
+
| Name | Type | Required | Description |
|
|
56
|
+
|------|------|----------|-------------|
|
|
57
|
+
| `name` | `string` | ✓ | The endpoint friendly name or operationId |
|
|
58
|
+
|
|
59
|
+
**Returns:** `OpenAIToolDef | undefined`
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
### toFunctions
|
|
64
|
+
|
|
65
|
+
Convert all endpoints into OpenAI-compatible function definitions.
|
|
66
|
+
|
|
67
|
+
**Parameters:**
|
|
68
|
+
|
|
69
|
+
| Name | Type | Required | Description |
|
|
70
|
+
|------|------|----------|-------------|
|
|
71
|
+
| `filter` | `(ep: EndpointInfo) => boolean` | | Optional predicate to select which endpoints to include |
|
|
72
|
+
|
|
73
|
+
**Returns:** `OpenAIFunctionDef[]`
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
### toFunction
|
|
78
|
+
|
|
79
|
+
Convert a single endpoint (by name) to an OpenAI function definition.
|
|
80
|
+
|
|
81
|
+
**Parameters:**
|
|
82
|
+
|
|
83
|
+
| Name | Type | Required | Description |
|
|
84
|
+
|------|------|----------|-------------|
|
|
85
|
+
| `name` | `string` | ✓ | The endpoint friendly name or operationId |
|
|
86
|
+
|
|
87
|
+
**Returns:** `OpenAIFunctionDef | undefined`
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
### toJSON
|
|
92
|
+
|
|
93
|
+
Return a compact JSON summary of all endpoints, useful for logging or REPL inspection.
|
|
94
|
+
|
|
95
|
+
**Returns:** `void`
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
## Getters
|
|
100
|
+
|
|
101
|
+
| Property | Type | Description |
|
|
102
|
+
|----------|------|-------------|
|
|
103
|
+
| `serverUrl` | `string` | The base server URL derived from options, normalizing the openapi.json suffix |
|
|
104
|
+
| `specUrl` | `string` | The URL that will be fetched for the spec document |
|
|
105
|
+
| `spec` | `any` | The raw spec object. Null before load() is called. |
|
|
106
|
+
| `endpoints` | `EndpointInfo[]` | All parsed endpoints as an array |
|
|
107
|
+
| `endpointNames` | `string[]` | All endpoint friendly names |
|
|
108
|
+
| `endpointsByTag` | `Record<string, EndpointInfo[]>` | Map of endpoints grouped by tag |
|
|
109
|
+
|
|
110
|
+
## Events (Zod v4 schema)
|
|
111
|
+
|
|
112
|
+
### loaded
|
|
113
|
+
|
|
114
|
+
Event emitted by OpenAPI
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
## Examples
|
|
119
|
+
|
|
120
|
+
**features.openapi**
|
|
121
|
+
|
|
122
|
+
```ts
|
|
123
|
+
const api = container.feature('openapi', { url: 'https://petstore.swagger.io/v2' })
|
|
124
|
+
await api.load()
|
|
125
|
+
|
|
126
|
+
// Inspect all endpoints
|
|
127
|
+
api.endpoints
|
|
128
|
+
|
|
129
|
+
// Get a single endpoint by its friendly name
|
|
130
|
+
api.endpoint('getPetById')
|
|
131
|
+
|
|
132
|
+
// Convert to OpenAI tool definitions
|
|
133
|
+
api.toTools()
|
|
134
|
+
|
|
135
|
+
// Convert a single endpoint to a function definition
|
|
136
|
+
api.toFunction('getPetById')
|
|
137
|
+
```
|
|
138
|
+
|