tycono 0.1.74-beta.3 → 0.1.74

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tycono",
3
- "version": "0.1.74-beta.3",
3
+ "version": "0.1.74",
4
4
  "description": "Build an AI company. Watch them work.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -507,6 +507,15 @@ function buildDispatchSection(orgTree: OrgTree, roleId: string, subordinates: st
507
507
 
508
508
  let section = `# Dispatch (Team Management)
509
509
 
510
+ ⛔ **YOU HAVE SUBORDINATES. YOU MUST USE THEM.**
511
+ ⛔ **For ANY directive — whether it's "do X", "review Y", or even "what do you think about Z" — dispatch to your team first, THEN synthesize their input into your response.**
512
+ ⛔ **Reading files and giving your own opinion WITHOUT dispatching is NEVER acceptable when you have a team.**
513
+
514
+ Even for opinion/analysis requests:
515
+ - Dispatch to relevant subordinates: "Analyze X from your perspective and report findings"
516
+ - Poll for results → Synthesize their input with your own analysis
517
+ - Your value is ORCHESTRATION, not solo work
518
+
510
519
  ## Available Team Members
511
520
  ${subInfo}
512
521
 
@@ -675,11 +684,15 @@ Your final report MUST include a **Change Summary** with files changed and commi
675
684
  } else {
676
685
  section += `
677
686
 
678
- ## Rules
679
- - Only dispatch to your direct reports listed above
680
- - Include clear task description, acceptance criteria, and relevant file paths
681
- - The dispatched agent will work independently and return results to you
682
- - After receiving results, synthesize and report back`;
687
+ ## Delegation Rules (MANDATORY)
688
+
689
+ **You have subordinates USE THEM before doing work yourself.**
690
+
691
+ - **Always dispatch first.** Break the directive into sub-tasks and assign to your team.
692
+ - Only do work yourself if NO subordinate can handle it (e.g., cross-cutting decisions).
693
+ - Include clear task description, acceptance criteria, and relevant file paths in every dispatch.
694
+ - After receiving results, synthesize and report back.
695
+ - Your output should reference subordinate findings, not just your own file reads.`;
683
696
  }
684
697
 
685
698
  return section;
@@ -78,6 +78,21 @@ function handleJobsRequest(url: string, method: string, req: IncomingMessage, re
78
78
  return;
79
79
  }
80
80
 
81
+ // GET /api/jobs/:id — internal only (used by dispatch bridge Python script)
82
+ const jobMatch = path.match(/^\/api\/jobs\/([^/]+)$/);
83
+ if (method === 'GET' && jobMatch) {
84
+ const jobId = jobMatch[1];
85
+ const info = jobManager.getJobInfo(jobId);
86
+ if (!info) {
87
+ res.writeHead(404);
88
+ res.end(JSON.stringify({ error: 'Job not found' }));
89
+ } else {
90
+ res.writeHead(200, { 'Content-Type': 'application/json' });
91
+ res.end(JSON.stringify(info));
92
+ }
93
+ return;
94
+ }
95
+
81
96
  // GET /api/jobs/:id/history — internal only (used by engine Python sub-processes)
82
97
  const historyMatch = path.match(/^\/api\/jobs\/([^/]+)\/history$/);
83
98
  if (method === 'GET' && historyMatch) {
@@ -88,9 +103,9 @@ function handleJobsRequest(url: string, method: string, req: IncomingMessage, re
88
103
  return;
89
104
  }
90
105
 
91
- // All other /api/jobs/* endpoints removed — use /api/sessions/* instead
92
- res.writeHead(410); // Gone
93
- res.end(JSON.stringify({ error: 'Job monitoring endpoints removed. Use /api/sessions/:id/stream, /api/sessions/:id/abort, /api/sessions/:id/reply instead.' }));
106
+ // All other /api/jobs/* endpoints 410
107
+ res.writeHead(410);
108
+ res.end(JSON.stringify({ error: 'Use /api/sessions/* for client-facing operations. /api/jobs/:id and /api/jobs/:id/history are internal only.' }));
94
109
  }
95
110
 
96
111
  /* ─── POST /api/jobs ─────────────────────── */