0xray 3.5.4 → 3.5.5

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 (73) hide show
  1. package/.xray/features.json +5 -1
  2. package/.xray/features.schema.json +56 -0
  3. package/AGENTS-consumer.md +1 -1
  4. package/AGENTS.md +11 -1
  5. package/README.md +1 -1
  6. package/SKILLS.md +1 -1
  7. package/dist/AGENTS.md +11 -1
  8. package/dist/CHANGELOG.md +44 -0
  9. package/dist/README.md +1 -1
  10. package/dist/SKILLS.md +1 -1
  11. package/dist/cli/commands/hermes-install.js +3 -1
  12. package/dist/cli/index.js +0 -0
  13. package/dist/core/features-config.d.ts +15 -0
  14. package/dist/governance/governance-service.d.ts +1 -0
  15. package/dist/governance/governance-service.js +81 -6
  16. package/dist/integrations/enforcement-gate.js +15 -5
  17. package/dist/integrations/grok/grok-cli.js +1 -10
  18. package/dist/integrations/grok/hooks/grok-hook-utils.js +46 -2
  19. package/dist/integrations/grok/hooks/post-tool-use.js +21 -0
  20. package/dist/integrations/grok/hooks/pre-tool-use.js +20 -0
  21. package/dist/integrations/grok/hooks/session-start.js +28 -0
  22. package/dist/integrations/hermes-agent/__init__.py +11 -1
  23. package/dist/integrations/hermes-agent/__pycache__/__init__.cpython-313.pyc +0 -0
  24. package/dist/integrations/hermes-agent/__pycache__/schemas.cpython-313.pyc +0 -0
  25. package/dist/integrations/hermes-agent/__pycache__/tools.cpython-313.pyc +0 -0
  26. package/dist/integrations/hermes-agent/bridge.mjs +73 -10
  27. package/dist/integrations/hooks/confer-hook-runtime.mjs +49 -0
  28. package/dist/integrations/hooks/pipeline-hook-runtime.mjs +211 -0
  29. package/dist/integrations/hooks/plan-hook-runtime.mjs +68 -0
  30. package/dist/integrations/hooks/user-aside-hook-runtime.mjs +49 -0
  31. package/dist/mcps/architect-tools.server.js +6 -1
  32. package/dist/mcps/orchestrator/handlers/complexity-handler.d.ts +7 -0
  33. package/dist/mcps/orchestrator/handlers/complexity-handler.js +106 -7
  34. package/dist/mcps/orchestrator/handlers/task-handler.d.ts +6 -0
  35. package/dist/mcps/orchestrator/handlers/task-handler.js +75 -0
  36. package/dist/mcps/orchestrator/server.js +54 -5
  37. package/dist/memory-routing/provider-loader.js +30 -2
  38. package/dist/nucleus/aside-worktree.d.ts +41 -0
  39. package/dist/nucleus/aside-worktree.js +164 -0
  40. package/dist/nucleus/confer.d.ts +57 -0
  41. package/dist/nucleus/confer.js +308 -0
  42. package/dist/nucleus/delegation-gate.d.ts +4 -0
  43. package/dist/nucleus/delegation-gate.js +90 -11
  44. package/dist/nucleus/lead-dev-plan-persistence.d.ts +27 -3
  45. package/dist/nucleus/lead-dev-plan-persistence.js +201 -19
  46. package/dist/nucleus/spawn-plan-resolution.d.ts +20 -0
  47. package/dist/nucleus/spawn-plan-resolution.js +42 -0
  48. package/dist/nucleus/synthesis-consult-receipt.js +18 -2
  49. package/dist/nucleus/synthesis-context.js +1 -1
  50. package/dist/nucleus/user-aside.d.ts +70 -0
  51. package/dist/nucleus/user-aside.js +393 -0
  52. package/dist/postprocessor/PostProcessor.d.ts +1 -0
  53. package/dist/postprocessor/PostProcessor.js +11 -0
  54. package/dist/processors/implementations/session-summary-processor.d.ts +1 -1
  55. package/dist/processors/implementations/session-summary-processor.js +9 -6
  56. package/package.json +14 -5
  57. package/scripts/hooks/install-hooks.cjs +3 -3
  58. package/scripts/hooks/run-hook.js +171 -86
  59. package/scripts/mjs/verify-confer-core.mjs +103 -0
  60. package/scripts/mjs/verify-delegation-gate-core.mjs +48 -2
  61. package/scripts/mjs/verify-hermes-session-start.mjs +137 -0
  62. package/scripts/mjs/verify-pre-push-diff-core.mjs +87 -0
  63. package/scripts/mjs/verify-user-aside-core.mjs +137 -0
  64. package/scripts/node/bridge-mcp-wiring.cjs +10 -0
  65. package/scripts/node/install-bridges.cjs +3 -11
  66. package/scripts/node/load-reflection-config.mjs +2 -2
  67. package/scripts/node/release-gate.mjs +8 -4
  68. package/src/mcps/architect-tools.server.ts +6 -1
  69. package/src/mcps/orchestrator/handlers/complexity-handler.ts +178 -20
  70. package/src/mcps/orchestrator/handlers/task-handler.ts +99 -0
  71. package/src/mcps/orchestrator/server.ts +56 -5
  72. package/xray/features.json +5 -1
  73. package/xray/features.schema.json +56 -0
@@ -133,14 +133,39 @@ export class OrchestratorServer {
133
133
  default: 'optimized',
134
134
  },
135
135
  timeout: { type: 'number', default: 300000 },
136
+ confer: {
137
+ type: 'boolean',
138
+ description:
139
+ 'Run mandatory 3-agent confer quorum (researcher, architect-tools, code-review) instead of task execution',
140
+ },
141
+ conferFixture: {
142
+ type: 'boolean',
143
+ description: 'Use fixture confer receipts (CI/verify)',
144
+ },
145
+ collocatedText: {
146
+ type: 'string',
147
+ description: 'Collocated synthesis context for confer prompts',
148
+ },
149
+ userAsideId: {
150
+ type: 'string',
151
+ description: 'Activate an existing user aside for spawn routing',
152
+ },
153
+ setActiveAside: {
154
+ type: 'boolean',
155
+ description: 'Set userAsideId as the active aside (default true)',
156
+ },
157
+ clearActiveAside: {
158
+ type: 'boolean',
159
+ description: 'Clear active aside — resume main lead-dev plan spawns',
160
+ },
136
161
  },
137
- required: ['description', 'tasks'],
162
+ required: ['description'],
138
163
  },
139
164
  },
140
165
  {
141
166
  name: 'analyze-complexity',
142
167
  description:
143
- 'Analyze task complexity and recommend orchestration strategy. When lead_dev_mode is on (features.json), includes phased plan + todos + subagent routes. During synthesis checkpoint, returns collocated context and mandatory-consult realignment plan — pass sessionId from the active session.',
168
+ 'Analyze task complexity and recommend orchestration strategy. When lead_dev_mode is on (features.json), includes phased plan + todos + subagent routes. Pass userAsideId to intake a parallel user aside ({asideId}.a.* namespaced todos, worktree-like). During synthesis checkpoint, returns collocated context and mandatory-consult realignment plan — pass sessionId from the active session.',
144
169
  inputSchema: {
145
170
  type: 'object',
146
171
  properties: {
@@ -149,6 +174,27 @@ export class OrchestratorServer {
149
174
  description:
150
175
  'Active session id (required to clear synthesis checkpoint; inferred from checkpoint state when omitted)',
151
176
  },
177
+ userAsideId: {
178
+ type: 'string',
179
+ description:
180
+ 'User aside id — persists .xray/state/asides/{id}.json with {asideId}.a.* todos (parallel track)',
181
+ },
182
+ userAsideTitle: {
183
+ type: 'string',
184
+ description: 'Display title for the user aside (defaults to userAsideId)',
185
+ },
186
+ worktree: {
187
+ type: 'string',
188
+ description: 'Optional worktree path for aside isolation',
189
+ },
190
+ branch: {
191
+ type: 'string',
192
+ description: 'Optional git branch for the aside',
193
+ },
194
+ setActiveAside: {
195
+ type: 'boolean',
196
+ description: 'Activate aside for spawn routing (default true when userAsideId set)',
197
+ },
152
198
  tasks: {
153
199
  type: 'array',
154
200
  items: {
@@ -391,7 +437,12 @@ export class OrchestratorServer {
391
437
  ...complexityArgs,
392
438
  ...(sessionId ? { sessionId } : {}),
393
439
  ...(synthesisDue
394
- ? { synthesisCheckpoint: true, synthesisDueReason: dueReason }
440
+ ? {
441
+ synthesisCheckpoint: true,
442
+ synthesisDueReason: dueReason,
443
+ collocatedText: collocated?.collatedText ?? null,
444
+ conferFixture: process.env.XRAY_CONFER_FIXTURE === '1',
445
+ }
395
446
  : {}),
396
447
  },
397
448
  aside.asideId,
@@ -402,13 +453,13 @@ export class OrchestratorServer {
402
453
  content = appendSynthesisContextToResponse(content, collocated.collatedText);
403
454
  }
404
455
 
405
- if (synthesisDue && result.ok) {
456
+ if (synthesisDue && result.ok && !result.content[0]?.text?.includes('Confer quorum')) {
406
457
  content = content.map((block, index) =>
407
458
  index === 0
408
459
  ? {
409
460
  ...block,
410
461
  text:
411
- `${block.text}\n\n**Synthesis checkpoint remains active** until mandatory consult todos (s.1–s.3) are completed via Task spawns.`,
462
+ `${block.text}\n\n**Confer** runs automatically at synthesis checkpoint (researcher → architect-tools → code-review). Checkpoint clears when all consult todos complete.`,
412
463
  }
413
464
  : block,
414
465
  );
@@ -36,7 +36,11 @@
36
36
  "phased_plan_threshold": 25,
37
37
  "auto_consult_major_work": true,
38
38
  "no_new_surface": true,
39
- "auto_chain_delegations": true
39
+ "auto_chain_delegations": true,
40
+ "user_asides": {
41
+ "enabled": true,
42
+ "auto_provision_worktree": false
43
+ }
40
44
  },
41
45
  "autonomous_reporting": {
42
46
  "enabled": true,
@@ -28,6 +28,62 @@
28
28
  "required": ["module_path"]
29
29
  }
30
30
  },
31
+ "multi_agent_orchestration": {
32
+ "type": "object",
33
+ "properties": {
34
+ "enabled": { "type": "boolean" },
35
+ "lead_dev_mode": { "type": "boolean" },
36
+ "plan_stale_hours": {
37
+ "type": "number",
38
+ "minimum": 1,
39
+ "description": "Archive lead-dev-plan when all todos still pending after N hours"
40
+ },
41
+ "plan_archive_marker_hours": {
42
+ "type": "number",
43
+ "minimum": 1,
44
+ "description": "How long spawn-plan-stale persists after a stale plan was archived (hours)"
45
+ },
46
+ "confer_on_synthesis": {
47
+ "type": "boolean",
48
+ "description": "Auto-run 3-agent confer quorum at synthesis checkpoint (default true)"
49
+ },
50
+ "confer": {
51
+ "type": "object",
52
+ "properties": {
53
+ "enabled": { "type": "boolean" },
54
+ "on_synthesis": { "type": "boolean" }
55
+ },
56
+ "description": "Mandatory researcher/architect-tools/code-review quorum"
57
+ },
58
+ "sibling_repos": {
59
+ "type": "array",
60
+ "items": {
61
+ "oneOf": [
62
+ { "type": "string" },
63
+ {
64
+ "type": "object",
65
+ "properties": {
66
+ "path": { "type": "string" },
67
+ "label": { "type": "string" }
68
+ },
69
+ "required": ["path"]
70
+ }
71
+ ]
72
+ },
73
+ "description": "Sibling workspace roots (e.g. UI repo when MCP host is cwd)"
74
+ },
75
+ "user_asides": {
76
+ "type": "object",
77
+ "properties": {
78
+ "enabled": { "type": "boolean" },
79
+ "auto_provision_worktree": {
80
+ "type": "boolean",
81
+ "description": "Run guarded git worktree add on analyze-complexity aside intake when worktree+branch set"
82
+ }
83
+ }
84
+ }
85
+ }
86
+ },
31
87
  "synthesis": {
32
88
  "type": "object",
33
89
  "properties": {