vibe-splain 3.4.2 → 3.5.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.
Files changed (37) hide show
  1. package/README.md +5 -5
  2. package/dist/hook.js +0 -0
  3. package/dist/index.js +1780 -3520
  4. package/dist/mcp/server.js +1 -24
  5. package/package.json +2 -2
  6. package/dist/commands/bundle.d.ts +0 -4
  7. package/dist/commands/bundle.js +0 -68
  8. package/dist/commands/export.d.ts +0 -1
  9. package/dist/commands/export.js +0 -19
  10. package/dist/commands/gc.d.ts +0 -3
  11. package/dist/commands/gc.js +0 -59
  12. package/dist/commands/importBundle.d.ts +0 -4
  13. package/dist/commands/importBundle.js +0 -80
  14. package/dist/commands/network.d.ts +0 -1
  15. package/dist/commands/network.js +0 -91
  16. package/dist/commands/scan.d.ts +0 -13
  17. package/dist/commands/scan.js +0 -97
  18. package/dist/export/renderers/DeltaRenderer.d.ts +0 -6
  19. package/dist/export/renderers/DeltaRenderer.js +0 -22
  20. package/dist/hook-entry.d.ts +0 -2
  21. package/dist/hook-entry.js +0 -8
  22. package/dist/mcp/tools/apply_patch.d.ts +0 -37
  23. package/dist/mcp/tools/apply_patch.js +0 -103
  24. package/dist/mcp/tools/explainSpecialistScope.d.ts +0 -15
  25. package/dist/mcp/tools/explainSpecialistScope.js +0 -30
  26. package/dist/mcp/tools/get_call_chain.d.ts +0 -42
  27. package/dist/mcp/tools/get_call_chain.js +0 -50
  28. package/dist/mcp/tools/prepareTaskContext.d.ts +0 -38
  29. package/dist/mcp/tools/prepareTaskContext.js +0 -93
  30. package/dist/mcp/tools/set_session_scope.d.ts +0 -19
  31. package/dist/mcp/tools/set_session_scope.js +0 -40
  32. package/dist/mcp/tools/submit_receipt.d.ts +0 -68
  33. package/dist/mcp/tools/submit_receipt.js +0 -94
  34. package/dist/mcp/tools/work_orders.d.ts +0 -79
  35. package/dist/mcp/tools/work_orders.js +0 -126
  36. package/dist/mcp/tools/yield_for_scope_expansion.d.ts +0 -29
  37. package/dist/mcp/tools/yield_for_scope_expansion.js +0 -59
@@ -1,126 +0,0 @@
1
- import { PointerStore } from '../../store/PointerStore.js';
2
- import { v4 as uuidv4 } from 'uuid';
3
- export const createWorkOrderTool = {
4
- name: 'create_work_order',
5
- description: 'Creates a new Work Order defining intent, allowed file scope, and required verifiable proof. Returns the workOrderId and a manifestPointer for use with spawn_worker.',
6
- inputSchema: {
7
- type: 'object',
8
- properties: {
9
- projectRoot: { type: 'string', description: 'Absolute project root' },
10
- intent: { type: 'string', description: 'Plain-language description of what the worker should do' },
11
- allowedFiles: {
12
- type: 'array',
13
- items: { type: 'string' },
14
- description: 'Explicit file paths (relative to projectRoot) the worker may read/write',
15
- },
16
- allowedGlobs: {
17
- type: 'array',
18
- items: { type: 'string' },
19
- description: 'Glob patterns for allowed files',
20
- },
21
- deniedGlobs: {
22
- type: 'array',
23
- items: { type: 'string' },
24
- description: 'Glob patterns that override allowedFiles/allowedGlobs',
25
- },
26
- requiredProof: {
27
- type: 'array',
28
- items: {
29
- type: 'object',
30
- properties: {
31
- proofId: { type: 'string' },
32
- schemaName: { type: 'string', description: 'e.g. test_report.v1, patch_hash' },
33
- description: { type: 'string' },
34
- },
35
- required: ['proofId', 'schemaName', 'description'],
36
- },
37
- description: 'Machine-verifiable evidence the worker must provide',
38
- },
39
- },
40
- required: ['projectRoot', 'intent', 'allowedFiles'],
41
- },
42
- };
43
- export async function handleCreateWorkOrder(args) {
44
- const projectRoot = args.projectRoot;
45
- const intent = args.intent;
46
- const allowedFiles = args.allowedFiles ?? [];
47
- const allowedGlobs = args.allowedGlobs ?? [];
48
- const deniedGlobs = args.deniedGlobs ?? [];
49
- const requiredProof = args.requiredProof ?? [];
50
- if (!projectRoot || !intent) {
51
- throw new Error('projectRoot and intent are required');
52
- }
53
- const workOrderId = `wo_${uuidv4().replace(/-/g, '').slice(0, 16)}`;
54
- const pointerStore = PointerStore.open(projectRoot);
55
- await pointerStore.insertWorkOrder({
56
- workOrderId,
57
- intent,
58
- allowedFiles: JSON.stringify(allowedFiles),
59
- allowedGlobs: JSON.stringify(allowedGlobs),
60
- deniedGlobs: JSON.stringify(deniedGlobs),
61
- requiredProof: JSON.stringify(requiredProof),
62
- status: 'pending',
63
- createdAt: Date.now(),
64
- });
65
- return {
66
- ok: true,
67
- workOrderId,
68
- intent,
69
- allowedFiles,
70
- allowedGlobs,
71
- deniedGlobs,
72
- requiredProof,
73
- nextStep: `Call spawn_worker with workOrderId "${workOrderId}" to generate a DelegationRequest`,
74
- };
75
- }
76
- export const spawnWorkerTool = {
77
- name: 'spawn_worker',
78
- description: 'Generates a DelegationRequest from a Work Order. The Client Orchestrator uses this object to spawn an isolated Worker session. The MCP server does NOT spawn any subprocess.',
79
- inputSchema: {
80
- type: 'object',
81
- properties: {
82
- projectRoot: { type: 'string', description: 'Absolute project root' },
83
- workOrderId: { type: 'string', description: 'ID returned by create_work_order' },
84
- },
85
- required: ['projectRoot', 'workOrderId'],
86
- },
87
- };
88
- export async function handleSpawnWorker(args) {
89
- const projectRoot = args.projectRoot;
90
- const workOrderId = args.workOrderId;
91
- if (!projectRoot || !workOrderId) {
92
- throw new Error('projectRoot and workOrderId are required');
93
- }
94
- const pointerStore = PointerStore.open(projectRoot);
95
- const row = pointerStore.getWorkOrder(workOrderId);
96
- if (!row) {
97
- throw new Error(`WorkOrderNotFound: ${workOrderId}`);
98
- }
99
- if (row.status === 'completed' || row.status === 'failed' || row.status === 'active') {
100
- throw new Error(`WorkOrderClosed: ${workOrderId} is already ${row.status}`);
101
- }
102
- await pointerStore.updateWorkOrderStatus(workOrderId, 'active');
103
- const delegationRequest = {
104
- schemaVersion: '1.0.0',
105
- workOrderId: row.workOrderId,
106
- intent: row.intent,
107
- sessionScope: {
108
- allowedFiles: JSON.parse(row.allowedFiles),
109
- allowedGlobs: JSON.parse(row.allowedGlobs),
110
- deniedGlobs: JSON.parse(row.deniedGlobs),
111
- },
112
- requiredProof: JSON.parse(row.requiredProof),
113
- instructions: [
114
- `1. Call set_session_scope with workOrderId "${workOrderId}" before any file operations.`,
115
- '2. Only read/write files within the sessionScope.',
116
- '3. If you need a file outside scope, call yield_for_scope_expansion — do NOT proceed.',
117
- '4. On completion, call submit_receipt with proof for every requiredProof entry.',
118
- ],
119
- };
120
- return {
121
- ok: true,
122
- delegationRequest,
123
- note: 'The Client Orchestrator must spawn the Worker session using this DelegationRequest. The MCP server does not spawn subprocesses.',
124
- };
125
- }
126
- //# sourceMappingURL=work_orders.js.map
@@ -1,29 +0,0 @@
1
- export declare const yieldForScopeExpansionTool: {
2
- name: string;
3
- description: string;
4
- inputSchema: {
5
- type: "object";
6
- properties: {
7
- requestedPaths: {
8
- type: string;
9
- items: {
10
- type: string;
11
- };
12
- description: string;
13
- };
14
- reason: {
15
- type: string;
16
- description: string;
17
- };
18
- evidencePointers: {
19
- type: string;
20
- items: {
21
- type: string;
22
- };
23
- description: string;
24
- };
25
- };
26
- required: string[];
27
- };
28
- };
29
- export declare function handleYieldForScopeExpansion(args: Record<string, unknown>): Promise<unknown>;
@@ -1,59 +0,0 @@
1
- import { SessionScope } from '../SessionScope.js';
2
- export const yieldForScopeExpansionTool = {
3
- name: 'yield_for_scope_expansion',
4
- description: 'Worker signals that it needs to access files outside its current scope. Immediately terminates the active scope and returns a Blocked receipt. The Manager must evaluate the evidence and decide whether to spawn a new Worker with expanded scope.',
5
- inputSchema: {
6
- type: 'object',
7
- properties: {
8
- requestedPaths: {
9
- type: 'array',
10
- items: { type: 'string' },
11
- description: 'Paths the worker needs but cannot access under current scope',
12
- },
13
- reason: {
14
- type: 'string',
15
- description: 'Why these paths are needed — root cause found in out-of-scope file',
16
- },
17
- evidencePointers: {
18
- type: 'array',
19
- items: { type: 'string' },
20
- description: 'Pointer IDs for artifacts that justify the expansion request',
21
- },
22
- },
23
- required: ['requestedPaths', 'reason'],
24
- },
25
- };
26
- export async function handleYieldForScopeExpansion(args) {
27
- const requestedPaths = args.requestedPaths ?? [];
28
- const reason = args.reason;
29
- const evidencePointers = args.evidencePointers ?? [];
30
- if (!requestedPaths.length || !reason) {
31
- throw new Error('requestedPaths and reason are required');
32
- }
33
- const currentScope = SessionScope.get();
34
- const workOrderId = currentScope?.workOrderId ?? 'unknown';
35
- // Immediately clear the active scope — Worker is now blocked
36
- SessionScope.clear();
37
- // Return strict Blocked status per ADR-033
38
- return {
39
- status: 'blocked',
40
- workOrderId,
41
- requestedPaths,
42
- reason,
43
- evidencePointers,
44
- receipt: {
45
- workOrderId,
46
- status: 'blocked',
47
- proofPointers: [],
48
- changedFiles: [],
49
- summary: `Worker blocked: scope expansion required. Reason: ${reason}`,
50
- },
51
- managerInstructions: [
52
- 'Worker has been terminated. Active session scope has been cleared.',
53
- 'Evaluate the evidence pointers and reason.',
54
- 'If expansion is warranted, create a new Work Order with the expanded allowedFiles and spawn a new Worker.',
55
- 'If expansion is NOT warranted, the task is failed — do not retry with same scope.',
56
- ],
57
- };
58
- }
59
- //# sourceMappingURL=yield_for_scope_expansion.js.map