Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 24 additions & 0 deletions .agents/plugins/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -1998,6 +1998,30 @@
"authentication": "ON_INSTALL"
},
"category": "Research"
},
{
"name": "wix",
"source": {
"source": "local",
"path": "./plugins/wix"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "Developer Tools"
},
{
"name": "base44",
"source": {
"source": "local",
"path": "./plugins/base44"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "Developer Tools"
}
]
}
7 changes: 7 additions & 0 deletions plugins/base44/.app.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"apps": {
"base44": {
"id": "asdk_app_6952514760dc8191ab148f77c5794d46"
}
}
}
32 changes: 32 additions & 0 deletions plugins/base44/.codex-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
{
"name": "base44",
"version": "1.0.0-beta.1",
"description": "Build and deploy Base44 full-stack apps with CLI project management and JavaScript/TypeScript SDK development skills",
"author": {
"name": "base44",
"url": "https://base44.com"
},
"homepage": "https://docs.base44.com",
"repository": "https://github.com/base44/skills",
"license": "MIT",
"keywords": ["base44", "full-stack", "sdk", "cli", "deployment", "entities", "backend-functions", "javascript", "typescript"],
"skills": "./skills/",
"apps": "./.app.json",
"interface": {
"displayName": "Base44",
"shortDescription": "Build and deploy Base44 full-stack apps from Codex",
"longDescription": "Build and deploy Base44 full-stack apps with Codex. Includes CLI project management, JavaScript/TypeScript SDK development, and production troubleshooting skills.",
"developerName": "base44",
"category": "Developer Tools",
"capabilities": ["Interactive", "Read", "Write"],
"websiteURL": "https://base44.com",
"defaultPrompt": [
"Create a new Base44 app and deploy it.",
"Build a feature in my existing Base44 app.",
"Debug errors from my Base44 backend functions."
],
"composerIcon": "./assets/base44-logo.png",
"logo": "./assets/base44-logo.png",
"screenshots": []
}
}
Binary file added plugins/base44/assets/base44-logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
530 changes: 530 additions & 0 deletions plugins/base44/skills/base44-cli/SKILL.md

Large diffs are not rendered by default.

4 changes: 4 additions & 0 deletions plugins/base44/skills/base44-cli/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
interface:
display_name: "Base44 CLI"
short_description: "Initialize, configure, deploy, and manage Base44 projects"
default_prompt: "Use Base44 CLI guidance to initialize, configure, authenticate, and deploy this Base44 app."
80 changes: 80 additions & 0 deletions plugins/base44/skills/base44-cli/references/agents-pull.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
# base44 agents pull

Pull AI agent configurations from Base44 to local files. Agents are conversational AI assistants that can interact with users, access your app's entities, and call backend functions.

## Syntax

```bash
npx base44 agents pull
```

## Authentication

**Required**: Yes. If not authenticated, you'll be prompted to login first.

## What It Does

1. Fetches all agents from Base44
2. Writes agent files to the `base44/agents/` directory
3. Deletes local agent files that don't exist remotely
4. Reports written and deleted agents

## Prerequisites

- Must be run from a Base44 project directory
- Project must be linked to a Base44 app

## Output

```bash
$ npx base44 agents pull

Fetching agents from Base44...
✓ Agents fetched successfully

Syncing agent files...
✓ Agent files synced successfully

Written: support_agent, order_bot
Deleted: old_agent

Pulled 2 agents to base44/agents
```

When agents are already up to date (no changes):
```bash
$ npx base44 agents pull

Fetching agents from Base44...
✓ Agents fetched successfully

Syncing agent files...
✓ Agent files synced successfully

All agents are already up to date

Pulled 3 agents to base44/agents
```

## Agent Synchronization

The pull operation synchronizes remote agents to your local files:

- **Written**: Agent files created or updated from remote
- **Deleted**: Local agent files removed (didn't exist remotely)

**Warning**: This operation replaces all local agent configurations with remote versions. Any local changes not pushed to Base44 will be overwritten.

## Use Cases

- Sync agent configurations to a new development machine
- Get the latest agent configurations from your team
- Restore local agent files after accidental deletion
- Start working on an existing project with agents

## Notes

- This command syncs agent configurations, not conversation data
- Agent files are stored as `.jsonc` in the `base44/agents/` directory
- The directory location is configurable via `agentsDir` in `config.jsonc`
- Use `base44 agents push` to upload local changes to Base44
156 changes: 156 additions & 0 deletions plugins/base44/skills/base44-cli/references/agents-push.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,156 @@
# base44 agents push

Push local AI agent configurations to Base44. Agents are conversational AI assistants that can interact with users, access your app's entities, and call backend functions.

## Syntax

```bash
npx base44 agents push
```

## Authentication

**Required**: Yes. If not authenticated, you'll be prompted to login first.

## What It Does

1. Reads all agent files from the `base44/agents/` directory
2. Validates agent configurations
3. Displays the count of agents to be pushed
4. Uploads agents to the Base44 backend
5. Reports the results: created, updated, and deleted agents

## Prerequisites

- Must be run from a Base44 project directory
- Project must have agent definitions in the `base44/agents/` folder

## Output

```bash
$ npx base44 agents push

Found 2 agents to push
Pushing agents to Base44...

Created: support_agent
Updated: order_bot
Deleted: old_agent

✓ Agents pushed to Base44
```

## Agent Synchronization

The push operation synchronizes your local agents with Base44:

- **Created**: New agents that didn't exist in Base44
- **Updated**: Existing agents with modified configuration
- **Deleted**: Agents that were removed from your local configuration

**Warning**: This is a full sync operation. Agents removed locally will be deleted from Base44.

## Error Handling

If no agents are found in your project:
```bash
$ npx base44 agents push
No local agents found - this will delete all remote agents
```

If an agent has an invalid name:
```bash
$ npx base44 agents push
Error: Agent name must be lowercase alphanumeric with underscores
```

## Agent Configuration Schema

Each agent file should be a `.jsonc` file in `base44/agents/` with this structure:

```jsonc
{
"name": "agent_name", // Required: lowercase alphanumeric with underscores, 1-100 chars
"description": "Brief description of what this agent does", // Required: min 1 char
"instructions": "Detailed instructions for the agent's behavior", // Required: min 1 char
"tool_configs": [ // Optional: defaults to []
// Entity tool - gives agent access to entity operations
{ "entity_name": "Task", "allowed_operations": ["read", "create", "update", "delete"] },
// Backend function tool - gives agent access to a function
{ "function_name": "send_email", "description": "Send an email notification" }
],
"whatsapp_greeting": "Hello! How can I help you today?" // Optional
}
```

**Naming rules:**
- **Agent names** must match pattern: `/^[a-z0-9_]+$/` (lowercase alphanumeric with underscores only, 1-100 characters)
- Valid: `support_agent`, `order_bot`, `task_helper`
- Invalid: `Support-Agent`, `OrderBot`, `task helper`
- **Agent file names** must use underscores (matching the agent name)
- Valid: `support_agent.jsonc`, `order_bot.jsonc`
- Invalid: `support-agent.jsonc` (hyphens not allowed)
- **Entity names in `tool_configs`** must use PascalCase (matching the entity's `name` field)
- Valid: `"entity_name": "Task"`, `"entity_name": "TeamMember"`
- Invalid: `"entity_name": "task"`, `"entity_name": "team_member"`

**Required fields:**
- `name`: Required, must follow naming rules above
- `description`: Required, minimum 1 character
- `instructions`: Required, minimum 1 character
- `tool_configs`: Optional, defaults to empty array
- `whatsapp_greeting`: Optional

### Common Mistake: Wrong tool_configs Format

**WRONG** - Do NOT use `tools` with `type` and `entity`:
```jsonc
{
"name": "my_agent",
"tools": [ // ❌ WRONG
{ "type": "entity_query", "entity": "Task" }
]
}
```

**CORRECT** - Use `tool_configs` with `entity_name` and `allowed_operations`:
```jsonc
{
"name": "my_agent",
"tool_configs": [ // ✅ CORRECT
{ "entity_name": "Task", "allowed_operations": ["read"] }
]
}
```

### Best Practices for Agent Instructions

When giving agents access to entities, be explicit in the instructions about using the tools:

```jsonc
{
"name": "support_agent",
"instructions": "You are a helpful support agent.\n\nIMPORTANT: You have access to customer data through entity tools. When users ask about their orders or account:\n1. ALWAYS use the Order entity tool to query their order history\n2. Use the Customer entity tool to look up account details\n3. Analyze the data and provide personalized responses\n\nAlways query the relevant entities first before answering questions about user data.",
"tool_configs": [
{ "entity_name": "Order", "allowed_operations": ["read"] },
{ "entity_name": "Customer", "allowed_operations": ["read"] }
]
}
```

Without explicit instructions to use the entity tools, the agent may not proactively query user data when asked.

## Use Cases

- After defining new agents in your project
- When modifying existing agent configurations
- To sync agent changes before testing
- As part of your development workflow when agent behavior changes

## Notes

- This command syncs the agent configuration, not conversation data
- Changes are applied to your Base44 project immediately
- Make sure to test agent changes in a development environment first
- Agent definitions are located in the `base44/agents/` directory
- Use `base44 agents pull` to download agents from Base44
54 changes: 54 additions & 0 deletions plugins/base44/skills/base44-cli/references/auth-login.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
# base44 login

Authenticate with Base44 using device code flow.

## Syntax

```bash
npx base44 login
```

## Authentication

**Required**: No (this is the login command itself)

## How It Works

The login command uses OAuth 2.0 device code flow for authentication:

1. Generates a device code for authentication
2. Displays a verification code and verification URI
3. Directs you to visit the URI and enter the code
4. Polls for authentication completion (up to device code expiration)
5. Retrieves access and refresh tokens upon successful authentication
6. Fetches and displays your user information
7. Saves authentication data locally with expiration timestamp

## Interactive Flow

```bash
$ npx base44 login

Please visit: https://auth.base44.com/device
Enter code: ABCD-EFGH

Waiting for authentication...
✓ Successfully authenticated!

Logged in as: user@example.com
```

## Session Management

- Authentication tokens are stored locally on your device
- Tokens include expiration timestamps
- The session persists across CLI sessions
- Other commands will automatically use your stored credentials
- Use `npx base44 logout` to clear your session
- Use `npx base44 whoami` to check your current authentication status

## Notes

- You only need to login once per device
- If your session expires, you'll be prompted to login again when running authenticated commands
- The CLI automatically prompts for login when you run commands that require authentication
Loading