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 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, update progress, assign agents — all synced to the dashboard in real time.
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
- openclaw plugins install @ofiere-ai/openclaw-plugin
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
- Or install from the local repo (for development):
14
+ Only 3 parameters needed. All agents get the plugin automatically.
12
15
 
13
- ```bash
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
- openclaw ofiere setup
19
+ curl -sSL https://raw.githubusercontent.com/gilanggemar/Ofiere/main/ofiere-openclaw-plugin/uninstall.sh | bash
29
20
  ```
30
21
 
31
- Then restart the gateway:
32
-
33
- ```bash
34
- openclaw gateway restart
35
- ```
22
+ ## How It Works
36
23
 
37
- ## How it works
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` | Manage PM tasks list, create, update status/priority, 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
- // List tasks
59
- OFIERE_TASK_OPS({ action: "list", status: "PENDING", limit: 10 })
60
-
61
- // Update a task
62
- OFIERE_TASK_OPS({ action: "update", task_id: "task-123", status: "DONE" })
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 (e.g. `sasha`) |
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.0",
3
+ "version": "3.2.0",
4
4
  "type": "module",
5
- "description": "OpenClaw plugin for Ofiere PM — scalable meta-tool architecture for task, agent, and project management",
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 + agent_id. Pass your name to self-assign, 'none' for unassigned
15
- - update: Requires task_id. Change title, status, priority, progress, etc.
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
- // ── Future meta-tools uncomment when registered ──
22
- // OFIERE_PROJECT_OPS: `- **OFIERE_PROJECT_OPS** Manage projects (action: "list", "create", "update", "delete")
23
- // - list: List spaces, folders, and projects
24
- // - create: Create a new space or folder
25
- // - update: Rename, move, or archive
26
- // - delete: Remove space/folder and reassign tasks`,
27
- //
28
- // OFIERE_SCHEDULE_OPS: `- **OFIERE_SCHEDULE_OPS** — Calendar & timeline (action: "list", "schedule", "reschedule")
29
- // - list: View scheduled events for a date range
30
- // - schedule: Assign a task to a time slot
31
- // - reschedule: Move an event to a new time`,
32
- //
33
- // OFIERE_KNOWLEDGE_OPS: `- **OFIERE_KNOWLEDGE_OPS** — Knowledge base (action: "search", "create", "update")
34
- // - search: Find knowledge entries by query
35
- // - create: Add a new knowledge entry
36
- // - update: Edit an existing entry`,
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