bobo-ai-cli 2.1.0 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +52 -9
- package/dist/agent.js +66 -45
- package/dist/agent.js.map +1 -1
- package/dist/agents/catalog.d.ts +40 -0
- package/dist/agents/catalog.js +172 -0
- package/dist/agents/catalog.js.map +1 -0
- package/dist/agents/index.d.ts +6 -0
- package/dist/agents/index.js +4 -0
- package/dist/agents/index.js.map +1 -0
- package/dist/agents/router.d.ts +43 -0
- package/dist/agents/router.js +87 -0
- package/dist/agents/router.js.map +1 -0
- package/dist/agents/spawn.d.ts +46 -0
- package/dist/agents/spawn.js +91 -0
- package/dist/agents/spawn.js.map +1 -0
- package/dist/autonomous.js +41 -1
- package/dist/autonomous.js.map +1 -1
- package/dist/cli.d.ts +8 -0
- package/dist/cli.js +667 -0
- package/dist/cli.js.map +1 -0
- package/dist/compactor.d.ts +49 -4
- package/dist/compactor.js +164 -17
- package/dist/compactor.js.map +1 -1
- package/dist/completer.js +2 -0
- package/dist/completer.js.map +1 -1
- package/dist/cost-tracker.js +35 -2
- package/dist/cost-tracker.js.map +1 -1
- package/dist/dream.d.ts +42 -0
- package/dist/dream.js +321 -0
- package/dist/dream.js.map +1 -0
- package/dist/hooks.d.ts +1 -1
- package/dist/hooks.js +4 -0
- package/dist/hooks.js.map +1 -1
- package/dist/index.js +8 -1134
- package/dist/index.js.map +1 -1
- package/dist/insight.js +4 -11
- package/dist/insight.js.map +1 -1
- package/dist/knowledge.d.ts +13 -0
- package/dist/knowledge.js +13 -2
- package/dist/knowledge.js.map +1 -1
- package/dist/memory.d.ts +4 -0
- package/dist/memory.js +6 -0
- package/dist/memory.js.map +1 -1
- package/dist/repl.d.ts +16 -0
- package/dist/repl.js +702 -0
- package/dist/repl.js.map +1 -0
- package/dist/sessions.js +23 -0
- package/dist/sessions.js.map +1 -1
- package/dist/skills/composer.d.ts +18 -0
- package/dist/skills/composer.js +59 -0
- package/dist/skills/composer.js.map +1 -0
- package/dist/skills/index.d.ts +3 -0
- package/dist/skills/index.js +3 -0
- package/dist/skills/index.js.map +1 -0
- package/dist/skills/loader.d.ts +12 -0
- package/dist/skills/loader.js +150 -0
- package/dist/skills/loader.js.map +1 -0
- package/dist/skills/types.d.ts +28 -0
- package/dist/skills/types.js +9 -0
- package/dist/skills/types.js.map +1 -0
- package/dist/skills.d.ts +1 -0
- package/dist/skills.js +1 -0
- package/dist/skills.js.map +1 -1
- package/dist/state/artifacts.d.ts +71 -0
- package/dist/state/artifacts.js +131 -0
- package/dist/state/artifacts.js.map +1 -0
- package/dist/state/index.d.ts +9 -0
- package/dist/state/index.js +7 -0
- package/dist/state/index.js.map +1 -0
- package/dist/state/manager.d.ts +89 -0
- package/dist/state/manager.js +130 -0
- package/dist/state/manager.js.map +1 -0
- package/dist/state/project-memory.d.ts +24 -0
- package/dist/state/project-memory.js +81 -0
- package/dist/state/project-memory.js.map +1 -0
- package/dist/state/recovery.d.ts +24 -0
- package/dist/state/recovery.js +94 -0
- package/dist/state/recovery.js.map +1 -0
- package/dist/statusbar.d.ts +1 -0
- package/dist/statusbar.js +12 -1
- package/dist/statusbar.js.map +1 -1
- package/dist/sub-agent-runner.d.ts +1 -0
- package/dist/sub-agent-runner.js +29 -3
- package/dist/sub-agent-runner.js.map +1 -1
- package/dist/sub-agents.d.ts +19 -1
- package/dist/sub-agents.js +137 -2
- package/dist/sub-agents.js.map +1 -1
- package/dist/tool-governance.d.ts +77 -0
- package/dist/tool-governance.js +335 -0
- package/dist/tool-governance.js.map +1 -0
- package/dist/ui/hud.d.ts +25 -0
- package/dist/ui/hud.js +67 -0
- package/dist/ui/hud.js.map +1 -0
- package/dist/verification-agent.d.ts +46 -0
- package/dist/verification-agent.js +528 -0
- package/dist/verification-agent.js.map +1 -0
- package/dist/workflows/ask.d.ts +13 -0
- package/dist/workflows/ask.js +66 -0
- package/dist/workflows/ask.js.map +1 -0
- package/dist/workflows/index.d.ts +5 -0
- package/dist/workflows/index.js +6 -0
- package/dist/workflows/index.js.map +1 -0
- package/dist/workflows/interview.d.ts +11 -0
- package/dist/workflows/interview.js +36 -0
- package/dist/workflows/interview.js.map +1 -0
- package/dist/workflows/plan.d.ts +13 -0
- package/dist/workflows/plan.js +34 -0
- package/dist/workflows/plan.js.map +1 -0
- package/dist/workflows/team.d.ts +17 -0
- package/dist/workflows/team.js +86 -0
- package/dist/workflows/team.js.map +1 -0
- package/dist/workflows/verify.d.ts +11 -0
- package/dist/workflows/verify.js +21 -0
- package/dist/workflows/verify.js.map +1 -0
- package/package.json +2 -4
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { writeResearch } from '../state/artifacts.js';
|
|
2
|
+
import { spawnAgent } from '../agents/spawn.js';
|
|
3
|
+
/**
|
|
4
|
+
* Interview workflow with Socratic questioning approach
|
|
5
|
+
*
|
|
6
|
+
* Generates context-aware questions and optionally spawns an agent for deep exploration
|
|
7
|
+
*/
|
|
8
|
+
export async function runInterviewWorkflow(topic) {
|
|
9
|
+
// Base Socratic questions (always included)
|
|
10
|
+
const baseQuestions = [
|
|
11
|
+
`What problem does "${topic}" solve?`,
|
|
12
|
+
'Who is the user?',
|
|
13
|
+
'What are the hard constraints?',
|
|
14
|
+
'What would make this fail?',
|
|
15
|
+
'What is the smallest useful version?',
|
|
16
|
+
];
|
|
17
|
+
// Try to spawn a planner agent to generate deeper questions
|
|
18
|
+
const questionGenResult = await spawnAgent({
|
|
19
|
+
task: `You are conducting a Socratic interview about: ${topic}\n\nGenerate 10 deep, probing questions that will help understand:\n- The core problem and why it matters\n- User needs and constraints\n- Potential risks and failure modes\n- Alternative approaches\n- Success criteria\n\nMake questions specific to this topic, not generic.`,
|
|
20
|
+
role: 'planner',
|
|
21
|
+
cwd: process.cwd(),
|
|
22
|
+
});
|
|
23
|
+
let content;
|
|
24
|
+
let agentId;
|
|
25
|
+
if (questionGenResult.error) {
|
|
26
|
+
// Fallback to static questions
|
|
27
|
+
content = `# Deep Interview\n\n## Topic\n${topic}\n\n## Socratic Questions\n${baseQuestions.map((q, i) => `${i + 1}. ${q}`).join('\n')}\n\n## Note\nDeeper question generation failed: ${questionGenResult.error}\n`;
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
agentId = questionGenResult.id;
|
|
31
|
+
content = `# Deep Interview\n\n## Topic\n${topic}\n\n## Base Socratic Questions\n${baseQuestions.map((q, i) => `${i + 1}. ${q}`).join('\n')}\n\n## Deep Question Generation\nAgent ID: ${agentId}\nStatus: Running in background\n\nAn agent is generating deeper, context-specific questions. Check with:\n bobo agent ${agentId}\n`;
|
|
32
|
+
}
|
|
33
|
+
const path = writeResearch('interview', content);
|
|
34
|
+
return { path, questions: baseQuestions, agentId };
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=interview.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interview.js","sourceRoot":"","sources":["../../src/workflows/interview.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAQhD;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,KAAa;IACtD,4CAA4C;IAC5C,MAAM,aAAa,GAAG;QACpB,sBAAsB,KAAK,UAAU;QACrC,kBAAkB;QAClB,gCAAgC;QAChC,4BAA4B;QAC5B,sCAAsC;KACvC,CAAC;IAEF,4DAA4D;IAC5D,MAAM,iBAAiB,GAAG,MAAM,UAAU,CAAC;QACzC,IAAI,EAAE,kDAAkD,KAAK,mRAAmR;QAChV,IAAI,EAAE,SAAS;QACf,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;KACnB,CAAC,CAAC;IAEH,IAAI,OAAe,CAAC;IACpB,IAAI,OAA2B,CAAC;IAEhC,IAAI,iBAAiB,CAAC,KAAK,EAAE,CAAC;QAC5B,+BAA+B;QAC/B,OAAO,GAAG,iCAAiC,KAAK,8BAA8B,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,mDAAmD,iBAAiB,CAAC,KAAK,IAAI,CAAC;IACvN,CAAC;SAAM,CAAC;QACN,OAAO,GAAG,iBAAiB,CAAC,EAAE,CAAC;QAC/B,OAAO,GAAG,iCAAiC,KAAK,mCAAmC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,8CAA8C,OAAO,2HAA2H,OAAO,IAAI,CAAC;IACzU,CAAC;IAED,MAAM,IAAI,GAAG,aAAa,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IACjD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC;AACrD,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export interface PlanResult {
|
|
2
|
+
role: string;
|
|
3
|
+
model: string;
|
|
4
|
+
path: string;
|
|
5
|
+
content: string;
|
|
6
|
+
agentId?: string;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Real plan workflow using planner agent
|
|
10
|
+
*
|
|
11
|
+
* Spawns a planner agent to create a structured execution plan
|
|
12
|
+
*/
|
|
13
|
+
export declare function runPlanWorkflow(task: string): Promise<PlanResult>;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { writePlan } from '../state/artifacts.js';
|
|
2
|
+
import { routeTaskWithReason } from '../agents/router.js';
|
|
3
|
+
import { spawnAgent } from '../agents/spawn.js';
|
|
4
|
+
/**
|
|
5
|
+
* Real plan workflow using planner agent
|
|
6
|
+
*
|
|
7
|
+
* Spawns a planner agent to create a structured execution plan
|
|
8
|
+
*/
|
|
9
|
+
export async function runPlanWorkflow(task) {
|
|
10
|
+
const route = routeTaskWithReason(task);
|
|
11
|
+
// Spawn a planner agent to create the plan
|
|
12
|
+
const plannerResult = await spawnAgent({
|
|
13
|
+
task: `Create a detailed, structured execution plan for the following task:\n\n${task}\n\nBreak down into concrete steps, identify file changes needed, list dependencies, assess risks, and estimate complexity.`,
|
|
14
|
+
role: 'planner',
|
|
15
|
+
cwd: process.cwd(),
|
|
16
|
+
});
|
|
17
|
+
let content;
|
|
18
|
+
if (plannerResult.error) {
|
|
19
|
+
// Fallback to static plan if agent spawn failed
|
|
20
|
+
content = `# Plan\n\n## Task\n${task}\n\n## Recommended role\n${route.role}\n\n## Model\n${route.model}\n\n## Reason\n${route.reason}\n\n## Suggested steps\n1. Explore relevant files\n2. Create minimal change set\n3. Implement\n4. Verify\n\n## Error\nPlanner agent spawn failed: ${plannerResult.error}\n`;
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
content = `# Plan\n\n## Task\n${task}\n\n## Recommended role\n${route.role}\n\n## Model\n${route.model}\n\n## Reason\n${route.reason}\n\n## Planner Agent\nAgent ID: ${plannerResult.id}\nStatus: Running in background\n\nThe planner agent is creating a detailed plan. Check status with:\n bobo agent ${plannerResult.id}\n\n## Fallback Steps\n1. Explore relevant files\n2. Create minimal change set\n3. Implement\n4. Verify\n`;
|
|
24
|
+
}
|
|
25
|
+
const path = writePlan(content);
|
|
26
|
+
return {
|
|
27
|
+
role: route.role,
|
|
28
|
+
model: route.model,
|
|
29
|
+
path,
|
|
30
|
+
content,
|
|
31
|
+
agentId: plannerResult.error ? undefined : plannerResult.id,
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=plan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plan.js","sourceRoot":"","sources":["../../src/workflows/plan.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAUhD;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAAY;IAChD,MAAM,KAAK,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAExC,2CAA2C;IAC3C,MAAM,aAAa,GAAG,MAAM,UAAU,CAAC;QACrC,IAAI,EAAE,2EAA2E,IAAI,6HAA6H;QAClN,IAAI,EAAE,SAAS;QACf,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;KACnB,CAAC,CAAC;IAEH,IAAI,OAAe,CAAC;IAEpB,IAAI,aAAa,CAAC,KAAK,EAAE,CAAC;QACxB,gDAAgD;QAChD,OAAO,GAAG,sBAAsB,IAAI,4BAA4B,KAAK,CAAC,IAAI,iBAAiB,KAAK,CAAC,KAAK,kBAAkB,KAAK,CAAC,MAAM,qJAAqJ,aAAa,CAAC,KAAK,IAAI,CAAC;IACnT,CAAC;SAAM,CAAC;QACN,OAAO,GAAG,sBAAsB,IAAI,4BAA4B,KAAK,CAAC,IAAI,iBAAiB,KAAK,CAAC,KAAK,kBAAkB,KAAK,CAAC,MAAM,mCAAmC,aAAa,CAAC,EAAE,sHAAsH,aAAa,CAAC,EAAE,2GAA2G,CAAC;IAC3a,CAAC;IAED,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;IAChC,OAAO;QACL,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,IAAI;QACJ,OAAO;QACP,OAAO,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE;KAC5D,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { type AgentRole } from '../agents/router.js';
|
|
2
|
+
export interface TeamRunResult {
|
|
3
|
+
workflowId: string;
|
|
4
|
+
role: AgentRole;
|
|
5
|
+
teamSize: number;
|
|
6
|
+
planPath: string;
|
|
7
|
+
prdPath: string;
|
|
8
|
+
teamPath: string;
|
|
9
|
+
summary: string;
|
|
10
|
+
agentIds: string[];
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Real team workflow execution using agent spawning
|
|
14
|
+
*
|
|
15
|
+
* Pipeline: plan → prd → parallel execution → verify
|
|
16
|
+
*/
|
|
17
|
+
export declare function runTeamWorkflow(task: string, teamSize: number, requestedRole?: AgentRole, sessionId?: string): Promise<TeamRunResult>;
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { writePlan, writePRD, writeTeam } from '../state/artifacts.js';
|
|
2
|
+
import { addWorkflow, updateWorkflow, removeWorkflow } from '../state/manager.js';
|
|
3
|
+
import { routeTaskWithReason } from '../agents/router.js';
|
|
4
|
+
import { spawnAgent, spawnAgentTeam } from '../agents/spawn.js';
|
|
5
|
+
function nowId(prefix) {
|
|
6
|
+
return `${prefix}-${Date.now().toString(36)}`;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Real team workflow execution using agent spawning
|
|
10
|
+
*
|
|
11
|
+
* Pipeline: plan → prd → parallel execution → verify
|
|
12
|
+
*/
|
|
13
|
+
export async function runTeamWorkflow(task, teamSize, requestedRole, sessionId = 'cli') {
|
|
14
|
+
const workflowId = nowId('team');
|
|
15
|
+
const route = routeTaskWithReason(task);
|
|
16
|
+
const role = requestedRole ?? route.role;
|
|
17
|
+
const workflow = {
|
|
18
|
+
workflowId,
|
|
19
|
+
type: 'team',
|
|
20
|
+
status: 'running',
|
|
21
|
+
startedAt: new Date().toISOString(),
|
|
22
|
+
sessionId,
|
|
23
|
+
metadata: { task, teamSize, role, routeReason: route.reason },
|
|
24
|
+
};
|
|
25
|
+
addWorkflow(workflow);
|
|
26
|
+
const agentIds = [];
|
|
27
|
+
try {
|
|
28
|
+
// Stage 1: Planning
|
|
29
|
+
const plannerResult = await spawnAgent({
|
|
30
|
+
task: `Create a detailed execution plan for: ${task}`,
|
|
31
|
+
role: 'planner',
|
|
32
|
+
cwd: process.cwd(),
|
|
33
|
+
});
|
|
34
|
+
if (plannerResult.error) {
|
|
35
|
+
throw new Error(`Planner failed: ${plannerResult.error}`);
|
|
36
|
+
}
|
|
37
|
+
agentIds.push(plannerResult.id);
|
|
38
|
+
const planContent = `# Team Plan\n\n- Task: ${task}\n- Team size: ${teamSize}\n- Role: ${role}\n- Route reason: ${route.reason}\n\n## Planning Agent\nAgent ID: ${plannerResult.id}\nStatus: Spawned in background\n\n## Stages\n1. ✓ Plan created\n2. PRD generation\n3. Parallel execution\n4. Verification\n5. Fix (if needed)\n`;
|
|
39
|
+
// Stage 2: PRD (Product Requirements Document)
|
|
40
|
+
const prdResult = await spawnAgent({
|
|
41
|
+
task: `Based on the plan, write a clear PRD for: ${task}`,
|
|
42
|
+
role: 'planner',
|
|
43
|
+
cwd: process.cwd(),
|
|
44
|
+
});
|
|
45
|
+
if (prdResult.error) {
|
|
46
|
+
throw new Error(`PRD generation failed: ${prdResult.error}`);
|
|
47
|
+
}
|
|
48
|
+
agentIds.push(prdResult.id);
|
|
49
|
+
const prdContent = `# Team PRD\n\n## Goal\n${task}\n\n## Execution Lane\n- Primary role: ${role}\n- Workers: ${teamSize}\n- Model hint: ${route.model}\n\n## PRD Agent\nAgent ID: ${prdResult.id}\nStatus: Spawned in background\n`;
|
|
50
|
+
// Stage 3: Parallel execution with multiple workers
|
|
51
|
+
const workerRequests = Array.from({ length: teamSize }, (_, i) => ({
|
|
52
|
+
task: `Execute subtask ${i + 1}/${teamSize} of: ${task}\n\nYou are worker ${i + 1} in a team of ${teamSize}. Focus on your portion of the work.`,
|
|
53
|
+
role,
|
|
54
|
+
cwd: process.cwd(),
|
|
55
|
+
}));
|
|
56
|
+
const workerResults = await spawnAgentTeam(workerRequests);
|
|
57
|
+
const successfulWorkers = workerResults.filter(r => !r.error);
|
|
58
|
+
const failedWorkers = workerResults.filter(r => r.error);
|
|
59
|
+
agentIds.push(...successfulWorkers.map(w => w.id));
|
|
60
|
+
// Stage 4: Verification
|
|
61
|
+
const verifyResult = await spawnAgent({
|
|
62
|
+
task: `Verify that the following task was completed correctly: ${task}\n\nWorkers spawned: ${successfulWorkers.length}/${teamSize}`,
|
|
63
|
+
role: 'verifier',
|
|
64
|
+
cwd: process.cwd(),
|
|
65
|
+
});
|
|
66
|
+
if (verifyResult.error) {
|
|
67
|
+
throw new Error(`Verification failed: ${verifyResult.error}`);
|
|
68
|
+
}
|
|
69
|
+
agentIds.push(verifyResult.id);
|
|
70
|
+
const summary = `Team workflow: ${successfulWorkers.length}/${teamSize} workers spawned for ${role} role`;
|
|
71
|
+
const teamContent = `# Team Run\n\n${summary}\n\n## Agents Spawned\n\n### Planning\n- Planner: ${plannerResult.id}\n- PRD Writer: ${prdResult.id}\n\n### Execution (${successfulWorkers.length}/${teamSize} successful)\n${successfulWorkers.map((w, i) => `- Worker ${i + 1}: ${w.id}`).join('\n')}${failedWorkers.length > 0 ? `\n\n### Failed Workers\n${failedWorkers.map(w => `- Error: ${w.error}`).join('\n')}` : ''}\n\n### Verification\n- Verifier: ${verifyResult.id}\n\n## Next Steps\n\nCheck agent status with: bobo agents\nView agent output: bobo agent <id>\n`;
|
|
72
|
+
const planPath = writePlan(planContent);
|
|
73
|
+
const prdPath = writePRD(prdContent);
|
|
74
|
+
const teamPath = writeTeam(teamContent);
|
|
75
|
+
updateWorkflow(workflowId, { status: 'completed', completedAt: new Date().toISOString() });
|
|
76
|
+
return { workflowId, role, teamSize, planPath, prdPath, teamPath, summary, agentIds };
|
|
77
|
+
}
|
|
78
|
+
catch (error) {
|
|
79
|
+
updateWorkflow(workflowId, { status: 'failed', completedAt: new Date().toISOString(), metadata: { error: error.message } });
|
|
80
|
+
throw error;
|
|
81
|
+
}
|
|
82
|
+
finally {
|
|
83
|
+
removeWorkflow(workflowId);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=team.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"team.js","sourceRoot":"","sources":["../../src/workflows/team.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type VerificationVerdict } from '../verification-agent.js';
|
|
2
|
+
export interface VerifyResult {
|
|
3
|
+
verdict: VerificationVerdict;
|
|
4
|
+
path: string;
|
|
5
|
+
content: string;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Run real verification workflow using verification-agent.ts
|
|
9
|
+
* Executes build/test/lint checks and adversarial probing
|
|
10
|
+
*/
|
|
11
|
+
export declare function runVerifyWorkflow(target?: string): Promise<VerifyResult>;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { writeVerify } from '../state/artifacts.js';
|
|
2
|
+
import { runVerification, formatVerificationResult } from '../verification-agent.js';
|
|
3
|
+
/**
|
|
4
|
+
* Run real verification workflow using verification-agent.ts
|
|
5
|
+
* Executes build/test/lint checks and adversarial probing
|
|
6
|
+
*/
|
|
7
|
+
export async function runVerifyWorkflow(target = 'current workspace') {
|
|
8
|
+
// Run actual verification
|
|
9
|
+
const verificationResult = await runVerification(target, '', {
|
|
10
|
+
cwd: process.cwd(),
|
|
11
|
+
});
|
|
12
|
+
// Format as markdown for artifact
|
|
13
|
+
const content = formatVerificationResult(verificationResult);
|
|
14
|
+
const path = writeVerify(content);
|
|
15
|
+
return {
|
|
16
|
+
verdict: verificationResult.verdict,
|
|
17
|
+
path,
|
|
18
|
+
content,
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=verify.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verify.js","sourceRoot":"","sources":["../../src/workflows/verify.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,wBAAwB,EAA4B,MAAM,0BAA0B,CAAC;AAQ/G;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,MAAM,GAAG,mBAAmB;IAClE,0BAA0B;IAC1B,MAAM,kBAAkB,GAAG,MAAM,eAAe,CAAC,MAAM,EAAE,EAAE,EAAE;QAC3D,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;KACnB,CAAC,CAAC;IAEH,kCAAkC;IAClC,MAAM,OAAO,GAAG,wBAAwB,CAAC,kBAAkB,CAAC,CAAC;IAC7D,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IAElC,OAAO;QACL,OAAO,EAAE,kBAAkB,CAAC,OAAO;QACnC,IAAI;QACJ,OAAO;KACR,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "bobo-ai-cli",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "3.0.0",
|
|
4
4
|
"description": "Portable AI engineering assistant CLI with embedded knowledge, skills, and memory",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -47,8 +47,6 @@
|
|
|
47
47
|
"commander": "^12.1.0",
|
|
48
48
|
"glob": "^11.0.0",
|
|
49
49
|
"gray-matter": "^4.0.3",
|
|
50
|
-
"marked": "^14.0.0",
|
|
51
|
-
"marked-terminal": "^7.2.0",
|
|
52
50
|
"openai": "^4.73.0",
|
|
53
51
|
"zod": "^3.25.76"
|
|
54
52
|
},
|
|
@@ -58,4 +56,4 @@
|
|
|
58
56
|
"typescript": "^5.6.0",
|
|
59
57
|
"vitest": "^4.1.2"
|
|
60
58
|
}
|
|
61
|
-
}
|
|
59
|
+
}
|