ofiere-openclaw-plugin 2.0.0 → 3.2.0
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 +39 -36
- package/package.json +2 -2
- package/src/prompt.ts +60 -19
- package/src/tools.ts +1190 -56
package/README.md
CHANGED
|
@@ -1,42 +1,27 @@
|
|
|
1
1
|
# Ofiere PM Plugin for OpenClaw
|
|
2
2
|
|
|
3
|
-
Manage your Ofiere PM dashboard directly from OpenClaw agents. Create tasks,
|
|
3
|
+
Manage your Ofiere PM dashboard directly from OpenClaw agents. Create tasks, manage projects, build workflows, store knowledge — all synced to the dashboard in real time.
|
|
4
4
|
|
|
5
|
-
## Install
|
|
5
|
+
## Quick Install (One-Click)
|
|
6
6
|
|
|
7
7
|
```bash
|
|
8
|
-
|
|
8
|
+
curl -sSL https://raw.githubusercontent.com/gilanggemar/Ofiere/main/ofiere-openclaw-plugin/install.sh | bash -s -- \
|
|
9
|
+
--supabase-url "https://xxx.supabase.co" \
|
|
10
|
+
--service-key "eyJ..." \
|
|
11
|
+
--user-id "your-uuid"
|
|
9
12
|
```
|
|
10
13
|
|
|
11
|
-
|
|
14
|
+
Only 3 parameters needed. All agents get the plugin automatically.
|
|
12
15
|
|
|
13
|
-
|
|
14
|
-
openclaw plugins install ./ofiere-openclaw-plugin
|
|
15
|
-
```
|
|
16
|
-
|
|
17
|
-
Restart OpenClaw after installing.
|
|
18
|
-
|
|
19
|
-
## Setup
|
|
20
|
-
|
|
21
|
-
```bash
|
|
22
|
-
openclaw ofiere setup --supabase-url "https://xxx.supabase.co" --service-key "eyJ..." --user-id "your-uuid" --agent-id "sasha"
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
Or run interactively:
|
|
16
|
+
## Uninstall
|
|
26
17
|
|
|
27
18
|
```bash
|
|
28
|
-
|
|
19
|
+
curl -sSL https://raw.githubusercontent.com/gilanggemar/Ofiere/main/ofiere-openclaw-plugin/uninstall.sh | bash
|
|
29
20
|
```
|
|
30
21
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
```bash
|
|
34
|
-
openclaw gateway restart
|
|
35
|
-
```
|
|
22
|
+
## How It Works
|
|
36
23
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
Once configured, the plugin connects to your Supabase database at gateway startup and registers PM tools directly into the agent. There's no separate MCP server process — it runs inside the OpenClaw gateway for maximum reliability.
|
|
24
|
+
Once configured, the plugin connects to your Supabase database at gateway startup and registers 9 PM meta-tools directly into the agent. There's no separate MCP server process — it runs inside the OpenClaw gateway for maximum reliability.
|
|
40
25
|
|
|
41
26
|
Changes made by the agent are immediately visible on the Ofiere dashboard (Vercel) via Supabase real-time subscriptions.
|
|
42
27
|
|
|
@@ -46,20 +31,38 @@ The plugin uses a scalable meta-tool architecture. Each tool handles one domain
|
|
|
46
31
|
|
|
47
32
|
| Tool | Actions | Description |
|
|
48
33
|
|---|---|---|
|
|
49
|
-
| `OFIERE_TASK_OPS` | `list`, `create`, `update`, `delete` |
|
|
34
|
+
| `OFIERE_TASK_OPS` | `list`, `create`, `update`, `delete` | Rich task management with execution plans, goals, constraints |
|
|
50
35
|
| `OFIERE_AGENT_OPS` | `list` | Query available agents for task assignment |
|
|
36
|
+
| `OFIERE_PROJECT_OPS` | `list_spaces`, `create_space`, `create_folder`, `bulk_create_tasks`, etc. | Full project hierarchy: spaces → folders → tasks |
|
|
37
|
+
| `OFIERE_SCHEDULE_OPS` | `list`, `create`, `update`, `delete` | Calendar events with recurrence |
|
|
38
|
+
| `OFIERE_KNOWLEDGE_OPS` | `search`, `list`, `create`, `update`, `delete` | Knowledge library with full content retrieval |
|
|
39
|
+
| `OFIERE_WORKFLOW_OPS` | `list`, `get`, `create`, `update`, `delete`, `list_runs`, `trigger` | Visual workflow builder with 16 node types |
|
|
40
|
+
| `OFIERE_NOTIFY_OPS` | `list`, `mark_read`, `create` | In-app notifications |
|
|
41
|
+
| `OFIERE_MEMORY_OPS` | `list_conversations`, `search_knowledge` | Conversation history & agent memory |
|
|
42
|
+
| `OFIERE_PROMPT_OPS` | `list`, `get`, `create`, `update`, `delete` | System prompt chunk management |
|
|
51
43
|
|
|
52
44
|
### Example
|
|
53
45
|
|
|
54
46
|
```
|
|
55
|
-
// Create a task
|
|
56
|
-
OFIERE_TASK_OPS({ action: "create", title: "Deploy v2", agent_id: "ivy"
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
47
|
+
// Create a task with execution plan
|
|
48
|
+
OFIERE_TASK_OPS({ action: "create", title: "Deploy v2", agent_id: "ivy",
|
|
49
|
+
execution_plan: [{ step: 1, action: "Build", detail: "Run production build" }] })
|
|
50
|
+
|
|
51
|
+
// Create a workflow with nodes
|
|
52
|
+
OFIERE_WORKFLOW_OPS({ action: "create", name: "Deploy Pipeline",
|
|
53
|
+
nodes: [
|
|
54
|
+
{ type: "agent_step", data: { label: "Build", task: "Run npm build" } },
|
|
55
|
+
{ type: "human_approval", data: { label: "Review", instructions: "Check build output" } },
|
|
56
|
+
{ type: "output", data: { label: "Done" } }
|
|
57
|
+
],
|
|
58
|
+
edges: [
|
|
59
|
+
{ source: "agent_step-...", target: "human_approval-..." },
|
|
60
|
+
{ source: "human_approval-...", target: "output-..." }
|
|
61
|
+
]
|
|
62
|
+
})
|
|
63
|
+
|
|
64
|
+
// Search knowledge library
|
|
65
|
+
OFIERE_KNOWLEDGE_OPS({ action: "search", query: "API rate limits" })
|
|
63
66
|
```
|
|
64
67
|
|
|
65
68
|
## CLI Commands
|
|
@@ -79,7 +82,7 @@ Set via `openclaw ofiere setup` or environment variables:
|
|
|
79
82
|
| `supabaseUrl` | `OFIERE_SUPABASE_URL` | Supabase project URL |
|
|
80
83
|
| `serviceRoleKey` | `OFIERE_SERVICE_ROLE_KEY` | Supabase service role key |
|
|
81
84
|
| `userId` | `OFIERE_USER_ID` | Your user UUID |
|
|
82
|
-
| `agentId` | `OFIERE_AGENT_ID` | This agent's ID (
|
|
85
|
+
| `agentId` | `OFIERE_AGENT_ID` | This agent's ID (optional — auto-detected) |
|
|
83
86
|
| `enabled` | — | Enable/disable the plugin (default: `true`) |
|
|
84
87
|
|
|
85
88
|
## Architecture
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ofiere-openclaw-plugin",
|
|
3
|
-
"version": "2.0
|
|
3
|
+
"version": "3.2.0",
|
|
4
4
|
"type": "module",
|
|
5
|
-
"description": "OpenClaw plugin for Ofiere PM —
|
|
5
|
+
"description": "OpenClaw plugin for Ofiere PM — 9 meta-tools covering tasks, agents, projects, scheduling, knowledge, workflows, notifications, memory, and prompts",
|
|
6
6
|
"keywords": ["openclaw", "ofiere", "project-management", "agents", "plugin"],
|
|
7
7
|
"homepage": "https://github.com/gilanggemar/Ofiere",
|
|
8
8
|
"repository": {
|
package/src/prompt.ts
CHANGED
|
@@ -10,30 +10,66 @@
|
|
|
10
10
|
|
|
11
11
|
const TOOL_DOCS: Record<string, string> = {
|
|
12
12
|
OFIERE_TASK_OPS: `- **OFIERE_TASK_OPS** — Manage tasks (action: "list", "create", "update", "delete")
|
|
13
|
-
- list: Filter by status, agent_id, space_id, folder_id, limit
|
|
14
|
-
- create: Requires title
|
|
15
|
-
|
|
13
|
+
- list: Filter by status, agent_id, space_id, folder_id, limit. Returns execution_plan, goals, constraints if present
|
|
14
|
+
- create: Requires title. IMPORTANT: Always pass agent_id with your own name to self-assign (e.g. agent_id: "celia")
|
|
15
|
+
- Optional: description, instructions, execution_plan, goals, constraints, system_prompt, priority, tags, dates
|
|
16
|
+
- For COMPLEX tasks: include execution_plan (step-by-step), goals, constraints, and system_prompt
|
|
17
|
+
- For SIMPLE tasks: just title and optionally description
|
|
18
|
+
- update: Requires task_id. All create fields + progress
|
|
16
19
|
- delete: Requires task_id. Removes task and subtasks`,
|
|
17
20
|
|
|
18
21
|
OFIERE_AGENT_OPS: `- **OFIERE_AGENT_OPS** — Query agents (action: "list")
|
|
19
22
|
- list: See all agents with IDs, names, roles for task assignment`,
|
|
20
23
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
24
|
+
OFIERE_PROJECT_OPS: `- **OFIERE_PROJECT_OPS** — Manage PM hierarchy (action: "list_spaces", "create_space", "update_space", "delete_space", "list_folders", "create_folder", "update_folder", "delete_folder", "list_dependencies", "add_dependency", "remove_dependency")
|
|
25
|
+
- Spaces: Top-level containers. CRUD with name, icon, icon_color
|
|
26
|
+
- Folders: Live inside spaces. Can nest via parent_folder_id. Types: folder, project
|
|
27
|
+
- Dependencies: Link tasks with predecessor/successor relationships
|
|
28
|
+
- Types: finish_to_start (default), start_to_start, finish_to_finish, start_to_finish
|
|
29
|
+
- lag_days: optional delay between linked tasks`,
|
|
30
|
+
|
|
31
|
+
OFIERE_SCHEDULE_OPS: `- **OFIERE_SCHEDULE_OPS** — Calendar events (action: "list", "create", "update", "delete")
|
|
32
|
+
- list: Filter by start_date, end_date, agent_id
|
|
33
|
+
- create: Requires title + scheduled_date (YYYY-MM-DD). Optional: scheduled_time, duration_minutes, task_id, agent_id, recurrence_type, color
|
|
34
|
+
- Recurrence: none, hourly, daily, weekly, monthly with interval`,
|
|
35
|
+
|
|
36
|
+
OFIERE_KNOWLEDGE_OPS: `- **OFIERE_KNOWLEDGE_OPS** — Ofiere Knowledge Library (action: "search", "list", "create", "update", "delete")
|
|
37
|
+
- ALWAYS use this tool when the user mentions "knowledge base", "knowledge library", "knowledge entries", or asks to recall/retrieve stored knowledge
|
|
38
|
+
- search: Keyword search across all stored documents. Requires: query
|
|
39
|
+
- list: Paginated listing of knowledge entries with full content. Optional: search filter
|
|
40
|
+
- create: Add knowledge to the library. Requires: file_name. Optional: content, source, author, credibility_tier
|
|
41
|
+
- update/delete: By document ID`,
|
|
42
|
+
|
|
43
|
+
OFIERE_WORKFLOW_OPS: `- **OFIERE_WORKFLOW_OPS** — Automated workflows (action: "list", "get", "create", "update", "delete", "list_runs", "trigger")
|
|
44
|
+
- list: All workflows, filter by status (draft, active, paused, archived)
|
|
45
|
+
- get: Full workflow details by ID
|
|
46
|
+
- create: New workflow with name + nodes and edges
|
|
47
|
+
- Node types: manual_trigger, agent_step, http_request, formatter_step, task_call, variable_set, condition, human_approval, delay, loop, convergence, output, checkpoint, note
|
|
48
|
+
- Each node: { type, data: { label, ...type-specific fields } }. IDs/positions auto-generated
|
|
49
|
+
- Edges: { source, target }. A manual_trigger is auto-prepended if no trigger exists
|
|
50
|
+
- update: Modify workflow (name, description, status, nodes, edges)
|
|
51
|
+
- delete: Remove workflow and all run history
|
|
52
|
+
- list_runs: Recent execution history for a workflow
|
|
53
|
+
- trigger: Start a workflow run (creates a run record)`,
|
|
54
|
+
|
|
55
|
+
OFIERE_NOTIFY_OPS: `- **OFIERE_NOTIFY_OPS** — Notifications (action: "list", "mark_read", "mark_all_read", "delete")
|
|
56
|
+
- list: Recent notifications. unread_only=true for unread only
|
|
57
|
+
- mark_read: Mark one notification read by ID
|
|
58
|
+
- mark_all_read: Mark all as read`,
|
|
59
|
+
|
|
60
|
+
OFIERE_MEMORY_OPS: `- **OFIERE_MEMORY_OPS** — Conversation history & knowledge memory (action: "list_conversations", "get_messages", "search_messages", "add_knowledge", "search_knowledge")
|
|
61
|
+
- list_conversations: Recent chats, filter by agent_id
|
|
62
|
+
- get_messages: Full message history for a conversation
|
|
63
|
+
- search_messages: Search across all messages by keyword
|
|
64
|
+
- add_knowledge: Store a knowledge fragment (requires agent_id, content, source)
|
|
65
|
+
- search_knowledge: Search stored knowledge for an agent`,
|
|
66
|
+
|
|
67
|
+
OFIERE_PROMPT_OPS: `- **OFIERE_PROMPT_OPS** — Manage prompt instruction chunks (action: "list", "get", "create", "update", "delete")
|
|
68
|
+
- list: All prompt chunks ordered by display order
|
|
69
|
+
- create: New chunk with name (max 30 chars) + content. Optional: color (hex), category
|
|
70
|
+
- update: Change name, content, color, category, or order
|
|
71
|
+
- delete: Remove a chunk by ID
|
|
72
|
+
- All modifications are logged for audit`,
|
|
37
73
|
};
|
|
38
74
|
|
|
39
75
|
export function getSystemPrompt(state: {
|
|
@@ -65,6 +101,7 @@ Each tool uses an "action" parameter to select the operation. Always include act
|
|
|
65
101
|
${toolDocs}
|
|
66
102
|
|
|
67
103
|
## Rules
|
|
104
|
+
- ALWAYS pass agent_id with your own name when creating tasks (e.g. agent_id: "ivy"). Auto-detection is NOT reliable.
|
|
68
105
|
- ${assignRule}
|
|
69
106
|
- To create an unassigned task, pass agent_id as "none" or "unassigned".
|
|
70
107
|
- When the user says "create a task for [agent name]", use OFIERE_AGENT_OPS action:"list" to find the agent ID, then use OFIERE_TASK_OPS action:"create" with that agent_id.
|
|
@@ -73,6 +110,10 @@ ${toolDocs}
|
|
|
73
110
|
- Priority levels: 0=LOW, 1=MEDIUM, 2=HIGH, 3=CRITICAL.
|
|
74
111
|
- Changes appear in the Ofiere dashboard immediately via real-time sync.
|
|
75
112
|
- Do NOT fabricate task IDs — use OFIERE_TASK_OPS action:"list" to look up real IDs.
|
|
113
|
+
- For complex tasks, ALWAYS include execution_plan, goals, and constraints. For simple tasks, just title is enough.
|
|
114
|
+
- When creating dependencies, use OFIERE_PROJECT_OPS to link predecessor/successor tasks.
|
|
115
|
+
- Prompt chunk modifications (OFIERE_PROMPT_OPS) are powerful — use thoughtfully as they change agent behavior.
|
|
116
|
+
- When the user asks about "knowledge base", "knowledge library", "knowledge entries", or wants to recall stored knowledge, ALWAYS use OFIERE_KNOWLEDGE_OPS — do NOT rely on your own memory for this.
|
|
76
117
|
</ofiere-pm>`;
|
|
77
118
|
}
|
|
78
119
|
|