@mmmbuto/gemini-cli-termux 0.30.3-termux → 0.30.5-termux
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +42 -193
- package/bundle/docs/cli/settings.md +8 -9
- package/bundle/docs/extensions/reference.md +14 -38
- package/bundle/docs/hooks/reference.md +0 -8
- package/bundle/docs/reference/configuration.md +0 -8
- package/bundle/gemini.js +10730 -11704
- package/bundle/node_modules/@google/gemini-cli-devtools/package.json +1 -1
- package/bundle/package.json +2 -1
- package/package.json +67 -5
- package/packages/cli/dist/index.js +0 -0
- package/packages/cli/dist/package.json +2 -2
- package/packages/cli/dist/src/commands/extensions/examples/custom-commands/gemini-extension.json +2 -2
- package/packages/cli/dist/src/commands/extensions/examples/exclude-tools/gemini-extension.json +3 -3
- package/packages/cli/dist/src/commands/extensions/examples/hooks/gemini-extension.json +2 -2
- package/packages/cli/dist/src/commands/extensions/examples/hooks/hooks/hooks.json +11 -11
- package/packages/cli/dist/src/commands/extensions/examples/mcp-server/example.js +1 -1
- package/packages/cli/dist/src/commands/extensions/examples/mcp-server/gemini-extension.json +8 -8
- package/packages/cli/dist/src/commands/extensions/examples/mcp-server/package.json +9 -9
- package/packages/cli/dist/src/commands/extensions/examples/skills/gemini-extension.json +2 -2
- package/packages/cli/dist/src/commands/extensions/examples/themes-example/README.md +8 -5
- package/packages/cli/dist/src/commands/extensions/examples/themes-example/gemini-extension.json +27 -27
- package/packages/cli/dist/src/config/config.js +4 -65
- package/packages/cli/dist/src/config/config.js.map +1 -1
- package/packages/cli/dist/src/config/settingsSchema.d.ts +1 -235
- package/packages/cli/dist/src/config/settingsSchema.js +1 -235
- package/packages/cli/dist/src/config/settingsSchema.js.map +1 -1
- package/packages/cli/dist/src/gemini.js +0 -2
- package/packages/cli/dist/src/gemini.js.map +1 -1
- package/packages/cli/dist/src/generated/git-commit.d.ts +2 -2
- package/packages/cli/dist/src/generated/git-commit.js +2 -2
- package/packages/cli/dist/src/patches/empty-module.d.ts +2 -0
- package/packages/cli/dist/src/patches/empty-module.js +2 -0
- package/packages/cli/dist/src/patches/empty-module.js.map +1 -0
- package/packages/cli/dist/src/services/McpPromptLoader.js +3 -6
- package/packages/cli/dist/src/services/McpPromptLoader.js.map +1 -1
- package/packages/cli/dist/src/ui/components/AgentConfigDialog.js +19 -5
- package/packages/cli/dist/src/ui/components/AgentConfigDialog.js.map +1 -1
- package/packages/cli/dist/src/ui/components/AgentConfigDialog.test.js +41 -19
- package/packages/cli/dist/src/ui/components/AgentConfigDialog.test.js.map +1 -1
- package/packages/cli/dist/src/ui/components/DialogManager.d.ts +1 -1
- package/packages/cli/dist/src/ui/components/DialogManager.js +34 -7
- package/packages/cli/dist/src/ui/components/DialogManager.js.map +1 -1
- package/packages/cli/dist/src/ui/components/InputPrompt.d.ts +9 -0
- package/packages/cli/dist/src/ui/components/InputPrompt.js +350 -125
- package/packages/cli/dist/src/ui/components/InputPrompt.js.map +1 -1
- package/packages/cli/dist/src/ui/components/InputPrompt.test.js +788 -35
- package/packages/cli/dist/src/ui/components/InputPrompt.test.js.map +1 -1
- package/packages/cli/dist/src/ui/components/messages/ShellToolMessage.js +2 -2
- package/packages/cli/dist/src/ui/components/messages/ShellToolMessage.js.map +1 -1
- package/packages/cli/dist/src/ui/components/messages/ToolConfirmationMessage.js +4 -77
- package/packages/cli/dist/src/ui/components/messages/ToolConfirmationMessage.js.map +1 -1
- package/packages/cli/dist/src/ui/components/messages/ToolConfirmationMessage.test.js +0 -51
- package/packages/cli/dist/src/ui/components/messages/ToolConfirmationMessage.test.js.map +1 -1
- package/packages/cli/dist/src/ui/components/messages/ToolMessage.js +2 -2
- package/packages/cli/dist/src/ui/components/messages/ToolMessage.js.map +1 -1
- package/packages/cli/dist/src/ui/components/messages/ToolShared.d.ts +0 -1
- package/packages/cli/dist/src/ui/components/messages/ToolShared.js +2 -2
- package/packages/cli/dist/src/ui/components/messages/ToolShared.js.map +1 -1
- package/packages/cli/dist/src/ui/components/shared/BaseSettingsDialog.js +4 -1
- package/packages/cli/dist/src/ui/components/shared/BaseSettingsDialog.js.map +1 -1
- package/packages/cli/dist/src/ui/components/shared/BaseSettingsDialog.test.js +139 -40
- package/packages/cli/dist/src/ui/components/shared/BaseSettingsDialog.test.js.map +1 -1
- package/packages/cli/dist/src/ui/components/shared/TextInput.js +2 -1
- package/packages/cli/dist/src/ui/components/shared/TextInput.js.map +1 -1
- package/packages/cli/dist/src/ui/hooks/toolMapping.js +0 -1
- package/packages/cli/dist/src/ui/hooks/toolMapping.js.map +1 -1
- package/packages/cli/dist/src/ui/hooks/toolMapping.test.js +0 -13
- package/packages/cli/dist/src/ui/hooks/toolMapping.test.js.map +1 -1
- package/packages/cli/dist/src/ui/hooks/useToolScheduler.js +2 -18
- package/packages/cli/dist/src/ui/hooks/useToolScheduler.js.map +1 -1
- package/packages/cli/dist/src/ui/hooks/useToolScheduler.test.js +0 -44
- package/packages/cli/dist/src/ui/hooks/useToolScheduler.test.js.map +1 -1
- package/packages/cli/dist/src/ui/keyMatchers.test.js.map +1 -1
- package/packages/cli/dist/src/ui/types.d.ts +0 -1
- package/packages/cli/dist/src/ui/types.js.map +1 -1
- package/packages/cli/dist/src/ui/utils/commandUtils.js +4 -1
- package/packages/cli/dist/src/ui/utils/commandUtils.js.map +1 -1
- package/packages/cli/dist/src/utils/activityLogger.js +23 -94
- package/packages/cli/dist/src/utils/activityLogger.js.map +1 -1
- package/packages/cli/dist/src/utils/handleAutoUpdate.d.ts +1 -1
- package/packages/cli/dist/src/utils/handleAutoUpdate.js +1 -1
- package/packages/cli/dist/src/utils/handleAutoUpdate.js.map +1 -1
- package/packages/cli/dist/src/utils/handleAutoUpdate.test.js +11 -11
- package/packages/cli/dist/src/utils/handleAutoUpdate.test.js.map +1 -1
- package/{bundle/sandbox-macos-restrictive-closed.sb → packages/cli/dist/src/utils/sandbox-macos-strict-open.sb} +42 -4
- package/packages/cli/dist/src/utils/{sandbox-macos-restrictive-closed.sb → sandbox-macos-strict-proxied.sb} +44 -4
- package/packages/cli/dist/tsconfig.tsbuildinfo +1 -1
- package/packages/core/dist/docs/admin/enterprise-controls.md +115 -0
- package/packages/core/dist/docs/changelogs/index.md +57 -1
- package/packages/core/dist/docs/changelogs/latest.md +357 -314
- package/packages/core/dist/docs/changelogs/preview.md +288 -411
- package/packages/core/dist/docs/cli/checkpointing.md +2 -3
- package/packages/core/dist/docs/cli/cli-reference.md +42 -28
- package/packages/core/dist/docs/cli/custom-commands.md +3 -0
- package/packages/core/dist/docs/cli/enterprise.md +28 -8
- package/packages/core/dist/docs/cli/gemini-md.md +21 -13
- package/packages/core/dist/docs/cli/headless.md +34 -372
- package/packages/core/dist/docs/cli/model.md +1 -1
- package/packages/core/dist/docs/cli/plan-mode.md +245 -0
- package/packages/core/dist/docs/cli/rewind.md +11 -11
- package/packages/core/dist/docs/cli/sandbox.md +6 -5
- package/packages/core/dist/docs/cli/session-management.md +61 -44
- package/packages/core/dist/docs/cli/settings.md +64 -49
- package/packages/core/dist/docs/cli/skills.md +29 -7
- package/packages/core/dist/docs/cli/telemetry.md +41 -5
- package/packages/core/dist/docs/cli/themes.md +88 -54
- package/packages/core/dist/docs/cli/trusted-folders.md +31 -0
- package/packages/core/dist/docs/cli/tutorials/automation.md +187 -0
- package/packages/core/dist/docs/cli/tutorials/file-management.md +142 -0
- package/packages/core/dist/docs/cli/tutorials/mcp-setup.md +105 -0
- package/packages/core/dist/docs/cli/tutorials/memory-management.md +126 -0
- package/packages/core/dist/docs/cli/tutorials/session-management.md +105 -0
- package/packages/core/dist/docs/cli/tutorials/shell-commands.md +107 -0
- package/packages/core/dist/docs/cli/tutorials/skills-getting-started.md +36 -31
- package/packages/core/dist/docs/cli/tutorials/task-planning.md +93 -0
- package/packages/core/dist/docs/cli/tutorials/web-tools.md +78 -0
- package/packages/core/dist/docs/core/index.md +7 -7
- package/packages/core/dist/docs/core/subagents.md +40 -40
- package/packages/core/dist/docs/extensions/best-practices.md +102 -53
- package/packages/core/dist/docs/extensions/index.md +37 -21
- package/packages/core/dist/docs/extensions/reference.md +148 -219
- package/packages/core/dist/docs/extensions/releasing.md +93 -122
- package/packages/core/dist/docs/extensions/writing-extensions.md +87 -76
- package/packages/core/dist/docs/get-started/authentication.md +4 -4
- package/packages/core/dist/docs/get-started/examples.md +39 -119
- package/packages/core/dist/docs/get-started/gemini-3.md +17 -3
- package/packages/core/dist/docs/get-started/index.md +16 -5
- package/packages/core/dist/docs/get-started/installation.md +110 -77
- package/packages/core/dist/docs/hooks/best-practices.md +1 -1
- package/packages/core/dist/docs/hooks/reference.md +2 -2
- package/packages/core/dist/docs/index.md +142 -149
- package/packages/core/dist/docs/redirects.json +19 -0
- package/packages/core/dist/docs/reference/commands.md +523 -0
- package/{bundle/docs/get-started → packages/core/dist/docs/reference}/configuration.md +180 -71
- package/packages/core/dist/docs/{cli → reference}/keyboard-shortcuts.md +49 -35
- package/packages/core/dist/docs/{core → reference}/policy-engine.md +76 -32
- package/packages/core/dist/docs/releases.md +2 -2
- package/{bundle/docs → packages/core/dist/docs/resources}/faq.md +1 -1
- package/packages/core/dist/docs/{quota-and-pricing.md → resources/quota-and-pricing.md} +12 -5
- package/{bundle/docs → packages/core/dist/docs/resources}/tos-privacy.md +3 -3
- package/packages/core/dist/docs/{troubleshooting.md → resources/troubleshooting.md} +1 -1
- package/packages/core/dist/docs/sidebar.json +194 -113
- package/packages/core/dist/docs/tools/activate-skill.md +43 -0
- package/packages/core/dist/docs/tools/ask-user.md +95 -0
- package/packages/core/dist/docs/tools/file-system.md +55 -143
- package/packages/core/dist/docs/tools/index.md +97 -93
- package/packages/core/dist/docs/tools/internal-docs.md +46 -0
- package/packages/core/dist/docs/tools/mcp-server.md +65 -16
- package/packages/core/dist/docs/tools/memory.md +21 -40
- package/packages/core/dist/docs/tools/planning.md +57 -0
- package/packages/core/dist/docs/tools/shell.md +44 -88
- package/packages/core/dist/docs/tools/todos.md +22 -44
- package/packages/core/dist/docs/tools/web-fetch.md +22 -46
- package/packages/core/dist/docs/tools/web-search.md +19 -29
- package/packages/core/dist/src/code_assist/types.d.ts +14 -14
- package/packages/core/dist/src/config/config.d.ts +1 -13
- package/packages/core/dist/src/config/config.js +6 -39
- package/packages/core/dist/src/config/config.js.map +1 -1
- package/packages/core/dist/src/confirmation-bus/types.d.ts +0 -3
- package/packages/core/dist/src/confirmation-bus/types.js.map +1 -1
- package/packages/core/dist/src/core/coreToolHookTriggers.d.ts +1 -1
- package/packages/core/dist/src/core/coreToolHookTriggers.js +3 -8
- package/packages/core/dist/src/core/coreToolHookTriggers.js.map +1 -1
- package/packages/core/dist/src/generated/git-commit.d.ts +2 -2
- package/packages/core/dist/src/generated/git-commit.js +2 -2
- package/packages/core/dist/src/hooks/hookEventHandler.d.ts +2 -2
- package/packages/core/dist/src/hooks/hookEventHandler.js +2 -8
- package/packages/core/dist/src/hooks/hookEventHandler.js.map +1 -1
- package/packages/core/dist/src/hooks/hookSystem.d.ts +2 -2
- package/packages/core/dist/src/hooks/hookSystem.js +4 -4
- package/packages/core/dist/src/hooks/hookSystem.js.map +1 -1
- package/packages/core/dist/src/hooks/types.d.ts +0 -18
- package/packages/core/dist/src/hooks/types.js +0 -17
- package/packages/core/dist/src/hooks/types.js.map +1 -1
- package/packages/core/dist/src/ide/ide-client.js +1 -1
- package/packages/core/dist/src/ide/ide-client.js.map +1 -1
- package/packages/core/dist/src/ide/types.d.ts +8 -8
- package/packages/core/dist/src/index.d.ts +2 -0
- package/packages/core/dist/src/index.js +2 -0
- package/packages/core/dist/src/index.js.map +1 -1
- package/packages/core/dist/src/policy/policies/plan.toml +29 -43
- package/packages/core/dist/src/policy/policies/read-only.toml +12 -11
- package/packages/core/dist/src/policy/policies/write.toml +11 -10
- package/packages/core/dist/src/policy/policies/yolo.toml +24 -12
- package/packages/core/dist/src/policy/policy-engine.js +1 -5
- package/packages/core/dist/src/policy/policy-engine.js.map +1 -1
- package/packages/core/dist/src/policy/types.d.ts +1 -2
- package/packages/core/dist/src/policy/types.js +0 -1
- package/packages/core/dist/src/policy/types.js.map +1 -1
- package/packages/core/dist/src/safety/context-builder.d.ts +3 -3
- package/packages/core/dist/src/safety/context-builder.js +4 -60
- package/packages/core/dist/src/safety/context-builder.js.map +1 -1
- package/packages/core/dist/src/safety/context-builder.test.js +18 -98
- package/packages/core/dist/src/safety/context-builder.test.js.map +1 -1
- package/packages/core/dist/src/safety/protocol.d.ts +0 -4
- package/packages/core/dist/src/safety/registry.d.ts +1 -2
- package/packages/core/dist/src/safety/registry.js +4 -14
- package/packages/core/dist/src/safety/registry.js.map +1 -1
- package/packages/core/dist/src/safety/registry.test.js +2 -5
- package/packages/core/dist/src/safety/registry.test.js.map +1 -1
- package/packages/core/dist/src/scheduler/scheduler.d.ts +1 -1
- package/packages/core/dist/src/scheduler/scheduler.js +4 -49
- package/packages/core/dist/src/scheduler/scheduler.js.map +1 -1
- package/packages/core/dist/src/scheduler/scheduler.test.js +0 -91
- package/packages/core/dist/src/scheduler/scheduler.test.js.map +1 -1
- package/packages/core/dist/src/scheduler/state-manager.d.ts +0 -6
- package/packages/core/dist/src/scheduler/state-manager.js +0 -12
- package/packages/core/dist/src/scheduler/state-manager.js.map +1 -1
- package/packages/core/dist/src/scheduler/tool-executor.js +7 -9
- package/packages/core/dist/src/scheduler/tool-executor.js.map +1 -1
- package/packages/core/dist/src/scheduler/tool-executor.test.js +1 -1
- package/packages/core/dist/src/scheduler/tool-executor.test.js.map +1 -1
- package/packages/core/dist/src/scheduler/types.d.ts +0 -13
- package/packages/core/dist/src/services/shellExecutionService.d.ts +1 -1
- package/packages/core/dist/src/services/shellExecutionService.js +7 -8
- package/packages/core/dist/src/services/shellExecutionService.js.map +1 -1
- package/packages/core/dist/src/services/shellExecutionService.test.js +5 -5
- package/packages/core/dist/src/services/shellExecutionService.test.js.map +1 -1
- package/packages/core/dist/src/services/test-data/resolved-aliases-retry.golden.json +251 -251
- package/packages/core/dist/src/services/test-data/resolved-aliases.golden.json +251 -251
- package/packages/core/dist/src/skills/builtin/skill-creator/scripts/init_skill.cjs +5 -1
- package/packages/core/dist/src/skills/builtin/skill-creator/scripts/package_skill.cjs +5 -1
- package/packages/core/dist/src/skills/builtin/skill-creator/scripts/validate_skill.cjs +5 -1
- package/packages/core/dist/src/telemetry/clearcut-logger/clearcut-logger.d.ts +1 -3
- package/packages/core/dist/src/telemetry/clearcut-logger/clearcut-logger.js +0 -2
- package/packages/core/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -1
- package/packages/core/dist/src/telemetry/clearcut-logger/event-metadata-key.d.ts +1 -9
- package/packages/core/dist/src/telemetry/clearcut-logger/event-metadata-key.js +1 -19
- package/packages/core/dist/src/telemetry/clearcut-logger/event-metadata-key.js.map +1 -1
- package/packages/core/dist/src/telemetry/index.d.ts +1 -2
- package/packages/core/dist/src/telemetry/index.js +1 -2
- package/packages/core/dist/src/telemetry/index.js.map +1 -1
- package/packages/core/dist/src/telemetry/loggers.js +0 -4
- package/packages/core/dist/src/telemetry/loggers.js.map +1 -1
- package/packages/core/dist/src/telemetry/trace.js.map +1 -1
- package/packages/core/dist/src/telemetry/types.d.ts +0 -26
- package/packages/core/dist/src/telemetry/types.js +2 -76
- package/packages/core/dist/src/telemetry/types.js.map +1 -1
- package/packages/core/dist/src/tools/diffOptions.d.ts +2 -2
- package/packages/core/dist/src/tools/diffOptions.js.map +1 -1
- package/packages/core/dist/src/tools/mcp-client.test.js.map +1 -1
- package/packages/core/dist/src/tools/mcp-tool.d.ts +1 -3
- package/packages/core/dist/src/tools/mcp-tool.js +2 -9
- package/packages/core/dist/src/tools/mcp-tool.js.map +1 -1
- package/packages/core/dist/src/tools/memoryTool.d.ts +0 -10
- package/packages/core/dist/src/tools/memoryTool.js +30 -25
- package/packages/core/dist/src/tools/memoryTool.js.map +1 -1
- package/packages/core/dist/src/tools/tool-names.d.ts +6 -0
- package/packages/core/dist/src/tools/tool-names.js +16 -1
- package/packages/core/dist/src/tools/tool-names.js.map +1 -1
- package/packages/core/dist/src/tools/tools.d.ts +0 -11
- package/packages/core/dist/src/tools/tools.js.map +1 -1
- package/packages/core/dist/src/utils/getPty.d.ts +14 -1
- package/packages/core/dist/src/utils/getPty.js +67 -2
- package/packages/core/dist/src/utils/getPty.js.map +1 -1
- package/packages/core/dist/src/utils/memoryDiscovery.d.ts +11 -3
- package/packages/core/dist/src/utils/memoryDiscovery.js +56 -21
- package/packages/core/dist/src/utils/memoryDiscovery.js.map +1 -1
- package/packages/core/dist/src/utils/secure-browser-launcher.js +40 -29
- package/packages/core/dist/src/utils/secure-browser-launcher.js.map +1 -1
- package/packages/core/dist/src/utils/textUtils.d.ts +0 -9
- package/packages/core/dist/src/utils/textUtils.js +0 -15
- package/packages/core/dist/src/utils/textUtils.js.map +1 -1
- package/packages/core/dist/src/utils/textUtils.test.js +1 -42
- package/packages/core/dist/src/utils/textUtils.test.js.map +1 -1
- package/packages/core/dist/tsconfig.tsbuildinfo +1 -1
- package/packages/test-utils/dist/tsconfig.tsbuildinfo +1 -1
- package/bundle/docs/ROADMAP.md +0 -113
- package/bundle/docs/TERMUX.md +0 -95
- package/bundle/docs/architecture.md +0 -80
- package/bundle/docs/assets/hero.png +0 -0
- package/bundle/docs/cli/authentication.md +0 -3
- package/bundle/docs/cli/commands.md +0 -430
- package/bundle/docs/cli/context-memory.md +0 -69
- package/bundle/docs/cli/index.md +0 -65
- package/bundle/docs/cli/keyboard-shortcuts.md +0 -140
- package/bundle/docs/cli/tutorials.md +0 -87
- package/bundle/docs/core/policy-engine.md +0 -305
- package/bundle/docs/get-started/configuration-v1.md +0 -888
- package/bundle/docs/patches/README.md +0 -74
- package/bundle/docs/patches/mcp-sdk-typings-shim.md +0 -27
- package/bundle/docs/quota-and-pricing.md +0 -158
- package/bundle/docs/termux-api/COMMANDS.md +0 -592
- package/bundle/docs/termux-api/DISCOVERY_SETUP.md +0 -670
- package/bundle/docs/termux-api/EXECUTION_PLAN.md +0 -532
- package/bundle/docs/termux-api/MERGE_STRATEGY.md +0 -365
- package/bundle/docs/termux-api/PATCHES.md +0 -480
- package/bundle/docs/termux-api/README.md +0 -416
- package/bundle/docs/troubleshooting.md +0 -173
- package/bundle/policies/conseca.toml +0 -6
- package/bundle/sandbox-macos-permissive-closed.sb +0 -32
- package/packages/cli/README.md +0 -173
- package/packages/cli/dist/src/commands/extensions/examples/mcp-server/example.d.ts +0 -6
- package/packages/cli/dist/src/commands/extensions/examples/mcp-server/example.js.map +0 -1
- package/packages/cli/dist/src/commands/extensions/examples/mcp-server/example.test.d.ts +0 -6
- package/packages/cli/dist/src/commands/extensions/examples/mcp-server/example.test.js +0 -111
- package/packages/cli/dist/src/commands/extensions/examples/mcp-server/example.test.js.map +0 -1
- package/packages/cli/dist/src/ui/components/messages/ToolConfirmationMessageOverflow.test.d.ts +0 -6
- package/packages/cli/dist/src/ui/components/messages/ToolConfirmationMessageOverflow.test.js +0 -93
- package/packages/cli/dist/src/ui/components/messages/ToolConfirmationMessageOverflow.test.js.map +0 -1
- package/packages/cli/dist/src/ui/hooks/useReactToolScheduler.d.ts +0 -42
- package/packages/cli/dist/src/ui/hooks/useReactToolScheduler.js +0 -105
- package/packages/cli/dist/src/ui/hooks/useReactToolScheduler.js.map +0 -1
- package/packages/cli/dist/src/ui/hooks/useReactToolScheduler.test.d.ts +0 -6
- package/packages/cli/dist/src/ui/hooks/useReactToolScheduler.test.js +0 -58
- package/packages/cli/dist/src/ui/hooks/useReactToolScheduler.test.js.map +0 -1
- package/packages/cli/dist/src/ui/hooks/useRefreshMemoryCommand.d.ts +0 -6
- package/packages/cli/dist/src/ui/hooks/useRefreshMemoryCommand.js +0 -7
- package/packages/cli/dist/src/ui/hooks/useRefreshMemoryCommand.js.map +0 -1
- package/packages/cli/dist/src/ui/hooks/useShowMemoryCommand.d.ts +0 -9
- package/packages/cli/dist/src/ui/hooks/useShowMemoryCommand.js +0 -59
- package/packages/cli/dist/src/ui/hooks/useShowMemoryCommand.js.map +0 -1
- package/packages/cli/dist/src/ui/hooks/useToolExecutionScheduler.d.ts +0 -30
- package/packages/cli/dist/src/ui/hooks/useToolExecutionScheduler.js +0 -149
- package/packages/cli/dist/src/ui/hooks/useToolExecutionScheduler.js.map +0 -1
- package/packages/cli/dist/src/ui/hooks/useToolExecutionScheduler.test.d.ts +0 -6
- package/packages/cli/dist/src/ui/hooks/useToolExecutionScheduler.test.js +0 -376
- package/packages/cli/dist/src/ui/hooks/useToolExecutionScheduler.test.js.map +0 -1
- package/packages/cli/dist/src/ui/hooks/useToolSchedulerFacade.test.d.ts +0 -6
- package/packages/cli/dist/src/ui/hooks/useToolSchedulerFacade.test.js +0 -45
- package/packages/cli/dist/src/ui/hooks/useToolSchedulerFacade.test.js.map +0 -1
- package/packages/cli/dist/src/ui/utils/InlineMarkdownRenderer.test.d.ts +0 -6
- package/packages/cli/dist/src/ui/utils/InlineMarkdownRenderer.test.js +0 -21
- package/packages/cli/dist/src/ui/utils/InlineMarkdownRenderer.test.js.map +0 -1
- package/packages/cli/dist/src/ui/utils/terminalUtils.test.d.ts +0 -6
- package/packages/cli/dist/src/ui/utils/terminalUtils.test.js +0 -40
- package/packages/cli/dist/src/ui/utils/terminalUtils.test.js.map +0 -1
- package/packages/cli/dist/src/utils/checks.d.ts +0 -19
- package/packages/cli/dist/src/utils/checks.js +0 -24
- package/packages/cli/dist/src/utils/checks.js.map +0 -1
- package/packages/cli/dist/src/utils/checks.test.d.ts +0 -6
- package/packages/cli/dist/src/utils/checks.test.js +0 -29
- package/packages/cli/dist/src/utils/checks.test.js.map +0 -1
- package/packages/cli/dist/src/utils/sandbox-macos-permissive-closed.sb +0 -32
- package/packages/cli/index.js +0 -2
- package/packages/core/dist/docs/TERMUX.md +0 -95
- package/packages/core/dist/docs/architecture.md +0 -80
- package/packages/core/dist/docs/assets/hero.png +0 -0
- package/packages/core/dist/docs/cli/authentication.md +0 -3
- package/packages/core/dist/docs/cli/commands.md +0 -430
- package/packages/core/dist/docs/cli/context-memory.md +0 -69
- package/packages/core/dist/docs/cli/index.md +0 -65
- package/packages/core/dist/docs/cli/tutorials.md +0 -87
- package/packages/core/dist/docs/cli/uninstall.md +0 -65
- package/packages/core/dist/docs/core/memport.md +0 -246
- package/packages/core/dist/docs/core/tools-api.md +0 -131
- package/packages/core/dist/docs/faq.md +0 -154
- package/packages/core/dist/docs/get-started/configuration-v1.md +0 -888
- package/packages/core/dist/docs/get-started/configuration.md +0 -1585
- package/packages/core/dist/docs/patches/README.md +0 -74
- package/packages/core/dist/docs/patches/mcp-sdk-typings-shim.md +0 -27
- package/packages/core/dist/docs/termux-api/COMMANDS.md +0 -592
- package/packages/core/dist/docs/termux-api/DISCOVERY_SETUP.md +0 -670
- package/packages/core/dist/docs/termux-api/EXECUTION_PLAN.md +0 -532
- package/packages/core/dist/docs/termux-api/MERGE_STRATEGY.md +0 -365
- package/packages/core/dist/docs/termux-api/PATCHES.md +0 -480
- package/packages/core/dist/docs/termux-api/README.md +0 -416
- package/packages/core/dist/docs/tos-privacy.md +0 -96
- package/packages/core/dist/src/safety/conseca/conseca.d.ts +0 -31
- package/packages/core/dist/src/safety/conseca/conseca.js +0 -105
- package/packages/core/dist/src/safety/conseca/conseca.js.map +0 -1
- package/packages/core/dist/src/safety/conseca/conseca.test.d.ts +0 -6
- package/packages/core/dist/src/safety/conseca/conseca.test.js +0 -226
- package/packages/core/dist/src/safety/conseca/conseca.test.js.map +0 -1
- package/packages/core/dist/src/safety/conseca/integration.test.d.ts +0 -6
- package/packages/core/dist/src/safety/conseca/integration.test.js +0 -19
- package/packages/core/dist/src/safety/conseca/integration.test.js.map +0 -1
- package/packages/core/dist/src/safety/conseca/policy-enforcer.d.ts +0 -13
- package/packages/core/dist/src/safety/conseca/policy-enforcer.js +0 -135
- package/packages/core/dist/src/safety/conseca/policy-enforcer.js.map +0 -1
- package/packages/core/dist/src/safety/conseca/policy-enforcer.test.d.ts +0 -6
- package/packages/core/dist/src/safety/conseca/policy-enforcer.test.js +0 -141
- package/packages/core/dist/src/safety/conseca/policy-enforcer.test.js.map +0 -1
- package/packages/core/dist/src/safety/conseca/policy-generator.d.ts +0 -15
- package/packages/core/dist/src/safety/conseca/policy-generator.js +0 -144
- package/packages/core/dist/src/safety/conseca/policy-generator.js.map +0 -1
- package/packages/core/dist/src/safety/conseca/policy-generator.test.d.ts +0 -6
- package/packages/core/dist/src/safety/conseca/policy-generator.test.js +0 -84
- package/packages/core/dist/src/safety/conseca/policy-generator.test.js.map +0 -1
- package/packages/core/dist/src/safety/conseca/types.d.ts +0 -15
- package/packages/core/dist/src/safety/conseca/types.js +0 -7
- package/packages/core/dist/src/safety/conseca/types.js.map +0 -1
- package/packages/core/dist/src/telemetry/conseca-logger.d.ts +0 -9
- package/packages/core/dist/src/telemetry/conseca-logger.js +0 -91
- package/packages/core/dist/src/telemetry/conseca-logger.js.map +0 -1
- package/packages/core/dist/src/telemetry/conseca-logger.test.d.ts +0 -6
- package/packages/core/dist/src/telemetry/conseca-logger.test.js +0 -89
- package/packages/core/dist/src/telemetry/conseca-logger.test.js.map +0 -1
- package/packages/core/dist/src/tools/mcpImportTool.d.ts +0 -31
- package/packages/core/dist/src/tools/mcpImportTool.js +0 -143
- package/packages/core/dist/src/tools/mcpImportTool.js.map +0 -1
- package/packages/core/dist/src/utils/contextMemory.d.ts +0 -67
- package/packages/core/dist/src/utils/contextMemory.js +0 -493
- package/packages/core/dist/src/utils/contextMemory.js.map +0 -1
- package/packages/core/dist/src/utils/contextMemory.test.d.ts +0 -6
- package/packages/core/dist/src/utils/contextMemory.test.js +0 -183
- package/packages/core/dist/src/utils/contextMemory.test.js.map +0 -1
- /package/{bundle/docs/core → packages/core/dist/docs/reference}/memport.md +0 -0
- /package/{bundle/docs/core → packages/core/dist/docs/reference}/tools-api.md +0 -0
- /package/{bundle/docs/cli → packages/core/dist/docs/resources}/uninstall.md +0 -0
|
@@ -1,416 +0,0 @@
|
|
|
1
|
-
# Termux-API Integration Plan
|
|
2
|
-
|
|
3
|
-
**Project**: gemini-cli-termux **Version**: 0.22.0-termux **Author**: DioNanos
|
|
4
|
-
**Date**: 2025-12-17 **Status**: Planning Phase
|
|
5
|
-
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
## Executive Summary
|
|
9
|
-
|
|
10
|
-
This document describes the plan to integrate native Termux-API commands into
|
|
11
|
-
the `gemini-cli-termux` fork, allowing Gemini CLI to leverage Android hardware
|
|
12
|
-
and software APIs through Termux.
|
|
13
|
-
|
|
14
|
-
## Table of Contents
|
|
15
|
-
|
|
16
|
-
1. [Current Architecture](#current-architecture)
|
|
17
|
-
2. [Termux-API Commands](#termux-api-commands)
|
|
18
|
-
3. [Integration Approaches](#integration-approaches)
|
|
19
|
-
4. [Recommendation](#recommendation)
|
|
20
|
-
5. [Implementation Roadmap](#implementation-roadmap)
|
|
21
|
-
6. [Reference Files](#reference-files)
|
|
22
|
-
|
|
23
|
-
---
|
|
24
|
-
|
|
25
|
-
## Current Architecture
|
|
26
|
-
|
|
27
|
-
### Monorepo Structure
|
|
28
|
-
|
|
29
|
-
```
|
|
30
|
-
gemini-cli-termux/
|
|
31
|
-
├── packages/
|
|
32
|
-
│ ├── core/ # Logic core, tools, config
|
|
33
|
-
│ │ └── src/
|
|
34
|
-
│ │ ├── tools/ # Tool implementations
|
|
35
|
-
│ │ ├── mcp/ # MCP support
|
|
36
|
-
│ │ └── config/ # Configuration
|
|
37
|
-
│ ├── cli/ # CLI interface
|
|
38
|
-
│ ├── a2a-server/ # Agent-to-Agent server
|
|
39
|
-
│ └── vscode-ide-companion/
|
|
40
|
-
└── bundle/ # Built executable
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
### Tool System
|
|
44
|
-
|
|
45
|
-
Tools in Gemini CLI follow a well-defined pattern:
|
|
46
|
-
|
|
47
|
-
1. **BaseDeclarativeTool**: Base class for defining tools
|
|
48
|
-
2. **BaseToolInvocation**: Class for tool execution
|
|
49
|
-
3. **ToolRegistry**: Registers and manages all tools
|
|
50
|
-
|
|
51
|
-
**Key files**:
|
|
52
|
-
|
|
53
|
-
- `packages/core/src/tools/tools.ts` - Interfaces and base classes
|
|
54
|
-
- `packages/core/src/tools/tool-registry.ts` - Tool registry
|
|
55
|
-
- `packages/core/src/tools/shell.ts` - Example: ShellTool
|
|
56
|
-
|
|
57
|
-
### Tool Call Flow
|
|
58
|
-
|
|
59
|
-
```
|
|
60
|
-
LLM → ToolRegistry.getTool() → DeclarativeTool.build() → ToolInvocation.execute()
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
### Discovery Mechanisms
|
|
64
|
-
|
|
65
|
-
1. **Built-in Tools**: Manually registered in the registry
|
|
66
|
-
2. **Discovered Tools**: Via `tool_discovery_command` in config
|
|
67
|
-
3. **MCP Tools**: Via Model Context Protocol servers
|
|
68
|
-
|
|
69
|
-
---
|
|
70
|
-
|
|
71
|
-
## Termux-API Commands
|
|
72
|
-
|
|
73
|
-
### Categorization by Functionality
|
|
74
|
-
|
|
75
|
-
| Category | Commands | Complexity |
|
|
76
|
-
| ------------------ | -------------------------------------------------------------------------------------------------------- | --------------- |
|
|
77
|
-
| **System Info** | battery-status, audio-info, wifi-connectioninfo, wifi-scaninfo, telephony-deviceinfo, telephony-cellinfo | Low |
|
|
78
|
-
| **Notifications** | notification, notification-remove, notification-list, toast | Low |
|
|
79
|
-
| **Clipboard** | clipboard-get, clipboard-set | Low |
|
|
80
|
-
| **Media** | camera-photo, camera-info, microphone-record, media-player, media-scan, tts-speak, speech-to-text | Medium |
|
|
81
|
-
| **Location** | location | Medium |
|
|
82
|
-
| **Sensors** | sensor, infrared-frequencies, infrared-transmit, torch, vibrate, brightness | Medium |
|
|
83
|
-
| **Communication** | sms-send, sms-inbox, sms-list, telephony-call, call-log, contact-list | High (privacy) |
|
|
84
|
-
| **Storage** | storage-get, download, share, open, open-url, saf-\* | Medium |
|
|
85
|
-
| **Security** | fingerprint, keystore | High (security) |
|
|
86
|
-
| **System Control** | volume, wake-lock, wake-unlock, wallpaper, wifi-enable | Medium |
|
|
87
|
-
| **Dialogs** | dialog | Medium |
|
|
88
|
-
| **NFC** | nfc | High |
|
|
89
|
-
| **USB** | usb | High |
|
|
90
|
-
| **Job Scheduler** | job-scheduler | Medium |
|
|
91
|
-
|
|
92
|
-
### Priority Commands (Phase 1)
|
|
93
|
-
|
|
94
|
-
1. **termux-battery-status** - Battery info (JSON output)
|
|
95
|
-
2. **termux-clipboard-get/set** - Clipboard operations
|
|
96
|
-
3. **termux-toast** - Toast notifications
|
|
97
|
-
4. **termux-notification** - Persistent notifications
|
|
98
|
-
5. **termux-tts-speak** - Text-to-Speech
|
|
99
|
-
6. **termux-vibrate** - Haptic feedback
|
|
100
|
-
7. **termux-torch** - Flashlight control
|
|
101
|
-
8. **termux-location** - GPS location
|
|
102
|
-
9. **termux-wifi-connectioninfo** - Network info
|
|
103
|
-
10. **termux-audio-info** - Audio info
|
|
104
|
-
|
|
105
|
-
---
|
|
106
|
-
|
|
107
|
-
## Integration Approaches
|
|
108
|
-
|
|
109
|
-
### Approach A: Native Dedicated Tools
|
|
110
|
-
|
|
111
|
-
**Description**: Create dedicated TypeScript classes for each category of Termux
|
|
112
|
-
commands.
|
|
113
|
-
|
|
114
|
-
**Proposed Structure**:
|
|
115
|
-
|
|
116
|
-
```
|
|
117
|
-
packages/core/src/tools/termux/
|
|
118
|
-
├── index.ts
|
|
119
|
-
├── termux-base.ts
|
|
120
|
-
├── termux-system.ts # battery, wifi, audio, telephony
|
|
121
|
-
├── termux-notification.ts # toast, notification
|
|
122
|
-
├── termux-clipboard.ts # clipboard operations
|
|
123
|
-
├── termux-media.ts # camera, microphone, tts, speech
|
|
124
|
-
├── termux-location.ts # GPS
|
|
125
|
-
├── termux-sensors.ts # sensor, torch, vibrate
|
|
126
|
-
└── termux-storage.ts # download, share, open
|
|
127
|
-
```
|
|
128
|
-
|
|
129
|
-
**Pros**:
|
|
130
|
-
|
|
131
|
-
- Deep integration with Gemini
|
|
132
|
-
- Type-safe parameter validation
|
|
133
|
-
- LLM-optimized descriptions
|
|
134
|
-
- Specific error handling
|
|
135
|
-
- Granular user confirmation
|
|
136
|
-
|
|
137
|
-
**Cons**:
|
|
138
|
-
|
|
139
|
-
- Much code to write (~50 tools)
|
|
140
|
-
- Ongoing maintenance
|
|
141
|
-
- Strong coupling
|
|
142
|
-
|
|
143
|
-
**Estimated Effort**: High (2-3 weeks)
|
|
144
|
-
|
|
145
|
-
---
|
|
146
|
-
|
|
147
|
-
### Approach B: MCP Server for Termux-API
|
|
148
|
-
|
|
149
|
-
**Description**: Create a standalone MCP server that exposes all Termux commands
|
|
150
|
-
as MCP tools.
|
|
151
|
-
|
|
152
|
-
**Proposed Structure**:
|
|
153
|
-
|
|
154
|
-
```
|
|
155
|
-
termux-mcp-server/
|
|
156
|
-
├── package.json
|
|
157
|
-
├── src/
|
|
158
|
-
│ ├── index.ts # MCP server entry
|
|
159
|
-
│ ├── tools/ # Tool definitions
|
|
160
|
-
│ └── utils/ # Helper functions
|
|
161
|
-
└── README.md
|
|
162
|
-
```
|
|
163
|
-
|
|
164
|
-
**Configuration**:
|
|
165
|
-
|
|
166
|
-
```json
|
|
167
|
-
// settings.json
|
|
168
|
-
{
|
|
169
|
-
"mcpServers": {
|
|
170
|
-
"termux": {
|
|
171
|
-
"command": "npx",
|
|
172
|
-
"args": ["@mmmbuto/termux-mcp-server"]
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
```
|
|
177
|
-
|
|
178
|
-
**Pros**:
|
|
179
|
-
|
|
180
|
-
- Reusable with other MCP clients
|
|
181
|
-
- Separation of concerns
|
|
182
|
-
- Easy to update independently
|
|
183
|
-
- Widely supported MCP standard
|
|
184
|
-
- Publishable to npm separately
|
|
185
|
-
|
|
186
|
-
**Cons**:
|
|
187
|
-
|
|
188
|
-
- Communication overhead
|
|
189
|
-
- Separate process dependency
|
|
190
|
-
- More complex debugging
|
|
191
|
-
|
|
192
|
-
**Estimated Effort**: Medium (1-2 weeks)
|
|
193
|
-
|
|
194
|
-
---
|
|
195
|
-
|
|
196
|
-
### Approach C: Tool Discovery Script
|
|
197
|
-
|
|
198
|
-
**Description**: Create a script that generates FunctionDeclarations for Termux
|
|
199
|
-
commands, leveraging the existing tool discovery mechanism.
|
|
200
|
-
|
|
201
|
-
**Implementation**:
|
|
202
|
-
|
|
203
|
-
```bash
|
|
204
|
-
# termux-tool-discovery.sh
|
|
205
|
-
#!/bin/bash
|
|
206
|
-
cat << 'EOF'
|
|
207
|
-
[
|
|
208
|
-
{
|
|
209
|
-
"name": "termux_battery_status",
|
|
210
|
-
"description": "Get battery status including percentage, health, and charging state",
|
|
211
|
-
"parametersJsonSchema": {
|
|
212
|
-
"type": "object",
|
|
213
|
-
"properties": {}
|
|
214
|
-
}
|
|
215
|
-
},
|
|
216
|
-
...
|
|
217
|
-
]
|
|
218
|
-
EOF
|
|
219
|
-
```
|
|
220
|
-
|
|
221
|
-
**Configuration**:
|
|
222
|
-
|
|
223
|
-
```json
|
|
224
|
-
// settings.json
|
|
225
|
-
{
|
|
226
|
-
"tool_discovery_command": "bash ~/.config/gemini/termux-tool-discovery.sh",
|
|
227
|
-
"tool_call_command": "bash ~/.config/gemini/termux-tool-call.sh"
|
|
228
|
-
}
|
|
229
|
-
```
|
|
230
|
-
|
|
231
|
-
**Pros**:
|
|
232
|
-
|
|
233
|
-
- Leverages existing infrastructure
|
|
234
|
-
- Zero core modifications
|
|
235
|
-
- User configurable
|
|
236
|
-
- Easy to extend
|
|
237
|
-
|
|
238
|
-
**Cons**:
|
|
239
|
-
|
|
240
|
-
- Less control over validation
|
|
241
|
-
- Depends on external scripts
|
|
242
|
-
- Limited error handling
|
|
243
|
-
|
|
244
|
-
**Estimated Effort**: Low (3-5 days)
|
|
245
|
-
|
|
246
|
-
---
|
|
247
|
-
|
|
248
|
-
### Approach D: Shell Allowlist Extension
|
|
249
|
-
|
|
250
|
-
**Description**: Extend shell permissions to auto-approve `termux-*` commands.
|
|
251
|
-
|
|
252
|
-
**Implementation**:
|
|
253
|
-
|
|
254
|
-
```typescript
|
|
255
|
-
// packages/core/src/utils/shell-permissions.ts
|
|
256
|
-
const TERMUX_COMMANDS = [
|
|
257
|
-
'termux-battery-status',
|
|
258
|
-
'termux-clipboard-get',
|
|
259
|
-
'termux-clipboard-set',
|
|
260
|
-
// ...
|
|
261
|
-
];
|
|
262
|
-
|
|
263
|
-
export function isTermuxCommand(command: string): boolean {
|
|
264
|
-
return TERMUX_COMMANDS.some((tc) => command.startsWith(tc));
|
|
265
|
-
}
|
|
266
|
-
```
|
|
267
|
-
|
|
268
|
-
**Pros**:
|
|
269
|
-
|
|
270
|
-
- Minimal code impact
|
|
271
|
-
- Uses existing ShellTool
|
|
272
|
-
- Quick win
|
|
273
|
-
|
|
274
|
-
**Cons**:
|
|
275
|
-
|
|
276
|
-
- No additional semantics
|
|
277
|
-
- LLM must know the syntax
|
|
278
|
-
- No parameter validation
|
|
279
|
-
- No description for LLM
|
|
280
|
-
|
|
281
|
-
**Estimated Effort**: Minimal (1-2 days)
|
|
282
|
-
|
|
283
|
-
---
|
|
284
|
-
|
|
285
|
-
### Approach E: Hybrid (Recommended)
|
|
286
|
-
|
|
287
|
-
**Description**: Combine approaches B and C for maximum flexibility.
|
|
288
|
-
|
|
289
|
-
**Phase 1**: Tool Discovery Script (quick win)
|
|
290
|
-
|
|
291
|
-
- Generates declarations for all commands
|
|
292
|
-
- Allows Gemini to use Termux immediately
|
|
293
|
-
|
|
294
|
-
**Phase 2**: MCP Server (production)
|
|
295
|
-
|
|
296
|
-
- Implements complete MCP server
|
|
297
|
-
- Robust validation
|
|
298
|
-
- Publishable to npm
|
|
299
|
-
|
|
300
|
-
**Phase 3**: Native Tools (optional)
|
|
301
|
-
|
|
302
|
-
- Only for critical/frequent commands
|
|
303
|
-
- Optimized integration
|
|
304
|
-
|
|
305
|
-
---
|
|
306
|
-
|
|
307
|
-
## Recommendation
|
|
308
|
-
|
|
309
|
-
**Recommended Approach: E (Hybrid)**
|
|
310
|
-
|
|
311
|
-
### Rationale
|
|
312
|
-
|
|
313
|
-
1. **Quick Win**: Tool Discovery allows starting immediately
|
|
314
|
-
2. **Scalability**: MCP Server is the standard for extensions
|
|
315
|
-
3. **Flexibility**: Native tools only where needed
|
|
316
|
-
4. **Maintainability**: Each phase can be developed independently
|
|
317
|
-
|
|
318
|
-
### Implementation Priority
|
|
319
|
-
|
|
320
|
-
| Phase | Approach | Commands | Priority |
|
|
321
|
-
| ----- | ---------------- | ------------------------------- | -------- |
|
|
322
|
-
| 1 | Discovery Script | All | High |
|
|
323
|
-
| 2 | MCP Server | System, Clipboard, Notification | Medium |
|
|
324
|
-
| 3 | Native Tools | TTS, Location | Low |
|
|
325
|
-
|
|
326
|
-
---
|
|
327
|
-
|
|
328
|
-
## Implementation Roadmap
|
|
329
|
-
|
|
330
|
-
### Phase 1: Tool Discovery (Quick Win)
|
|
331
|
-
|
|
332
|
-
**Files to create**:
|
|
333
|
-
|
|
334
|
-
- `scripts/termux-tool-discovery.sh`
|
|
335
|
-
- `scripts/termux-tool-call.sh`
|
|
336
|
-
- `docs/termux-api/DISCOVERY_SETUP.md`
|
|
337
|
-
|
|
338
|
-
**Tasks**:
|
|
339
|
-
|
|
340
|
-
1. [ ] Create discovery script with all FunctionDeclarations
|
|
341
|
-
2. [ ] Create call script with command dispatch
|
|
342
|
-
3. [ ] Document user configuration
|
|
343
|
-
4. [ ] Test on Termux
|
|
344
|
-
5. [ ] Update README
|
|
345
|
-
|
|
346
|
-
### Phase 2: MCP Server
|
|
347
|
-
|
|
348
|
-
**Files to create**:
|
|
349
|
-
|
|
350
|
-
- New package `packages/termux-mcp/`
|
|
351
|
-
- Or separate repository `termux-mcp-server`
|
|
352
|
-
|
|
353
|
-
**Tasks**:
|
|
354
|
-
|
|
355
|
-
1. [ ] Scaffold MCP server
|
|
356
|
-
2. [ ] Implement System tools (battery, wifi, audio)
|
|
357
|
-
3. [ ] Implement Clipboard tools
|
|
358
|
-
4. [ ] Implement Notification tools
|
|
359
|
-
5. [ ] Implement Media tools
|
|
360
|
-
6. [ ] Test integration
|
|
361
|
-
7. [ ] Publish to npm
|
|
362
|
-
|
|
363
|
-
### Phase 3: Native Tools (Optional)
|
|
364
|
-
|
|
365
|
-
**Files to modify**:
|
|
366
|
-
|
|
367
|
-
- `packages/core/src/tools/` - New tool files
|
|
368
|
-
- `packages/core/src/index.ts` - Export tools
|
|
369
|
-
|
|
370
|
-
**Tasks**:
|
|
371
|
-
|
|
372
|
-
1. [ ] Implement TermuxTTSTool
|
|
373
|
-
2. [ ] Implement TermuxLocationTool
|
|
374
|
-
3. [ ] Implement TermuxClipboardTool
|
|
375
|
-
4. [ ] Register tools in registry
|
|
376
|
-
5. [ ] Test and documentation
|
|
377
|
-
|
|
378
|
-
---
|
|
379
|
-
|
|
380
|
-
## Reference Files
|
|
381
|
-
|
|
382
|
-
### Core Architecture
|
|
383
|
-
|
|
384
|
-
| File | Description |
|
|
385
|
-
| ------------------------------------------ | ---------------------- |
|
|
386
|
-
| `packages/core/src/tools/tools.ts` | Base tool interfaces |
|
|
387
|
-
| `packages/core/src/tools/tool-registry.ts` | Registry and discovery |
|
|
388
|
-
| `packages/core/src/tools/shell.ts` | Example ShellTool |
|
|
389
|
-
| `packages/core/src/tools/mcp-tool.ts` | MCP tool wrapper |
|
|
390
|
-
| `packages/core/src/tools/mcp-client.ts` | MCP client |
|
|
391
|
-
|
|
392
|
-
### Configuration
|
|
393
|
-
|
|
394
|
-
| File | Description |
|
|
395
|
-
| -------------------------------------- | --------------- |
|
|
396
|
-
| `packages/core/src/config/config.ts` | Config loader |
|
|
397
|
-
| `packages/core/src/config/settings.ts` | Settings schema |
|
|
398
|
-
|
|
399
|
-
### Existing Documentation
|
|
400
|
-
|
|
401
|
-
| File | Description |
|
|
402
|
-
| ---------------- | ---------------- |
|
|
403
|
-
| `docs/TERMUX.md` | Setup Termux |
|
|
404
|
-
| `README.md` | Project Overview |
|
|
405
|
-
|
|
406
|
-
---
|
|
407
|
-
|
|
408
|
-
## Appendices
|
|
409
|
-
|
|
410
|
-
- [COMMANDS.md](./COMMANDS.md) - Termux-API commands detail
|
|
411
|
-
- [DISCOVERY_SETUP.md](./DISCOVERY_SETUP.md) - Tool Discovery setup guide
|
|
412
|
-
- [MCP_SERVER.md](./MCP_SERVER.md) - MCP Server specifications
|
|
413
|
-
|
|
414
|
-
---
|
|
415
|
-
|
|
416
|
-
_Author: DioNanos_
|
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
# Gemini CLI: License, Terms of Service, and Privacy Notices
|
|
2
|
-
|
|
3
|
-
Gemini CLI is an open-source tool that lets you interact with Google's powerful
|
|
4
|
-
AI services directly from your command-line interface. The Gemini CLI software
|
|
5
|
-
is licensed under the
|
|
6
|
-
[Apache 2.0 license](https://github.com/google-gemini/gemini-cli/blob/main/LICENSE).
|
|
7
|
-
When you use Gemini CLI to access or use Google’s services, the Terms of Service
|
|
8
|
-
and Privacy Notices applicable to those services apply to such access and use.
|
|
9
|
-
|
|
10
|
-
Your Gemini CLI Usage Statistics are handled in accordance with Google's Privacy
|
|
11
|
-
Policy.
|
|
12
|
-
|
|
13
|
-
**Note:** See [quotas and pricing](/docs/quota-and-pricing.md) for the quota and
|
|
14
|
-
pricing details that apply to your usage of the Gemini CLI.
|
|
15
|
-
|
|
16
|
-
## Supported authentication methods
|
|
17
|
-
|
|
18
|
-
Your authentication method refers to the method you use to log into and access
|
|
19
|
-
Google’s services with Gemini CLI. Supported authentication methods include:
|
|
20
|
-
|
|
21
|
-
- Logging in with your Google account to Gemini Code Assist.
|
|
22
|
-
- Using an API key with Gemini Developer API.
|
|
23
|
-
- Using an API key with Vertex AI GenAI API.
|
|
24
|
-
|
|
25
|
-
The Terms of Service and Privacy Notices applicable to the aforementioned Google
|
|
26
|
-
services are set forth in the table below.
|
|
27
|
-
|
|
28
|
-
If you log in with your Google account and you do not already have a Gemini Code
|
|
29
|
-
Assist account associated with your Google account, you will be directed to the
|
|
30
|
-
sign up flow for Gemini Code Assist for individuals. If your Google account is
|
|
31
|
-
managed by your organization, your administrator may not permit access to Gemini
|
|
32
|
-
Code Assist for individuals. Please see the
|
|
33
|
-
[Gemini Code Assist for individuals FAQs](https://developers.google.com/gemini-code-assist/resources/faqs)
|
|
34
|
-
for further information.
|
|
35
|
-
|
|
36
|
-
| Authentication Method | Service(s) | Terms of Service | Privacy Notice |
|
|
37
|
-
| :----------------------- | :--------------------------- | :------------------------------------------------------------------------------------------------------ | :-------------------------------------------------------------------------------------------- |
|
|
38
|
-
| Google Account | Gemini Code Assist services | [Terms of Service](https://developers.google.com/gemini-code-assist/resources/privacy-notices) | [Privacy Notices](https://developers.google.com/gemini-code-assist/resources/privacy-notices) |
|
|
39
|
-
| Gemini Developer API Key | Gemini API - Unpaid Services | [Gemini API Terms of Service - Unpaid Services](https://ai.google.dev/gemini-api/terms#unpaid-services) | [Google Privacy Policy](https://policies.google.com/privacy) |
|
|
40
|
-
| Gemini Developer API Key | Gemini API - Paid Services | [Gemini API Terms of Service - Paid Services](https://ai.google.dev/gemini-api/terms#paid-services) | [Google Privacy Policy](https://policies.google.com/privacy) |
|
|
41
|
-
| Vertex AI GenAI API Key | Vertex AI GenAI API | [Google Cloud Platform Terms of Service](https://cloud.google.com/terms/service-terms/) | [Google Cloud Privacy Notice](https://cloud.google.com/terms/cloud-privacy-notice) |
|
|
42
|
-
|
|
43
|
-
## 1. If you have logged in with your Google account to Gemini Code Assist
|
|
44
|
-
|
|
45
|
-
For users who use their Google account to access
|
|
46
|
-
[Gemini Code Assist](https://codeassist.google), these Terms of Service and
|
|
47
|
-
Privacy Notice documents apply:
|
|
48
|
-
|
|
49
|
-
- Gemini Code Assist for individuals:
|
|
50
|
-
[Google Terms of Service](https://policies.google.com/terms) and
|
|
51
|
-
[Gemini Code Assist for individuals Privacy Notice](https://developers.google.com/gemini-code-assist/resources/privacy-notice-gemini-code-assist-individuals).
|
|
52
|
-
- Gemini Code Assist with Google AI Pro or Ultra subscription:
|
|
53
|
-
[Google Terms of Service](https://policies.google.com/terms),
|
|
54
|
-
[Google One Additional Terms of Service](https://one.google.com/terms-of-service)
|
|
55
|
-
and [Google Privacy Policy\*](https://policies.google.com/privacy).
|
|
56
|
-
- Gemini Code Assist Standard and Enterprise editions:
|
|
57
|
-
[Google Cloud Platform Terms of Service](https://cloud.google.com/terms) and
|
|
58
|
-
[Google Cloud Privacy Notice](https://cloud.google.com/terms/cloud-privacy-notice).
|
|
59
|
-
|
|
60
|
-
_\* If your account is also associated with an active subscription to Gemini
|
|
61
|
-
Code Assist Standard or Enterprise edition, the terms and privacy policy of
|
|
62
|
-
Gemini Code Assist Standard or Enterprise edition will apply to all your use of
|
|
63
|
-
Gemini Code Assist._
|
|
64
|
-
|
|
65
|
-
## 2. If you have logged in with a Gemini API key to the Gemini Developer API
|
|
66
|
-
|
|
67
|
-
If you are using a Gemini API key for authentication with the
|
|
68
|
-
[Gemini Developer API](https://ai.google.dev/gemini-api/docs), these Terms of
|
|
69
|
-
Service and Privacy Notice documents apply:
|
|
70
|
-
|
|
71
|
-
- Terms of Service: Your use of the Gemini CLI is governed by the
|
|
72
|
-
[Gemini API Terms of Service](https://ai.google.dev/gemini-api/terms). These
|
|
73
|
-
terms may differ depending on whether you are using an unpaid or paid service:
|
|
74
|
-
- For unpaid services, refer to the
|
|
75
|
-
[Gemini API Terms of Service - Unpaid Services](https://ai.google.dev/gemini-api/terms#unpaid-services).
|
|
76
|
-
- For paid services, refer to the
|
|
77
|
-
[Gemini API Terms of Service - Paid Services](https://ai.google.dev/gemini-api/terms#paid-services).
|
|
78
|
-
- Privacy Notice: The collection and use of your data is described in the
|
|
79
|
-
[Google Privacy Policy](https://policies.google.com/privacy).
|
|
80
|
-
|
|
81
|
-
## 3. If you have logged in with a Gemini API key to the Vertex AI GenAI API
|
|
82
|
-
|
|
83
|
-
If you are using a Gemini API key for authentication with a
|
|
84
|
-
[Vertex AI GenAI API](https://cloud.google.com/vertex-ai/generative-ai/docs/reference/rest)
|
|
85
|
-
backend, these Terms of Service and Privacy Notice documents apply:
|
|
86
|
-
|
|
87
|
-
- Terms of Service: Your use of the Gemini CLI is governed by the
|
|
88
|
-
[Google Cloud Platform Service Terms](https://cloud.google.com/terms/service-terms/).
|
|
89
|
-
- Privacy Notice: The collection and use of your data is described in the
|
|
90
|
-
[Google Cloud Privacy Notice](https://cloud.google.com/terms/cloud-privacy-notice).
|
|
91
|
-
|
|
92
|
-
## Usage statistics opt-out
|
|
93
|
-
|
|
94
|
-
You may opt-out from sending Gemini CLI Usage Statistics to Google by following
|
|
95
|
-
the instructions available here:
|
|
96
|
-
[Usage Statistics Configuration](https://github.com/google-gemini/gemini-cli/blob/main/docs/get-started/configuration.md#usage-statistics).
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright 2025 Google LLC
|
|
4
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
-
*/
|
|
6
|
-
import type { InProcessChecker } from '../built-in.js';
|
|
7
|
-
import type { SafetyCheckInput, SafetyCheckResult } from '../protocol.js';
|
|
8
|
-
import type { Config } from '../../config/config.js';
|
|
9
|
-
import type { SecurityPolicy } from './types.js';
|
|
10
|
-
export declare class ConsecaSafetyChecker implements InProcessChecker {
|
|
11
|
-
private static instance;
|
|
12
|
-
private currentPolicy;
|
|
13
|
-
private activeUserPrompt;
|
|
14
|
-
private config;
|
|
15
|
-
/**
|
|
16
|
-
* Private constructor to enforce singleton pattern.
|
|
17
|
-
* Use `getInstance()` to access the instance.
|
|
18
|
-
*/
|
|
19
|
-
private constructor();
|
|
20
|
-
static getInstance(): ConsecaSafetyChecker;
|
|
21
|
-
/**
|
|
22
|
-
* Resets the singleton instance. Use only in tests.
|
|
23
|
-
*/
|
|
24
|
-
static resetInstance(): void;
|
|
25
|
-
setConfig(config: Config): void;
|
|
26
|
-
check(input: SafetyCheckInput): Promise<SafetyCheckResult>;
|
|
27
|
-
getPolicy(userPrompt: string, trustedContent: string, config: Config): Promise<SecurityPolicy>;
|
|
28
|
-
private extractUserPrompt;
|
|
29
|
-
getCurrentPolicy(): SecurityPolicy | null;
|
|
30
|
-
getActiveUserPrompt(): string | null;
|
|
31
|
-
}
|
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright 2025 Google LLC
|
|
4
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
-
*/
|
|
6
|
-
import { SafetyCheckDecision } from '../protocol.js';
|
|
7
|
-
import { logConsecaPolicyGeneration, ConsecaPolicyGenerationEvent, logConsecaVerdict, ConsecaVerdictEvent, } from '../../telemetry/index.js';
|
|
8
|
-
import { debugLogger } from '../../utils/debugLogger.js';
|
|
9
|
-
import { generatePolicy } from './policy-generator.js';
|
|
10
|
-
import { enforcePolicy } from './policy-enforcer.js';
|
|
11
|
-
export class ConsecaSafetyChecker {
|
|
12
|
-
static instance;
|
|
13
|
-
currentPolicy = null;
|
|
14
|
-
activeUserPrompt = null;
|
|
15
|
-
config = null;
|
|
16
|
-
/**
|
|
17
|
-
* Private constructor to enforce singleton pattern.
|
|
18
|
-
* Use `getInstance()` to access the instance.
|
|
19
|
-
*/
|
|
20
|
-
constructor() { }
|
|
21
|
-
static getInstance() {
|
|
22
|
-
if (!ConsecaSafetyChecker.instance) {
|
|
23
|
-
ConsecaSafetyChecker.instance = new ConsecaSafetyChecker();
|
|
24
|
-
}
|
|
25
|
-
return ConsecaSafetyChecker.instance;
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* Resets the singleton instance. Use only in tests.
|
|
29
|
-
*/
|
|
30
|
-
static resetInstance() {
|
|
31
|
-
ConsecaSafetyChecker.instance = undefined;
|
|
32
|
-
}
|
|
33
|
-
setConfig(config) {
|
|
34
|
-
this.config = config;
|
|
35
|
-
}
|
|
36
|
-
async check(input) {
|
|
37
|
-
debugLogger.debug(`[Conseca] check called. History is: ${JSON.stringify(input.context.history)}`);
|
|
38
|
-
if (!this.config) {
|
|
39
|
-
debugLogger.debug('[Conseca] check failed: Config not initialized');
|
|
40
|
-
return {
|
|
41
|
-
decision: SafetyCheckDecision.ALLOW,
|
|
42
|
-
reason: 'Config not initialized',
|
|
43
|
-
};
|
|
44
|
-
}
|
|
45
|
-
if (!this.config.enableConseca) {
|
|
46
|
-
debugLogger.debug('[Conseca] check skipped: Conseca is not enabled.');
|
|
47
|
-
return {
|
|
48
|
-
decision: SafetyCheckDecision.ALLOW,
|
|
49
|
-
reason: 'Conseca is disabled',
|
|
50
|
-
};
|
|
51
|
-
}
|
|
52
|
-
const userPrompt = this.extractUserPrompt(input);
|
|
53
|
-
let trustedContent = '';
|
|
54
|
-
const toolRegistry = this.config.getToolRegistry();
|
|
55
|
-
if (toolRegistry) {
|
|
56
|
-
const tools = toolRegistry.getFunctionDeclarations();
|
|
57
|
-
trustedContent = JSON.stringify(tools, null, 2);
|
|
58
|
-
}
|
|
59
|
-
if (userPrompt) {
|
|
60
|
-
await this.getPolicy(userPrompt, trustedContent, this.config);
|
|
61
|
-
}
|
|
62
|
-
else {
|
|
63
|
-
debugLogger.debug(`[Conseca] Skipping policy generation because userPrompt is null`);
|
|
64
|
-
}
|
|
65
|
-
let result;
|
|
66
|
-
if (!this.currentPolicy) {
|
|
67
|
-
result = {
|
|
68
|
-
decision: SafetyCheckDecision.ALLOW, // Fallback if no policy generated yet
|
|
69
|
-
reason: 'No security policy generated.',
|
|
70
|
-
error: 'No security policy generated.',
|
|
71
|
-
};
|
|
72
|
-
}
|
|
73
|
-
else {
|
|
74
|
-
result = await enforcePolicy(this.currentPolicy, input.toolCall, this.config);
|
|
75
|
-
}
|
|
76
|
-
logConsecaVerdict(this.config, new ConsecaVerdictEvent(userPrompt || '', JSON.stringify(this.currentPolicy || {}), JSON.stringify(input.toolCall), result.decision, result.reason || '', 'error' in result ? result.error : undefined));
|
|
77
|
-
return result;
|
|
78
|
-
}
|
|
79
|
-
async getPolicy(userPrompt, trustedContent, config) {
|
|
80
|
-
if (this.activeUserPrompt === userPrompt && this.currentPolicy) {
|
|
81
|
-
return this.currentPolicy;
|
|
82
|
-
}
|
|
83
|
-
const { policy, error } = await generatePolicy(userPrompt, trustedContent, config);
|
|
84
|
-
this.currentPolicy = policy;
|
|
85
|
-
this.activeUserPrompt = userPrompt;
|
|
86
|
-
logConsecaPolicyGeneration(config, new ConsecaPolicyGenerationEvent(userPrompt, trustedContent, JSON.stringify(policy), error));
|
|
87
|
-
return policy;
|
|
88
|
-
}
|
|
89
|
-
extractUserPrompt(input) {
|
|
90
|
-
const prompt = input.context.history?.turns.at(-1)?.user.text;
|
|
91
|
-
if (prompt) {
|
|
92
|
-
return prompt;
|
|
93
|
-
}
|
|
94
|
-
debugLogger.debug(`[Conseca] extractUserPrompt failed.`);
|
|
95
|
-
return null;
|
|
96
|
-
}
|
|
97
|
-
// Helper methods for testing state
|
|
98
|
-
getCurrentPolicy() {
|
|
99
|
-
return this.currentPolicy;
|
|
100
|
-
}
|
|
101
|
-
getActiveUserPrompt() {
|
|
102
|
-
return this.activeUserPrompt;
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
//# sourceMappingURL=conseca.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"conseca.js","sourceRoot":"","sources":["../../../../src/safety/conseca/conseca.ts"],"names":[],"mappings":"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"}
|