opencode-hive 0.4.2 → 0.4.4

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/dist/index.js CHANGED
@@ -13,7 +13,7 @@ Plan-first development: Write plan → User reviews → Approve → Execute task
13
13
 
14
14
  | Domain | Tools |
15
15
  |--------|-------|
16
- | Feature | hive_feature_create, hive_feature_list, hive_feature_switch, hive_feature_complete, hive_status |
16
+ | Feature | hive_feature_create, hive_feature_list, hive_feature_switch, hive_feature_complete |
17
17
  | Plan | hive_plan_write, hive_plan_read, hive_plan_approve |
18
18
  | Task | hive_tasks_sync, hive_task_create, hive_task_update |
19
19
  | Exec | hive_exec_start, hive_exec_complete, hive_exec_abort |
@@ -130,19 +130,6 @@ const plugin = async (ctx) => {
130
130
  return `Feature "${feature}" marked as completed`;
131
131
  },
132
132
  }),
133
- hive_status: tool({
134
- description: 'Get overview of active feature',
135
- args: { name: tool.schema.string().optional().describe('Feature name (defaults to active)') },
136
- async execute({ name }) {
137
- const feature = name || featureService.getActive();
138
- if (!feature)
139
- return "Error: No active feature";
140
- const info = featureService.getInfo(feature);
141
- if (!info)
142
- return `Error: Feature "${feature}" not found`;
143
- return JSON.stringify(info, null, 2);
144
- },
145
- }),
146
133
  hive_plan_write: tool({
147
134
  description: 'Write plan.md (clears existing comments)',
148
135
  args: { content: tool.schema.string().describe('Plan markdown content') },
@@ -4,11 +4,9 @@ export declare function createExecTools(projectRoot: string): {
4
4
  description: string;
5
5
  parameters: z.ZodObject<{
6
6
  task: z.ZodString;
7
- featureName: z.ZodOptional<z.ZodString>;
8
7
  }, z.core.$strip>;
9
- execute: ({ task, featureName }: {
8
+ execute: ({ task }: {
10
9
  task: string;
11
- featureName?: string;
12
10
  }) => Promise<{
13
11
  error: string;
14
12
  worktreePath?: undefined;
@@ -27,13 +25,11 @@ export declare function createExecTools(projectRoot: string): {
27
25
  task: z.ZodString;
28
26
  summary: z.ZodString;
29
27
  report: z.ZodOptional<z.ZodString>;
30
- featureName: z.ZodOptional<z.ZodString>;
31
28
  }, z.core.$strip>;
32
- execute: ({ task, summary, report, featureName }: {
29
+ execute: ({ task, summary, report }: {
33
30
  task: string;
34
31
  summary: string;
35
32
  report?: string;
36
- featureName?: string;
37
33
  }) => Promise<{
38
34
  error: string;
39
35
  completed?: undefined;
@@ -52,11 +48,9 @@ export declare function createExecTools(projectRoot: string): {
52
48
  description: string;
53
49
  parameters: z.ZodObject<{
54
50
  task: z.ZodString;
55
- featureName: z.ZodOptional<z.ZodString>;
56
51
  }, z.core.$strip>;
57
- execute: ({ task, featureName }: {
52
+ execute: ({ task }: {
58
53
  task: string;
59
- featureName?: string;
60
54
  }) => Promise<{
61
55
  error: string;
62
56
  aborted?: undefined;
@@ -12,13 +12,12 @@ export function createExecTools(projectRoot) {
12
12
  });
13
13
  return {
14
14
  hive_exec_start: {
15
- description: 'Create a git worktree and begin work on a task. Sets task status to in_progress.',
15
+ description: 'Create worktree and begin work on task',
16
16
  parameters: z.object({
17
17
  task: z.string().describe('Task folder name (e.g., "01-auth-service")'),
18
- featureName: z.string().optional().describe('Feature name (defaults to active feature)'),
19
18
  }),
20
- execute: async ({ task, featureName }) => {
21
- const feature = featureName || featureService.getActive();
19
+ execute: async ({ task }) => {
20
+ const feature = featureService.getActive();
22
21
  if (!feature) {
23
22
  return { error: 'No active feature.' };
24
23
  }
@@ -53,15 +52,14 @@ export function createExecTools(projectRoot) {
53
52
  },
54
53
  },
55
54
  hive_exec_complete: {
56
- description: 'Complete a task: commit changes, apply to main branch, write report, cleanup worktree.',
55
+ description: 'Complete task: apply changes, write report',
57
56
  parameters: z.object({
58
57
  task: z.string().describe('Task folder name'),
59
58
  summary: z.string().describe('Summary of what was done'),
60
59
  report: z.string().optional().describe('Detailed report (markdown). If not provided, summary is used.'),
61
- featureName: z.string().optional().describe('Feature name (defaults to active feature)'),
62
60
  }),
63
- execute: async ({ task, summary, report, featureName }) => {
64
- const feature = featureName || featureService.getActive();
61
+ execute: async ({ task, summary, report }) => {
62
+ const feature = featureService.getActive();
65
63
  if (!feature) {
66
64
  return { error: 'No active feature.' };
67
65
  }
@@ -93,13 +91,12 @@ export function createExecTools(projectRoot) {
93
91
  },
94
92
  },
95
93
  hive_exec_abort: {
96
- description: 'Abort work on a task: discard changes, cleanup worktree, reset status to pending.',
94
+ description: 'Abort task: discard changes, reset status',
97
95
  parameters: z.object({
98
96
  task: z.string().describe('Task folder name'),
99
- featureName: z.string().optional().describe('Feature name (defaults to active feature)'),
100
97
  }),
101
- execute: async ({ task, featureName }) => {
102
- const feature = featureName || featureService.getActive();
98
+ execute: async ({ task }) => {
99
+ const feature = featureService.getActive();
103
100
  if (!feature) {
104
101
  return { error: 'No active feature.' };
105
102
  }
@@ -1,5 +1,4 @@
1
1
  import { z } from 'zod';
2
- import type { TaskInfo } from '../types.js';
3
2
  export declare function createFeatureTools(projectRoot: string): {
4
3
  hive_feature_create: {
5
4
  description: string;
@@ -47,10 +46,11 @@ export declare function createFeatureTools(projectRoot: string): {
47
46
  hive_feature_complete: {
48
47
  description: string;
49
48
  parameters: z.ZodObject<{
50
- featureName: z.ZodOptional<z.ZodString>;
49
+ _placeholder: z.ZodBoolean;
50
+ name: z.ZodOptional<z.ZodString>;
51
51
  }, z.core.$strip>;
52
- execute: ({ featureName }: {
53
- featureName?: string;
52
+ execute: ({ name }: {
53
+ name?: string;
54
54
  }) => Promise<{
55
55
  error: string;
56
56
  pendingTasks?: undefined;
@@ -71,34 +71,4 @@ export declare function createFeatureTools(projectRoot: string): {
71
71
  pendingTasks?: undefined;
72
72
  }>;
73
73
  };
74
- hive_status: {
75
- description: string;
76
- parameters: z.ZodObject<{
77
- featureName: z.ZodOptional<z.ZodString>;
78
- }, z.core.$strip>;
79
- execute: ({ featureName }: {
80
- featureName?: string;
81
- }) => Promise<{
82
- error: string;
83
- feature?: undefined;
84
- status?: undefined;
85
- hasPlan?: undefined;
86
- commentCount?: undefined;
87
- tasks?: undefined;
88
- taskSummary?: undefined;
89
- } | {
90
- feature: string;
91
- status: import("../types.js").FeatureStatusType;
92
- hasPlan: boolean;
93
- commentCount: number;
94
- tasks: TaskInfo[];
95
- taskSummary: {
96
- pending: number;
97
- in_progress: number;
98
- done: number;
99
- cancelled: number;
100
- };
101
- error?: undefined;
102
- }>;
103
- };
104
74
  };
@@ -54,12 +54,13 @@ export function createFeatureTools(projectRoot) {
54
54
  },
55
55
  },
56
56
  hive_feature_complete: {
57
- description: 'Mark a feature as completed. This is irreversible.',
57
+ description: 'Mark feature as completed (irreversible)',
58
58
  parameters: z.object({
59
- featureName: z.string().optional().describe('Feature name (defaults to active feature)'),
59
+ _placeholder: z.boolean().describe('Placeholder. Always pass true.'),
60
+ name: z.string().optional(),
60
61
  }),
61
- execute: async ({ featureName }) => {
62
- const feature = featureName || featureService.getActive();
62
+ execute: async ({ name }) => {
63
+ const feature = name || featureService.getActive();
63
64
  if (!feature) {
64
65
  return { error: 'No active feature.' };
65
66
  }
@@ -79,35 +80,5 @@ export function createFeatureTools(projectRoot) {
79
80
  };
80
81
  },
81
82
  },
82
- hive_status: {
83
- description: 'Get overview of the active feature: status, plan, tasks.',
84
- parameters: z.object({
85
- featureName: z.string().optional().describe('Feature name (defaults to active feature)'),
86
- }),
87
- execute: async ({ featureName }) => {
88
- const feature = featureName || featureService.getActive();
89
- if (!feature) {
90
- return { error: 'No active feature. Create one with hive_feature_create.' };
91
- }
92
- const info = featureService.getInfo(feature);
93
- if (!info) {
94
- return { error: `Feature '${feature}' not found` };
95
- }
96
- const tasksByStatus = {
97
- pending: info.tasks.filter((t) => t.status === 'pending').length,
98
- in_progress: info.tasks.filter((t) => t.status === 'in_progress').length,
99
- done: info.tasks.filter((t) => t.status === 'done').length,
100
- cancelled: info.tasks.filter((t) => t.status === 'cancelled').length,
101
- };
102
- return {
103
- feature: info.name,
104
- status: info.status,
105
- hasPlan: info.hasPlan,
106
- commentCount: info.commentCount,
107
- tasks: info.tasks,
108
- taskSummary: tasksByStatus,
109
- };
110
- },
111
- },
112
83
  };
113
84
  }
@@ -4,11 +4,9 @@ export declare function createPlanTools(projectRoot: string): {
4
4
  description: string;
5
5
  parameters: z.ZodObject<{
6
6
  content: z.ZodString;
7
- featureName: z.ZodOptional<z.ZodString>;
8
7
  }, z.core.$strip>;
9
- execute: ({ content, featureName }: {
8
+ execute: ({ content }: {
10
9
  content: string;
11
- featureName?: string;
12
10
  }) => Promise<{
13
11
  error: string;
14
12
  path?: undefined;
@@ -21,23 +19,15 @@ export declare function createPlanTools(projectRoot: string): {
21
19
  };
22
20
  hive_plan_read: {
23
21
  description: string;
24
- parameters: z.ZodObject<{
25
- featureName: z.ZodOptional<z.ZodString>;
26
- }, z.core.$strip>;
27
- execute: ({ featureName }: {
28
- featureName?: string;
29
- }) => Promise<import("../types.js").PlanReadResult | {
22
+ parameters: z.ZodObject<{}, z.core.$strip>;
23
+ execute: () => Promise<import("../types.js").PlanReadResult | {
30
24
  error: string;
31
25
  }>;
32
26
  };
33
27
  hive_plan_approve: {
34
28
  description: string;
35
- parameters: z.ZodObject<{
36
- featureName: z.ZodOptional<z.ZodString>;
37
- }, z.core.$strip>;
38
- execute: ({ featureName }: {
39
- featureName?: string;
40
- }) => Promise<{
29
+ parameters: z.ZodObject<{}, z.core.$strip>;
30
+ execute: () => Promise<{
41
31
  error: string;
42
32
  comments?: undefined;
43
33
  approved?: undefined;
@@ -6,13 +6,12 @@ export function createPlanTools(projectRoot) {
6
6
  const featureService = new FeatureService(projectRoot);
7
7
  return {
8
8
  hive_plan_write: {
9
- description: 'Create or update the plan.md for the active feature. Clears any existing comments (new plan = fresh review).',
9
+ description: 'Write plan.md (clears existing comments)',
10
10
  parameters: z.object({
11
11
  content: z.string().describe('The markdown content for the plan'),
12
- featureName: z.string().optional().describe('Feature name (defaults to active feature)'),
13
12
  }),
14
- execute: async ({ content, featureName }) => {
15
- const feature = featureName || featureService.getActive();
13
+ execute: async ({ content }) => {
14
+ const feature = featureService.getActive();
16
15
  if (!feature) {
17
16
  return { error: 'No active feature. Create one with hive_feature_create first.' };
18
17
  }
@@ -21,12 +20,10 @@ export function createPlanTools(projectRoot) {
21
20
  },
22
21
  },
23
22
  hive_plan_read: {
24
- description: 'Read the plan.md and any user comments for the active feature.',
25
- parameters: z.object({
26
- featureName: z.string().optional().describe('Feature name (defaults to active feature)'),
27
- }),
28
- execute: async ({ featureName }) => {
29
- const feature = featureName || featureService.getActive();
23
+ description: 'Read plan.md and user comments',
24
+ parameters: z.object({}),
25
+ execute: async () => {
26
+ const feature = featureService.getActive();
30
27
  if (!feature) {
31
28
  return { error: 'No active feature.' };
32
29
  }
@@ -38,12 +35,10 @@ export function createPlanTools(projectRoot) {
38
35
  },
39
36
  },
40
37
  hive_plan_approve: {
41
- description: 'Approve the plan for execution. After approval, run hive_tasks_sync to generate tasks.',
42
- parameters: z.object({
43
- featureName: z.string().optional().describe('Feature name (defaults to active feature)'),
44
- }),
45
- execute: async ({ featureName }) => {
46
- const feature = featureName || featureService.getActive();
38
+ description: 'Approve plan for execution',
39
+ parameters: z.object({}),
40
+ execute: async () => {
41
+ const feature = featureService.getActive();
47
42
  if (!feature) {
48
43
  return { error: 'No active feature.' };
49
44
  }
@@ -2,12 +2,8 @@ import { z } from 'zod';
2
2
  export declare function createTaskTools(projectRoot: string): {
3
3
  hive_tasks_sync: {
4
4
  description: string;
5
- parameters: z.ZodObject<{
6
- featureName: z.ZodOptional<z.ZodString>;
7
- }, z.core.$strip>;
8
- execute: ({ featureName }: {
9
- featureName?: string;
10
- }) => Promise<{
5
+ parameters: z.ZodObject<{}, z.core.$strip>;
6
+ execute: () => Promise<{
11
7
  error: string;
12
8
  } | {
13
9
  message: string;
@@ -23,12 +19,10 @@ export declare function createTaskTools(projectRoot: string): {
23
19
  parameters: z.ZodObject<{
24
20
  name: z.ZodString;
25
21
  order: z.ZodOptional<z.ZodNumber>;
26
- featureName: z.ZodOptional<z.ZodString>;
27
22
  }, z.core.$strip>;
28
- execute: ({ name, order, featureName }: {
23
+ execute: ({ name, order }: {
29
24
  name: string;
30
25
  order?: number;
31
- featureName?: string;
32
26
  }) => Promise<{
33
27
  error: string;
34
28
  folder?: undefined;
@@ -52,13 +46,11 @@ export declare function createTaskTools(projectRoot: string): {
52
46
  cancelled: "cancelled";
53
47
  }>>;
54
48
  summary: z.ZodOptional<z.ZodString>;
55
- featureName: z.ZodOptional<z.ZodString>;
56
49
  }, z.core.$strip>;
57
- execute: ({ task, status, summary, featureName }: {
50
+ execute: ({ task, status, summary }: {
58
51
  task: string;
59
52
  status?: "pending" | "in_progress" | "done" | "cancelled";
60
53
  summary?: string;
61
- featureName?: string;
62
54
  }) => Promise<{
63
55
  error: string;
64
56
  updated?: undefined;
@@ -75,12 +67,8 @@ export declare function createTaskTools(projectRoot: string): {
75
67
  };
76
68
  hive_task_list: {
77
69
  description: string;
78
- parameters: z.ZodObject<{
79
- featureName: z.ZodOptional<z.ZodString>;
80
- }, z.core.$strip>;
81
- execute: ({ featureName }: {
82
- featureName?: string;
83
- }) => Promise<{
70
+ parameters: z.ZodObject<{}, z.core.$strip>;
71
+ execute: () => Promise<{
84
72
  error: string;
85
73
  tasks?: undefined;
86
74
  } | {
@@ -6,12 +6,10 @@ export function createTaskTools(projectRoot) {
6
6
  const featureService = new FeatureService(projectRoot);
7
7
  return {
8
8
  hive_tasks_sync: {
9
- description: 'Parse the approved plan.md and sync task folders. Creates new tasks, removes obsolete pending tasks, keeps completed/in-progress tasks.',
10
- parameters: z.object({
11
- featureName: z.string().optional().describe('Feature name (defaults to active feature)'),
12
- }),
13
- execute: async ({ featureName }) => {
14
- const feature = featureName || featureService.getActive();
9
+ description: 'Generate tasks from approved plan',
10
+ parameters: z.object({}),
11
+ execute: async () => {
12
+ const feature = featureService.getActive();
15
13
  if (!feature) {
16
14
  return { error: 'No active feature.' };
17
15
  }
@@ -33,14 +31,13 @@ export function createTaskTools(projectRoot) {
33
31
  },
34
32
  },
35
33
  hive_task_create: {
36
- description: 'Create a manual task (not from plan). Use for hotfixes or ad-hoc work during execution.',
34
+ description: 'Create manual task (not from plan)',
37
35
  parameters: z.object({
38
36
  name: z.string().describe('Task name (will be slugified)'),
39
37
  order: z.number().optional().describe('Task order number (defaults to next available)'),
40
- featureName: z.string().optional().describe('Feature name (defaults to active feature)'),
41
38
  }),
42
- execute: async ({ name, order, featureName }) => {
43
- const feature = featureName || featureService.getActive();
39
+ execute: async ({ name, order }) => {
40
+ const feature = featureService.getActive();
44
41
  if (!feature) {
45
42
  return { error: 'No active feature.' };
46
43
  }
@@ -53,15 +50,14 @@ export function createTaskTools(projectRoot) {
53
50
  },
54
51
  },
55
52
  hive_task_update: {
56
- description: 'Update a task status or summary.',
53
+ description: 'Update task status or summary',
57
54
  parameters: z.object({
58
55
  task: z.string().describe('Task folder name (e.g., "01-auth-service")'),
59
56
  status: z.enum(['pending', 'in_progress', 'done', 'cancelled']).optional(),
60
57
  summary: z.string().optional().describe('Summary of work done'),
61
- featureName: z.string().optional().describe('Feature name (defaults to active feature)'),
62
58
  }),
63
- execute: async ({ task, status, summary, featureName }) => {
64
- const feature = featureName || featureService.getActive();
59
+ execute: async ({ task, status, summary }) => {
60
+ const feature = featureService.getActive();
65
61
  if (!feature) {
66
62
  return { error: 'No active feature.' };
67
63
  }
@@ -71,11 +67,9 @@ export function createTaskTools(projectRoot) {
71
67
  },
72
68
  hive_task_list: {
73
69
  description: 'List all tasks for the active feature.',
74
- parameters: z.object({
75
- featureName: z.string().optional().describe('Feature name (defaults to active feature)'),
76
- }),
77
- execute: async ({ featureName }) => {
78
- const feature = featureName || featureService.getActive();
70
+ parameters: z.object({}),
71
+ execute: async () => {
72
+ const feature = featureService.getActive();
79
73
  if (!feature) {
80
74
  return { error: 'No active feature.' };
81
75
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "opencode-hive",
3
- "version": "0.4.2",
3
+ "version": "0.4.4",
4
4
  "type": "module",
5
5
  "description": "OpenCode plugin for Agent Hive - from vibe coding to hive coding",
6
6
  "license": "MIT WITH Commons-Clause",