@soederpop/luca 0.1.1 → 0.1.3
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 +2 -0
- package/assistants/codingAssistant/hooks.ts +3 -0
- package/assistants/inkbot/CORE.md +69 -0
- package/assistants/inkbot/hooks.ts +14 -0
- package/assistants/inkbot/tools.ts +47 -0
- package/commands/inkbot.ts +353 -0
- package/dist/agi/container.server.d.ts +63 -0
- package/dist/agi/container.server.d.ts.map +1 -0
- package/dist/agi/endpoints/ask.d.ts +20 -0
- package/dist/agi/endpoints/ask.d.ts.map +1 -0
- package/dist/agi/endpoints/conversations/[id].d.ts +27 -0
- package/dist/agi/endpoints/conversations/[id].d.ts.map +1 -0
- package/dist/agi/endpoints/conversations.d.ts +18 -0
- package/dist/agi/endpoints/conversations.d.ts.map +1 -0
- package/dist/agi/endpoints/experts.d.ts +8 -0
- package/dist/agi/endpoints/experts.d.ts.map +1 -0
- package/dist/agi/feature.d.ts +9 -0
- package/dist/agi/feature.d.ts.map +1 -0
- package/dist/agi/features/assistant.d.ts +509 -0
- package/dist/agi/features/assistant.d.ts.map +1 -0
- package/dist/agi/features/assistants-manager.d.ts +236 -0
- package/dist/agi/features/assistants-manager.d.ts.map +1 -0
- package/dist/agi/features/autonomous-assistant.d.ts +281 -0
- package/dist/agi/features/autonomous-assistant.d.ts.map +1 -0
- package/dist/agi/features/browser-use.d.ts +479 -0
- package/dist/agi/features/browser-use.d.ts.map +1 -0
- package/dist/agi/features/claude-code.d.ts +824 -0
- package/dist/agi/features/claude-code.d.ts.map +1 -0
- package/dist/agi/features/conversation-history.d.ts +245 -0
- package/dist/agi/features/conversation-history.d.ts.map +1 -0
- package/dist/agi/features/conversation.d.ts +464 -0
- package/dist/agi/features/conversation.d.ts.map +1 -0
- package/dist/agi/features/docs-reader.d.ts +72 -0
- package/dist/agi/features/docs-reader.d.ts.map +1 -0
- package/dist/agi/features/file-tools.d.ts +110 -0
- package/dist/agi/features/file-tools.d.ts.map +1 -0
- package/dist/agi/features/luca-coder.d.ts +323 -0
- package/dist/agi/features/luca-coder.d.ts.map +1 -0
- package/dist/agi/features/openai-codex.d.ts +381 -0
- package/dist/agi/features/openai-codex.d.ts.map +1 -0
- package/dist/agi/features/openapi.d.ts +200 -0
- package/dist/agi/features/openapi.d.ts.map +1 -0
- package/dist/agi/features/skills-library.d.ts +167 -0
- package/dist/agi/features/skills-library.d.ts.map +1 -0
- package/dist/agi/index.d.ts +5 -0
- package/dist/agi/index.d.ts.map +1 -0
- package/dist/agi/lib/interceptor-chain.d.ts +44 -0
- package/dist/agi/lib/interceptor-chain.d.ts.map +1 -0
- package/dist/agi/lib/token-counter.d.ts +13 -0
- package/dist/agi/lib/token-counter.d.ts.map +1 -0
- package/dist/bootstrap/generated.d.ts +5 -0
- package/dist/bootstrap/generated.d.ts.map +1 -0
- package/dist/browser.d.ts +12 -0
- package/dist/browser.d.ts.map +1 -0
- package/dist/bus.d.ts +29 -0
- package/dist/bus.d.ts.map +1 -0
- package/dist/cli/build-info.d.ts +4 -0
- package/dist/cli/build-info.d.ts.map +1 -0
- package/dist/cli/cli.d.ts +3 -0
- package/dist/cli/cli.d.ts.map +1 -0
- package/dist/client.d.ts +60 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/clients/civitai/index.d.ts +472 -0
- package/dist/clients/civitai/index.d.ts.map +1 -0
- package/dist/clients/client-template.d.ts +30 -0
- package/dist/clients/client-template.d.ts.map +1 -0
- package/dist/clients/comfyui/index.d.ts +281 -0
- package/dist/clients/comfyui/index.d.ts.map +1 -0
- package/dist/clients/elevenlabs/index.d.ts +197 -0
- package/dist/clients/elevenlabs/index.d.ts.map +1 -0
- package/dist/clients/graph.d.ts +64 -0
- package/dist/clients/graph.d.ts.map +1 -0
- package/dist/clients/openai/index.d.ts +247 -0
- package/dist/clients/openai/index.d.ts.map +1 -0
- package/dist/clients/rest.d.ts +92 -0
- package/dist/clients/rest.d.ts.map +1 -0
- package/dist/clients/supabase/index.d.ts +176 -0
- package/dist/clients/supabase/index.d.ts.map +1 -0
- package/dist/clients/websocket.d.ts +127 -0
- package/dist/clients/websocket.d.ts.map +1 -0
- package/dist/command.d.ts +163 -0
- package/dist/command.d.ts.map +1 -0
- package/dist/commands/bootstrap.d.ts +20 -0
- package/dist/commands/bootstrap.d.ts.map +1 -0
- package/dist/commands/chat.d.ts +37 -0
- package/dist/commands/chat.d.ts.map +1 -0
- package/dist/commands/code.d.ts +28 -0
- package/dist/commands/code.d.ts.map +1 -0
- package/dist/commands/console.d.ts +22 -0
- package/dist/commands/console.d.ts.map +1 -0
- package/dist/commands/describe.d.ts +50 -0
- package/dist/commands/describe.d.ts.map +1 -0
- package/dist/commands/eval.d.ts +23 -0
- package/dist/commands/eval.d.ts.map +1 -0
- package/dist/commands/help.d.ts +25 -0
- package/dist/commands/help.d.ts.map +1 -0
- package/dist/commands/index.d.ts +18 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/introspect.d.ts +24 -0
- package/dist/commands/introspect.d.ts.map +1 -0
- package/dist/commands/mcp.d.ts +35 -0
- package/dist/commands/mcp.d.ts.map +1 -0
- package/dist/commands/prompt.d.ts +38 -0
- package/dist/commands/prompt.d.ts.map +1 -0
- package/dist/commands/run.d.ts +24 -0
- package/dist/commands/run.d.ts.map +1 -0
- package/dist/commands/sandbox-mcp.d.ts +34 -0
- package/dist/commands/sandbox-mcp.d.ts.map +1 -0
- package/dist/commands/save-api-docs.d.ts +21 -0
- package/dist/commands/save-api-docs.d.ts.map +1 -0
- package/dist/commands/scaffold.d.ts +24 -0
- package/dist/commands/scaffold.d.ts.map +1 -0
- package/dist/commands/select.d.ts +22 -0
- package/dist/commands/select.d.ts.map +1 -0
- package/dist/commands/serve.d.ts +29 -0
- package/dist/commands/serve.d.ts.map +1 -0
- package/dist/container-describer.d.ts +144 -0
- package/dist/container-describer.d.ts.map +1 -0
- package/dist/container.d.ts +451 -0
- package/dist/container.d.ts.map +1 -0
- package/dist/endpoint.d.ts +113 -0
- package/dist/endpoint.d.ts.map +1 -0
- package/dist/feature.d.ts +47 -0
- package/dist/feature.d.ts.map +1 -0
- package/dist/graft.d.ts +29 -0
- package/dist/graft.d.ts.map +1 -0
- package/dist/hash-object.d.ts +8 -0
- package/dist/hash-object.d.ts.map +1 -0
- package/dist/helper.d.ts +209 -0
- package/dist/helper.d.ts.map +1 -0
- package/dist/introspection/generated.node.d.ts +44623 -0
- package/dist/introspection/generated.node.d.ts.map +1 -0
- package/dist/introspection/generated.web.d.ts +1412 -0
- package/dist/introspection/generated.web.d.ts.map +1 -0
- package/dist/introspection/index.d.ts +156 -0
- package/dist/introspection/index.d.ts.map +1 -0
- package/dist/introspection/scan.d.ts +147 -0
- package/dist/introspection/scan.d.ts.map +1 -0
- package/dist/node/container.d.ts +256 -0
- package/dist/node/container.d.ts.map +1 -0
- package/dist/node/feature.d.ts +9 -0
- package/dist/node/feature.d.ts.map +1 -0
- package/dist/node/features/container-link.d.ts +213 -0
- package/dist/node/features/container-link.d.ts.map +1 -0
- package/dist/node/features/content-db.d.ts +354 -0
- package/dist/node/features/content-db.d.ts.map +1 -0
- package/dist/node/features/disk-cache.d.ts +236 -0
- package/dist/node/features/disk-cache.d.ts.map +1 -0
- package/dist/node/features/dns.d.ts +511 -0
- package/dist/node/features/dns.d.ts.map +1 -0
- package/dist/node/features/docker.d.ts +485 -0
- package/dist/node/features/docker.d.ts.map +1 -0
- package/dist/node/features/downloader.d.ts +73 -0
- package/dist/node/features/downloader.d.ts.map +1 -0
- package/dist/node/features/figlet-fonts.d.ts +4 -0
- package/dist/node/features/figlet-fonts.d.ts.map +1 -0
- package/dist/node/features/file-manager.d.ts +177 -0
- package/dist/node/features/file-manager.d.ts.map +1 -0
- package/dist/node/features/fs.d.ts +635 -0
- package/dist/node/features/fs.d.ts.map +1 -0
- package/dist/node/features/git.d.ts +329 -0
- package/dist/node/features/git.d.ts.map +1 -0
- package/dist/node/features/google-auth.d.ts +200 -0
- package/dist/node/features/google-auth.d.ts.map +1 -0
- package/dist/node/features/google-calendar.d.ts +194 -0
- package/dist/node/features/google-calendar.d.ts.map +1 -0
- package/dist/node/features/google-docs.d.ts +138 -0
- package/dist/node/features/google-docs.d.ts.map +1 -0
- package/dist/node/features/google-drive.d.ts +202 -0
- package/dist/node/features/google-drive.d.ts.map +1 -0
- package/dist/node/features/google-mail.d.ts +221 -0
- package/dist/node/features/google-mail.d.ts.map +1 -0
- package/dist/node/features/google-sheets.d.ts +157 -0
- package/dist/node/features/google-sheets.d.ts.map +1 -0
- package/dist/node/features/grep.d.ts +207 -0
- package/dist/node/features/grep.d.ts.map +1 -0
- package/dist/node/features/helpers.d.ts +236 -0
- package/dist/node/features/helpers.d.ts.map +1 -0
- package/dist/node/features/ink.d.ts +332 -0
- package/dist/node/features/ink.d.ts.map +1 -0
- package/dist/node/features/ipc-socket.d.ts +298 -0
- package/dist/node/features/ipc-socket.d.ts.map +1 -0
- package/dist/node/features/json-tree.d.ts +140 -0
- package/dist/node/features/json-tree.d.ts.map +1 -0
- package/dist/node/features/networking.d.ts +373 -0
- package/dist/node/features/networking.d.ts.map +1 -0
- package/dist/node/features/nlp.d.ts +125 -0
- package/dist/node/features/nlp.d.ts.map +1 -0
- package/dist/node/features/opener.d.ts +93 -0
- package/dist/node/features/opener.d.ts.map +1 -0
- package/dist/node/features/os.d.ts +168 -0
- package/dist/node/features/os.d.ts.map +1 -0
- package/dist/node/features/package-finder.d.ts +419 -0
- package/dist/node/features/package-finder.d.ts.map +1 -0
- package/dist/node/features/postgres.d.ts +173 -0
- package/dist/node/features/postgres.d.ts.map +1 -0
- package/dist/node/features/proc.d.ts +285 -0
- package/dist/node/features/proc.d.ts.map +1 -0
- package/dist/node/features/process-manager.d.ts +427 -0
- package/dist/node/features/process-manager.d.ts.map +1 -0
- package/dist/node/features/python.d.ts +477 -0
- package/dist/node/features/python.d.ts.map +1 -0
- package/dist/node/features/redis.d.ts +247 -0
- package/dist/node/features/redis.d.ts.map +1 -0
- package/dist/node/features/repl.d.ts +84 -0
- package/dist/node/features/repl.d.ts.map +1 -0
- package/dist/node/features/runpod.d.ts +527 -0
- package/dist/node/features/runpod.d.ts.map +1 -0
- package/dist/node/features/secure-shell.d.ts +145 -0
- package/dist/node/features/secure-shell.d.ts.map +1 -0
- package/dist/node/features/semantic-search.d.ts +207 -0
- package/dist/node/features/semantic-search.d.ts.map +1 -0
- package/dist/node/features/sqlite.d.ts +180 -0
- package/dist/node/features/sqlite.d.ts.map +1 -0
- package/dist/node/features/telegram.d.ts +173 -0
- package/dist/node/features/telegram.d.ts.map +1 -0
- package/dist/node/features/transpiler.d.ts +51 -0
- package/dist/node/features/transpiler.d.ts.map +1 -0
- package/dist/node/features/tts.d.ts +108 -0
- package/dist/node/features/tts.d.ts.map +1 -0
- package/dist/node/features/ui.d.ts +562 -0
- package/dist/node/features/ui.d.ts.map +1 -0
- package/dist/node/features/vault.d.ts +90 -0
- package/dist/node/features/vault.d.ts.map +1 -0
- package/dist/node/features/vm.d.ts +285 -0
- package/dist/node/features/vm.d.ts.map +1 -0
- package/dist/node/features/yaml-tree.d.ts +118 -0
- package/dist/node/features/yaml-tree.d.ts.map +1 -0
- package/dist/node/features/yaml.d.ts +127 -0
- package/dist/node/features/yaml.d.ts.map +1 -0
- package/dist/node.d.ts +67 -0
- package/dist/node.d.ts.map +1 -0
- package/dist/python/generated.d.ts +2 -0
- package/dist/python/generated.d.ts.map +1 -0
- package/dist/react/index.d.ts +36 -0
- package/dist/react/index.d.ts.map +1 -0
- package/dist/registry.d.ts +97 -0
- package/dist/registry.d.ts.map +1 -0
- package/dist/scaffolds/generated.d.ts +13 -0
- package/dist/scaffolds/generated.d.ts.map +1 -0
- package/dist/scaffolds/template.d.ts +11 -0
- package/dist/scaffolds/template.d.ts.map +1 -0
- package/dist/schemas/base.d.ts +254 -0
- package/dist/schemas/base.d.ts.map +1 -0
- package/dist/selector.d.ts +130 -0
- package/dist/selector.d.ts.map +1 -0
- package/dist/server.d.ts +89 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/servers/express.d.ts +104 -0
- package/dist/servers/express.d.ts.map +1 -0
- package/dist/servers/mcp.d.ts +201 -0
- package/dist/servers/mcp.d.ts.map +1 -0
- package/dist/servers/socket.d.ts +121 -0
- package/dist/servers/socket.d.ts.map +1 -0
- package/dist/state.d.ts +24 -0
- package/dist/state.d.ts.map +1 -0
- package/dist/web/clients/socket.d.ts +37 -0
- package/dist/web/clients/socket.d.ts.map +1 -0
- package/dist/web/container.d.ts +55 -0
- package/dist/web/container.d.ts.map +1 -0
- package/dist/web/extension.d.ts +4 -0
- package/dist/web/extension.d.ts.map +1 -0
- package/dist/web/feature.d.ts +8 -0
- package/dist/web/feature.d.ts.map +1 -0
- package/dist/web/features/asset-loader.d.ts +35 -0
- package/dist/web/features/asset-loader.d.ts.map +1 -0
- package/dist/web/features/container-link.d.ts +167 -0
- package/dist/web/features/container-link.d.ts.map +1 -0
- package/dist/web/features/esbuild.d.ts +51 -0
- package/dist/web/features/esbuild.d.ts.map +1 -0
- package/dist/web/features/helpers.d.ts +140 -0
- package/dist/web/features/helpers.d.ts.map +1 -0
- package/dist/web/features/network.d.ts +69 -0
- package/dist/web/features/network.d.ts.map +1 -0
- package/dist/web/features/speech.d.ts +71 -0
- package/dist/web/features/speech.d.ts.map +1 -0
- package/dist/web/features/vault.d.ts +62 -0
- package/dist/web/features/vault.d.ts.map +1 -0
- package/dist/web/features/vm.d.ts +48 -0
- package/dist/web/features/vm.d.ts.map +1 -0
- package/dist/web/features/voice-recognition.d.ts +96 -0
- package/dist/web/features/voice-recognition.d.ts.map +1 -0
- package/dist/web/shims/isomorphic-vm.d.ts +22 -0
- package/dist/web/shims/isomorphic-vm.d.ts.map +1 -0
- package/docs/apis/features/agi/assistant.md +1 -0
- package/docs/apis/features/agi/assistants-manager.md +62 -2
- package/docs/apis/features/agi/auto-assistant.md +11 -109
- package/docs/apis/features/agi/claude-code.md +138 -0
- package/docs/apis/features/agi/conversation.md +60 -31
- package/docs/apis/features/agi/luca-coder.md +407 -0
- package/docs/apis/features/agi/openapi.md +2 -2
- package/docs/apis/features/agi/skills-library.md +12 -0
- package/docs/apis/features/node/python.md +81 -11
- package/docs/apis/features/node/transpiler.md +74 -0
- package/docs/apis/features/web/esbuild.md +0 -6
- package/docs/apis/servers/mcp.md +2 -2
- package/docs/examples/entity.md +124 -0
- package/package.json +73 -21
- package/scripts/test-assistant-hooks.ts +13 -0
- package/src/agi/feature.ts +13 -0
- package/src/agi/features/assistant.ts +36 -25
- package/src/agi/features/assistants-manager.ts +70 -5
- package/src/agi/features/autonomous-assistant.ts +1 -5
- package/src/agi/features/browser-use.ts +2 -2
- package/src/agi/features/claude-code.ts +165 -1
- package/src/agi/features/conversation-history.ts +2 -6
- package/src/agi/features/conversation.ts +95 -3
- package/src/agi/features/docs-reader.ts +2 -1
- package/src/agi/features/file-tools.ts +2 -2
- package/src/agi/features/luca-coder.ts +1 -5
- package/src/agi/features/openai-codex.ts +1 -1
- package/src/agi/features/openapi.ts +3 -3
- package/src/agi/features/skills-library.ts +90 -2
- package/src/agi/lib/interceptor-chain.ts +10 -0
- package/src/agi/lib/token-counter.ts +1 -1
- package/src/bootstrap/generated.ts +126 -1
- package/src/bus.ts +27 -5
- package/src/cli/build-info.ts +2 -2
- package/src/client.ts +2 -2
- package/src/clients/elevenlabs/index.ts +5 -0
- package/src/commands/bootstrap.ts +2 -1
- package/src/commands/chat.ts +1 -0
- package/src/commands/code.ts +4 -2
- package/src/commands/prompt.ts +34 -34
- package/src/commands/sandbox-mcp.ts +69 -163
- package/src/commands/save-api-docs.ts +10 -8
- package/src/commands/select.ts +8 -3
- package/src/container-describer.ts +70 -84
- package/src/container.ts +93 -3
- package/src/endpoint.ts +1 -1
- package/src/entity.ts +173 -0
- package/src/feature.ts +3 -3
- package/src/helper.ts +8 -4
- package/src/introspection/generated.agi.ts +1403 -929
- package/src/introspection/generated.node.ts +127 -33
- package/src/introspection/generated.web.ts +95 -3
- package/src/introspection/scan.ts +1 -1
- package/src/node/container.ts +1 -1
- package/src/node/features/content-db.ts +3 -3
- package/src/node/features/file-manager.ts +10 -9
- package/src/node/features/git.ts +5 -5
- package/src/node/features/helpers.ts +1 -1
- package/src/node/features/json-tree.ts +1 -1
- package/src/node/features/os.ts +3 -3
- package/src/node/features/package-finder.ts +1 -1
- package/src/node/features/process-manager.ts +1 -1
- package/src/node/features/python.ts +3 -3
- package/src/node/features/redis.ts +1 -1
- package/src/node/features/repl.ts +2 -2
- package/src/node/features/transpiler.ts +34 -9
- package/src/node/features/ui.ts +1 -1
- package/src/node/features/vm.ts +6 -5
- package/src/node/features/yaml-tree.ts +1 -1
- package/src/node.ts +1 -0
- package/src/python/generated.ts +1 -1
- package/src/scaffolds/generated.ts +1 -1
- package/src/selector.ts +74 -4
- package/src/server.ts +2 -2
- package/src/servers/mcp.ts +6 -6
- package/src/web/features/helpers.ts +1 -1
- package/src/web/features/network.ts +1 -0
- package/test/assistant.test.ts +72 -0
- package/test/conversation.test.ts +220 -0
- package/test/vm-loadmodule.test.ts +213 -0
- package/tsconfig.build.json +12 -0
- package/tsconfig.json +1 -1
- package/scripts/examples/telegram-ink-ui.ts +0 -302
- package/scripts/examples/using-openai-codex.ts +0 -23
- package/scripts/examples/vm-loading-esm-modules.ts +0 -16
|
@@ -0,0 +1,381 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { Feature } from '../feature.js';
|
|
3
|
+
declare module '@soederpop/luca/feature' {
|
|
4
|
+
interface AvailableFeatures {
|
|
5
|
+
openaiCodex: typeof OpenAICodex;
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
export interface CodexItem {
|
|
9
|
+
id: string;
|
|
10
|
+
type: 'agent_message' | 'reasoning' | 'command_execution' | string;
|
|
11
|
+
text?: string;
|
|
12
|
+
command?: string;
|
|
13
|
+
aggregated_output?: string;
|
|
14
|
+
exit_code?: number | null;
|
|
15
|
+
status?: 'in_progress' | 'completed' | string;
|
|
16
|
+
}
|
|
17
|
+
export interface CodexItemEvent {
|
|
18
|
+
type: 'item.completed' | 'item.started';
|
|
19
|
+
item: CodexItem;
|
|
20
|
+
}
|
|
21
|
+
export interface CodexTurnEvent {
|
|
22
|
+
type: 'turn.completed' | 'turn.started';
|
|
23
|
+
usage?: {
|
|
24
|
+
input_tokens?: number;
|
|
25
|
+
cached_input_tokens?: number;
|
|
26
|
+
output_tokens?: number;
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
export interface CodexThreadEvent {
|
|
30
|
+
type: 'thread.started';
|
|
31
|
+
thread_id: string;
|
|
32
|
+
}
|
|
33
|
+
/** Normalized message emitted via session:message for downstream consumers. */
|
|
34
|
+
export interface CodexMessageEvent {
|
|
35
|
+
type: 'message';
|
|
36
|
+
role: 'assistant' | 'system';
|
|
37
|
+
content: Array<{
|
|
38
|
+
type: 'text';
|
|
39
|
+
text: string;
|
|
40
|
+
} | {
|
|
41
|
+
type: string;
|
|
42
|
+
[key: string]: any;
|
|
43
|
+
}>;
|
|
44
|
+
}
|
|
45
|
+
export interface CodexExecEvent {
|
|
46
|
+
type: 'exec';
|
|
47
|
+
command: string;
|
|
48
|
+
cwd?: string;
|
|
49
|
+
exit_code?: number | null;
|
|
50
|
+
stdout?: string;
|
|
51
|
+
stderr?: string;
|
|
52
|
+
}
|
|
53
|
+
export type CodexEvent = CodexItemEvent | CodexTurnEvent | CodexThreadEvent | {
|
|
54
|
+
type: string;
|
|
55
|
+
[key: string]: any;
|
|
56
|
+
};
|
|
57
|
+
export interface CodexSession {
|
|
58
|
+
id: string;
|
|
59
|
+
status: 'idle' | 'running' | 'completed' | 'error';
|
|
60
|
+
prompt: string;
|
|
61
|
+
result?: string;
|
|
62
|
+
error?: string;
|
|
63
|
+
turns: number;
|
|
64
|
+
messages: CodexMessageEvent[];
|
|
65
|
+
executions: CodexExecEvent[];
|
|
66
|
+
items: CodexItem[];
|
|
67
|
+
process?: any;
|
|
68
|
+
threadId?: string;
|
|
69
|
+
usage?: {
|
|
70
|
+
input_tokens?: number;
|
|
71
|
+
output_tokens?: number;
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
export declare const OpenAICodexStateSchema: z.ZodObject<{
|
|
75
|
+
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
76
|
+
sessions: z.ZodRecord<z.ZodString, z.ZodAny>;
|
|
77
|
+
activeSessions: z.ZodArray<z.ZodString>;
|
|
78
|
+
codexAvailable: z.ZodBoolean;
|
|
79
|
+
codexVersion: z.ZodOptional<z.ZodString>;
|
|
80
|
+
}, z.core.$loose>;
|
|
81
|
+
export declare const OpenAICodexOptionsSchema: z.ZodObject<{
|
|
82
|
+
name: z.ZodOptional<z.ZodString>;
|
|
83
|
+
_cacheKey: z.ZodOptional<z.ZodString>;
|
|
84
|
+
cached: z.ZodOptional<z.ZodBoolean>;
|
|
85
|
+
enable: z.ZodOptional<z.ZodBoolean>;
|
|
86
|
+
codexPath: z.ZodOptional<z.ZodString>;
|
|
87
|
+
model: z.ZodOptional<z.ZodString>;
|
|
88
|
+
cwd: z.ZodOptional<z.ZodString>;
|
|
89
|
+
sandbox: z.ZodOptional<z.ZodEnum<{
|
|
90
|
+
"read-only": "read-only";
|
|
91
|
+
"workspace-write": "workspace-write";
|
|
92
|
+
"danger-full-access": "danger-full-access";
|
|
93
|
+
}>>;
|
|
94
|
+
approvalMode: z.ZodOptional<z.ZodEnum<{
|
|
95
|
+
suggest: "suggest";
|
|
96
|
+
"auto-edit": "auto-edit";
|
|
97
|
+
"full-auto": "full-auto";
|
|
98
|
+
}>>;
|
|
99
|
+
projectDoc: z.ZodOptional<z.ZodString>;
|
|
100
|
+
noProjectDoc: z.ZodOptional<z.ZodBoolean>;
|
|
101
|
+
fullStdout: z.ZodOptional<z.ZodBoolean>;
|
|
102
|
+
}, z.core.$strip>;
|
|
103
|
+
export declare const OpenAICodexEventsSchema: z.ZodObject<{
|
|
104
|
+
stateChange: z.ZodTuple<[z.ZodAny], null>;
|
|
105
|
+
enabled: z.ZodTuple<[], null>;
|
|
106
|
+
'session:start': z.ZodTuple<[z.ZodObject<{
|
|
107
|
+
sessionId: z.ZodString;
|
|
108
|
+
prompt: z.ZodString;
|
|
109
|
+
}, z.core.$strip>], null>;
|
|
110
|
+
'session:event': z.ZodTuple<[z.ZodObject<{
|
|
111
|
+
sessionId: z.ZodString;
|
|
112
|
+
event: z.ZodAny;
|
|
113
|
+
}, z.core.$strip>], null>;
|
|
114
|
+
'session:delta': z.ZodTuple<[z.ZodObject<{
|
|
115
|
+
sessionId: z.ZodString;
|
|
116
|
+
text: z.ZodString;
|
|
117
|
+
role: z.ZodString;
|
|
118
|
+
}, z.core.$strip>], null>;
|
|
119
|
+
'session:message': z.ZodTuple<[z.ZodObject<{
|
|
120
|
+
sessionId: z.ZodString;
|
|
121
|
+
message: z.ZodAny;
|
|
122
|
+
}, z.core.$strip>], null>;
|
|
123
|
+
'session:exec': z.ZodTuple<[z.ZodObject<{
|
|
124
|
+
sessionId: z.ZodString;
|
|
125
|
+
exec: z.ZodAny;
|
|
126
|
+
}, z.core.$strip>], null>;
|
|
127
|
+
'session:exec-start': z.ZodTuple<[z.ZodObject<{
|
|
128
|
+
sessionId: z.ZodString;
|
|
129
|
+
command: z.ZodString;
|
|
130
|
+
}, z.core.$strip>], null>;
|
|
131
|
+
'session:reasoning': z.ZodTuple<[z.ZodObject<{
|
|
132
|
+
sessionId: z.ZodString;
|
|
133
|
+
text: z.ZodString;
|
|
134
|
+
}, z.core.$strip>], null>;
|
|
135
|
+
'session:result': z.ZodTuple<[z.ZodObject<{
|
|
136
|
+
sessionId: z.ZodString;
|
|
137
|
+
result: z.ZodString;
|
|
138
|
+
}, z.core.$strip>], null>;
|
|
139
|
+
'session:error': z.ZodTuple<[z.ZodObject<{
|
|
140
|
+
sessionId: z.ZodString;
|
|
141
|
+
error: z.ZodAny;
|
|
142
|
+
exitCode: z.ZodOptional<z.ZodNumber>;
|
|
143
|
+
}, z.core.$strip>], null>;
|
|
144
|
+
'session:abort': z.ZodTuple<[z.ZodObject<{
|
|
145
|
+
sessionId: z.ZodString;
|
|
146
|
+
}, z.core.$strip>], null>;
|
|
147
|
+
'session:parse-error': z.ZodTuple<[z.ZodObject<{
|
|
148
|
+
sessionId: z.ZodString;
|
|
149
|
+
line: z.ZodString;
|
|
150
|
+
}, z.core.$strip>], null>;
|
|
151
|
+
}, z.core.$strip>;
|
|
152
|
+
export type OpenAICodexState = z.infer<typeof OpenAICodexStateSchema>;
|
|
153
|
+
export type OpenAICodexOptions = z.infer<typeof OpenAICodexOptionsSchema>;
|
|
154
|
+
export interface CodexRunOptions {
|
|
155
|
+
model?: string;
|
|
156
|
+
cwd?: string;
|
|
157
|
+
sandbox?: 'read-only' | 'workspace-write' | 'danger-full-access';
|
|
158
|
+
approvalMode?: 'suggest' | 'auto-edit' | 'full-auto';
|
|
159
|
+
projectDoc?: string;
|
|
160
|
+
noProjectDoc?: boolean;
|
|
161
|
+
fullStdout?: boolean;
|
|
162
|
+
images?: string[];
|
|
163
|
+
fullAuto?: boolean;
|
|
164
|
+
/** Resume a previous session by ID. */
|
|
165
|
+
resumeSessionId?: string;
|
|
166
|
+
/** Resume the most recent session. */
|
|
167
|
+
resumeLast?: boolean;
|
|
168
|
+
/** Skip all approvals and sandboxing. */
|
|
169
|
+
dangerouslyAutoApproveEverything?: boolean;
|
|
170
|
+
/** Additional CLI flags. */
|
|
171
|
+
extraArgs?: string[];
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* OpenAI Codex CLI wrapper feature. Spawns and manages Codex sessions
|
|
175
|
+
* as subprocesses, streaming structured JSON events back through the
|
|
176
|
+
* container's event system.
|
|
177
|
+
*
|
|
178
|
+
* Mirrors the ClaudeCode feature pattern: each call to `run()` spawns a
|
|
179
|
+
* `codex exec --json` process, parses NDJSON from stdout line-by-line,
|
|
180
|
+
* and emits typed events on the feature's event bus.
|
|
181
|
+
*
|
|
182
|
+
* @extends Feature
|
|
183
|
+
*
|
|
184
|
+
* @example
|
|
185
|
+
* ```typescript
|
|
186
|
+
* const codex = container.feature('openaiCodex')
|
|
187
|
+
*
|
|
188
|
+
* // Listen for events
|
|
189
|
+
* codex.on('session:message', ({ sessionId, message }) => console.log(message))
|
|
190
|
+
* codex.on('session:patch', ({ sessionId, patch }) => console.log('File changed:', patch.path))
|
|
191
|
+
*
|
|
192
|
+
* // Run a prompt
|
|
193
|
+
* const session = await codex.run('Fix the failing tests in src/')
|
|
194
|
+
* console.log(session.result)
|
|
195
|
+
* ```
|
|
196
|
+
*/
|
|
197
|
+
export declare class OpenAICodex extends Feature<OpenAICodexState, OpenAICodexOptions> {
|
|
198
|
+
static stateSchema: z.ZodObject<{
|
|
199
|
+
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
200
|
+
sessions: z.ZodRecord<z.ZodString, z.ZodAny>;
|
|
201
|
+
activeSessions: z.ZodArray<z.ZodString>;
|
|
202
|
+
codexAvailable: z.ZodBoolean;
|
|
203
|
+
codexVersion: z.ZodOptional<z.ZodString>;
|
|
204
|
+
}, z.core.$loose>;
|
|
205
|
+
static optionsSchema: z.ZodObject<{
|
|
206
|
+
name: z.ZodOptional<z.ZodString>;
|
|
207
|
+
_cacheKey: z.ZodOptional<z.ZodString>;
|
|
208
|
+
cached: z.ZodOptional<z.ZodBoolean>;
|
|
209
|
+
enable: z.ZodOptional<z.ZodBoolean>;
|
|
210
|
+
codexPath: z.ZodOptional<z.ZodString>;
|
|
211
|
+
model: z.ZodOptional<z.ZodString>;
|
|
212
|
+
cwd: z.ZodOptional<z.ZodString>;
|
|
213
|
+
sandbox: z.ZodOptional<z.ZodEnum<{
|
|
214
|
+
"read-only": "read-only";
|
|
215
|
+
"workspace-write": "workspace-write";
|
|
216
|
+
"danger-full-access": "danger-full-access";
|
|
217
|
+
}>>;
|
|
218
|
+
approvalMode: z.ZodOptional<z.ZodEnum<{
|
|
219
|
+
suggest: "suggest";
|
|
220
|
+
"auto-edit": "auto-edit";
|
|
221
|
+
"full-auto": "full-auto";
|
|
222
|
+
}>>;
|
|
223
|
+
projectDoc: z.ZodOptional<z.ZodString>;
|
|
224
|
+
noProjectDoc: z.ZodOptional<z.ZodBoolean>;
|
|
225
|
+
fullStdout: z.ZodOptional<z.ZodBoolean>;
|
|
226
|
+
}, z.core.$strip>;
|
|
227
|
+
static eventsSchema: z.ZodObject<{
|
|
228
|
+
stateChange: z.ZodTuple<[z.ZodAny], null>;
|
|
229
|
+
enabled: z.ZodTuple<[], null>;
|
|
230
|
+
'session:start': z.ZodTuple<[z.ZodObject<{
|
|
231
|
+
sessionId: z.ZodString;
|
|
232
|
+
prompt: z.ZodString;
|
|
233
|
+
}, z.core.$strip>], null>;
|
|
234
|
+
'session:event': z.ZodTuple<[z.ZodObject<{
|
|
235
|
+
sessionId: z.ZodString;
|
|
236
|
+
event: z.ZodAny;
|
|
237
|
+
}, z.core.$strip>], null>;
|
|
238
|
+
'session:delta': z.ZodTuple<[z.ZodObject<{
|
|
239
|
+
sessionId: z.ZodString;
|
|
240
|
+
text: z.ZodString;
|
|
241
|
+
role: z.ZodString;
|
|
242
|
+
}, z.core.$strip>], null>;
|
|
243
|
+
'session:message': z.ZodTuple<[z.ZodObject<{
|
|
244
|
+
sessionId: z.ZodString;
|
|
245
|
+
message: z.ZodAny;
|
|
246
|
+
}, z.core.$strip>], null>;
|
|
247
|
+
'session:exec': z.ZodTuple<[z.ZodObject<{
|
|
248
|
+
sessionId: z.ZodString;
|
|
249
|
+
exec: z.ZodAny;
|
|
250
|
+
}, z.core.$strip>], null>;
|
|
251
|
+
'session:exec-start': z.ZodTuple<[z.ZodObject<{
|
|
252
|
+
sessionId: z.ZodString;
|
|
253
|
+
command: z.ZodString;
|
|
254
|
+
}, z.core.$strip>], null>;
|
|
255
|
+
'session:reasoning': z.ZodTuple<[z.ZodObject<{
|
|
256
|
+
sessionId: z.ZodString;
|
|
257
|
+
text: z.ZodString;
|
|
258
|
+
}, z.core.$strip>], null>;
|
|
259
|
+
'session:result': z.ZodTuple<[z.ZodObject<{
|
|
260
|
+
sessionId: z.ZodString;
|
|
261
|
+
result: z.ZodString;
|
|
262
|
+
}, z.core.$strip>], null>;
|
|
263
|
+
'session:error': z.ZodTuple<[z.ZodObject<{
|
|
264
|
+
sessionId: z.ZodString;
|
|
265
|
+
error: z.ZodAny;
|
|
266
|
+
exitCode: z.ZodOptional<z.ZodNumber>;
|
|
267
|
+
}, z.core.$strip>], null>;
|
|
268
|
+
'session:abort': z.ZodTuple<[z.ZodObject<{
|
|
269
|
+
sessionId: z.ZodString;
|
|
270
|
+
}, z.core.$strip>], null>;
|
|
271
|
+
'session:parse-error': z.ZodTuple<[z.ZodObject<{
|
|
272
|
+
sessionId: z.ZodString;
|
|
273
|
+
line: z.ZodString;
|
|
274
|
+
}, z.core.$strip>], null>;
|
|
275
|
+
}, z.core.$strip>;
|
|
276
|
+
static shortcut: "features.openaiCodex";
|
|
277
|
+
get initialState(): OpenAICodexState;
|
|
278
|
+
private _resolvedCodexPath;
|
|
279
|
+
/** @returns The path to the codex CLI binary, falling back to 'codex' on the PATH. */
|
|
280
|
+
get codexPath(): string;
|
|
281
|
+
/**
|
|
282
|
+
* Check if the Codex CLI is available and capture its version.
|
|
283
|
+
*
|
|
284
|
+
* @returns {Promise<boolean>} True if the codex binary was found and responded to --version
|
|
285
|
+
*/
|
|
286
|
+
checkAvailability(): Promise<boolean>;
|
|
287
|
+
/**
|
|
288
|
+
* Build the argument array for a codex CLI invocation.
|
|
289
|
+
*/
|
|
290
|
+
private buildArgs;
|
|
291
|
+
private createSessionId;
|
|
292
|
+
private updateSession;
|
|
293
|
+
/**
|
|
294
|
+
* Process a parsed JSON event from the Codex CLI stream.
|
|
295
|
+
*
|
|
296
|
+
* The codex CLI (codex exec --json) emits NDJSON with these event types:
|
|
297
|
+
* thread.started — { thread_id }
|
|
298
|
+
* turn.started — (no payload)
|
|
299
|
+
* item.started — { item: { id, type, ... } }
|
|
300
|
+
* item.completed — { item: { id, type, text?, command?, exit_code?, ... } }
|
|
301
|
+
* turn.completed — { usage: { input_tokens, output_tokens } }
|
|
302
|
+
*
|
|
303
|
+
* Item types within item.completed:
|
|
304
|
+
* agent_message — assistant text response
|
|
305
|
+
* reasoning — model thinking/reasoning
|
|
306
|
+
* command_execution — shell command with output
|
|
307
|
+
*/
|
|
308
|
+
private handleEvent;
|
|
309
|
+
/**
|
|
310
|
+
* Run a prompt in a new Codex session. Spawns a subprocess,
|
|
311
|
+
* streams NDJSON events, and resolves when the session completes.
|
|
312
|
+
*
|
|
313
|
+
* @param {string} prompt - The natural language instruction for the Codex agent
|
|
314
|
+
* @param {CodexRunOptions} [options] - Optional overrides for model, cwd, sandbox policy, etc.
|
|
315
|
+
* @returns {Promise<CodexSession>} The completed session with result, messages, patches, and executions
|
|
316
|
+
*
|
|
317
|
+
* @example
|
|
318
|
+
* ```typescript
|
|
319
|
+
* const session = await codex.run('Fix the failing tests')
|
|
320
|
+
* console.log(session.result)
|
|
321
|
+
*
|
|
322
|
+
* const session = await codex.run('Refactor the auth module', {
|
|
323
|
+
* model: 'o4-mini',
|
|
324
|
+
* fullAuto: true,
|
|
325
|
+
* cwd: '/path/to/project'
|
|
326
|
+
* })
|
|
327
|
+
* ```
|
|
328
|
+
*/
|
|
329
|
+
run(prompt: string, options?: CodexRunOptions): Promise<CodexSession>;
|
|
330
|
+
/**
|
|
331
|
+
* Run a prompt without waiting for completion. Returns the session ID
|
|
332
|
+
* immediately so you can subscribe to events.
|
|
333
|
+
*
|
|
334
|
+
* @param {string} prompt - The natural language instruction for the Codex agent
|
|
335
|
+
* @param {CodexRunOptions} [options] - Optional overrides for model, cwd, sandbox policy, etc.
|
|
336
|
+
* @returns {string} The session ID, which can be used with getSession() or waitForSession()
|
|
337
|
+
*
|
|
338
|
+
* @example
|
|
339
|
+
* ```typescript
|
|
340
|
+
* const sessionId = codex.start('Build a REST API for users')
|
|
341
|
+
*
|
|
342
|
+
* codex.on('session:delta', ({ sessionId: sid, text }) => {
|
|
343
|
+
* if (sid === sessionId) process.stdout.write(text)
|
|
344
|
+
* })
|
|
345
|
+
* ```
|
|
346
|
+
*/
|
|
347
|
+
start(prompt: string, options?: CodexRunOptions): string;
|
|
348
|
+
private consumeStream;
|
|
349
|
+
/**
|
|
350
|
+
* Kill a running session's subprocess.
|
|
351
|
+
*
|
|
352
|
+
* @param {string} sessionId - The session ID to abort
|
|
353
|
+
* @returns {void}
|
|
354
|
+
*/
|
|
355
|
+
abort(sessionId: string): void;
|
|
356
|
+
/**
|
|
357
|
+
* Retrieve the current state of a session by its ID.
|
|
358
|
+
*
|
|
359
|
+
* @param {string} sessionId - The session ID to look up
|
|
360
|
+
* @returns {CodexSession | undefined} The session object, or undefined if not found
|
|
361
|
+
*/
|
|
362
|
+
getSession(sessionId: string): CodexSession | undefined;
|
|
363
|
+
/**
|
|
364
|
+
* Wait for a running session to complete or error. Resolves immediately
|
|
365
|
+
* if the session is already in a terminal state.
|
|
366
|
+
*
|
|
367
|
+
* @param {string} sessionId - The session ID to wait for
|
|
368
|
+
* @returns {Promise<CodexSession>} The completed or errored session
|
|
369
|
+
* @throws {Error} If the session ID is not found
|
|
370
|
+
*/
|
|
371
|
+
waitForSession(sessionId: string): Promise<CodexSession>;
|
|
372
|
+
/**
|
|
373
|
+
* Enable the feature. Delegates to the base Feature enable() lifecycle.
|
|
374
|
+
*
|
|
375
|
+
* @param {object} [options] - Options to merge into the feature configuration
|
|
376
|
+
* @returns {Promise<this>} This instance, for chaining
|
|
377
|
+
*/
|
|
378
|
+
enable(options?: any): Promise<this>;
|
|
379
|
+
}
|
|
380
|
+
export default OpenAICodex;
|
|
381
|
+
//# sourceMappingURL=openai-codex.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openai-codex.d.ts","sourceRoot":"","sources":["../../../src/agi/features/openai-codex.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAEvC,OAAO,QAAQ,yBAAyB,CAAC;IACvC,UAAU,iBAAiB;QACzB,WAAW,EAAE,OAAO,WAAW,CAAA;KAChC;CACF;AAID,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,eAAe,GAAG,WAAW,GAAG,mBAAmB,GAAG,MAAM,CAAA;IAClE,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,MAAM,CAAC,EAAE,aAAa,GAAG,WAAW,GAAG,MAAM,CAAA;CAC9C;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,gBAAgB,GAAG,cAAc,CAAA;IACvC,IAAI,EAAE,SAAS,CAAA;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,gBAAgB,GAAG,cAAc,CAAA;IACvC,KAAK,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CACxF;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,gBAAgB,CAAA;IACtB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,+EAA+E;AAC/E,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,SAAS,CAAA;IACf,IAAI,EAAE,WAAW,GAAG,QAAQ,CAAA;IAC5B,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC,CAAA;CACtF;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,MAAM,UAAU,GAClB,cAAc,GACd,cAAc,GACd,gBAAgB,GAChB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,CAAA;AAIxC,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,WAAW,GAAG,OAAO,CAAA;IAClD,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,iBAAiB,EAAE,CAAA;IAC7B,UAAU,EAAE,cAAc,EAAE,CAAA;IAC5B,KAAK,EAAE,SAAS,EAAE,CAAA;IAClB,OAAO,CAAC,EAAE,GAAG,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAC1D;AAID,eAAO,MAAM,sBAAsB;;;;;;iBAKjC,CAAA;AAEF,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;iBASnC,CAAA;AAEF,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAYH,CAAA;AAEjC,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAA;AACrE,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAA;AAEzE,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,WAAW,GAAG,iBAAiB,GAAG,oBAAoB,CAAA;IAChE,YAAY,CAAC,EAAE,SAAS,GAAG,WAAW,GAAG,WAAW,CAAA;IACpD,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,uCAAuC;IACvC,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,sCAAsC;IACtC,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,yCAAyC;IACzC,gCAAgC,CAAC,EAAE,OAAO,CAAA;IAC1C,4BAA4B;IAC5B,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;CACrB;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,qBAAa,WAAY,SAAQ,OAAO,CAAC,gBAAgB,EAAE,kBAAkB,CAAC;IAC5E,OAAgB,WAAW;;;;;;sBAAyB;IACpD,OAAgB,aAAa;;;;;;;;;;;;;;;;;;;;;sBAA2B;IACxD,OAAgB,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sBAA0B;IACtD,OAAgB,QAAQ,EAAG,sBAAsB,CAAS;IAI1D,IAAa,YAAY,IAAI,gBAAgB,CAO5C;IAED,OAAO,CAAC,kBAAkB,CAAsB;IAEhD,sFAAsF;IACtF,IAAI,SAAS,IAAI,MAAM,CAStB;IAED;;;;OAIG;IACG,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC;IAqB3C;;OAEG;IACH,OAAO,CAAC,SAAS;IAoDjB,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,aAAa;IASrB;;;;;;;;;;;;;;OAcG;IACH,OAAO,CAAC,WAAW;IA0EnB;;;;;;;;;;;;;;;;;;;OAmBG;IACG,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,YAAY,CAAC;IAmC/E;;;;;;;;;;;;;;;;OAgBG;IACH,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,eAAoB,GAAG,MAAM;YAmC9C,aAAa;IAyG3B;;;;;OAKG;IACH,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAW9B;;;;;OAKG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAIvD;;;;;;;OAOG;IACG,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAkB9D;;;;;OAKG;IACY,MAAM,CAAC,OAAO,GAAE,GAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;CAIxD;AAED,eAAe,WAAW,CAAA"}
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
import { Feature } from '../feature.js';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
declare module '../../feature.js' {
|
|
4
|
+
interface AvailableFeatures {
|
|
5
|
+
openapi: typeof OpenAPI;
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
export declare const OpenAPIStateSchema: z.ZodObject<{
|
|
9
|
+
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
10
|
+
loaded: z.ZodDefault<z.ZodBoolean>;
|
|
11
|
+
title: z.ZodDefault<z.ZodString>;
|
|
12
|
+
version: z.ZodDefault<z.ZodString>;
|
|
13
|
+
endpointCount: z.ZodDefault<z.ZodNumber>;
|
|
14
|
+
}, z.core.$loose>;
|
|
15
|
+
export declare const OpenAPIOptionsSchema: z.ZodObject<{
|
|
16
|
+
name: z.ZodOptional<z.ZodString>;
|
|
17
|
+
_cacheKey: z.ZodOptional<z.ZodString>;
|
|
18
|
+
cached: z.ZodOptional<z.ZodBoolean>;
|
|
19
|
+
enable: z.ZodOptional<z.ZodBoolean>;
|
|
20
|
+
url: z.ZodOptional<z.ZodString>;
|
|
21
|
+
}, z.core.$strip>;
|
|
22
|
+
export declare const OpenAPIEventsSchema: z.ZodObject<{
|
|
23
|
+
stateChange: z.ZodTuple<[z.ZodAny], null>;
|
|
24
|
+
enabled: z.ZodTuple<[], null>;
|
|
25
|
+
loaded: z.ZodTuple<[z.ZodAny], null>;
|
|
26
|
+
}, z.core.$strip>;
|
|
27
|
+
export type OpenAPIOptions = z.infer<typeof OpenAPIOptionsSchema>;
|
|
28
|
+
export type OpenAPIState = z.infer<typeof OpenAPIStateSchema>;
|
|
29
|
+
export interface EndpointInfo {
|
|
30
|
+
/** Human-friendly camelCase name derived from operationId */
|
|
31
|
+
name: string;
|
|
32
|
+
/** Original operationId from the spec */
|
|
33
|
+
operationId: string;
|
|
34
|
+
/** HTTP method (get, post, put, delete, patch, etc.) */
|
|
35
|
+
method: string;
|
|
36
|
+
/** URL path template, e.g. /pets/{petId} */
|
|
37
|
+
path: string;
|
|
38
|
+
/** Summary from the spec */
|
|
39
|
+
summary: string;
|
|
40
|
+
/** Longer description from the spec */
|
|
41
|
+
description: string;
|
|
42
|
+
/** Tags for grouping */
|
|
43
|
+
tags: string[];
|
|
44
|
+
/** Parameter definitions from the spec */
|
|
45
|
+
parameters: OpenAPIParameter[];
|
|
46
|
+
/** Request body schema if present */
|
|
47
|
+
requestBody: any;
|
|
48
|
+
/** Response definitions keyed by status code */
|
|
49
|
+
responses: Record<string, any>;
|
|
50
|
+
/** Whether the endpoint is deprecated */
|
|
51
|
+
deprecated: boolean;
|
|
52
|
+
}
|
|
53
|
+
export interface OpenAPIParameter {
|
|
54
|
+
name: string;
|
|
55
|
+
in: 'query' | 'path' | 'header' | 'cookie';
|
|
56
|
+
description: string;
|
|
57
|
+
required: boolean;
|
|
58
|
+
schema: any;
|
|
59
|
+
}
|
|
60
|
+
export interface OpenAIFunctionDef {
|
|
61
|
+
name: string;
|
|
62
|
+
description: string;
|
|
63
|
+
parameters: {
|
|
64
|
+
type: 'object';
|
|
65
|
+
properties: Record<string, any>;
|
|
66
|
+
required: string[];
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
export interface OpenAIToolDef {
|
|
70
|
+
type: 'function';
|
|
71
|
+
function: OpenAIFunctionDef;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* The OpenAPI feature loads an OpenAPI/Swagger spec from a URL and provides
|
|
75
|
+
* inspection and conversion utilities.
|
|
76
|
+
*
|
|
77
|
+
* Works in both browser and node environments since it uses fetch.
|
|
78
|
+
*
|
|
79
|
+
* @example
|
|
80
|
+
* ```typescript
|
|
81
|
+
* const api = container.feature('openapi', { url: 'https://petstore.swagger.io/v2' })
|
|
82
|
+
* await api.load()
|
|
83
|
+
*
|
|
84
|
+
* // Inspect all endpoints
|
|
85
|
+
* api.endpoints
|
|
86
|
+
*
|
|
87
|
+
* // Get a single endpoint by its friendly name
|
|
88
|
+
* api.endpoint('getPetById')
|
|
89
|
+
*
|
|
90
|
+
* // Convert to OpenAI tool definitions
|
|
91
|
+
* api.toTools()
|
|
92
|
+
*
|
|
93
|
+
* // Convert a single endpoint to a function definition
|
|
94
|
+
* api.toFunction('getPetById')
|
|
95
|
+
* ```
|
|
96
|
+
*/
|
|
97
|
+
export declare class OpenAPI extends Feature<OpenAPIState, OpenAPIOptions> {
|
|
98
|
+
static shortcut: "features.openapi";
|
|
99
|
+
static description: string;
|
|
100
|
+
static stateSchema: z.ZodObject<{
|
|
101
|
+
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
102
|
+
loaded: z.ZodDefault<z.ZodBoolean>;
|
|
103
|
+
title: z.ZodDefault<z.ZodString>;
|
|
104
|
+
version: z.ZodDefault<z.ZodString>;
|
|
105
|
+
endpointCount: z.ZodDefault<z.ZodNumber>;
|
|
106
|
+
}, z.core.$loose>;
|
|
107
|
+
static optionsSchema: z.ZodObject<{
|
|
108
|
+
name: z.ZodOptional<z.ZodString>;
|
|
109
|
+
_cacheKey: z.ZodOptional<z.ZodString>;
|
|
110
|
+
cached: z.ZodOptional<z.ZodBoolean>;
|
|
111
|
+
enable: z.ZodOptional<z.ZodBoolean>;
|
|
112
|
+
url: z.ZodOptional<z.ZodString>;
|
|
113
|
+
}, z.core.$strip>;
|
|
114
|
+
static eventsSchema: z.ZodObject<{
|
|
115
|
+
stateChange: z.ZodTuple<[z.ZodAny], null>;
|
|
116
|
+
enabled: z.ZodTuple<[], null>;
|
|
117
|
+
loaded: z.ZodTuple<[z.ZodAny], null>;
|
|
118
|
+
}, z.core.$strip>;
|
|
119
|
+
/** Raw parsed spec document */
|
|
120
|
+
private _spec;
|
|
121
|
+
/** Parsed endpoint map keyed by friendly name */
|
|
122
|
+
private _endpoints;
|
|
123
|
+
/** @returns Default state with loaded=false and empty metadata fields. */
|
|
124
|
+
get initialState(): OpenAPIState;
|
|
125
|
+
/** The base server URL derived from options, normalizing the openapi.json suffix */
|
|
126
|
+
get serverUrl(): string;
|
|
127
|
+
/** The URL that will be fetched for the spec document */
|
|
128
|
+
get specUrl(): string;
|
|
129
|
+
/** The raw spec object. Null before load() is called. */
|
|
130
|
+
get spec(): any;
|
|
131
|
+
/**
|
|
132
|
+
* Fetches and parses the OpenAPI spec from the configured URL.
|
|
133
|
+
* Populates `endpoints`, updates state with spec metadata.
|
|
134
|
+
*
|
|
135
|
+
* @returns {Promise<this>} This instance, for chaining
|
|
136
|
+
*/
|
|
137
|
+
load(): Promise<this>;
|
|
138
|
+
/** All parsed endpoints as an array */
|
|
139
|
+
get endpoints(): EndpointInfo[];
|
|
140
|
+
/** All endpoint friendly names */
|
|
141
|
+
get endpointNames(): string[];
|
|
142
|
+
/** Map of endpoints grouped by tag */
|
|
143
|
+
get endpointsByTag(): Record<string, EndpointInfo[]>;
|
|
144
|
+
/**
|
|
145
|
+
* Get a single endpoint by its friendly name or operationId.
|
|
146
|
+
*
|
|
147
|
+
* @param {string} name - The friendly name or operationId to look up
|
|
148
|
+
* @returns {EndpointInfo | undefined} The endpoint info, or undefined if not found
|
|
149
|
+
*/
|
|
150
|
+
endpoint(name: string): EndpointInfo | undefined;
|
|
151
|
+
/**
|
|
152
|
+
* Convert all endpoints into OpenAI-compatible tool definitions.
|
|
153
|
+
*
|
|
154
|
+
* @param {Function} [filter] - Optional predicate to select which endpoints to include
|
|
155
|
+
* @returns {OpenAIToolDef[]} Array of tool definitions ready for the OpenAI tools parameter
|
|
156
|
+
*/
|
|
157
|
+
toTools(filter?: (ep: EndpointInfo) => boolean): OpenAIToolDef[];
|
|
158
|
+
/**
|
|
159
|
+
* Convert a single endpoint (by name) to an OpenAI-compatible tool definition.
|
|
160
|
+
*
|
|
161
|
+
* @param {string} name - The endpoint friendly name or operationId
|
|
162
|
+
* @returns {OpenAIToolDef | undefined} The tool definition, or undefined if not found
|
|
163
|
+
*/
|
|
164
|
+
toTool(name: string): OpenAIToolDef | undefined;
|
|
165
|
+
/**
|
|
166
|
+
* Convert all endpoints into OpenAI-compatible function definitions.
|
|
167
|
+
*
|
|
168
|
+
* @param {Function} [filter] - Optional predicate to select which endpoints to include
|
|
169
|
+
* @returns {OpenAIFunctionDef[]} Array of function definitions
|
|
170
|
+
*/
|
|
171
|
+
toFunctions(filter?: (ep: EndpointInfo) => boolean): OpenAIFunctionDef[];
|
|
172
|
+
/**
|
|
173
|
+
* Convert a single endpoint (by name) to an OpenAI function definition.
|
|
174
|
+
*
|
|
175
|
+
* @param {string} name - The endpoint friendly name or operationId
|
|
176
|
+
* @returns {OpenAIFunctionDef | undefined} The function definition, or undefined if not found
|
|
177
|
+
*/
|
|
178
|
+
toFunction(name: string): OpenAIFunctionDef | undefined;
|
|
179
|
+
/**
|
|
180
|
+
* Return a compact JSON summary of all endpoints, useful for logging or REPL inspection.
|
|
181
|
+
*
|
|
182
|
+
* @returns {{ title: string, version: string, serverUrl: string, endpointCount: number, endpoints: object[] }} Serializable summary
|
|
183
|
+
*/
|
|
184
|
+
toJSON(): {
|
|
185
|
+
title: string | undefined;
|
|
186
|
+
version: string | undefined;
|
|
187
|
+
serverUrl: string;
|
|
188
|
+
endpointCount: number;
|
|
189
|
+
endpoints: {
|
|
190
|
+
name: string;
|
|
191
|
+
method: string;
|
|
192
|
+
path: string;
|
|
193
|
+
summary: string;
|
|
194
|
+
tags: string[];
|
|
195
|
+
deprecated: boolean;
|
|
196
|
+
}[];
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
export default OpenAPI;
|
|
200
|
+
//# sourceMappingURL=openapi.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openapi.d.ts","sourceRoot":"","sources":["../../../src/agi/features/openapi.ts"],"names":[],"mappings":"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"}
|