@signhify/agents 0.0.0-stage → 0.3.1

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.
Files changed (46) hide show
  1. package/dist/__tests__/orchestrator.test.d.ts +2 -0
  2. package/dist/__tests__/orchestrator.test.d.ts.map +1 -0
  3. package/dist/__tests__/orchestrator.test.js +353 -0
  4. package/dist/__tests__/orchestrator.test.js.map +1 -0
  5. package/dist/__tests__/planner.test.d.ts +2 -0
  6. package/dist/__tests__/planner.test.d.ts.map +1 -0
  7. package/dist/__tests__/planner.test.js +29 -0
  8. package/dist/__tests__/planner.test.js.map +1 -0
  9. package/dist/browser-use.d.ts +8 -0
  10. package/dist/browser-use.d.ts.map +1 -0
  11. package/dist/browser-use.js +34 -0
  12. package/dist/browser-use.js.map +1 -0
  13. package/dist/editor.d.ts +8 -0
  14. package/dist/editor.d.ts.map +1 -0
  15. package/dist/editor.js +134 -0
  16. package/dist/editor.js.map +1 -0
  17. package/dist/file-picker.d.ts +8 -0
  18. package/dist/file-picker.d.ts.map +1 -0
  19. package/dist/file-picker.js +64 -0
  20. package/dist/file-picker.js.map +1 -0
  21. package/dist/index.d.ts +8 -0
  22. package/dist/index.d.ts.map +1 -0
  23. package/dist/index.js +7 -0
  24. package/dist/index.js.map +1 -0
  25. package/dist/llm.d.ts +14 -0
  26. package/dist/llm.d.ts.map +1 -0
  27. package/dist/llm.js +34 -0
  28. package/dist/llm.js.map +1 -0
  29. package/dist/orchestrator.d.ts +18 -0
  30. package/dist/orchestrator.d.ts.map +1 -0
  31. package/dist/orchestrator.js +254 -0
  32. package/dist/orchestrator.js.map +1 -0
  33. package/dist/planner.d.ts +26 -0
  34. package/dist/planner.d.ts.map +1 -0
  35. package/dist/planner.js +119 -0
  36. package/dist/planner.js.map +1 -0
  37. package/dist/reviewer.d.ts +10 -0
  38. package/dist/reviewer.d.ts.map +1 -0
  39. package/dist/reviewer.js +164 -0
  40. package/dist/reviewer.js.map +1 -0
  41. package/dist/types.d.ts +56 -0
  42. package/dist/types.d.ts.map +1 -0
  43. package/dist/types.js +2 -0
  44. package/dist/types.js.map +1 -0
  45. package/package.json +36 -4
  46. package/README.md +0 -3
@@ -0,0 +1,164 @@
1
+ import { shouldUseAdapter, completeWithAdapter } from './llm.js';
2
+ export function parseReviewVerdict(text) {
3
+ if (!text || !text.trim())
4
+ return null;
5
+ const trimmed = text.trim();
6
+ try {
7
+ const parsed = JSON.parse(trimmed);
8
+ if (typeof parsed?.met === 'boolean') {
9
+ return {
10
+ met: parsed.met,
11
+ reason: typeof parsed.reason === 'string' ? parsed.reason : '',
12
+ remainingSteps: Array.isArray(parsed.remainingSteps) ? parsed.remainingSteps.map(String) : [],
13
+ };
14
+ }
15
+ }
16
+ catch {
17
+ // not raw JSON
18
+ }
19
+ const match = trimmed.match(/\{[\s\S]*?\}/);
20
+ if (!match)
21
+ return null;
22
+ try {
23
+ const parsed = JSON.parse(match[0]);
24
+ if (typeof parsed?.met === 'boolean') {
25
+ return {
26
+ met: parsed.met,
27
+ reason: typeof parsed.reason === 'string' ? parsed.reason : '',
28
+ remainingSteps: Array.isArray(parsed.remainingSteps) ? parsed.remainingSteps.map(String) : [],
29
+ };
30
+ }
31
+ }
32
+ catch {
33
+ return null;
34
+ }
35
+ return null;
36
+ }
37
+ export class ReviewerSubagent {
38
+ role = 'reviewer';
39
+ name = '@Reviewer';
40
+ description = 'Executes verification suites, inspects diffs, and validates goal stop conditions';
41
+ async run(task, _cwd, ctx) {
42
+ if (ctx?.signal?.aborted) {
43
+ return { success: false, output: '', error: 'Subagent cancelled by user' };
44
+ }
45
+ const testCommand = task.context?.testCommand === false
46
+ ? undefined
47
+ : (typeof task.context?.testCommand === 'string' ? task.context.testCommand : 'npm test -- --run');
48
+ const instructions = (typeof task.context?.instructions === 'string' && task.context.instructions) ||
49
+ task.objective ||
50
+ 'Verify implementation against requirements';
51
+ const diff = (typeof task.context?.diff === 'string' && task.context.diff) || '';
52
+ if (testCommand && !ctx?.invokeTool) {
53
+ return { success: false, output: '', error: 'Reviewer commands require the host shell-exec permission pipeline.' };
54
+ }
55
+ let execution = { exitCode: 0, stdout: '', stderr: '' };
56
+ let testError;
57
+ if (testCommand && ctx?.invokeTool) {
58
+ try {
59
+ const result = await ctx.invokeTool('shell-exec', { command: testCommand, timeoutMs: 30_000 });
60
+ if (ctx?.signal?.aborted) {
61
+ return { success: false, output: '', error: 'Subagent cancelled by user' };
62
+ }
63
+ if (result.isError) {
64
+ execution = { exitCode: 1, stderr: result.content };
65
+ testError = result.content;
66
+ }
67
+ else {
68
+ try {
69
+ execution = JSON.parse(result.content);
70
+ }
71
+ catch {
72
+ execution = { exitCode: 0, stdout: result.content };
73
+ }
74
+ if (execution.exitCode !== 0) {
75
+ testError = (execution.stderr || execution.stdout || `Command exited with code ${execution.exitCode ?? 'unknown'}`).slice(0, 500);
76
+ }
77
+ }
78
+ }
79
+ catch (err) {
80
+ if (ctx?.signal?.aborted) {
81
+ return { success: false, output: '', error: 'Subagent cancelled by user' };
82
+ }
83
+ const errorOutput = err instanceof Error ? err.message : String(err);
84
+ execution = { exitCode: 1, stderr: errorOutput };
85
+ testError = errorOutput;
86
+ }
87
+ }
88
+ let verdict;
89
+ // Check if a structured verdict was explicitly provided in task context (e.g. testing)
90
+ if (task.context?.verdict && typeof task.context.verdict === 'object') {
91
+ const v = task.context.verdict;
92
+ verdict = {
93
+ met: v.met ?? false,
94
+ reason: v.reason ?? '',
95
+ remainingSteps: Array.isArray(v.remainingSteps) ? v.remainingSteps.map(String) : [],
96
+ exitCode: execution.exitCode,
97
+ };
98
+ }
99
+ else if (shouldUseAdapter(ctx)) {
100
+ const system = 'You are @Reviewer, a verification and code review subagent. Evaluate the changes and test results against the task instructions. ' +
101
+ 'Respond with ONLY a JSON object: { "met": boolean, "reason": string, "remainingSteps": string[] }. No markdown fences, no preamble.';
102
+ const user = [
103
+ `Instructions: ${instructions}`,
104
+ testCommand ? `Test Command: ${testCommand}` : '',
105
+ `Test Exit Code: ${execution.exitCode ?? 0}`,
106
+ execution.stdout ? `Test Stdout: ${execution.stdout.slice(0, 500)}` : '',
107
+ execution.stderr ? `Test Stderr: ${execution.stderr.slice(0, 500)}` : '',
108
+ diff ? `Changes/Diff:\n${diff}` : '',
109
+ ].filter(Boolean).join('\n');
110
+ try {
111
+ const reply = await completeWithAdapter(ctx, system, user);
112
+ if (ctx?.signal?.aborted) {
113
+ return { success: false, output: '', error: 'Subagent cancelled by user' };
114
+ }
115
+ const parsedVerdict = parseReviewVerdict(reply);
116
+ if (parsedVerdict) {
117
+ verdict = { ...parsedVerdict, exitCode: execution.exitCode };
118
+ }
119
+ else {
120
+ verdict = this.defaultVerdict(execution, testError);
121
+ }
122
+ }
123
+ catch (error) {
124
+ if (ctx?.signal?.aborted)
125
+ throw error;
126
+ verdict = this.defaultVerdict(execution, testError);
127
+ }
128
+ }
129
+ else {
130
+ verdict = this.defaultVerdict(execution, testError);
131
+ }
132
+ const stdout = execution.stdout ?? '';
133
+ const stderr = execution.stderr ?? '';
134
+ const statusText = verdict.met ? 'verified: command completed successfully.' : `check failed:\n${verdict.reason}`;
135
+ return {
136
+ success: verdict.met,
137
+ output: `@Reviewer ${statusText}${verdict.remainingSteps.length > 0 ? `\nRemaining steps:\n${verdict.remainingSteps.map((s) => `- ${s}`).join('\n')}` : ''}${stdout && verdict.met ? `\n\n${stdout.slice(0, 500)}` : ''}`,
138
+ metadata: {
139
+ verdict,
140
+ exitCode: execution.exitCode,
141
+ stdout: stdout.slice(0, 500),
142
+ stderr: stderr.slice(0, 500),
143
+ },
144
+ ...(verdict.met ? {} : { error: verdict.reason }),
145
+ };
146
+ }
147
+ defaultVerdict(execution, testError) {
148
+ if (testError || (execution.exitCode !== undefined && execution.exitCode !== 0)) {
149
+ return {
150
+ met: false,
151
+ reason: testError || `Command exited with code ${execution.exitCode ?? 'unknown'}`,
152
+ remainingSteps: ['Fix failing tests and review issues.'],
153
+ exitCode: execution.exitCode,
154
+ };
155
+ }
156
+ return {
157
+ met: true,
158
+ reason: 'Verification completed successfully against instructions.',
159
+ remainingSteps: [],
160
+ exitCode: execution.exitCode ?? 0,
161
+ };
162
+ }
163
+ }
164
+ //# sourceMappingURL=reviewer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reviewer.js","sourceRoot":"","sources":["../src/reviewer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ export type SubagentRole = 'file-picker' | 'planner' | 'editor' | 'reviewer' | 'browser-use';
2
+ export interface SubagentTask {
3
+ id: string;
4
+ role: SubagentRole;
5
+ objective: string;
6
+ context?: Record<string, unknown>;
7
+ dependsOn?: string[];
8
+ parentId?: string | null;
9
+ }
10
+ export interface ReviewVerdict {
11
+ met: boolean;
12
+ reason: string;
13
+ remainingSteps: string[];
14
+ exitCode?: number;
15
+ }
16
+ export interface SubagentResult {
17
+ success: boolean;
18
+ output: string;
19
+ artifacts?: string[];
20
+ error?: string;
21
+ metadata?: Record<string, unknown>;
22
+ }
23
+ /** Persistence seam for planner task trees; satisfied by MemoryStore.saveTask. */
24
+ export interface TaskPersister {
25
+ saveTask(task: {
26
+ id: string;
27
+ parentId?: string | null;
28
+ title: string;
29
+ status?: 'pending' | 'in_progress' | 'blocked' | 'done';
30
+ progressLog?: string;
31
+ }): void;
32
+ }
33
+ /** Runtime handed to every subagent by the orchestrator. */
34
+ export interface SubagentContext {
35
+ adapter?: import('@signhify/providers').ModelProviderAdapter;
36
+ model?: string;
37
+ signal?: AbortSignal;
38
+ memory?: TaskPersister;
39
+ invokeTool?: (name: 'file-io' | 'shell-exec', args: Record<string, unknown>) => Promise<{
40
+ content: string;
41
+ isError?: boolean;
42
+ }>;
43
+ onProgress?: (event: SubagentProgressEvent) => void;
44
+ }
45
+ export interface SubagentProgressEvent {
46
+ type: 'status' | 'log' | 'diff' | 'error' | 'done';
47
+ message: string;
48
+ data?: unknown;
49
+ }
50
+ export interface Subagent {
51
+ readonly role: SubagentRole;
52
+ readonly name: string;
53
+ readonly description: string;
54
+ run(task: SubagentTask, cwd: string, ctx?: SubagentContext): Promise<SubagentResult>;
55
+ }
56
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GACpB,aAAa,GACb,SAAS,GACT,QAAQ,GACR,UAAU,GACV,aAAa,CAAC;AAElB,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,YAAY,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,OAAO,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,kFAAkF;AAClF,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE;QACb,EAAE,EAAE,MAAM,CAAC;QACX,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACzB,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,CAAC,EAAE,SAAS,GAAG,aAAa,GAAG,SAAS,GAAG,MAAM,CAAC;QACxD,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,GAAG,IAAI,CAAC;CACV;AAED,4DAA4D;AAC5D,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,OAAO,qBAAqB,EAAE,oBAAoB,CAAC;IAC7D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,GAAG,YAAY,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAChI,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,qBAAqB,KAAK,IAAI,CAAC;CACrD;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,QAAQ,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;IACnD,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,GAAG,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;CACtF"}
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,6 +1,38 @@
1
1
  {
2
2
  "name": "@signhify/agents",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
6
- }
3
+ "version": "0.3.1",
4
+ "description": "Specialized subagents for Signhify CLI (@FilePicker, @Planner, @Editor, @Reviewer, @BrowserUse)",
5
+ "license": "MIT",
6
+ "type": "module",
7
+ "main": "./dist/index.js",
8
+ "types": "./dist/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "import": "./dist/index.js",
12
+ "types": "./dist/index.d.ts"
13
+ }
14
+ },
15
+ "files": [
16
+ "dist"
17
+ ],
18
+ "scripts": {
19
+ "build": "tsc -b",
20
+ "dev": "tsc -b --watch",
21
+ "typecheck": "tsc --noEmit",
22
+ "test": "vitest run",
23
+ "clean": "node -e \"const {rmSync,existsSync}=require('fs');['dist','*.tsbuildinfo'].forEach(p=>{if(existsSync(p))rmSync(p,{recursive:true,force:true})})\""
24
+ },
25
+ "dependencies": {
26
+ "@signhify/core": "^0.2.0",
27
+ "@signhify/providers": "^0.2.0"
28
+ },
29
+ "devDependencies": {
30
+ "@signhify/memory": "^0.2.0",
31
+ "@types/node": "^20.11.0",
32
+ "typescript": "^5.5.0",
33
+ "vitest": "^2.0.0"
34
+ },
35
+ "publishConfig": {
36
+ "access": "public"
37
+ }
38
+ }
package/README.md DELETED
@@ -1,3 +0,0 @@
1
- # Temporary Holding Version
2
-
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.