@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,354 @@
|
|
|
1
|
+
import url from 'node:url'
|
|
2
|
+
|
|
3
|
+
import { Container, type ContainerState } from "../container";
|
|
4
|
+
import { State } from "../state";
|
|
5
|
+
import type { FeatureOptions } from "./feature";
|
|
6
|
+
import { features, Feature } from "./feature";
|
|
7
|
+
import type { AvailableFeatures } from "../feature";
|
|
8
|
+
import { Client, type ClientsInterface } from "../client";
|
|
9
|
+
import { Server, type ServersInterface } from "../server";
|
|
10
|
+
import "../servers/express";
|
|
11
|
+
import "../servers/socket";
|
|
12
|
+
import "../servers/mcp";
|
|
13
|
+
import { Command, type CommandsInterface } from "../command";
|
|
14
|
+
import { Endpoint, type EndpointsInterface } from "../endpoint";
|
|
15
|
+
|
|
16
|
+
import minimist from "minimist";
|
|
17
|
+
import { omit, kebabCase, camelCase, mapKeys, castArray } from "lodash-es";
|
|
18
|
+
import { basename, parse, relative, resolve, join } from "path";
|
|
19
|
+
|
|
20
|
+
import "./features/disk-cache";
|
|
21
|
+
import "./features/content-db";
|
|
22
|
+
import "./features/downloader";
|
|
23
|
+
import "./features/esbuild";
|
|
24
|
+
import "./features/file-manager";
|
|
25
|
+
import "./features/fs";
|
|
26
|
+
import "./features/git";
|
|
27
|
+
import "./features/grep";
|
|
28
|
+
import "./features/ipc-socket";
|
|
29
|
+
import "./features/json-tree";
|
|
30
|
+
import "./features/networking";
|
|
31
|
+
import "./features/os";
|
|
32
|
+
import "./features/package-finder";
|
|
33
|
+
import "./features/port-exposer";
|
|
34
|
+
import "./features/python";
|
|
35
|
+
import "./features/proc";
|
|
36
|
+
import "./features/repl";
|
|
37
|
+
import "./features/ui";
|
|
38
|
+
import "./features/vault";
|
|
39
|
+
import "./features/vm";
|
|
40
|
+
import "./features/yaml-tree";
|
|
41
|
+
import "./features/yaml";
|
|
42
|
+
import "./features/docker";
|
|
43
|
+
import "./features/runpod";
|
|
44
|
+
import "./features/secure-shell";
|
|
45
|
+
import "./features/ink";
|
|
46
|
+
import "./features/telegram";
|
|
47
|
+
import "./features/opener";
|
|
48
|
+
import "./features/postgres";
|
|
49
|
+
import "./features/sqlite";
|
|
50
|
+
import "./features/google-auth";
|
|
51
|
+
import "./features/google-drive";
|
|
52
|
+
import "./features/google-sheets";
|
|
53
|
+
import "./features/google-calendar";
|
|
54
|
+
import "./features/google-docs";
|
|
55
|
+
import "./features/window-manager";
|
|
56
|
+
import "./features/launcher-app-command-listener";
|
|
57
|
+
import "./features/nlp";
|
|
58
|
+
import "./features/process-manager"
|
|
59
|
+
import "./features/tts";
|
|
60
|
+
import "./features/helpers";
|
|
61
|
+
import "./features/container-link";
|
|
62
|
+
import "./features/semantic-search";
|
|
63
|
+
import "./features/dns";
|
|
64
|
+
|
|
65
|
+
import type { ChildProcess } from "./features/proc";
|
|
66
|
+
import type { DiskCache } from "./features/disk-cache";
|
|
67
|
+
import type { ContentDb } from "./features/content-db";
|
|
68
|
+
import type { Downloader } from "./features/downloader";
|
|
69
|
+
import type { ESBuild } from "./features/esbuild";
|
|
70
|
+
import type { FileManager } from "./features/file-manager";
|
|
71
|
+
import type { FS } from "./features/fs";
|
|
72
|
+
import type { Git } from "./features/git";
|
|
73
|
+
import type { Grep } from "./features/grep";
|
|
74
|
+
import type { IpcSocket } from "./features/ipc-socket";
|
|
75
|
+
import type { JsonTree } from "./features/json-tree";
|
|
76
|
+
import type { Networking } from "./features/networking";
|
|
77
|
+
import type { OS } from "./features/os";
|
|
78
|
+
import type { PackageFinder } from "./features/package-finder";
|
|
79
|
+
import type { Python } from "./features/python";
|
|
80
|
+
import type { Repl } from "./features/repl";
|
|
81
|
+
import type { UI } from "./features/ui";
|
|
82
|
+
import type { Vault } from "./features/vault";
|
|
83
|
+
import type { VM } from "./features/vm";
|
|
84
|
+
import type { YAML } from "./features/yaml";
|
|
85
|
+
import type { YamlTree } from "./features/yaml-tree";
|
|
86
|
+
import type { PortExposer } from "./features/port-exposer";
|
|
87
|
+
import type { Docker } from './features/docker';
|
|
88
|
+
import type { Runpod } from './features/runpod';
|
|
89
|
+
import type { SecureShell } from './features/secure-shell';
|
|
90
|
+
import type { Ink } from './features/ink';
|
|
91
|
+
import type { Telegram } from './features/telegram';
|
|
92
|
+
import type { Opener } from './features/opener';
|
|
93
|
+
import type { Postgres } from './features/postgres';
|
|
94
|
+
import type { Sqlite } from './features/sqlite';
|
|
95
|
+
import type { GoogleAuth } from './features/google-auth';
|
|
96
|
+
import type { GoogleDrive } from './features/google-drive';
|
|
97
|
+
import type { GoogleSheets } from './features/google-sheets';
|
|
98
|
+
import type { GoogleCalendar } from './features/google-calendar';
|
|
99
|
+
import type { GoogleDocs } from './features/google-docs';
|
|
100
|
+
import type { WindowManager } from './features/window-manager';
|
|
101
|
+
import type { LauncherAppCommandListener } from './features/launcher-app-command-listener';
|
|
102
|
+
import type { NLP } from './features/nlp';
|
|
103
|
+
import type { ProcessManager } from './features/process-manager'
|
|
104
|
+
import type { TTS } from './features/tts';
|
|
105
|
+
import type { Helpers } from './features/helpers';
|
|
106
|
+
import type { ContainerLink } from './features/container-link';
|
|
107
|
+
import type { SemanticSearch } from './features/semantic-search';
|
|
108
|
+
import type { Dns } from './features/dns';
|
|
109
|
+
export { State };
|
|
110
|
+
|
|
111
|
+
export {
|
|
112
|
+
features,
|
|
113
|
+
Feature,
|
|
114
|
+
type FS,
|
|
115
|
+
type ContentDb,
|
|
116
|
+
type ChildProcess,
|
|
117
|
+
type Git,
|
|
118
|
+
type Grep,
|
|
119
|
+
type OS,
|
|
120
|
+
type Networking,
|
|
121
|
+
type UI,
|
|
122
|
+
type FileManager,
|
|
123
|
+
type DiskCache,
|
|
124
|
+
type Vault,
|
|
125
|
+
type Downloader,
|
|
126
|
+
type PortExposer,
|
|
127
|
+
type Docker,
|
|
128
|
+
type Runpod,
|
|
129
|
+
type SecureShell,
|
|
130
|
+
type Ink,
|
|
131
|
+
type Telegram,
|
|
132
|
+
type Opener,
|
|
133
|
+
type Postgres,
|
|
134
|
+
type Sqlite,
|
|
135
|
+
type GoogleAuth,
|
|
136
|
+
type GoogleDrive,
|
|
137
|
+
type GoogleSheets,
|
|
138
|
+
type GoogleCalendar,
|
|
139
|
+
type GoogleDocs,
|
|
140
|
+
type WindowManager,
|
|
141
|
+
type LauncherAppCommandListener,
|
|
142
|
+
type NLP,
|
|
143
|
+
type ProcessManager,
|
|
144
|
+
type TTS,
|
|
145
|
+
type Helpers,
|
|
146
|
+
type ContainerLink,
|
|
147
|
+
type SemanticSearch,
|
|
148
|
+
type Dns,
|
|
149
|
+
};
|
|
150
|
+
|
|
151
|
+
export type { FeatureOptions };
|
|
152
|
+
|
|
153
|
+
const baseArgv = minimist(process.argv.slice(2)) as Record<string, any> & {
|
|
154
|
+
_: string[];
|
|
155
|
+
cwd?: string;
|
|
156
|
+
};
|
|
157
|
+
const argv = {
|
|
158
|
+
...baseArgv,
|
|
159
|
+
...mapKeys(omit(baseArgv, "_"), (_, key) => camelCase(kebabCase(key))),
|
|
160
|
+
};
|
|
161
|
+
|
|
162
|
+
declare module "../container" {
|
|
163
|
+
interface ContainerArgv {
|
|
164
|
+
cwd?: string;
|
|
165
|
+
_?: string[];
|
|
166
|
+
enable?: string | string[];
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
export interface NodeFeatures extends AvailableFeatures {
|
|
171
|
+
fs: typeof FS;
|
|
172
|
+
proc: typeof ChildProcess;
|
|
173
|
+
git: typeof Git;
|
|
174
|
+
grep: typeof Grep;
|
|
175
|
+
os: typeof OS;
|
|
176
|
+
docker: typeof Docker;
|
|
177
|
+
networking: typeof Networking;
|
|
178
|
+
ui: typeof UI;
|
|
179
|
+
vm: typeof VM;
|
|
180
|
+
fileManager: typeof FileManager;
|
|
181
|
+
ipcSocket: typeof IpcSocket;
|
|
182
|
+
yamlTree: typeof YamlTree;
|
|
183
|
+
packageFinder: typeof PackageFinder;
|
|
184
|
+
repl: typeof Repl;
|
|
185
|
+
yaml: typeof YAML;
|
|
186
|
+
esbuild: typeof ESBuild;
|
|
187
|
+
diskCache: typeof DiskCache;
|
|
188
|
+
vault: typeof Vault;
|
|
189
|
+
jsonTree: typeof JsonTree;
|
|
190
|
+
downloader: typeof Downloader;
|
|
191
|
+
python: typeof Python;
|
|
192
|
+
portExposer: typeof PortExposer;
|
|
193
|
+
runpod: typeof Runpod;
|
|
194
|
+
secureShell: typeof SecureShell;
|
|
195
|
+
ink: typeof Ink;
|
|
196
|
+
telegram: typeof Telegram;
|
|
197
|
+
opener: typeof Opener;
|
|
198
|
+
postgres: typeof Postgres;
|
|
199
|
+
sqlite: typeof Sqlite;
|
|
200
|
+
contentDb: typeof ContentDb;
|
|
201
|
+
googleAuth: typeof GoogleAuth;
|
|
202
|
+
googleDrive: typeof GoogleDrive;
|
|
203
|
+
googleSheets: typeof GoogleSheets;
|
|
204
|
+
googleCalendar: typeof GoogleCalendar;
|
|
205
|
+
googleDocs: typeof GoogleDocs;
|
|
206
|
+
windowManager: typeof WindowManager;
|
|
207
|
+
launcherAppCommandListener: typeof LauncherAppCommandListener;
|
|
208
|
+
nlp: typeof NLP;
|
|
209
|
+
processManager: typeof ProcessManager;
|
|
210
|
+
tts: typeof TTS;
|
|
211
|
+
helpers: typeof Helpers;
|
|
212
|
+
containerLink: typeof ContainerLink;
|
|
213
|
+
semanticSearch: typeof SemanticSearch;
|
|
214
|
+
dns: typeof Dns;
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
export type ClientsAndServersInterface = ClientsInterface & ServersInterface & CommandsInterface & EndpointsInterface;
|
|
218
|
+
|
|
219
|
+
export interface NodeContainer extends ClientsAndServersInterface {}
|
|
220
|
+
|
|
221
|
+
export class NodeContainer<
|
|
222
|
+
Features extends NodeFeatures = NodeFeatures,
|
|
223
|
+
K extends ContainerState = ContainerState
|
|
224
|
+
> extends Container<Features, K> {
|
|
225
|
+
fs!: FS;
|
|
226
|
+
git!: Git;
|
|
227
|
+
grep!: Grep;
|
|
228
|
+
proc!: ChildProcess;
|
|
229
|
+
os!: OS;
|
|
230
|
+
networking!: Networking;
|
|
231
|
+
ui!: UI;
|
|
232
|
+
|
|
233
|
+
vm!: VM;
|
|
234
|
+
|
|
235
|
+
fileManager?: FileManager;
|
|
236
|
+
ipcSocket?: IpcSocket;
|
|
237
|
+
yamlTree?: YamlTree;
|
|
238
|
+
packageFinder?: PackageFinder;
|
|
239
|
+
repl?: Repl;
|
|
240
|
+
esbuild?: ESBuild;
|
|
241
|
+
diskCache?: DiskCache;
|
|
242
|
+
vault?: Vault;
|
|
243
|
+
python?: Python;
|
|
244
|
+
portExposer?: PortExposer;
|
|
245
|
+
ink?: Ink;
|
|
246
|
+
telegram?: Telegram;
|
|
247
|
+
opener?: Opener;
|
|
248
|
+
postgres?: Postgres;
|
|
249
|
+
sqlite?: Sqlite;
|
|
250
|
+
googleAuth?: GoogleAuth;
|
|
251
|
+
googleDrive?: GoogleDrive;
|
|
252
|
+
googleSheets?: GoogleSheets;
|
|
253
|
+
googleCalendar?: GoogleCalendar;
|
|
254
|
+
googleDocs?: GoogleDocs;
|
|
255
|
+
windowManager?: WindowManager;
|
|
256
|
+
launcherAppCommandListener?: LauncherAppCommandListener;
|
|
257
|
+
nlp?: NLP;
|
|
258
|
+
processManager?: ProcessManager;
|
|
259
|
+
tts?: TTS;
|
|
260
|
+
helpers!: Helpers;
|
|
261
|
+
containerLink?: ContainerLink;
|
|
262
|
+
|
|
263
|
+
constructor(options: any = {}) {
|
|
264
|
+
super({ cwd: process.cwd(), ...argv, ...options });
|
|
265
|
+
|
|
266
|
+
// Bun loads .env from cwd automatically; no dotenv needed.
|
|
267
|
+
|
|
268
|
+
this.feature("fs", { enable: true });
|
|
269
|
+
this.feature("proc", { enable: true });
|
|
270
|
+
this.feature("git", { enable: true });
|
|
271
|
+
this.feature("grep", { enable: true });
|
|
272
|
+
this.feature("os", { enable: true });
|
|
273
|
+
this.feature("networking", { enable: true });
|
|
274
|
+
this.feature("ui", { enable: true });
|
|
275
|
+
this.feature("vm", { enable: true, context: {} });
|
|
276
|
+
this.feature("esbuild", { enable: true });
|
|
277
|
+
this.feature("helpers", { enable: true });
|
|
278
|
+
|
|
279
|
+
const enable = castArray(this.options.enable)
|
|
280
|
+
.filter((v) => v && v?.length)
|
|
281
|
+
.map((v) => v as keyof AvailableFeatures);
|
|
282
|
+
|
|
283
|
+
enable.forEach((feature) => {
|
|
284
|
+
if (this.features.has(feature)) {
|
|
285
|
+
this.feature(feature, { enable: true });
|
|
286
|
+
}
|
|
287
|
+
});
|
|
288
|
+
|
|
289
|
+
this.use(Client).use(Server).use(Command).use(Endpoint);
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
override get Feature() {
|
|
293
|
+
return Feature;
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
/** Returns the current working directory, from options or process.cwd(). */
|
|
297
|
+
get cwd(): string {
|
|
298
|
+
return this.options.cwd || process.cwd();
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
/** Returns the parsed package.json manifest for the current working directory. */
|
|
302
|
+
get manifest() {
|
|
303
|
+
try {
|
|
304
|
+
const packageJson = this.fs.findUp("packageon");
|
|
305
|
+
|
|
306
|
+
if (!packageJson) {
|
|
307
|
+
throw new Error("No packageon found");
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
const manifest = this.fs.readJson(packageJson);
|
|
311
|
+
|
|
312
|
+
return manifest;
|
|
313
|
+
} catch (error) {
|
|
314
|
+
return {
|
|
315
|
+
name: basename(this.cwd),
|
|
316
|
+
version: "0.0.0",
|
|
317
|
+
type: "module",
|
|
318
|
+
};
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
/** Returns the parsed command-line arguments (from minimist). */
|
|
323
|
+
get argv() {
|
|
324
|
+
return this.options as any;
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
/** Returns URL utility functions for parsing URIs. */
|
|
328
|
+
get urlUtils() {
|
|
329
|
+
return {
|
|
330
|
+
parse: (uri: string) => url.parse(uri)
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
/** Returns path utility functions scoped to the current working directory (join, resolve, relative, dirname, parse). */
|
|
335
|
+
get paths() {
|
|
336
|
+
const { cwd } = this;
|
|
337
|
+
return {
|
|
338
|
+
dirname(path: string) {
|
|
339
|
+
return parse(path).dir
|
|
340
|
+
},
|
|
341
|
+
join(...paths: string[]) {
|
|
342
|
+
return join(cwd, ...paths);
|
|
343
|
+
},
|
|
344
|
+
resolve(...paths: string[]) {
|
|
345
|
+
return resolve(cwd, ...paths);
|
|
346
|
+
},
|
|
347
|
+
relative(...paths: string[]) {
|
|
348
|
+
return relative(cwd, resolve(cwd, ...paths));
|
|
349
|
+
},
|
|
350
|
+
basename,
|
|
351
|
+
parse
|
|
352
|
+
};
|
|
353
|
+
}
|
|
354
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { NodeFeatures, NodeContainer } from './container.js'
|
|
2
|
+
import type { FeatureOptions, FeatureState } from '../feature.ts'
|
|
3
|
+
import { features, Feature as UniversalFeature } from '../feature.ts'
|
|
4
|
+
|
|
5
|
+
export { features }
|
|
6
|
+
|
|
7
|
+
export type { FeatureState, FeatureOptions }
|
|
8
|
+
|
|
9
|
+
export class Feature<T extends FeatureState = FeatureState, K extends FeatureOptions = FeatureOptions> extends UniversalFeature<T, K> {
|
|
10
|
+
override get container() : NodeContainer<NodeFeatures> {
|
|
11
|
+
return super.container as NodeContainer<NodeFeatures>
|
|
12
|
+
}
|
|
13
|
+
}
|