@opengoat/core 2026.2.9 → 2026.2.13
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 +3 -3
- package/dist/core/acp/application/acp-agent.js +4 -8
- package/dist/core/acp/application/acp-agent.js.map +1 -1
- package/dist/core/agents/application/agent-manifest.service.d.ts +1 -4
- package/dist/core/agents/application/agent-manifest.service.js +39 -52
- package/dist/core/agents/application/agent-manifest.service.js.map +1 -1
- package/dist/core/agents/application/agent.service.d.ts +42 -4
- package/dist/core/agents/application/agent.service.js +439 -55
- package/dist/core/agents/application/agent.service.js.map +1 -1
- package/dist/core/agents/domain/agent-manifest.d.ts +10 -4
- package/dist/core/agents/domain/agent-manifest.js +118 -25
- package/dist/core/agents/domain/agent-manifest.js.map +1 -1
- package/dist/core/agents/index.d.ts +1 -3
- package/dist/core/agents/index.js +1 -3
- package/dist/core/agents/index.js.map +1 -1
- package/dist/core/boards/application/board.service.d.ts +64 -0
- package/dist/core/boards/application/board.service.js +590 -0
- package/dist/core/boards/application/board.service.js.map +1 -0
- package/dist/core/boards/domain/board.d.ts +30 -0
- package/dist/core/boards/domain/board.js +2 -0
- package/dist/core/boards/domain/board.js.map +1 -0
- package/dist/core/boards/index.d.ts +2 -0
- package/dist/core/boards/index.js +2 -0
- package/dist/core/boards/index.js.map +1 -0
- package/dist/core/bootstrap/application/bootstrap.service.d.ts +1 -2
- package/dist/core/bootstrap/application/bootstrap.service.js +14 -19
- package/dist/core/bootstrap/application/bootstrap.service.js.map +1 -1
- package/dist/core/domain/agent-id.d.ts +1 -1
- package/dist/core/domain/agent-id.js +1 -1
- package/dist/core/domain/agent-id.js.map +1 -1
- package/dist/core/domain/agent.d.ts +31 -8
- package/dist/core/opengoat/application/opengoat.service.d.ts +106 -27
- package/dist/core/opengoat/application/opengoat.service.js +1006 -136
- package/dist/core/opengoat/application/opengoat.service.js.map +1 -1
- package/dist/core/opengoat/index.d.ts +1 -0
- package/dist/core/orchestration/application/orchestration.service.d.ts +8 -21
- package/dist/core/orchestration/application/orchestration.service.js +59 -871
- package/dist/core/orchestration/application/orchestration.service.js.map +1 -1
- package/dist/core/orchestration/application/routing.service.js +10 -8
- package/dist/core/orchestration/application/routing.service.js.map +1 -1
- package/dist/core/orchestration/domain/routing.d.ts +0 -17
- package/dist/core/orchestration/domain/run-events.d.ts +1 -1
- package/dist/core/orchestration/index.d.ts +0 -2
- package/dist/core/orchestration/index.js +0 -1
- package/dist/core/orchestration/index.js.map +1 -1
- package/dist/core/providers/application/provider.service.d.ts +15 -32
- package/dist/core/providers/application/provider.service.js +115 -201
- package/dist/core/providers/application/provider.service.js.map +1 -1
- package/dist/core/providers/cli-provider.d.ts +1 -0
- package/dist/core/providers/cli-provider.js +66 -1
- package/dist/core/providers/cli-provider.js.map +1 -1
- package/dist/core/providers/image-input.d.ts +16 -0
- package/dist/core/providers/image-input.js +158 -0
- package/dist/core/providers/image-input.js.map +1 -0
- package/dist/core/providers/index.d.ts +1 -7
- package/dist/core/providers/index.js +0 -13
- package/dist/core/providers/index.js.map +1 -1
- package/dist/core/providers/loader.js +1 -95
- package/dist/core/providers/loader.js.map +1 -1
- package/dist/core/providers/providers/openclaw/provider.js +213 -32
- package/dist/core/providers/providers/openclaw/provider.js.map +1 -1
- package/dist/core/providers/types.d.ts +8 -3
- package/dist/core/scenarios/application/scenario-runner.service.d.ts +0 -1
- package/dist/core/scenarios/application/scenario-runner.service.js +30 -87
- package/dist/core/scenarios/application/scenario-runner.service.js.map +1 -1
- package/dist/core/scenarios/domain/scenario.d.ts +0 -15
- package/dist/core/sessions/application/session.service.d.ts +10 -4
- package/dist/core/sessions/application/session.service.js +87 -89
- package/dist/core/sessions/application/session.service.js.map +1 -1
- package/dist/core/sessions/domain/session.d.ts +3 -3
- package/dist/core/sessions/domain/transcript.d.ts +1 -1
- package/dist/core/sessions/index.d.ts +1 -1
- package/dist/core/sessions/index.js.map +1 -1
- package/dist/core/skills/application/skill.service.d.ts +2 -3
- package/dist/core/skills/application/skill.service.js +153 -56
- package/dist/core/skills/application/skill.service.js.map +1 -1
- package/dist/core/skills/domain/skill.d.ts +2 -2
- package/dist/core/skills/domain/skill.js +4 -2
- package/dist/core/skills/domain/skill.js.map +1 -1
- package/dist/core/templates/assets/ceo/AGENTS.md +20 -0
- package/dist/core/templates/assets/ceo/ROLE.md +13 -0
- package/dist/core/templates/assets/ceo/SOUL.md +15 -0
- package/dist/core/templates/assets/skills/og-board-individual/SKILL.md +148 -0
- package/dist/core/templates/assets/skills/og-board-manager/SKILL.md +140 -0
- package/dist/core/templates/default-templates.d.ts +12 -14
- package/dist/core/templates/default-templates.js +81 -213
- package/dist/core/templates/default-templates.js.map +1 -1
- package/dist/index.d.ts +1 -4
- package/dist/index.js +1 -4
- package/dist/index.js.map +1 -1
- package/package.json +16 -13
- package/dist/core/agents/application/workspace-context.service.d.ts +0 -28
- package/dist/core/agents/application/workspace-context.service.js +0 -157
- package/dist/core/agents/application/workspace-context.service.js.map +0 -1
- package/dist/core/agents/domain/workspace-context.d.ts +0 -13
- package/dist/core/agents/domain/workspace-context.js +0 -14
- package/dist/core/agents/domain/workspace-context.js.map +0 -1
- package/dist/core/gateway/domain/protocol.d.ts +0 -113
- package/dist/core/gateway/domain/protocol.js +0 -394
- package/dist/core/gateway/domain/protocol.js.map +0 -1
- package/dist/core/gateway/index.d.ts +0 -2
- package/dist/core/gateway/index.js +0 -2
- package/dist/core/gateway/index.js.map +0 -1
- package/dist/core/llm/application/vercel-ai-text-runtime.d.ts +0 -26
- package/dist/core/llm/application/vercel-ai-text-runtime.js +0 -223
- package/dist/core/llm/application/vercel-ai-text-runtime.js.map +0 -1
- package/dist/core/llm/domain/text-runtime.d.ts +0 -22
- package/dist/core/llm/domain/text-runtime.js +0 -2
- package/dist/core/llm/domain/text-runtime.js.map +0 -1
- package/dist/core/llm/index.d.ts +0 -2
- package/dist/core/llm/index.js +0 -2
- package/dist/core/llm/index.js.map +0 -1
- package/dist/core/orchestration/application/orchestration-planner.service.d.ts +0 -28
- package/dist/core/orchestration/application/orchestration-planner.service.js +0 -279
- package/dist/core/orchestration/application/orchestration-planner.service.js.map +0 -1
- package/dist/core/orchestration/domain/loop.d.ts +0 -119
- package/dist/core/orchestration/domain/loop.js +0 -2
- package/dist/core/orchestration/domain/loop.js.map +0 -1
- package/dist/core/plugins/application/plugin.service.d.ts +0 -32
- package/dist/core/plugins/application/plugin.service.js +0 -236
- package/dist/core/plugins/application/plugin.service.js.map +0 -1
- package/dist/core/plugins/domain/openclaw-compat.d.ts +0 -60
- package/dist/core/plugins/domain/openclaw-compat.js +0 -9
- package/dist/core/plugins/domain/openclaw-compat.js.map +0 -1
- package/dist/core/plugins/index.d.ts +0 -3
- package/dist/core/plugins/index.js +0 -3
- package/dist/core/plugins/index.js.map +0 -1
- package/dist/core/providers/onboarding.d.ts +0 -13
- package/dist/core/providers/onboarding.js +0 -149
- package/dist/core/providers/onboarding.js.map +0 -1
- package/dist/core/providers/providers/claude/index.d.ts +0 -4
- package/dist/core/providers/providers/claude/index.js +0 -19
- package/dist/core/providers/providers/claude/index.js.map +0 -1
- package/dist/core/providers/providers/claude/provider.d.ts +0 -8
- package/dist/core/providers/providers/claude/provider.js +0 -106
- package/dist/core/providers/providers/claude/provider.js.map +0 -1
- package/dist/core/providers/providers/codex/index.d.ts +0 -4
- package/dist/core/providers/providers/codex/index.js +0 -19
- package/dist/core/providers/providers/codex/index.js.map +0 -1
- package/dist/core/providers/providers/codex/provider.d.ts +0 -7
- package/dist/core/providers/providers/codex/provider.js +0 -31
- package/dist/core/providers/providers/codex/provider.js.map +0 -1
- package/dist/core/providers/providers/cursor/index.d.ts +0 -4
- package/dist/core/providers/providers/cursor/index.js +0 -19
- package/dist/core/providers/providers/cursor/index.js.map +0 -1
- package/dist/core/providers/providers/cursor/provider.d.ts +0 -11
- package/dist/core/providers/providers/cursor/provider.js +0 -90
- package/dist/core/providers/providers/cursor/provider.js.map +0 -1
- package/dist/core/providers/providers/extended-http/catalog.d.ts +0 -40
- package/dist/core/providers/providers/extended-http/catalog.js +0 -728
- package/dist/core/providers/providers/extended-http/catalog.js.map +0 -1
- package/dist/core/providers/providers/extended-http/index.d.ts +0 -5
- package/dist/core/providers/providers/extended-http/index.js +0 -13
- package/dist/core/providers/providers/extended-http/index.js.map +0 -1
- package/dist/core/providers/providers/extended-http/provider.d.ts +0 -31
- package/dist/core/providers/providers/extended-http/provider.js +0 -580
- package/dist/core/providers/providers/extended-http/provider.js.map +0 -1
- package/dist/core/providers/providers/gemini/index.d.ts +0 -4
- package/dist/core/providers/providers/gemini/index.js +0 -37
- package/dist/core/providers/providers/gemini/index.js.map +0 -1
- package/dist/core/providers/providers/gemini/provider.d.ts +0 -7
- package/dist/core/providers/providers/gemini/provider.js +0 -59
- package/dist/core/providers/providers/gemini/provider.js.map +0 -1
- package/dist/core/providers/providers/grok/index.d.ts +0 -4
- package/dist/core/providers/providers/grok/index.js +0 -41
- package/dist/core/providers/providers/grok/index.js.map +0 -1
- package/dist/core/providers/providers/grok/provider.d.ts +0 -13
- package/dist/core/providers/providers/grok/provider.js +0 -95
- package/dist/core/providers/providers/grok/provider.js.map +0 -1
- package/dist/core/providers/providers/openai/index.d.ts +0 -4
- package/dist/core/providers/providers/openai/index.js +0 -45
- package/dist/core/providers/providers/openai/index.js.map +0 -1
- package/dist/core/providers/providers/openai/provider.d.ts +0 -14
- package/dist/core/providers/providers/openai/provider.js +0 -203
- package/dist/core/providers/providers/openai/provider.js.map +0 -1
- package/dist/core/providers/providers/opencode/index.d.ts +0 -4
- package/dist/core/providers/providers/opencode/index.js +0 -23
- package/dist/core/providers/providers/opencode/index.js.map +0 -1
- package/dist/core/providers/providers/opencode/provider.d.ts +0 -11
- package/dist/core/providers/providers/opencode/provider.js +0 -215
- package/dist/core/providers/providers/opencode/provider.js.map +0 -1
- package/dist/core/providers/providers/openrouter/index.d.ts +0 -4
- package/dist/core/providers/providers/openrouter/index.js +0 -37
- package/dist/core/providers/providers/openrouter/index.js.map +0 -1
- package/dist/core/providers/providers/openrouter/provider.d.ts +0 -13
- package/dist/core/providers/providers/openrouter/provider.js +0 -80
- package/dist/core/providers/providers/openrouter/provider.js.map +0 -1
- package/dist/platform/node/opengoat-gateway-client.d.ts +0 -19
- package/dist/platform/node/opengoat-gateway-client.js +0 -194
- package/dist/platform/node/opengoat-gateway-client.js.map +0 -1
- package/dist/platform/node/opengoat-gateway-server.d.ts +0 -53
- package/dist/platform/node/opengoat-gateway-server.js +0 -906
- package/dist/platform/node/opengoat-gateway-server.js.map +0 -1
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: og-board-individual
|
|
3
|
+
description: "Use when you need to work with tasks: view tasks, list tasks, update task status, add blockers, artifacts, and worklogs."
|
|
4
|
+
metadata:
|
|
5
|
+
version: "1.0.0"
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Board Individual
|
|
9
|
+
|
|
10
|
+
Use this skill to read and update tasks assigned to you. Follow your manager’s instructions for what to do, and use the commands below to keep task state accurate.
|
|
11
|
+
|
|
12
|
+
## Quick start
|
|
13
|
+
|
|
14
|
+
Replace `<me>` with your agent id.
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
opengoat agent info <me>
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
You will typically have one or more `<task-id>` values to update.
|
|
21
|
+
|
|
22
|
+
## Relevant commands
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
opengoat task list [--as <me>] [--json]
|
|
26
|
+
opengoat task show <task-id> [--json]
|
|
27
|
+
|
|
28
|
+
opengoat task status <task-id> <todo|doing|blocked|pending|done> [--reason <reason>] [--as <me>]
|
|
29
|
+
|
|
30
|
+
opengoat task blocker add <task-id> <content> [--as <me>]
|
|
31
|
+
opengoat task artifact add <task-id> <content> [--as <me>]
|
|
32
|
+
opengoat task worklog add <task-id> <content> [--as <me>]
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## View tasks
|
|
36
|
+
|
|
37
|
+
### Show a single task
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
opengoat task show <task-id>
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
### List tasks
|
|
44
|
+
|
|
45
|
+
List tasks owned by an agent (often: you):
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
opengoat task list --as <me>
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### List tasks by status (practical approach)
|
|
52
|
+
|
|
53
|
+
Use JSON output and filter locally. The JSON includes task status (`todo|doing|blocked|pending|done`).
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
opengoat task list --json
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
Filter examples (adjust the jq selector to match the JSON shape you see):
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
|
|
63
|
+
# If the JSON is an array of tasks
|
|
64
|
+
|
|
65
|
+
opengoat task list --json | jq '.[] | select(.status=="doing")'
|
|
66
|
+
|
|
67
|
+
# If the JSON is an object that contains a tasks array
|
|
68
|
+
|
|
69
|
+
opengoat task list --json | jq '.tasks[] | select(.status=="doing")'
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
## Update task status
|
|
73
|
+
|
|
74
|
+
Statuses: `todo`, `doing`, `blocked`, `pending`, `done`.
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
opengoat task status <task-id> <todo|doing|blocked|pending|done> [--reason "<reason>"]
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### Reason rules
|
|
81
|
+
|
|
82
|
+
- `--reason` is **mandatory** when moving to:
|
|
83
|
+
- `blocked`
|
|
84
|
+
- `pending`
|
|
85
|
+
- `--reason` is optional for other statuses, but recommended when it improves clarity.
|
|
86
|
+
|
|
87
|
+
Examples:
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
|
|
91
|
+
# Start work
|
|
92
|
+
|
|
93
|
+
opengoat task status <task-id> doing
|
|
94
|
+
|
|
95
|
+
# Blocked (reason required)
|
|
96
|
+
|
|
97
|
+
opengoat task status <task-id> blocked --reason "Need API token from platform team"
|
|
98
|
+
|
|
99
|
+
# Pending (reason required)
|
|
100
|
+
|
|
101
|
+
opengoat task status <task-id> pending --reason "Waiting for review window on Friday"
|
|
102
|
+
|
|
103
|
+
# Done (reason optional but useful)
|
|
104
|
+
|
|
105
|
+
opengoat task status <task-id> done --reason "Merged PR #123 and deployed"
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
### Assignee override (only if you must)
|
|
109
|
+
|
|
110
|
+
Some contexts require specifying an assignee context explicitly.
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
opengoat task status <task-id> doing --as <agent-id>
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
## Blockers, artifacts, worklogs
|
|
117
|
+
|
|
118
|
+
### Add a blocker entry (recommended when blocked)
|
|
119
|
+
|
|
120
|
+
Use this to capture what is blocking you and what unblocks you.
|
|
121
|
+
|
|
122
|
+
```bash
|
|
123
|
+
opengoat task blocker add <task-id> "Blocked by <thing>. Unblocks when <condition>." --as <me>
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
### Add an artifact (proof of work)
|
|
127
|
+
|
|
128
|
+
Use this for PR links, docs, screenshots, commands run, or final outputs.
|
|
129
|
+
|
|
130
|
+
```bash
|
|
131
|
+
opengoat task artifact add <task-id> "PR: <link> | Docs: <link> | Output: <summary>" --as <me>
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
### Add a worklog update (progress notes)
|
|
135
|
+
|
|
136
|
+
Use for concise progress updates and handoffs.
|
|
137
|
+
|
|
138
|
+
```bash
|
|
139
|
+
opengoat task worklog add <task-id> "Did X. Next: Y. Risk: Z." --as <me>
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
## Minimal hygiene
|
|
143
|
+
|
|
144
|
+
- Keep status accurate (`todo` → `doing` → `blocked/pending/done`).
|
|
145
|
+
- When moving to `blocked` or `pending`, always include a specific `--reason`.
|
|
146
|
+
- When blocked, add a blocker entry that states what unblocks you.
|
|
147
|
+
- When done, add at least one artifact that proves completion.
|
|
148
|
+
- Use worklogs when progress is non-obvious or when handing off.
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: og-board-manager
|
|
3
|
+
description: Use when you need to delegate, track, or review work.
|
|
4
|
+
metadata:
|
|
5
|
+
version: "1.0.0"
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Board Manager
|
|
9
|
+
|
|
10
|
+
Delegate and track work using tasks.
|
|
11
|
+
|
|
12
|
+
## Allowed Actions
|
|
13
|
+
|
|
14
|
+
- Create tasks for yourself.
|
|
15
|
+
- Assign tasks to your direct or indirect reportees.
|
|
16
|
+
- Read task state.
|
|
17
|
+
- If your session has an associated project, specify the path when creating tasks.
|
|
18
|
+
|
|
19
|
+
Important: replace `<me>` with your agent ID.
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
opengoat agent info <me>
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## Task Commands
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
opengoat task list --as <me>
|
|
29
|
+
opengoat task create --owner <me> --title "..." --description "..." --assign <agent-id> [--project <path>]
|
|
30
|
+
opengoat task show <task-id>
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Standard workflow
|
|
34
|
+
|
|
35
|
+
### 1. Confirm org context
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
opengoat agent info <me>
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
Use the output to ensure:
|
|
42
|
+
|
|
43
|
+
- You assign only to **your** reportees (direct or indirect) or yourself
|
|
44
|
+
- You choose task granularity appropriate to your layer in the org
|
|
45
|
+
|
|
46
|
+
### 2. Review tasks
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
opengoat task list --as <me>
|
|
50
|
+
opengoat task show <task-id>
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### 3. Delegate by creating a task
|
|
54
|
+
|
|
55
|
+
Create one task per owner and outcome.
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
opengoat task create \
|
|
59
|
+
--owner <me> \
|
|
60
|
+
--title "<verb>: <deliverable>" \
|
|
61
|
+
--description "<context + deliverable + acceptance criteria>" \
|
|
62
|
+
--assign <agent-id> \
|
|
63
|
+
[--project <path>]
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
## Self-assigning (do the work yourself)
|
|
67
|
+
|
|
68
|
+
If the task is small enough and you have the tools and context to complete it efficiently, **do not delegate**. Create a task for yourself so the work is still tracked.
|
|
69
|
+
|
|
70
|
+
Rules:
|
|
71
|
+
|
|
72
|
+
- Use `--assign <me>`
|
|
73
|
+
- Keep the task scoped to a single, verifiable outcome
|
|
74
|
+
- Include acceptance criteria so “done” is unambiguous
|
|
75
|
+
|
|
76
|
+
Example:
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
opengoat task create \
|
|
80
|
+
--owner <me> \
|
|
81
|
+
--title "Fix: <short description>" \
|
|
82
|
+
--description "Context:\n- ...\n\nDeliverable:\n- ...\n\nAcceptance criteria:\n- ..." \
|
|
83
|
+
--assign <me> \
|
|
84
|
+
[--project <path>]
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
## Task sizing and detail level (depends on your layer)
|
|
88
|
+
|
|
89
|
+
Do not blindly "break tasks down small." Size tasks based on where you sit in the org and who you are assigning to. You already know your org shape (direct and indirect reportees, and which reportees are managers). Use that.
|
|
90
|
+
|
|
91
|
+
### If you are a higher-level manager
|
|
92
|
+
|
|
93
|
+
Write **outcome-focused** tasks:
|
|
94
|
+
|
|
95
|
+
- What result is needed
|
|
96
|
+
- Why it matters
|
|
97
|
+
- Constraints and success criteria
|
|
98
|
+
- Optional milestones (not step-by-step instructions)
|
|
99
|
+
|
|
100
|
+
Expect your reportee to create smaller tasks for their own direct reportees if needed.
|
|
101
|
+
|
|
102
|
+
### If you are the last manager before execution
|
|
103
|
+
|
|
104
|
+
Write **execution-ready** tasks:
|
|
105
|
+
|
|
106
|
+
- Concrete steps when helpful
|
|
107
|
+
- File paths, commands, edge cases
|
|
108
|
+
- Clear validation steps (how to verify)
|
|
109
|
+
|
|
110
|
+
## Task writing template (not enforced, but recommended)
|
|
111
|
+
|
|
112
|
+
### Title
|
|
113
|
+
|
|
114
|
+
Use a verb + deliverable:
|
|
115
|
+
|
|
116
|
+
- `Implement: <feature>`
|
|
117
|
+
- `Fix: <bug>`
|
|
118
|
+
- `Investigate: <question>`
|
|
119
|
+
- `Decide: <tradeoff>`
|
|
120
|
+
|
|
121
|
+
### Description (pasteable)
|
|
122
|
+
|
|
123
|
+
```text
|
|
124
|
+
Context:
|
|
125
|
+
- Why this matters (1–3 bullets)
|
|
126
|
+
|
|
127
|
+
Deliverable:
|
|
128
|
+
- What to produce (code/doc/decision)
|
|
129
|
+
|
|
130
|
+
Acceptance criteria:
|
|
131
|
+
- Observable checks (tests pass, output, link, screenshot, etc.)
|
|
132
|
+
|
|
133
|
+
Constraints:
|
|
134
|
+
- Scope boundaries, dependencies, must-use tools, performance limits
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
## Troubleshooting
|
|
138
|
+
|
|
139
|
+
- Task creation fails: you are likely assigning to someone who is not in your reportee tree. Reassign to a valid reportee (direct or indirect) or assign to yourself.
|
|
140
|
+
- You can use `opengoat task --help` to see available commands and options.
|
|
@@ -1,19 +1,17 @@
|
|
|
1
1
|
import type { AgentIdentity } from "../domain/agent.js";
|
|
2
2
|
import type { AgentsIndex, OpenGoatConfig } from "../domain/opengoat-paths.js";
|
|
3
3
|
export { DEFAULT_AGENT_ID } from "../domain/agent-id.js";
|
|
4
|
+
export interface AgentTemplateOptions {
|
|
5
|
+
type?: "manager" | "individual";
|
|
6
|
+
reportsTo?: string | null;
|
|
7
|
+
skills?: string[];
|
|
8
|
+
role?: string;
|
|
9
|
+
}
|
|
4
10
|
export declare function renderGlobalConfig(nowIso: string): OpenGoatConfig;
|
|
5
11
|
export declare function renderAgentsIndex(nowIso: string, agents: string[]): AgentsIndex;
|
|
6
|
-
export declare function
|
|
7
|
-
export declare function
|
|
8
|
-
export declare function
|
|
9
|
-
export declare function
|
|
10
|
-
export declare function
|
|
11
|
-
export declare function
|
|
12
|
-
export declare function renderWorkspaceUserMarkdown(): string;
|
|
13
|
-
export declare function renderWorkspaceHeartbeatMarkdown(): string;
|
|
14
|
-
export declare function renderWorkspaceBootstrapMarkdown(agent: AgentIdentity): string;
|
|
15
|
-
export declare function renderDefaultOrchestratorSkillMarkdown(): string;
|
|
16
|
-
export declare function renderWorkspaceMetadata(agent: AgentIdentity): Record<string, unknown>;
|
|
17
|
-
export declare function renderInternalAgentConfig(agent: AgentIdentity): Record<string, unknown>;
|
|
18
|
-
export declare function renderInternalAgentMemoryMarkdown(agent: AgentIdentity): string;
|
|
19
|
-
export declare function renderInternalAgentState(): Record<string, unknown>;
|
|
12
|
+
export declare function renderCeoAgentsMarkdown(): string;
|
|
13
|
+
export declare function renderCeoRoleMarkdown(): string;
|
|
14
|
+
export declare function renderBoardManagerSkillMarkdown(): string;
|
|
15
|
+
export declare function renderBoardIndividualSkillMarkdown(): string;
|
|
16
|
+
export declare function renderInternalAgentConfig(agent: AgentIdentity, options?: AgentTemplateOptions): Record<string, unknown>;
|
|
17
|
+
export declare function resolveAgentRole(agentId: string, type: "manager" | "individual", rawRole?: string): string;
|
|
@@ -1,259 +1,127 @@
|
|
|
1
|
+
import { readFileSync } from "node:fs";
|
|
1
2
|
import { DEFAULT_AGENT_ID, isDefaultAgentId } from "../domain/agent-id.js";
|
|
2
|
-
import { DEFAULT_PROVIDER_ID } from "../providers/index.js";
|
|
3
3
|
export { DEFAULT_AGENT_ID } from "../domain/agent-id.js";
|
|
4
|
+
const ROLE_SKILLS = {
|
|
5
|
+
manager: [],
|
|
6
|
+
individual: [],
|
|
7
|
+
};
|
|
4
8
|
export function renderGlobalConfig(nowIso) {
|
|
5
9
|
return {
|
|
6
10
|
schemaVersion: 1,
|
|
7
11
|
defaultAgent: DEFAULT_AGENT_ID,
|
|
8
12
|
createdAt: nowIso,
|
|
9
|
-
updatedAt: nowIso
|
|
13
|
+
updatedAt: nowIso,
|
|
10
14
|
};
|
|
11
15
|
}
|
|
12
16
|
export function renderAgentsIndex(nowIso, agents) {
|
|
13
17
|
return {
|
|
14
18
|
schemaVersion: 1,
|
|
15
19
|
agents,
|
|
16
|
-
updatedAt: nowIso
|
|
20
|
+
updatedAt: nowIso,
|
|
17
21
|
};
|
|
18
22
|
}
|
|
19
|
-
export function
|
|
20
|
-
return
|
|
21
|
-
"# OpenGoat Home",
|
|
22
|
-
"",
|
|
23
|
-
"This directory is OpenGoat runtime state.",
|
|
24
|
-
"",
|
|
25
|
-
"- `config.json`: global orchestrator settings",
|
|
26
|
-
"- `agents.json`: registered agent ids",
|
|
27
|
-
"- `workspaces/`: user-visible agent workspaces",
|
|
28
|
-
"- `agents/`: internal per-agent configuration",
|
|
29
|
-
"- `skills/`: managed shared skills (optional source for agent installs)",
|
|
30
|
-
"- `providers/`: provider credentials and endpoint settings",
|
|
31
|
-
"- `sessions/`: transient per-run orchestration working files",
|
|
32
|
-
"- `runs/`: run traces (routing + execution history)",
|
|
33
|
-
"",
|
|
34
|
-
"Only Markdown and JSON files are used for OpenGoat configuration and state."
|
|
35
|
-
].join("\n");
|
|
23
|
+
export function renderCeoAgentsMarkdown() {
|
|
24
|
+
return readMarkdownTemplate("ceo/AGENTS.md");
|
|
36
25
|
}
|
|
37
|
-
export function
|
|
38
|
-
|
|
39
|
-
? "Primary orchestration agent that routes work to specialized agents."
|
|
40
|
-
: `Specialized agent for ${agent.displayName}.`;
|
|
41
|
-
const tags = isDefaultAgentId(agent.id) ? "orchestration, routing" : "specialized, delegated";
|
|
42
|
-
const canDelegate = isDefaultAgentId(agent.id) ? "true" : "false";
|
|
43
|
-
const priority = isDefaultAgentId(agent.id) ? "100" : "50";
|
|
44
|
-
return [
|
|
45
|
-
"---",
|
|
46
|
-
`id: ${agent.id}`,
|
|
47
|
-
`name: ${agent.displayName}`,
|
|
48
|
-
`description: ${description}`,
|
|
49
|
-
`provider: ${providerId}`,
|
|
50
|
-
"discoverable: true",
|
|
51
|
-
`tags: [${tags}]`,
|
|
52
|
-
"delegation:",
|
|
53
|
-
" canReceive: true",
|
|
54
|
-
` canDelegate: ${canDelegate}`,
|
|
55
|
-
`priority: ${priority}`,
|
|
56
|
-
"---",
|
|
57
|
-
"",
|
|
58
|
-
`# ${agent.displayName} (OpenGoat Agent)`,
|
|
59
|
-
"",
|
|
60
|
-
"## Role",
|
|
61
|
-
"You are an autonomous agent managed by OpenGoat.",
|
|
62
|
-
"",
|
|
63
|
-
"## Workspace Contract",
|
|
64
|
-
"- The workspace is your writable environment.",
|
|
65
|
-
"- Keep durable user-facing guidance in Markdown files.",
|
|
66
|
-
"- Keep structured settings in JSON files.",
|
|
67
|
-
"",
|
|
68
|
-
"## Operational Rules",
|
|
69
|
-
"- Prefer explicit planning before major actions.",
|
|
70
|
-
"- Keep logs concise and actionable.",
|
|
71
|
-
"- Record important decisions in `CONTEXT.md`.",
|
|
72
|
-
"",
|
|
73
|
-
"## Memory",
|
|
74
|
-
"Use `CONTEXT.md` for rolling context and handoff notes."
|
|
75
|
-
].join("\n");
|
|
26
|
+
export function renderCeoRoleMarkdown() {
|
|
27
|
+
return readMarkdownTemplate("ceo/ROLE.md");
|
|
76
28
|
}
|
|
77
|
-
export function
|
|
78
|
-
return
|
|
79
|
-
`# Context (${agent.displayName})`,
|
|
80
|
-
"",
|
|
81
|
-
"- Created by OpenGoat during workspace bootstrap.",
|
|
82
|
-
"- Use this file to capture current goals, constraints, and pending work."
|
|
83
|
-
].join("\n");
|
|
29
|
+
export function renderBoardManagerSkillMarkdown() {
|
|
30
|
+
return readMarkdownTemplate("skills/og-board-manager/SKILL.md");
|
|
84
31
|
}
|
|
85
|
-
export function
|
|
86
|
-
return
|
|
87
|
-
`# Soul (${agent.displayName})`,
|
|
88
|
-
"",
|
|
89
|
-
"- Define tone, style, and non-negotiable guardrails here.",
|
|
90
|
-
"- Keep this file concise and stable across runs."
|
|
91
|
-
].join("\n");
|
|
32
|
+
export function renderBoardIndividualSkillMarkdown() {
|
|
33
|
+
return readMarkdownTemplate("skills/og-board-individual/SKILL.md");
|
|
92
34
|
}
|
|
93
|
-
export function
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
"# Identity",
|
|
104
|
-
"",
|
|
105
|
-
`- id: ${agent.id}`,
|
|
106
|
-
`- displayName: ${agent.displayName}`,
|
|
107
|
-
"- role: OpenGoat agent"
|
|
108
|
-
].join("\n");
|
|
109
|
-
}
|
|
110
|
-
export function renderWorkspaceUserMarkdown() {
|
|
111
|
-
return [
|
|
112
|
-
"# User",
|
|
113
|
-
"",
|
|
114
|
-
"- Capture durable user preferences here.",
|
|
115
|
-
"- Avoid secrets; reference secure storage instead."
|
|
116
|
-
].join("\n");
|
|
117
|
-
}
|
|
118
|
-
export function renderWorkspaceHeartbeatMarkdown() {
|
|
119
|
-
return [
|
|
120
|
-
"# Heartbeat",
|
|
121
|
-
"",
|
|
122
|
-
"Read this file when asked to perform heartbeat checks.",
|
|
123
|
-
"If nothing needs attention, return HEARTBEAT_OK."
|
|
124
|
-
].join("\n");
|
|
125
|
-
}
|
|
126
|
-
export function renderWorkspaceBootstrapMarkdown(agent) {
|
|
127
|
-
return [
|
|
128
|
-
`# Bootstrap (${agent.displayName})`,
|
|
129
|
-
"",
|
|
130
|
-
"First-run checklist:",
|
|
131
|
-
"- Review AGENTS.md, SOUL.md, and IDENTITY.md.",
|
|
132
|
-
"- Confirm USER.md and CONTEXT.md reflect current goals.",
|
|
133
|
-
"- Delete this file after the bootstrap ritual is complete."
|
|
134
|
-
].join("\n");
|
|
135
|
-
}
|
|
136
|
-
export function renderDefaultOrchestratorSkillMarkdown() {
|
|
137
|
-
return [
|
|
138
|
-
"---",
|
|
139
|
-
"name: OpenGoat Skill",
|
|
140
|
-
"description: Use the OpenGoat CLI to orchestrate agents, providers, sessions, skills, and plugins.",
|
|
141
|
-
"user-invocable: true",
|
|
142
|
-
"---",
|
|
143
|
-
"",
|
|
144
|
-
"# OpenGoat Skill",
|
|
145
|
-
"",
|
|
146
|
-
"## When to Use",
|
|
147
|
-
"- Use this skill when the task requires OpenGoat platform operations.",
|
|
148
|
-
"- Use it for agent lifecycle, provider setup, routing checks, and session inspection.",
|
|
149
|
-
"",
|
|
150
|
-
"## Command Playbook",
|
|
151
|
-
"- Send message to default orchestrator: `opengoat agent --message \"<text>\"`",
|
|
152
|
-
"- Send message to specific agent: `opengoat agent <agent-id> --message \"<text>\"`",
|
|
153
|
-
"- Create agent: `opengoat agent create --name \"<name>\"`",
|
|
154
|
-
"- List agents: `opengoat agent list`",
|
|
155
|
-
"- Inspect/set provider: `opengoat agent provider get --agent <agent-id>` / `opengoat agent provider set --agent <agent-id> --provider <provider-id>`",
|
|
156
|
-
"- List providers: `opengoat provider list`",
|
|
157
|
-
"- Configure providers and credentials: `opengoat onboard`",
|
|
158
|
-
"- Inspect routing: `opengoat route --message \"<text>\"`",
|
|
159
|
-
"- Manage sessions: `opengoat session list|history|reset|compact ...`",
|
|
160
|
-
"- Manage skills: `opengoat skill list|install ...`",
|
|
161
|
-
"- Manage plugins: `opengoat plugin list|install|enable|disable|doctor ...`",
|
|
162
|
-
"",
|
|
163
|
-
"## Rules",
|
|
164
|
-
"- Treat `orchestrator` as the default entry agent unless explicitly overridden.",
|
|
165
|
-
"- Prefer non-destructive inspection commands before changing provider or plugin state.",
|
|
166
|
-
"- After CLI actions, report what changed and where."
|
|
167
|
-
].join("\n");
|
|
168
|
-
}
|
|
169
|
-
export function renderWorkspaceMetadata(agent) {
|
|
170
|
-
return {
|
|
171
|
-
schemaVersion: 1,
|
|
172
|
-
id: agent.id,
|
|
173
|
-
displayName: agent.displayName,
|
|
174
|
-
kind: "workspace",
|
|
175
|
-
createdBy: "opengoat"
|
|
176
|
-
};
|
|
177
|
-
}
|
|
178
|
-
export function renderInternalAgentConfig(agent) {
|
|
179
|
-
const workspaceAccess = isDefaultAgentId(agent.id) ? "internal" : "auto";
|
|
35
|
+
export function renderInternalAgentConfig(agent, options = {}) {
|
|
36
|
+
const isCeo = isDefaultAgentId(agent.id);
|
|
37
|
+
const type = options.type ?? (isCeo ? "manager" : "individual");
|
|
38
|
+
const role = resolveAgentRole(agent.id, type, options.role ?? agent.role);
|
|
39
|
+
const reportsTo = options.reportsTo === undefined
|
|
40
|
+
? isCeo
|
|
41
|
+
? null
|
|
42
|
+
: DEFAULT_AGENT_ID
|
|
43
|
+
: options.reportsTo;
|
|
44
|
+
const assignedSkills = dedupe(options.skills ?? ROLE_SKILLS[type]);
|
|
180
45
|
return {
|
|
181
|
-
schemaVersion:
|
|
46
|
+
schemaVersion: 2,
|
|
182
47
|
id: agent.id,
|
|
183
48
|
displayName: agent.displayName,
|
|
184
|
-
|
|
185
|
-
|
|
49
|
+
role,
|
|
50
|
+
description: type === "manager"
|
|
51
|
+
? `${role} coordinating direct reports.`
|
|
52
|
+
: `${role} OpenClaw agent for ${agent.displayName}.`,
|
|
53
|
+
organization: {
|
|
54
|
+
type,
|
|
55
|
+
reportsTo,
|
|
56
|
+
discoverable: true,
|
|
57
|
+
tags: type === "manager" ? ["manager", "leadership"] : ["specialized"],
|
|
58
|
+
priority: type === "manager" ? 100 : 50,
|
|
186
59
|
},
|
|
187
60
|
runtime: {
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
contextBudgetTokens: 128_000,
|
|
191
|
-
bootstrapMaxChars: 20_000,
|
|
61
|
+
adapter: "openclaw",
|
|
62
|
+
mode: "organization",
|
|
192
63
|
sessions: {
|
|
193
64
|
mainKey: "main",
|
|
194
65
|
contextMaxChars: 12_000,
|
|
195
66
|
reset: {
|
|
196
67
|
mode: "daily",
|
|
197
|
-
atHour: 4
|
|
68
|
+
atHour: 4,
|
|
198
69
|
},
|
|
199
70
|
pruning: {
|
|
200
71
|
enabled: true,
|
|
201
72
|
maxMessages: 40,
|
|
202
73
|
maxChars: 16_000,
|
|
203
|
-
keepRecentMessages: 12
|
|
74
|
+
keepRecentMessages: 12,
|
|
204
75
|
},
|
|
205
76
|
compaction: {
|
|
206
77
|
enabled: true,
|
|
207
78
|
triggerMessageCount: 80,
|
|
208
79
|
triggerChars: 32_000,
|
|
209
80
|
keepRecentMessages: 20,
|
|
210
|
-
summaryMaxChars: 4_000
|
|
81
|
+
summaryMaxChars: 4_000,
|
|
211
82
|
},
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
83
|
+
},
|
|
84
|
+
skills: {
|
|
85
|
+
enabled: true,
|
|
86
|
+
includeWorkspace: false,
|
|
87
|
+
includeManaged: true,
|
|
88
|
+
assigned: assignedSkills,
|
|
89
|
+
load: {
|
|
90
|
+
extraDirs: [],
|
|
91
|
+
},
|
|
92
|
+
prompt: {
|
|
93
|
+
maxSkills: 12,
|
|
94
|
+
maxCharsPerSkill: 6_000,
|
|
95
|
+
maxTotalChars: 36_000,
|
|
96
|
+
includeContent: true,
|
|
97
|
+
},
|
|
98
|
+
},
|
|
227
99
|
},
|
|
228
|
-
prompt: {
|
|
229
|
-
bootstrapFiles: [
|
|
230
|
-
"AGENTS.md",
|
|
231
|
-
"SOUL.md",
|
|
232
|
-
"TOOLS.md",
|
|
233
|
-
"IDENTITY.md",
|
|
234
|
-
"USER.md",
|
|
235
|
-
"HEARTBEAT.md",
|
|
236
|
-
"CONTEXT.md",
|
|
237
|
-
"BOOTSTRAP.md",
|
|
238
|
-
"MEMORY.md",
|
|
239
|
-
"memory.md"
|
|
240
|
-
]
|
|
241
|
-
}
|
|
242
100
|
};
|
|
243
101
|
}
|
|
244
|
-
export function
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
}
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
102
|
+
export function resolveAgentRole(agentId, type, rawRole) {
|
|
103
|
+
const explicitRole = rawRole?.trim();
|
|
104
|
+
if (explicitRole) {
|
|
105
|
+
return explicitRole;
|
|
106
|
+
}
|
|
107
|
+
if (isDefaultAgentId(agentId)) {
|
|
108
|
+
return "CEO";
|
|
109
|
+
}
|
|
110
|
+
return type === "manager" ? "Manager" : "Individual Contributor";
|
|
111
|
+
}
|
|
112
|
+
function dedupe(values) {
|
|
113
|
+
return [...new Set(values.map((value) => value.trim()).filter(Boolean))];
|
|
114
|
+
}
|
|
115
|
+
const markdownTemplateCache = new Map();
|
|
116
|
+
function readMarkdownTemplate(relativePath) {
|
|
117
|
+
const cached = markdownTemplateCache.get(relativePath);
|
|
118
|
+
if (cached) {
|
|
119
|
+
return cached;
|
|
120
|
+
}
|
|
121
|
+
const content = readFileSync(new URL(`./assets/${relativePath}`, import.meta.url), "utf-8")
|
|
122
|
+
.replace(/\r\n/g, "\n")
|
|
123
|
+
.trimEnd();
|
|
124
|
+
markdownTemplateCache.set(relativePath, content);
|
|
125
|
+
return content;
|
|
258
126
|
}
|
|
259
127
|
//# sourceMappingURL=default-templates.js.map
|