@laurentenhoor/devclaw 0.1.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/LICENSE +21 -0
- package/README.md +406 -0
- package/dist/index.d.ts +88 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +107 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/audit.d.ts +2 -0
- package/dist/lib/audit.d.ts.map +1 -0
- package/dist/lib/audit.js +42 -0
- package/dist/lib/audit.js.map +1 -0
- package/dist/lib/binding-manager.d.ts +35 -0
- package/dist/lib/binding-manager.d.ts.map +1 -0
- package/dist/lib/binding-manager.js +88 -0
- package/dist/lib/binding-manager.js.map +1 -0
- package/dist/lib/cli.d.ts +12 -0
- package/dist/lib/cli.d.ts.map +1 -0
- package/dist/lib/cli.js +69 -0
- package/dist/lib/cli.js.map +1 -0
- package/dist/lib/dispatch.d.ts +58 -0
- package/dist/lib/dispatch.d.ts.map +1 -0
- package/dist/lib/dispatch.js +163 -0
- package/dist/lib/dispatch.js.map +1 -0
- package/dist/lib/model-selector.d.ts +21 -0
- package/dist/lib/model-selector.d.ts.map +1 -0
- package/dist/lib/model-selector.js +74 -0
- package/dist/lib/model-selector.js.map +1 -0
- package/dist/lib/notify.d.ts +54 -0
- package/dist/lib/notify.d.ts.map +1 -0
- package/dist/lib/notify.js +143 -0
- package/dist/lib/notify.js.map +1 -0
- package/dist/lib/onboarding.d.ts +5 -0
- package/dist/lib/onboarding.d.ts.map +1 -0
- package/dist/lib/onboarding.js +124 -0
- package/dist/lib/onboarding.js.map +1 -0
- package/dist/lib/projects.d.ts +64 -0
- package/dist/lib/projects.d.ts.map +1 -0
- package/dist/lib/projects.js +127 -0
- package/dist/lib/projects.js.map +1 -0
- package/dist/lib/providers/github.d.ts +23 -0
- package/dist/lib/providers/github.d.ts.map +1 -0
- package/dist/lib/providers/github.js +130 -0
- package/dist/lib/providers/github.js.map +1 -0
- package/dist/lib/providers/gitlab.d.ts +23 -0
- package/dist/lib/providers/gitlab.d.ts.map +1 -0
- package/dist/lib/providers/gitlab.js +133 -0
- package/dist/lib/providers/gitlab.js.map +1 -0
- package/dist/lib/providers/index.d.ts +12 -0
- package/dist/lib/providers/index.d.ts.map +1 -0
- package/dist/lib/providers/index.js +25 -0
- package/dist/lib/providers/index.js.map +1 -0
- package/dist/lib/providers/provider.d.ts +35 -0
- package/dist/lib/providers/provider.d.ts.map +1 -0
- package/dist/lib/providers/provider.js +13 -0
- package/dist/lib/providers/provider.js.map +1 -0
- package/dist/lib/services/health.d.ts +38 -0
- package/dist/lib/services/health.d.ts.map +1 -0
- package/dist/lib/services/health.js +100 -0
- package/dist/lib/services/health.js.map +1 -0
- package/dist/lib/services/heartbeat.d.ts +38 -0
- package/dist/lib/services/heartbeat.d.ts.map +1 -0
- package/dist/lib/services/heartbeat.js +199 -0
- package/dist/lib/services/heartbeat.js.map +1 -0
- package/dist/lib/services/pipeline.d.ts +36 -0
- package/dist/lib/services/pipeline.d.ts.map +1 -0
- package/dist/lib/services/pipeline.js +90 -0
- package/dist/lib/services/pipeline.js.map +1 -0
- package/dist/lib/services/queue.d.ts +14 -0
- package/dist/lib/services/queue.d.ts.map +1 -0
- package/dist/lib/services/queue.js +31 -0
- package/dist/lib/services/queue.js.map +1 -0
- package/dist/lib/services/tick.d.ts +62 -0
- package/dist/lib/services/tick.d.ts.map +1 -0
- package/dist/lib/services/tick.js +160 -0
- package/dist/lib/services/tick.js.map +1 -0
- package/dist/lib/setup/agent.d.ts +14 -0
- package/dist/lib/setup/agent.d.ts.map +1 -0
- package/dist/lib/setup/agent.js +72 -0
- package/dist/lib/setup/agent.js.map +1 -0
- package/dist/lib/setup/config.d.ts +22 -0
- package/dist/lib/setup/config.d.ts.map +1 -0
- package/dist/lib/setup/config.js +67 -0
- package/dist/lib/setup/config.js.map +1 -0
- package/dist/lib/setup/index.d.ts +53 -0
- package/dist/lib/setup/index.d.ts.map +1 -0
- package/dist/lib/setup/index.js +68 -0
- package/dist/lib/setup/index.js.map +1 -0
- package/dist/lib/setup/workspace.d.ts +6 -0
- package/dist/lib/setup/workspace.d.ts.map +1 -0
- package/dist/lib/setup/workspace.js +69 -0
- package/dist/lib/setup/workspace.js.map +1 -0
- package/dist/lib/templates.d.ts +9 -0
- package/dist/lib/templates.d.ts.map +1 -0
- package/dist/lib/templates.js +163 -0
- package/dist/lib/templates.js.map +1 -0
- package/dist/lib/tiers.d.ts +55 -0
- package/dist/lib/tiers.d.ts.map +1 -0
- package/dist/lib/tiers.js +74 -0
- package/dist/lib/tiers.js.map +1 -0
- package/dist/lib/tool-helpers.d.ts +44 -0
- package/dist/lib/tool-helpers.d.ts.map +1 -0
- package/dist/lib/tool-helpers.js +65 -0
- package/dist/lib/tool-helpers.js.map +1 -0
- package/dist/lib/tools/health.d.ts +28 -0
- package/dist/lib/tools/health.d.ts.map +1 -0
- package/dist/lib/tools/health.js +61 -0
- package/dist/lib/tools/health.js.map +1 -0
- package/dist/lib/tools/onboard.d.ts +24 -0
- package/dist/lib/tools/onboard.d.ts.map +1 -0
- package/dist/lib/tools/onboard.js +27 -0
- package/dist/lib/tools/onboard.js.map +1 -0
- package/dist/lib/tools/project-register.d.ts +51 -0
- package/dist/lib/tools/project-register.d.ts.map +1 -0
- package/dist/lib/tools/project-register.js +172 -0
- package/dist/lib/tools/project-register.js.map +1 -0
- package/dist/lib/tools/queue-status.test.d.ts +2 -0
- package/dist/lib/tools/queue-status.test.d.ts.map +1 -0
- package/dist/lib/tools/queue-status.test.js +48 -0
- package/dist/lib/tools/queue-status.test.js.map +1 -0
- package/dist/lib/tools/setup.d.ts +76 -0
- package/dist/lib/tools/setup.d.ts.map +1 -0
- package/dist/lib/tools/setup.js +102 -0
- package/dist/lib/tools/setup.js.map +1 -0
- package/dist/lib/tools/status.d.ts +24 -0
- package/dist/lib/tools/status.d.ts.map +1 -0
- package/dist/lib/tools/status.js +53 -0
- package/dist/lib/tools/status.js.map +1 -0
- package/dist/lib/tools/task-comment.d.ts +40 -0
- package/dist/lib/tools/task-comment.d.ts.map +1 -0
- package/dist/lib/tools/task-comment.js +84 -0
- package/dist/lib/tools/task-comment.js.map +1 -0
- package/dist/lib/tools/task-create.d.ts +54 -0
- package/dist/lib/tools/task-create.d.ts.map +1 -0
- package/dist/lib/tools/task-create.js +77 -0
- package/dist/lib/tools/task-create.js.map +1 -0
- package/dist/lib/tools/task-update.d.ts +40 -0
- package/dist/lib/tools/task-update.d.ts.map +1 -0
- package/dist/lib/tools/task-update.js +79 -0
- package/dist/lib/tools/task-update.js.map +1 -0
- package/dist/lib/tools/task-update.test.d.ts +7 -0
- package/dist/lib/tools/task-update.test.d.ts.map +1 -0
- package/dist/lib/tools/task-update.test.js +55 -0
- package/dist/lib/tools/task-update.test.js.map +1 -0
- package/dist/lib/tools/work-finish.d.ts +43 -0
- package/dist/lib/tools/work-finish.d.ts.map +1 -0
- package/dist/lib/tools/work-finish.js +77 -0
- package/dist/lib/tools/work-finish.js.map +1 -0
- package/dist/lib/tools/work-start.d.ts +39 -0
- package/dist/lib/tools/work-start.d.ts.map +1 -0
- package/dist/lib/tools/work-start.js +129 -0
- package/dist/lib/tools/work-start.js.map +1 -0
- package/dist/lib/types.d.ts +17 -0
- package/dist/lib/types.d.ts.map +1 -0
- package/dist/lib/types.js +8 -0
- package/dist/lib/types.js.map +1 -0
- package/docs/ARCHITECTURE.md +662 -0
- package/docs/CONFIGURATION.md +336 -0
- package/docs/MANAGEMENT.md +120 -0
- package/docs/ONBOARDING.md +251 -0
- package/docs/QA_WORKFLOW.md +120 -0
- package/docs/ROADMAP.md +96 -0
- package/docs/TESTING.md +339 -0
- package/docs/TOOLS.md +361 -0
- package/package.json +55 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-register.js","sourceRoot":"","sources":["../../../lib/tools/project-register.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queue-status.test.d.ts","sourceRoot":"","sources":["../../../lib/tools/queue-status.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tests for status tool execution-aware sequencing logic
|
|
3
|
+
* Run with: node --test lib/tools/queue-status.test.ts
|
|
4
|
+
*/
|
|
5
|
+
import { describe, it } from "node:test";
|
|
6
|
+
import assert from "node:assert";
|
|
7
|
+
describe("status execution-aware sequencing", () => {
|
|
8
|
+
describe("priority ordering", () => {
|
|
9
|
+
it("should prioritize To Improve > To Test > To Do", () => {
|
|
10
|
+
// To Improve has priority 3, To Test has 2, To Do has 1
|
|
11
|
+
assert.strictEqual(3 > 2, true);
|
|
12
|
+
assert.strictEqual(2 > 1, true);
|
|
13
|
+
});
|
|
14
|
+
});
|
|
15
|
+
describe("role assignment", () => {
|
|
16
|
+
it("should assign To Improve to dev", () => {
|
|
17
|
+
// To Improve = dev work
|
|
18
|
+
assert.ok(true);
|
|
19
|
+
});
|
|
20
|
+
it("should assign To Do to dev", () => {
|
|
21
|
+
// To Do = dev work
|
|
22
|
+
assert.ok(true);
|
|
23
|
+
});
|
|
24
|
+
it("should assign To Test to qa", () => {
|
|
25
|
+
// To Test = qa work
|
|
26
|
+
assert.ok(true);
|
|
27
|
+
});
|
|
28
|
+
});
|
|
29
|
+
describe("execution modes", () => {
|
|
30
|
+
it("should support parallel project execution", () => {
|
|
31
|
+
// Projects can run simultaneously
|
|
32
|
+
assert.ok(true);
|
|
33
|
+
});
|
|
34
|
+
it("should support sequential project execution", () => {
|
|
35
|
+
// Only one project at a time
|
|
36
|
+
assert.ok(true);
|
|
37
|
+
});
|
|
38
|
+
it("should support parallel role execution within project", () => {
|
|
39
|
+
// DEV and QA can run simultaneously
|
|
40
|
+
assert.ok(true);
|
|
41
|
+
});
|
|
42
|
+
it("should support sequential role execution within project", () => {
|
|
43
|
+
// DEV and QA alternate
|
|
44
|
+
assert.ok(true);
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
//# sourceMappingURL=queue-status.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queue-status.test.js","sourceRoot":"","sources":["../../../lib/tools/queue-status.test.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,MAAM,MAAM,aAAa,CAAC;AAEjC,QAAQ,CAAC,mCAAmC,EAAE,GAAG,EAAE;IACjD,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;QACjC,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;YACxD,wDAAwD;YACxD,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;YAChC,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;QAC/B,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;YACzC,wBAAwB;YACxB,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;YACpC,mBAAmB;YACnB,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;YACrC,oBAAoB;YACpB,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;QAC/B,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;YACnD,kCAAkC;YAClC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;YACrD,6BAA6B;YAC7B,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;YAC/D,oCAAoC;YACpC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;YACjE,uBAAuB;YACvB,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* setup ā Agent-driven DevClaw setup.
|
|
3
|
+
*
|
|
4
|
+
* Creates agent, configures model levels, writes workspace files.
|
|
5
|
+
* Thin wrapper around lib/setup/.
|
|
6
|
+
*/
|
|
7
|
+
import type { OpenClawPluginApi } from "openclaw/plugin-sdk";
|
|
8
|
+
import type { ToolContext } from "../types.js";
|
|
9
|
+
export declare function createSetupTool(api: OpenClawPluginApi): (ctx: ToolContext) => {
|
|
10
|
+
name: string;
|
|
11
|
+
label: string;
|
|
12
|
+
description: string;
|
|
13
|
+
parameters: {
|
|
14
|
+
type: string;
|
|
15
|
+
properties: {
|
|
16
|
+
newAgentName: {
|
|
17
|
+
type: string;
|
|
18
|
+
description: string;
|
|
19
|
+
};
|
|
20
|
+
channelBinding: {
|
|
21
|
+
type: string;
|
|
22
|
+
enum: string[];
|
|
23
|
+
description: string;
|
|
24
|
+
};
|
|
25
|
+
migrateFrom: {
|
|
26
|
+
type: string;
|
|
27
|
+
description: string;
|
|
28
|
+
};
|
|
29
|
+
models: {
|
|
30
|
+
type: string;
|
|
31
|
+
description: string;
|
|
32
|
+
properties: {
|
|
33
|
+
dev: {
|
|
34
|
+
type: string;
|
|
35
|
+
description: string;
|
|
36
|
+
properties: {
|
|
37
|
+
junior: {
|
|
38
|
+
type: string;
|
|
39
|
+
description: string;
|
|
40
|
+
};
|
|
41
|
+
medior: {
|
|
42
|
+
type: string;
|
|
43
|
+
description: string;
|
|
44
|
+
};
|
|
45
|
+
senior: {
|
|
46
|
+
type: string;
|
|
47
|
+
description: string;
|
|
48
|
+
};
|
|
49
|
+
};
|
|
50
|
+
};
|
|
51
|
+
qa: {
|
|
52
|
+
type: string;
|
|
53
|
+
description: string;
|
|
54
|
+
properties: {
|
|
55
|
+
reviewer: {
|
|
56
|
+
type: string;
|
|
57
|
+
description: string;
|
|
58
|
+
};
|
|
59
|
+
tester: {
|
|
60
|
+
type: string;
|
|
61
|
+
description: string;
|
|
62
|
+
};
|
|
63
|
+
};
|
|
64
|
+
};
|
|
65
|
+
};
|
|
66
|
+
};
|
|
67
|
+
projectExecution: {
|
|
68
|
+
type: string;
|
|
69
|
+
enum: string[];
|
|
70
|
+
description: string;
|
|
71
|
+
};
|
|
72
|
+
};
|
|
73
|
+
};
|
|
74
|
+
execute(_id: string, params: Record<string, unknown>): Promise<import("@mariozechner/pi-agent-core").AgentToolResult<unknown>>;
|
|
75
|
+
};
|
|
76
|
+
//# sourceMappingURL=setup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../../lib/tools/setup.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE7D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAI/C,wBAAgB,eAAe,CAAC,GAAG,EAAE,iBAAiB,IAC5C,KAAK,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAoEH,MAAM,UAAU,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;EAkD7D"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { jsonResult } from "openclaw/plugin-sdk";
|
|
2
|
+
import { runSetup } from "../setup/index.js";
|
|
3
|
+
import { DEV_LEVELS, QA_LEVELS, DEFAULT_MODELS } from "../tiers.js";
|
|
4
|
+
export function createSetupTool(api) {
|
|
5
|
+
return (ctx) => ({
|
|
6
|
+
name: "setup",
|
|
7
|
+
label: "Setup",
|
|
8
|
+
description: `Execute DevClaw setup. Creates AGENTS.md, HEARTBEAT.md, projects/projects.json, and model level config. Optionally creates a new agent with channel binding. Called after onboard collects configuration.`,
|
|
9
|
+
parameters: {
|
|
10
|
+
type: "object",
|
|
11
|
+
properties: {
|
|
12
|
+
newAgentName: {
|
|
13
|
+
type: "string",
|
|
14
|
+
description: "Create a new agent. Omit to configure current workspace.",
|
|
15
|
+
},
|
|
16
|
+
channelBinding: {
|
|
17
|
+
type: "string",
|
|
18
|
+
enum: ["telegram", "whatsapp"],
|
|
19
|
+
description: "Channel to bind (optional, with newAgentName only).",
|
|
20
|
+
},
|
|
21
|
+
migrateFrom: {
|
|
22
|
+
type: "string",
|
|
23
|
+
description: "Agent ID to migrate channel binding from. Check openclaw.json bindings first.",
|
|
24
|
+
},
|
|
25
|
+
models: {
|
|
26
|
+
type: "object",
|
|
27
|
+
description: "Model overrides per role and level.",
|
|
28
|
+
properties: {
|
|
29
|
+
dev: {
|
|
30
|
+
type: "object",
|
|
31
|
+
description: "Developer level models",
|
|
32
|
+
properties: {
|
|
33
|
+
junior: {
|
|
34
|
+
type: "string",
|
|
35
|
+
description: `Default: ${DEFAULT_MODELS.dev.junior}`,
|
|
36
|
+
},
|
|
37
|
+
medior: {
|
|
38
|
+
type: "string",
|
|
39
|
+
description: `Default: ${DEFAULT_MODELS.dev.medior}`,
|
|
40
|
+
},
|
|
41
|
+
senior: {
|
|
42
|
+
type: "string",
|
|
43
|
+
description: `Default: ${DEFAULT_MODELS.dev.senior}`,
|
|
44
|
+
},
|
|
45
|
+
},
|
|
46
|
+
},
|
|
47
|
+
qa: {
|
|
48
|
+
type: "object",
|
|
49
|
+
description: "QA level models",
|
|
50
|
+
properties: {
|
|
51
|
+
reviewer: {
|
|
52
|
+
type: "string",
|
|
53
|
+
description: `Default: ${DEFAULT_MODELS.qa.reviewer}`,
|
|
54
|
+
},
|
|
55
|
+
tester: {
|
|
56
|
+
type: "string",
|
|
57
|
+
description: `Default: ${DEFAULT_MODELS.qa.tester}`,
|
|
58
|
+
},
|
|
59
|
+
},
|
|
60
|
+
},
|
|
61
|
+
},
|
|
62
|
+
},
|
|
63
|
+
projectExecution: {
|
|
64
|
+
type: "string",
|
|
65
|
+
enum: ["parallel", "sequential"],
|
|
66
|
+
description: "Project execution mode. Default: parallel.",
|
|
67
|
+
},
|
|
68
|
+
},
|
|
69
|
+
},
|
|
70
|
+
async execute(_id, params) {
|
|
71
|
+
const result = await runSetup({
|
|
72
|
+
api,
|
|
73
|
+
newAgentName: params.newAgentName,
|
|
74
|
+
channelBinding: params.channelBinding ?? null,
|
|
75
|
+
migrateFrom: params.migrateFrom,
|
|
76
|
+
agentId: params.newAgentName ? undefined : ctx.agentId,
|
|
77
|
+
workspacePath: params.newAgentName ? undefined : ctx.workspaceDir,
|
|
78
|
+
models: params.models,
|
|
79
|
+
projectExecution: params.projectExecution,
|
|
80
|
+
});
|
|
81
|
+
const lines = [
|
|
82
|
+
result.agentCreated
|
|
83
|
+
? `Agent "${result.agentId}" created`
|
|
84
|
+
: `Configured "${result.agentId}"`,
|
|
85
|
+
"",
|
|
86
|
+
];
|
|
87
|
+
if (result.bindingMigrated) {
|
|
88
|
+
lines.push(`ā
Binding migrated: ${result.bindingMigrated.channel} (${result.bindingMigrated.from} ā ${result.agentId})`, "");
|
|
89
|
+
}
|
|
90
|
+
lines.push("Models:", ...DEV_LEVELS.map((t) => ` dev.${t}: ${result.models.dev[t]}`), ...QA_LEVELS.map((t) => ` qa.${t}: ${result.models.qa[t]}`), "", "Files:", ...result.filesWritten.map((f) => ` ${f}`));
|
|
91
|
+
if (result.warnings.length > 0)
|
|
92
|
+
lines.push("", "Warnings:", ...result.warnings.map((w) => ` ${w}`));
|
|
93
|
+
lines.push("", "Next: register a project, then create issues and pick them up.");
|
|
94
|
+
return jsonResult({
|
|
95
|
+
success: true,
|
|
96
|
+
...result,
|
|
97
|
+
summary: lines.join("\n"),
|
|
98
|
+
});
|
|
99
|
+
},
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=setup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../lib/tools/setup.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* status ā Lightweight queue + worker state dashboard.
|
|
3
|
+
*
|
|
4
|
+
* Shows worker state and queue counts per project. No health checks
|
|
5
|
+
* (use `health` tool), no complex sequencing.
|
|
6
|
+
*/
|
|
7
|
+
import type { OpenClawPluginApi } from "openclaw/plugin-sdk";
|
|
8
|
+
import type { ToolContext } from "../types.js";
|
|
9
|
+
export declare function createStatusTool(api: OpenClawPluginApi): (ctx: ToolContext) => {
|
|
10
|
+
name: string;
|
|
11
|
+
label: string;
|
|
12
|
+
description: string;
|
|
13
|
+
parameters: {
|
|
14
|
+
type: string;
|
|
15
|
+
properties: {
|
|
16
|
+
projectGroupId: {
|
|
17
|
+
type: string;
|
|
18
|
+
description: string;
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
execute(_id: string, params: Record<string, unknown>): Promise<import("@mariozechner/pi-agent-core").AgentToolResult<unknown>>;
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=status.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../lib/tools/status.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE7D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAM/C,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,iBAAiB,IAC7C,KAAK,WAAW;;;;;;;;;;;;;iBAWH,MAAM,UAAU,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;EA4C7D"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { jsonResult } from "openclaw/plugin-sdk";
|
|
2
|
+
import { readProjects, getProject } from "../projects.js";
|
|
3
|
+
import { log as auditLog } from "../audit.js";
|
|
4
|
+
import { fetchProjectQueues } from "../services/queue.js";
|
|
5
|
+
import { requireWorkspaceDir, getPluginConfig } from "../tool-helpers.js";
|
|
6
|
+
export function createStatusTool(api) {
|
|
7
|
+
return (ctx) => ({
|
|
8
|
+
name: "status",
|
|
9
|
+
label: "Status",
|
|
10
|
+
description: `Show task queue and worker state per project. Use \`health\` tool for worker health checks.`,
|
|
11
|
+
parameters: {
|
|
12
|
+
type: "object",
|
|
13
|
+
properties: {
|
|
14
|
+
projectGroupId: { type: "string", description: "Filter to specific project. Omit for all." },
|
|
15
|
+
},
|
|
16
|
+
},
|
|
17
|
+
async execute(_id, params) {
|
|
18
|
+
const workspaceDir = requireWorkspaceDir(ctx);
|
|
19
|
+
const groupId = params.projectGroupId;
|
|
20
|
+
const pluginConfig = getPluginConfig(api);
|
|
21
|
+
const projectExecution = pluginConfig?.projectExecution ?? "parallel";
|
|
22
|
+
const data = await readProjects(workspaceDir);
|
|
23
|
+
const projectIds = groupId ? [groupId] : Object.keys(data.projects);
|
|
24
|
+
// Build project summaries with queue counts
|
|
25
|
+
const projects = await Promise.all(projectIds.map(async (pid) => {
|
|
26
|
+
const project = getProject(data, pid);
|
|
27
|
+
if (!project)
|
|
28
|
+
return null;
|
|
29
|
+
const queues = await fetchProjectQueues(project);
|
|
30
|
+
const count = (label) => queues[label].length;
|
|
31
|
+
return {
|
|
32
|
+
name: project.name,
|
|
33
|
+
groupId: pid,
|
|
34
|
+
roleExecution: project.roleExecution ?? "parallel",
|
|
35
|
+
dev: { active: project.dev.active, issueId: project.dev.issueId, level: project.dev.level, startTime: project.dev.startTime },
|
|
36
|
+
qa: { active: project.qa.active, issueId: project.qa.issueId, level: project.qa.level, startTime: project.qa.startTime },
|
|
37
|
+
queue: { toImprove: count("To Improve"), toTest: count("To Test"), toDo: count("To Do") },
|
|
38
|
+
};
|
|
39
|
+
}));
|
|
40
|
+
const filtered = projects.filter(Boolean);
|
|
41
|
+
await auditLog(workspaceDir, "status", {
|
|
42
|
+
projectCount: filtered.length,
|
|
43
|
+
totalQueued: filtered.reduce((s, p) => s + p.queue.toImprove + p.queue.toTest + p.queue.toDo, 0),
|
|
44
|
+
});
|
|
45
|
+
return jsonResult({
|
|
46
|
+
success: true,
|
|
47
|
+
execution: { projectExecution },
|
|
48
|
+
projects: filtered,
|
|
49
|
+
});
|
|
50
|
+
},
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../../lib/tools/status.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* task_comment ā Add review comments or notes to an issue.
|
|
3
|
+
*
|
|
4
|
+
* Use cases:
|
|
5
|
+
* - QA worker adds review feedback without blocking pass/fail
|
|
6
|
+
* - DEV worker posts implementation notes
|
|
7
|
+
* - Orchestrator adds summary comments
|
|
8
|
+
*/
|
|
9
|
+
import type { OpenClawPluginApi } from "openclaw/plugin-sdk";
|
|
10
|
+
import type { ToolContext } from "../types.js";
|
|
11
|
+
export declare function createTaskCommentTool(api: OpenClawPluginApi): (ctx: ToolContext) => {
|
|
12
|
+
name: string;
|
|
13
|
+
label: string;
|
|
14
|
+
description: string;
|
|
15
|
+
parameters: {
|
|
16
|
+
type: string;
|
|
17
|
+
required: string[];
|
|
18
|
+
properties: {
|
|
19
|
+
projectGroupId: {
|
|
20
|
+
type: string;
|
|
21
|
+
description: string;
|
|
22
|
+
};
|
|
23
|
+
issueId: {
|
|
24
|
+
type: string;
|
|
25
|
+
description: string;
|
|
26
|
+
};
|
|
27
|
+
body: {
|
|
28
|
+
type: string;
|
|
29
|
+
description: string;
|
|
30
|
+
};
|
|
31
|
+
authorRole: {
|
|
32
|
+
type: string;
|
|
33
|
+
enum: readonly ["dev", "qa", "orchestrator"];
|
|
34
|
+
description: string;
|
|
35
|
+
};
|
|
36
|
+
};
|
|
37
|
+
};
|
|
38
|
+
execute(_id: string, params: Record<string, unknown>): Promise<import("@mariozechner/pi-agent-core").AgentToolResult<unknown>>;
|
|
39
|
+
};
|
|
40
|
+
//# sourceMappingURL=task-comment.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-comment.d.ts","sourceRoot":"","sources":["../../../lib/tools/task-comment.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE7D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAQ/C,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,iBAAiB,IAClD,KAAK,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAuCH,MAAM,UAAU,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;EAqC7D"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { jsonResult } from "openclaw/plugin-sdk";
|
|
2
|
+
import { log as auditLog } from "../audit.js";
|
|
3
|
+
import { requireWorkspaceDir, resolveProject, resolveProvider } from "../tool-helpers.js";
|
|
4
|
+
/** Valid author roles for attribution */
|
|
5
|
+
const AUTHOR_ROLES = ["dev", "qa", "orchestrator"];
|
|
6
|
+
export function createTaskCommentTool(api) {
|
|
7
|
+
return (ctx) => ({
|
|
8
|
+
name: "task_comment",
|
|
9
|
+
label: "Task Comment",
|
|
10
|
+
description: `Add a comment to an issue. Use this for review feedback, implementation notes, or any discussion that doesn't require a state change.
|
|
11
|
+
|
|
12
|
+
Use cases:
|
|
13
|
+
- QA adds review feedback without blocking pass/fail
|
|
14
|
+
- DEV posts implementation notes or progress updates
|
|
15
|
+
- Orchestrator adds summary comments
|
|
16
|
+
- Cross-referencing related issues or PRs
|
|
17
|
+
|
|
18
|
+
Examples:
|
|
19
|
+
- Simple: { projectGroupId: "-123456789", issueId: 42, body: "Found an edge case with null inputs" }
|
|
20
|
+
- With role: { projectGroupId: "-123456789", issueId: 42, body: "LGTM!", authorRole: "qa" }
|
|
21
|
+
- Detailed: { projectGroupId: "-123456789", issueId: 42, body: "## Notes\\n\\n- Tested on staging\\n- All checks passing", authorRole: "dev" }`,
|
|
22
|
+
parameters: {
|
|
23
|
+
type: "object",
|
|
24
|
+
required: ["projectGroupId", "issueId", "body"],
|
|
25
|
+
properties: {
|
|
26
|
+
projectGroupId: {
|
|
27
|
+
type: "string",
|
|
28
|
+
description: "Telegram/WhatsApp group ID (key in projects.json)",
|
|
29
|
+
},
|
|
30
|
+
issueId: {
|
|
31
|
+
type: "number",
|
|
32
|
+
description: "Issue ID to comment on",
|
|
33
|
+
},
|
|
34
|
+
body: {
|
|
35
|
+
type: "string",
|
|
36
|
+
description: "Comment body in markdown. Supports GitHub-flavored markdown.",
|
|
37
|
+
},
|
|
38
|
+
authorRole: {
|
|
39
|
+
type: "string",
|
|
40
|
+
enum: AUTHOR_ROLES,
|
|
41
|
+
description: `Optional role attribution for the comment. One of: ${AUTHOR_ROLES.join(", ")}`,
|
|
42
|
+
},
|
|
43
|
+
},
|
|
44
|
+
},
|
|
45
|
+
async execute(_id, params) {
|
|
46
|
+
const groupId = params.projectGroupId;
|
|
47
|
+
const issueId = params.issueId;
|
|
48
|
+
const body = params.body;
|
|
49
|
+
const authorRole = params.authorRole ?? undefined;
|
|
50
|
+
const workspaceDir = requireWorkspaceDir(ctx);
|
|
51
|
+
if (!body || body.trim().length === 0) {
|
|
52
|
+
throw new Error("Comment body cannot be empty.");
|
|
53
|
+
}
|
|
54
|
+
const { project } = await resolveProject(workspaceDir, groupId);
|
|
55
|
+
const { provider, type: providerType } = resolveProvider(project);
|
|
56
|
+
const issue = await provider.getIssue(issueId);
|
|
57
|
+
const commentBody = authorRole
|
|
58
|
+
? `${ROLE_EMOJI[authorRole]} **${authorRole.toUpperCase()}**: ${body}`
|
|
59
|
+
: body;
|
|
60
|
+
await provider.addComment(issueId, commentBody);
|
|
61
|
+
await auditLog(workspaceDir, "task_comment", {
|
|
62
|
+
project: project.name, groupId, issueId,
|
|
63
|
+
authorRole: authorRole ?? null,
|
|
64
|
+
bodyPreview: body.slice(0, 100) + (body.length > 100 ? "..." : ""),
|
|
65
|
+
provider: providerType,
|
|
66
|
+
});
|
|
67
|
+
return jsonResult({
|
|
68
|
+
success: true, issueId, issueTitle: issue.title, issueUrl: issue.web_url,
|
|
69
|
+
commentAdded: true, authorRole: authorRole ?? null, bodyLength: body.length,
|
|
70
|
+
project: project.name, provider: providerType,
|
|
71
|
+
announcement: `š¬ Comment added to #${issueId}${authorRole ? ` by ${authorRole.toUpperCase()}` : ""}`,
|
|
72
|
+
});
|
|
73
|
+
},
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
// ---------------------------------------------------------------------------
|
|
77
|
+
// Private helpers
|
|
78
|
+
// ---------------------------------------------------------------------------
|
|
79
|
+
const ROLE_EMOJI = {
|
|
80
|
+
dev: "šØāš»",
|
|
81
|
+
qa: "š",
|
|
82
|
+
orchestrator: "šļø",
|
|
83
|
+
};
|
|
84
|
+
//# sourceMappingURL=task-comment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-comment.js","sourceRoot":"","sources":["../../../lib/tools/task-comment.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* task_create ā Create a new task (issue) in the project's issue tracker.
|
|
3
|
+
*
|
|
4
|
+
* Atomically: creates an issue with the specified title, description, and label.
|
|
5
|
+
* Returns the created issue for immediate pickup if desired.
|
|
6
|
+
*
|
|
7
|
+
* Use this when:
|
|
8
|
+
* - You want to create work items from chat
|
|
9
|
+
* - A sub-agent finds a bug and needs to file a follow-up issue
|
|
10
|
+
* - Breaking down an epic into smaller tasks
|
|
11
|
+
*/
|
|
12
|
+
import type { OpenClawPluginApi } from "openclaw/plugin-sdk";
|
|
13
|
+
import type { ToolContext } from "../types.js";
|
|
14
|
+
export declare function createTaskCreateTool(api: OpenClawPluginApi): (ctx: ToolContext) => {
|
|
15
|
+
name: string;
|
|
16
|
+
label: string;
|
|
17
|
+
description: string;
|
|
18
|
+
parameters: {
|
|
19
|
+
type: string;
|
|
20
|
+
required: string[];
|
|
21
|
+
properties: {
|
|
22
|
+
projectGroupId: {
|
|
23
|
+
type: string;
|
|
24
|
+
description: string;
|
|
25
|
+
};
|
|
26
|
+
title: {
|
|
27
|
+
type: string;
|
|
28
|
+
description: string;
|
|
29
|
+
};
|
|
30
|
+
description: {
|
|
31
|
+
type: string;
|
|
32
|
+
description: string;
|
|
33
|
+
};
|
|
34
|
+
label: {
|
|
35
|
+
type: string;
|
|
36
|
+
description: string;
|
|
37
|
+
enum: readonly ["Planning", "To Do", "Doing", "To Test", "Testing", "Done", "To Improve", "Refining"];
|
|
38
|
+
};
|
|
39
|
+
assignees: {
|
|
40
|
+
type: string;
|
|
41
|
+
items: {
|
|
42
|
+
type: string;
|
|
43
|
+
};
|
|
44
|
+
description: string;
|
|
45
|
+
};
|
|
46
|
+
pickup: {
|
|
47
|
+
type: string;
|
|
48
|
+
description: string;
|
|
49
|
+
};
|
|
50
|
+
};
|
|
51
|
+
};
|
|
52
|
+
execute(_id: string, params: Record<string, unknown>): Promise<import("@mariozechner/pi-agent-core").AgentToolResult<unknown>>;
|
|
53
|
+
};
|
|
54
|
+
//# sourceMappingURL=task-create.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-create.d.ts","sourceRoot":"","sources":["../../../lib/tools/task-create.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE7D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAK/C,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,iBAAiB,IACjD,KAAK,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA2CH,MAAM,UAAU,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;EAgC7D"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { jsonResult } from "openclaw/plugin-sdk";
|
|
2
|
+
import { log as auditLog } from "../audit.js";
|
|
3
|
+
import { STATE_LABELS } from "../providers/provider.js";
|
|
4
|
+
import { requireWorkspaceDir, resolveProject, resolveProvider } from "../tool-helpers.js";
|
|
5
|
+
export function createTaskCreateTool(api) {
|
|
6
|
+
return (ctx) => ({
|
|
7
|
+
name: "task_create",
|
|
8
|
+
label: "Task Create",
|
|
9
|
+
description: `Create a new task (issue) in the project's issue tracker. Use this to file bugs, features, or tasks from chat.
|
|
10
|
+
|
|
11
|
+
**IMPORTANT:** Always creates in "Planning" unless the user explicitly asks to start work immediately. Never set label to "To Do" on your own ā "Planning" issues require human review before entering the queue.
|
|
12
|
+
|
|
13
|
+
Examples:
|
|
14
|
+
- Default: { title: "Fix login bug" } ā created in Planning
|
|
15
|
+
- User says "create and start working": { title: "Implement auth", description: "...", label: "To Do" }`,
|
|
16
|
+
parameters: {
|
|
17
|
+
type: "object",
|
|
18
|
+
required: ["projectGroupId", "title"],
|
|
19
|
+
properties: {
|
|
20
|
+
projectGroupId: {
|
|
21
|
+
type: "string",
|
|
22
|
+
description: "Telegram/WhatsApp group ID for the project",
|
|
23
|
+
},
|
|
24
|
+
title: {
|
|
25
|
+
type: "string",
|
|
26
|
+
description: "Short, descriptive issue title (e.g., 'Fix login timeout bug')",
|
|
27
|
+
},
|
|
28
|
+
description: {
|
|
29
|
+
type: "string",
|
|
30
|
+
description: "Full issue body in markdown. Use for detailed context, acceptance criteria, reproduction steps, links. Supports GitHub-flavored markdown.",
|
|
31
|
+
},
|
|
32
|
+
label: {
|
|
33
|
+
type: "string",
|
|
34
|
+
description: `State label. Defaults to "Planning" ā only use "To Do" when the user explicitly asks to start work immediately.`,
|
|
35
|
+
enum: STATE_LABELS,
|
|
36
|
+
},
|
|
37
|
+
assignees: {
|
|
38
|
+
type: "array",
|
|
39
|
+
items: { type: "string" },
|
|
40
|
+
description: "GitHub/GitLab usernames to assign (optional)",
|
|
41
|
+
},
|
|
42
|
+
pickup: {
|
|
43
|
+
type: "boolean",
|
|
44
|
+
description: "If true, immediately pick up this issue for DEV after creation. Defaults to false.",
|
|
45
|
+
},
|
|
46
|
+
},
|
|
47
|
+
},
|
|
48
|
+
async execute(_id, params) {
|
|
49
|
+
const groupId = params.projectGroupId;
|
|
50
|
+
const title = params.title;
|
|
51
|
+
const description = params.description ?? "";
|
|
52
|
+
const label = params.label ?? "Planning";
|
|
53
|
+
const assignees = params.assignees ?? [];
|
|
54
|
+
const pickup = params.pickup ?? false;
|
|
55
|
+
const workspaceDir = requireWorkspaceDir(ctx);
|
|
56
|
+
const { project } = await resolveProject(workspaceDir, groupId);
|
|
57
|
+
const { provider, type: providerType } = resolveProvider(project);
|
|
58
|
+
const issue = await provider.createIssue(title, description, label, assignees);
|
|
59
|
+
await auditLog(workspaceDir, "task_create", {
|
|
60
|
+
project: project.name, groupId, issueId: issue.iid,
|
|
61
|
+
title, label, provider: providerType, pickup,
|
|
62
|
+
});
|
|
63
|
+
const hasBody = description && description.trim().length > 0;
|
|
64
|
+
let announcement = `š Created #${issue.iid}: "${title}" (${label})`;
|
|
65
|
+
if (hasBody)
|
|
66
|
+
announcement += "\nWith detailed description.";
|
|
67
|
+
announcement += `\nš ${issue.web_url}`;
|
|
68
|
+
announcement += pickup ? "\nPicking up for DEV..." : "\nReady for pickup when needed.";
|
|
69
|
+
return jsonResult({
|
|
70
|
+
success: true,
|
|
71
|
+
issue: { id: issue.iid, title: issue.title, body: hasBody ? description : null, url: issue.web_url, label },
|
|
72
|
+
project: project.name, provider: providerType, pickup, announcement,
|
|
73
|
+
});
|
|
74
|
+
},
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=task-create.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-create.js","sourceRoot":"","sources":["../../../lib/tools/task-create.ts"],"names":[],"mappings":"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"}
|